Commit Graph
1602 Commits
Author SHA1 Message Date
mesh-tools e70754ef56 Merge pull request 'Reader release 3 before G: today's manifest validator accepts G's forms' (#212) from feat/47-G-reader-release-3 into main 2026-11-13 11:04:19 +00:00
jschoubben 4b29e43ca1 D6 judge-release-whole: the release's judge accepts all of G and keeps today's verdicts
mesh/delivery merged: source.main moved to novox/mesh-delivery@e70754ef562b
mesh/delivery-group group feat/47-G-reader-release-3 merged: every member is merged
mesh/check checking 4b29e43ca1f4 on e70754ef562b | novox/mesh-delivery#212 in group feat/47-G-reader-release-3
A run, no code: the prepare's probe (reader-release runs/rrprobe.go.txt) built in the indexer module at this head
against mesh-sdk 9e5bd7e. G's 193 manifests with G's 65 seat definitions: 193 accepted the checker's way, 0 refused and
0 waiting the indexer's way (today: 15 refused). Today's 191 manifests with today's 60 seats: 189 accepted, f1-circuits
and link2pay refused, output identical to today's; today's manifests with G's seats: identical to today's.

Builds: design 47 G §50, §340, A-343, A-347

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:47:46 +01:00
jschoubben 1a16fb55da D4 judge-foundation-list: the pipeline runner keeps its old sections before G too
The lead's A-349 names the pipeline runner beside the forge module, the image registry module and the node-engine's
module: its old `objects` section and its findings stream are accepted before G puts it on the foundation list. It is
new in G, so no trunk verdict moves.

Builds: design 47 G §529, A-345, A-349

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:47:21 +01:00
jschoubben b30232298c D4 judge-foundation-list: the parts G puts on the foundation list keep their old sections before it
Before G's merge the foundation list stays as it is; the forge module, the image registry module and the node-engine's
module are accepted with their old `objects` section, their stream `<module>-findings` and their bus state in
`requires`, as G's judge accepts them, and are counted as today, so no other module's verdict moves.

Builds: design 47 G §584, §627, §529, A-343, A-345

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:45:26 +01:00
jschoubben 771471c83b D3 judge-objects-cap: a state may name objects-max-mib for its objects store
The state template takes the option `objects-max-mib` (mesh-sdk S5's name and bounds): within the objects' bounds it is
accepted, outside them refused; every other option of today keeps its verdict.

Builds: design 47 G §513, §547, A-343

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:44:20 +01:00
jschoubben cee3102568 D2 judge-seat-reads: a read of a seat holder's state is judged against the seat's states
`reads` `seat:<seat>.<state>` (split by mesh-sdk's SeatRead since S4) is accepted where the seat declares the state and
refused, naming it, where it does not or the seat is unknown; a module's read is judged as today.

Builds: design 47 G A-116, A-128, A-343, A-344

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:43:47 +01:00
jschoubben 3543e7818b D5 judge-process-bus-consumes: a process hears only what its module consumes
A process's `bus.consumes` (read by mesh-sdk since S2) is judged as V5 judges what a process names of its module's
`requires`: an event its module consumes is accepted, another is refused, naming it.

Builds: design 47 G A-340, A-343

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:42:54 +01:00
jschoubben 4ce2d82645 D1 judge-queue-invokes: an asker's queue and a seat's accepted kind are judged against the seat
The third reader release reads G's invokes `seat:<seat>.accept.<queue>` and `seat:<seat>.<stream>.<kind>` with G's
check of them: a queue or kind the seat's definition does not accept is refused, naming it.

Builds: design 47 G §601, A-231, A-102, A-343, A-344

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 11:42:08 +01:00
mesh-tools 7c0492b06c Merge pull request 'The validator judges if-config, config-lines, config-json and a process's bus on requires; grants follow (issue 1979)' (#211) from feature/1979-zfs-owns-zfs into main 2026-11-13 08:00:36 +00:00
jschoubben ad7e580918 G1 grants-process-bus-requires: a process's account publishes on the events stream and writes the states its module asks for in requires
mesh/delivery merged: source.main moved to novox/mesh-delivery@7c0492b06c37
mesh/delivery-group group feature/1979-zfs-owns-zfs merged: every member is merged
mesh/check being carried to ad7e58091801 on 7c0492b06c37 | from 7221a1e5cd7f, mesh-catalog 117f933dacf0, mesh-host 0193949efe9f, mesh-sdk e42b9491c931…
Builds: design 42 zfs-owns-zfs §25, §26, A-37, A-38
2026-11-13 01:27:58 +01:00
jschoubben 3aca67b9d0 V5 judge-process-bus-requires: a process's bus may name the events and states its module asks for in requires
Builds: design 42 zfs-owns-zfs §25, §26, A-37, A-38
2026-11-13 01:27:58 +01:00
jschoubben e1db8701b5 V4 judge-not-managed: a config value with neither a default nor required is accepted
Builds: design 42 zfs-owns-zfs §11; answer A-14
2026-11-13 01:27:58 +01:00
jschoubben e9eac06e5d V3 judge-config-json: a file holding ${config-json} places every config value of its module
Builds: design 42 zfs-owns-zfs §9; answers A-15, A-24
2026-11-13 01:27:58 +01:00
jschoubben ff76ee95ad V2 judge-config-lines: the form ${config-lines:<key>:<prefix>[:mib-bytes]} is judged and places its key
Builds: design 42 zfs-owns-zfs §3; answers A-4, A-5, A-24
2026-11-13 01:27:58 +01:00
jschoubben 27c3b9a860 V1 judge-if-config: a resource's if-config names a declared config value and places it
Builds: design 42 zfs-owns-zfs §2; answer A-24
2026-11-13 01:27:58 +01:00
mesh-tools 7221a1e5cd Merge pull request 'checker_ask_again recovers a lost check that names no ask, when no check ask waits in any build stream' (#210) from fix/1373-ask-again-no-ask into main 2026-11-12 23:53:51 +00:00
jschoubben 2ab74991b8 checker_ask_again: an unread backlog and a recheck ask refuse too (issue 1373, review)
mesh/delivery merged: source.main moved to novox/mesh-delivery@7221a1e5cd7f
mesh/check checking 2ab74991b856 on 7221a1e5cd7f
Principle 3: unread is never empty. build_usage's notes refuse; a waiting or held recheck ask refuses like a check ask.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 00:48:36 +01:00
jschoubben b6e61fe63d checker_ask_again ends a lost check that names no ask when no check ask waits in any build seat's stream (issue 1373)
Quick fix: a running verdict whose asks state names no ask is asked again when mesh-delivery-view's build_usage backlog shows
every check stream with 0 waiting and 0 held and no unreadable row, and no step of the candidate runs; otherwise it refuses,
naming the stream that holds asks. Adds the invoke mesh-delivery-view.build_usage to the checker's manifest.
Thorough fix (not built): a group check asked while a lone member's own ask ran was swallowed by the checker's claim of one
check per candidate; noted on issue 1373.

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-13 00:43:32 +01:00
mesh-tools a5d7108631 Merge pull request 'The checker previews a member whose fetch merged, whatever its later steps ended with' (#208) from fix/checker-preview-after-failed-step into main 2026-11-12 14:34:09 +00:00
jschoubben 24d9c6cdf8 The checker previews a member whose fetch merged, whatever its later steps ended with
mesh/delivery merged: source.main moved to novox/mesh-delivery@a5d710863157
mesh/delivery-group group fix/checker-preview-after-failed-step merged: every member is merged
mesh/check checking 24d9c6cdf8d9 on a5d710863157 | novox/mesh-delivery#208 in group fix/checker-preview-after-failed-step
A member whose check step errored after its fetch merged was left unpreviewed,
so one failing level hid the manifest validator and the composition from the
check, and the words "its head does not merge or its fetch did not answer"
were wrong for it. The checker now reads the fetch a failed step answers
beside its error and previews the merge from it; only a head that does not
merge or a fetch that did not answer stays unpreviewed, and the check says
which of the two.

Builds: design 47 G A-286 (G-22-lead-answers-2.md at hq 41dd30fe; issue 1921; principle 3)
Quick: this checker on main; thorough: the same rule in G's checker (join 11, J15).

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 15:25:44 +01:00
mesh-tools 76db40eb6b Merge pull request 'The indexer says a merged manifest accepted, so a new build gets its part grant without a hand act (issue 1966)' (#207) from fix/1966-new-build-grant into main 2026-11-12 12:28:38 +00:00
jschoubben 104909817b indexer: say manifest-accepted for a merged manifest a pull request's judgement already accepted (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@76db40eb6be1
mesh/check being carried to 104909817b70 on 76db40eb6be1 | from 983c46e2576c
A pull request's candidate is judged before its merge and its verdict written, said nowhere. At the merge the
digest becomes the module's trunk manifest, but the merge's judging pass finds the same verdict, writes nothing
and so said nothing: the bus module never heard the new manifest, and the grants part, which follows the
verdicts on manifest-accepted, held the module as having no verdict and wrote no grant for its new fingerprint
(claude-licence-manager, three times on 2026-11-12). The merge's pass now says a fresh trunk manifest's accepted
verdict from the verdict held, with its revision.

Builds: design 25 bus-state §1, §12.2 (the indexer says manifest-accepted for every newly accepted manifest; the
grants part follows the verdicts on it)

Builds: design 25 bus-state L1 (hq ff30ac16, the lead's answer: a merged candidate's manifest is newly accepted).
2026-11-12 13:20:29 +01:00
mesh-tools 983c46e257 Merge pull request 'Grants carry a state's declared cap; the checker's compositions get room and a drop tool; the assigner trusts no stale reads (issue 1975)' (#206) from fix/engine-reads-and-compositions into main 2026-11-12 10:23:30 +00:00
jschoubben b83c546831 checker: compositions keeps ttl-seconds 259200 with max-mib 256; the texts say only what holds (issue 1975 note 6)
mesh/delivery merged: source.main moved to novox/mesh-delivery@983c46e2576c
mesh/delivery-group group fix/engine-reads-and-compositions merged: every member is merged
mesh/check checking b83c546831b0 on 983c46e2576c | novox/mesh-delivery#206 in group fix/engine-reads-and-compositions
Builds: issue 1975 note 6 (the lead's review round 1; no design line)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 11:00:33 +01:00
jschoubben f28c49a976 grants: a state's declared max-mib reaches its bucket, and a held bucket is raised to it (issue 1975 note 6)
Builds: issue 1975 note 6 (the lead's review round 1; no design line)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 11:00:33 +01:00
jschoubben e12f4b608f assigner: the test drives the reads-changed handler (issue 1975 note 6)
Builds: issue 1975 note 6 (the lead's review round 1; no design line)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 11:00:33 +01:00
jschoubben a3306361ee checker: the state compositions is bounded at 256 MiB and a day, and a tool drops a check's kept requests
Builds: the lead's handover of 2026-11-12 (principle 7, principle 4; no design line)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 10:48:08 +01:00
jschoubben 3ec05dda1f assigner: a reads statement older than a reads-changed heard does not stand (issue 1975)
The assigner keeps each reads-changed event it hears beside its statement (enginereads.Keeper.HeardChanged),
reads a node as the event says while its statement is behind it, and asks again until the statement is as new.

Builds: issue 1975 note 4 (the lead's handover; no design line)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 10:48:08 +01:00
mesh-tools bf36f84445 Merge pull request 'The second reader release: the validator judges G's new forms (design 47 G §621, §697, §508)' (#205) from fix/47-G-reader-release-2 into main 2026-11-12 08:41:41 +00:00
jschoubben 7f53665beb Builder: a by-hand build answers an ask as asked once it is put, not once noted
mesh/delivery merged: source.main moved to novox/mesh-delivery@bf36f8444562
mesh/delivery-group group fix/47-G-reader-release-2 merged: every member is merged
mesh/check checking 7f53665bebb5 on bf36f8444562 | novox/mesh-delivery#205 in group fix/47-G-reader-release-2
builder_build_again's answer (BuildAgainResult.Asks: "the ask ids put") was settled when the ask's id was
noted in the key, before its put: the answer could come back naming an ask not yet on its stream (the check's
flake in TestAnAskTheKeyNamesAndNobodyPutIsPutAtStart, "after 0 asks", about 4 runs in 100 under load), and a
put the stream refused after the note was answered as asked, the key's failure unsaid. The watch is now told
after the put; a refused put ends the look and the answer says the key's failure.

Builds: lead answer A-148 (hq G-20, 3ce1dcf: the fix rides the release), issue 1126 note 72 (builder_build_again answers the asks put), ADR 0668 §1 (the note and the put are one act)
Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 04:00:03 +01:00
jschoubben b57281f5a4 RD-3: the validator accepts a foundation part's own findings stream
mesh/delivery closed: a newer head of the same pull request
mesh/delivery-group group fix/47-G-reader-release-2 rejected: composed together: the checker's verdict at the members' heads (12ff6ae3438d): integration: mesh-…
mesh/check failed: integration: mesh-delivery-builder/internal/build.TestAnAskTheKeyNamesAndNobodyPutIsPutAtStart: buil… | b57281f5a406 on 2f1b60f2a231
A foundation part keeps its old sections for good, its findings stream
among them; the trunk refused the new indexer manifest's
mesh-delivery-indexer-findings as outside the predefined forms.

Builds: design 47 G §529, A-30, A-146 (hq 618ad2b7)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 03:12:46 +01:00
jschoubben cf2db47e57 RD-2: the validator accepts one module claiming the seat node-engine
G's node-engine claims its seat as one module; the trunk refused every
claim of a seat the engine holds. One claim is accepted, a second refused
naming both.

Builds: design 47 G §508, §494, §621

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 03:11:42 +01:00
jschoubben 4d1e4e6e6e RD-1: the validator reads a seat-named view in consumes
seat:<seat>.views.<state> is accepted where the seat's definition offers the
state as a view, and refused naming it where it does not or the seat is
unknown; the trunk called the seat: prefix no usable name.

Builds: design 47 G §621, §616, §699

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 03:10:46 +01:00
jschoubben f39572c878 RD-0: the judge's state rule names max-mib among a state's words
mesh-sdk's reader release reads max-mib on an old state section and names
it in its refusal of an unknown word; the judge's row reads that refusal.

Builds: design 47 G §494, §469

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-12 03:10:46 +01:00
mesh-tools 2f1b60f2a2 Merge pull request 'Registry recovery: break the circle, and let a cut part be sent again (issue 1966)' (#204) from fix/1966-registry-circle into main 2026-11-11 13:18:27 +00:00
jschoubben 7db5b0dfe4 1966 review round 1: Composed counts the bindings written or rewritten from fields; wrap Take's comment
mesh/delivery merged: source.main moved to novox/mesh-delivery@2f1b60f2a231
mesh/check checking 7db5b0dfe479 on 2f1b60f2a231
Builds: design 25 bindings-first-view §6, §8, §9

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:12:25 +01:00
jschoubben ca9aad9757 1966 subtask 2: the grants part composes a binding from an answer of mesh-broker's list without binding
An answer no entry of which carries binding gets, for a key-value or object-store
entry whose settings hold the bus object its bus-name names, the binding composed
from the answer's own fields; a stream, a ledger and an entry not held stay
unbound and are logged once per answer; grants_first_views shows composed and
unbound (1966/AC203-3..n). An answer where any entry carries binding is applied
by §4 alone.

Builds: design 25 bindings-first-view §9, §4, §6, §7, §8

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:58:23 +01:00
jschoubben 276412d7ff 1966 subtask 1: a chunk 0 again starts a part afresh in parts.Receiver.Take
A part the holder lacks travels again whole from chunk 0, so its earlier
chunks are dropped and chunk 0 is taken; any other chunk that is not the
cursor is still refused, naming the cursor (1966/AC203-1, AC203-2).

Builds: design 51 Publishing, the bullet "The file travels in parts through the seat"

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:54:40 +01:00
mesh-tools 8f5cbce468 Merge pull request 'Registry recovery: the grants part takes a first view of every binding (issue 1966)' (#203) from fix/1966-bindings-first-view into main 2026-11-11 10:32:34 +00:00
jschoubben 8501968154 Raise and release the bindings' first view at the bound itself, so held events never reach dead letters
mesh/delivery merged: source.main moved to novox/mesh-delivery@8f5cbce46845
mesh/delivery-group group fix/1966-bindings-first-view merged: every member is merged
mesh/check checking 8501968154b4 on 8f5cbce46845 | novox/mesh-delivery#203 in group fix/1966-bindings-first-view
No pause between two failed asks runs past the bound (two minutes): the ask at the bound raises
first-view-unanswered and releases the held events, well inside the events consumer's five deliveries
of 30 s. An answer's binding is taken as it lists it, with no fallback to an event's types (§4).
Checks: the unit start row requires the raise at exactly the bound; the whole test says the created
before the bound and requires the condition raised when it is applied (fails without the process's
hold), and waits on the kept first-views status for the held answer instead of a sleep.

Builds: design 25 bindings-first-view §3, §4, §5, §8 (hq d0760629, PR 543)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:22:57 +01:00
jschoubben 20af25ea40 The seat's events wait for the first view unacknowledged; the checks prove the order and the dropped case
The process hands an event of the seat mesh-broker to BindingsView.Hold, which
applies and acknowledges it after the answer or past the bound, so a restart
finds it delivered again (one delivered again while held keeps its place by its
stream sequence). Unit rows: the answer's bucket differs from the held created's
and the held event's stands. Whole test: an answer that lists a binding dropped
since its ask does not write it back (fails without the check). Neutral caller
name in the by-hand asks.

Builds: design 25 bindings-first-view §3, §4, §8 (hq d0760629, PR 543)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:01:39 +01:00
jschoubben fcfaa41348 The grants part takes a first view of every binding from the seat mesh-broker's list
At each start and on grants_first_view_again with state bindings, the part asks
list, writes the bindings the answer carries that it holds none of or another of,
keeps and raises binding-unlisted for those the answer omits, never writes over
an event heard since the ask, holds the seat's events until the answer or the
bound, and raises first-view-unanswered naming mesh-broker and list past two
minutes while composing as before. grants_first_views shows the first view
beside the others. Cases are rows and subtests of the existing tests.

Builds: design 25 bindings-first-view §1, §3, §4, §5, §6, §7, §8 (hq d0760629, PR 543)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:30:22 +01:00
mesh-tools 532e4d740f Merge pull request 'A take-in wait ends whoever learnt of it: taken under every key, and the watchman's seed ends what the indexer no longer holds (issue 1966)' (#202) from fix/1966-take-in-ends-every-wait into main 2026-11-10 22:50:33 +00:00
jschoubben e82da39d29 Test that a seed indexer_pending could not answer ends nothing (issue 1966, note 197)
mesh/delivery merged: source.main moved to novox/mesh-delivery@532e4d740fdd
mesh/check checking e82da39d2999 on 532e4d740fdd
seedTakeIn with a failing call and with an unreadable answer leaves a previous run's take-in-waits finding
and a held wait standing; it fails if the error path seeded an empty answer.

Builds: design 47 "Taken in by the indexer it names" (A wait is bounded, said and recoverable); 1966/AC195-5

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 23:48:45 +01:00
jschoubben 3ed2a3dd33 The indexer says take-in.taken under every claimed entry's own key too (issue 1966, note 195)
A merge waiting behind a gathered group is named by indexer_pending under its own key; when the
group ends it joins the group's revision under the oldest member's key, so its own key was never
said taken. takenWaits now also says every claimed entry's key, no key twice. T8 checks the merge
behind the group ends under its own key.

Builds: design 47 "Taken in by the indexer it names" (A wait is bounded, said and recoverable); 1966/AC195-1, AC195-3

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 23:45:52 +01:00
jschoubben 393f69f766 The watchman's seed ends the waits and findings indexer_pending no longer names (issue 1966, note 195)
SeedTakeIn, run once indexer_pending answered and after the findings of a previous run were read,
ends every take-in wait, held wait and take-in-waits finding whose key the answer does not name, as a
take-in.taken would. A seed that could not ask is not run, so ends nothing.

Builds: design 47 "Taken in by the indexer it names" (A wait is bounded, said and recoverable: "At its start the watchman seeds its open waits from indexer_pending, and ends every take-in wait and take-in-waits finding it holds whose key indexer_pending no longer names"); 1966/AC195-5

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 23:45:52 +01:00
jschoubben c2e466e16c The indexer says take-in.taken for every wait indexer_pending names (issue 1966, note 195)
A merge taken in with no take-in.pending said for it (read from indexer_pending at a
watchman restart, or said pending by the own-build-unknown path) ended with no taken
event, so the watchman raised take-in-waits for a wait nothing held. takeInWholeBy now
says taken for each wait WaitsOf names for the claimed entries (a revision by its oldest
merge's key, a group by its g. key) as well as for its said waits, without saying a key
twice. Drops are unchanged.

Builds: design 47 "Taken in by the indexer it names" (A wait is bounded, said and recoverable); 1966/AC195-1, AC195-2, AC195-3, AC195-4

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 23:45:46 +01:00
mesh-tools a6bba2af80 Merge pull request 'The assigner's wants step proves a restatement heard while an ask runs is asked once more (issue 1966 note 170; group with mesh-contracts)' (#201) from fix/1966-engine-reads-asked-again into main 2026-11-10 10:45:52 +00:00
jschoubben 1a6144aa35 S4: the assigner's wants step proves a restatement heard while ace's ask runs is asked once more (issue 1966 note 170)
mesh/delivery merged: source.main moved to novox/mesh-delivery@a6bba2af808c
mesh/delivery-group group fix/1966-engine-reads-asked-again merged: every member is merged
mesh/check checking 1a6144aa352b on a6bba2af808c | novox/mesh-delivery#201 in group fix/1966-engine-reads-asked-again
1966/AC170-4: in TestWantsAreWrittenAndNoDifferenceIs, ace's engine's answer is held
while it restates with a new form and says manifest-reads-changed again; the
restatement's event is asked once more after the held ask (the journal line), the
state engine-reads ends at the restatement with its event-at, and the held want moves.
Against the node-engine seat's client on trunk the step fails: the event is dropped.
A step in the existing test, no new function (the repository is over its test budget);
the bed hands the program a journal the test awaits a line in, no sleep.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-10 11:36:02 +01:00
mesh-tools 7ba8449ff6 Merge pull request 'Assigner: a backup ask whose want moved on is stale, and an ended ask is not written again when stale (issue 1966 note 165)' (#200) from fix/1966-stale-ended-ask into main 2026-11-10 10:05:06 +00:00