Commit Graph
1469 Commits
Author SHA1 Message Date
mesh-tools e39ec444bd Merge pull request 'The assigner, grants and the indexer ask their views again when the bus makes their consumer after a first view (issue 1966, recovery)' (#184) from fix/1966-views-durable into main 2026-11-09 07:04:31 +00:00
jschoubben 173a7654ba The assigner, the indexer and the grants part tell their followers when the bus made their consumer (issue 1966, recovery)
mesh/delivery merged: source.main moved to novox/mesh-delivery@e39ec444bd39
mesh/delivery-group group fix/1966-views-durable merged: every member is merged
mesh/check checking 173a7654ba61 on e39ec444bd39 | novox/mesh-delivery#184 in group fix/1966-views-durable
A consumer is made from now, so an event said between a first view and the consumer is never delivered; the hub says when the bus made it (EventHub.OnBound) and each follower asks again if behind (Follower.ConsumerMade).

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-09 02:27:38 +01:00
mesh-tools 4a59c17c68 Merge pull request 'The assigner reads the seat list, so a proposal no longer refuses a replicated seat (issue 1966, recovery)' (#183) from fix/1966-assigner-verbs-seat-list into main 2026-11-08 23:39:24 +00:00
jschoubben e5f782cc07 The assigner's process and its seat verbs read the seat list from the seat mesh-catalog (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@4a59c17c6886
mesh/check checking e5f782cc07d4 on 4a59c17c6886
Neither runtime of the assigner gave catalogue a seat list, so propose judged
every mesh seat as held once (mesh-dns-resolver, replicated, refused every
proposal) and seat-holders marked every seat outside the list. Both now follow
the list as the grants part does (ADR 0636 §1, §4, §7): a proposal laid again
is not ended and seat-holders is not written until the list is read, and the
two seat list tools read and read it again.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 00:34:32 +01:00
jschoubben d1a6950071 The assigner's check says a seat the unread seat list does not name waits for the list, never held once (issue 1966)
A mesh seat held on two nodes was refused as held once whenever catalogue did
not name it, and a host that has not read the seat list holds only the
bootstrapped definitions: mesh-dns-resolver, a replicated seat, refused every
proposal (ADR 0636 §1).

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 00:31:27 +01:00
mesh-tools 4f9b15a43f Merge pull request 'Grants purges old sealed lists' keys, and once at its start the ones a delete left behind (issue 1966, recovery)' (#182) from fix/1966-user-list-purge into main 2026-11-08 23:22:50 +00:00
jschoubben 126b40e6f5 Grants purges, once at its start, the sealed keys a delete left behind (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@4f9b15a43f05
mesh/check checking 126b40e6f585 on 4f9b15a43f05
The markers and the values of the lists taken away before the purge still fill
the state user-list. Before its first pass the process purges every
sealed-grants key whose last operation is a delete or purge marker, and every
user's key of a list the index of kept lists does not name; never a kept
list's key nor another key of the state, and nothing when the index cannot be
read. It logs the counts and the state's bytes before and after.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 00:22:00 +01:00
jschoubben de320684f2 Grants purges the old sealed lists' keys instead of deleting them (issue 1966)
A key-value delete only adds a marker: every value of the per-user keys of the
lists older than the two kept stayed in the state user-list's stream, which
reached 94% of its 64 MiB cap on 2026-11-08 (5,968 keys, 13,228 values). At the
cap the bus refuses grants' next write of the sealed list and deliveries lock.
The part now takes those keys away through a purger on the process's own
JetStream connection, a publish to the key's own subject the account already
writes on; the tools, with no purger, still delete.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-09 00:21:49 +01:00
mesh-tools fa8258af4e Merge pull request 'Grants creates a one-filter consumer on the plain create subject it is granted (issue 1966, recovery)' (#181) from fix/grants-consumer-plain-create into main 2026-11-08 22:57:13 +00:00
jschoubben 56018993e0 Grants creates a one-filter consumer on the plain create subject it is granted
mesh/delivery merged: source.main moved to novox/mesh-delivery@fa8258af4e6d
mesh/check checking 56018993e0d9 on fa8258af4e6d
With exactly one filter in FilterSubject, nats.go creates on $JS.API.CONSUMER.CREATE.<stream>.<name>.<filter>,
a subject the grants part is never granted (CreateConsumerGrants keeps filters out of grants), so the creates
of ASKS.novox_mesh-delivery-indexer, ASKS.shanks_mesh-delivery-builder and FORGE.shanks_mesh-delivery-builder
were refused and timed out (2026-11-08, issue 1966). Every filter now goes in FilterSubjects, which the
client creates on the plain subject.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 23:56:58 +01:00
mesh-tools 7d8e2060a7 Merge pull request 'Grants composes from the haves while the wants view is unanswered, and its conditions reach the operator (issue 1966, recovery)' (#180) from fix/1966-first-view-one-read into main 2026-11-08 22:31:58 +00:00
jschoubben 160fca6a47 Say in grants' log how long each first-view page took (issue 1966, recovery)
mesh/delivery merged: source.main moved to novox/mesh-delivery@7d8e2060a740
mesh/check checking 160fca6a4767 on 7d8e2060a740
The wants page failed 226 times on a call's bound with nothing in the log to
show how far from it the answer was.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 23:30:28 +01:00
jschoubben e79a546eb7 Compose what runs from the haves while the wants view is unanswered (issue 1966, recovery)
Since 16:39 the running assigner cannot answer its wants page within a call's
bound, and the failed wants read held the whole user list, so no new build got
its credential. As the assignments view already does, an unanswered wants view
now composes what runs from each have's fingerprint, is said as a gap that is no
failed read, and keeps the pass to one that only adds (keepsLoaded), so the list
is held only where it would take from a loaded user.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 23:29:26 +01:00
jschoubben e7779d2afd Open every grants condition's explanation as the operator-channel requires (issue 1966, recovery)
The channel refuses a raised condition whose explanation does not open with
"Needs you: " and its needs, so seven of grants' conditions, among them
first-view-unanswered, never reached the operator. One helper now writes both,
and every condition the unit tests say passes the channel's own check.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 23:27:39 +01:00
mesh-tools 3f96301177 Merge pull request 'Grant the bus keeper its account's information, which every bucket create asks first (recovery)' (#179) from fix/keeper-account-info into main 2026-11-08 22:07:15 +00:00
jschoubben 66f31c8e97 Grant the bus keeper its account's information, which every bucket create asks first
mesh/delivery merged: source.main moved to novox/mesh-delivery@3f96301177b1
mesh/check checking 66f31c8e97a6 on f9cadbfdbb93
The keeper on novox (nats fea2c02b) has been refused $JS.API.INFO every 30 s since
21:58 UTC: the client library's CreateKeyValue asks the account's information before
it creates a bucket, so each create of KV_distribution_* and KV_gitea_* timed out and
the keeper never finished a fill pass (health failed). Read-only: the account's limits
and usage, never a stream's data.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 23:07:00 +01:00
mesh-tools f9cadbfdbb Merge pull request 'Grants compose each membership from the build that runs as well as the trunk's, so a running build keeps its reads (issue 1966, recovery)' (#178) from fix/1966-membership-keeps-running-reads into main 2026-11-08 16:03:19 +00:00
jschoubben 5452fa92a7 Grants keep the last published membership when the running build cannot be read; holders stay as merged (issue 1966, review round 2)
mesh/delivery merged: source.main moved to novox/mesh-delivery@f9cadbfdbb93
mesh/check failed (2): integration: mesh-delivery-assigner/cmd/mesh-delivery-assigner.TestAProposalIsAnswer…; and 1 more | 5452fa92a731 on f9cadbfdbb93
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 17:02:17 +01:00
jschoubben 563a624a6d Grants read the have's build for memberships and holdings, and a failed read of it holds the pass back (issue 1966, review round 1)
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 17:00:15 +01:00
jschoubben 77862abb12 Grants compose a membership from the build each machine runs, the want's and the trunk's, so none loses a read (issue 1966)
A running build older than the trunk lost reads it still uses (the vault's read of the assigner's placement), failing every node-engine pass. Memberships now come from the union of the have's build, the want's and the trunk's manifest.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 16:57:13 +01:00
mesh-tools 37e7ea3794 Merge pull request 'Grants compose holders through the SDK's SeatsToPassOn, so mesh-catalog is granted to its only claimant (ADR 0660, issue 1966, recovery)' (#177) from fix/1966-seat-pass-shared into main 2026-11-08 14:47:19 +00:00
jschoubben d88c0f269d Grants test: compare the record against a deep copy, so a written holding fails it (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@37e7ea379429
mesh/delivery-group group fix/1966-seat-pass-shared merged: every member is merged
mesh/check checking d88c0f269d5f on f9cadbfdbb93 | novox/mesh-delivery#177 in group fix/1966-seat-pass-shared
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 15:44:19 +01:00
jschoubben bddb6b1eb3 Grants compose the holders on record through mesh-sdk's SeatsToPassOn, so a seat whose holder's manifest left it is granted to its only claimant (issue 1966, ADR 0660)
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 15:35:26 +01:00
mesh-tools 9c6bf236b6 Merge pull request 'The indexer writes no module whose bytes it already holds (issue 1966, recovery)' (#175) from fix/1966-indexer-noop-writes into main 2026-11-08 12:02:19 +00:00
mesh-tools 8f57df2d77 Merge pull request 'The assigner's verbs and the checker's tools ask the indexer's tools instead of reading its state (issue 1966, recovery)' (#176) from fix/1966-assigner-seat-reads into main 2026-11-08 12:01:49 +00:00
jschoubben 0a82e33518 The checker's tools and the assigner's put ask the indexer's tools instead of reading its state (issue 1966, recovery)
mesh/delivery merged: source.main moved to novox/mesh-delivery@8f57df2d7757
mesh/check failed (3): mesh-build-go: the go.mod of novox/mesh-sdk at 396511b7a276, beside the change, cann…; and 2 more | 0a82e3351804 on 9c6bf236b6b1
The second instance of the kind: checker_status and checker_pull read the indexer's
candidates and modules from its bus state, which the checker's manifest does not
declare under reads, so the runtime refuses them ("keeps and reads no state
mesh-delivery-indexer.candidates"). They now ask indexer_read_candidates and
indexer_read_modules, the indexer's read tools the manifest already invokes: the
keys with no argument, one key's value with key (ADR 0596). The assigner's put
read its newest fingerprint from the same refused state and now asks the
indexer's first view of modules, as the seat verbs do. A sweep of every module
finds no other read of another module's state that its manifest does not declare;
the checker's tools carry a test that refuses one.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 11:58:42 +01:00
jschoubben 0c4660eea8 The assigner's seat verbs ask the indexer's first views instead of reading its state (issue 1966, recovery)
mesh-module-assigner.propose and mesh-wants' upgrade and bus read the indexer's
modules and manifests straight from its bus state, which the runtime refuses
since those reads moved to the indexer's first-view tools (ADR 0615 §1, ADR 0621):
"mesh-delivery-assigner keeps and reads no state called mesh-delivery-indexer.modules".
Another module's data is asked through its tools, never read from its state
(ADR 0596). The verbs now ask mesh-delivery-indexer.modules and .manifests through
the tool runner, every page, at each call; the manifest already invokes both and
the indexer answers them to the assigner.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 11:54:37 +01:00
jschoubben 00232c7197 The indexer writes no module whose bytes it already holds (issue 1966, recovery)
mesh/delivery ready: it is merged on the Approve
mesh/check failed (3): mesh-build-go: the go.mod of novox/mesh-sdk at 396511b7a276, beside the change, cann…; and 2 more | 00232c71977b on 9c6bf236b6b1
Every recompute wrote every key of its modules state again with identical bytes: recomputeLocked
compared the package versions with reflect.DeepEqual across two map types (the contract's
map[string]string and sdkstep.PackageVersions), which never match. Each write was a views
event, and a reader of the views took each as a gap and asked the whole first view again.

The comparison is by maps.Equal now, and write itself skips an answer whose bytes are the
bytes held, for every caller and every state it writes; the merge's written list counts only
real writes.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 11:50:52 +01:00
mesh-tools 7f41218552 Merge pull request 'A bootstrapped seat counts as read by every node-engine, and node users get the seat list (issue 1966, recovery)' (#174) from fix/1966-seat-reads-bootstrap into main 2026-11-08 03:45:01 +00:00
jschoubben ee6fd92b4d The assigner and the indexer's hold count a bootstrapped seat as read (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@7f412185525e
mesh/delivery-group group fix/1966-seat-reads-bootstrap merged: every member is merged
mesh/check failed (2): mesh-delivery-checker: no published of the tagged version of go-sdk of mesh-delivery…; and 1 more | ee6fd92b4d1a on 7f412185525e
Every reader of the seat list holds the bootstrapped seats from its start
(ADR 0636 §2), so a manifest naming one is read by every node-engine
whatever its statement names. graph.MissingReads, in the Delivery domain's
SDK, is the one rule both holds judge with; mesh-sdk is not changed.

ace's engine states no seat, so the want of the node-engine's own build
0bd8cbad (needing mesh-catalog) and of restic (needing node-backup) were
held on ace: the engine that would state them could not be delivered. The
indexer's hold judges only mesh-wide reads today, so its verdicts do not
change; it takes the rule so the two stay one.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 03:53:11 +01:00
jschoubben ffcce927fe Each node's account calls the engine's invokes and hears its seat events on the seat (issue 1966)
The grants part built the node-engine's declaration with its consumes alone,
so a node's account was granted none of the engine manifest's invokes: ace's
engine could not publish mesh.seat.mesh-catalog.call.seat-definitions.node~ace,
read no seat list and composed nothing new. And its consumes of
mesh-catalog's seat-definition events were granted on the emitter's subject
only, where the engine subscribes the seat's (ADR 0636 §4).

The engine's declaration now carries its invokes and the seats it watches,
split by the same consumedOf a placed module's consumes are; the node's
account is granted the invokes as a module's are (in its own caller token
by callerNamed) and the watched events on each seat's subject by the same
watchedEvents a module's use. Its consumes stay granted on the emitter's
subjects too, so nothing granted before is taken away.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 03:50:03 +01:00
mesh-tools 68581bed7e Merge pull request 'The indexer and the checker know a Go module the trunk holds a record of (issue 1966, bootstrap recovery)' (#173) from fix/1966-known-packages-from-trunk into main 2026-11-08 00:25:48 +00:00
jschoubben 2e9f23f348 Round 1: known by the module path alone, never a package inside it
mesh/delivery merged: source.main moved to novox/mesh-delivery@68581bed7e36
mesh/check failed: mesh-build-go: the change's manifests cannot be judged: the seat list is not read (the seat list is … | 2e9f23f34828 on 68581bed7e36
The review of 0f5c186b: counting each record's packages made 94 sub-package
paths, commands among them, known names, which design 32 forbids; the seven
names refused live are each their record's module (issue 1966).

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 01:24:54 +01:00
jschoubben 0f5c186b9c The judge knows the Go packages the trunk holds a record of (issue 1966, recovery)
The indexer's judge refused manifests whose `packages` name a Go package that no
manifest declares as a package artifact: such a package has no series key, and
knownPackages took series keys only, though each module the trunk published has
a per-module record in the packages state naming its Go module and packages.
knownPackages (and the checker's PackageNames) now also count each record's
module and packages[].package; an unreadable state still judges no name.

Quick vs thorough: this is the quick fix, the smallest change that lets the
trunk's own records name what the manifests name. The thorough fix is that a
build module builds Go package artifacts, so every Go package gets a series
(the registry milestone); then the records stop being a source of names. Done
now because the 15 refused manifests hold the bootstrap of the registry delivery.
2026-11-08 01:14:52 +01:00
mesh-tools 838dbd59ed Merge pull request 'mesh-grants: a pass composing part of the mesh only grows a membership (issue 1966, bootstrap recovery)' (#172) from fix/1966-grants-partial-pass-grows into main 2026-11-07 23:39:26 +00:00
jschoubben f3f0a5e695 mesh-grants: a pass composing part of the mesh publishes the union of the memberships, so it only grows (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@838dbd59ed5d
Fault: the new assigner composes a membership that drops the placement seats and adds its state view-marks. The partial pass
kept the published one whole, so the assigner's tools never got view-marks, its assignments view never answered, and the
pass never left its partial state (third bootstrap loop of the kind after #170 and #171).

Kind: the bootstrap hold freezes whole entries, so a grant needed to end the hold is never given.
Quick fix: special-case the assigner (or let additions through for it). Rejected: the next module that gains a state meets the same loop.
Thorough fix: while a pass keeps what the bus loaded, publish the union of the membership last published and the one composed
(every list, deduplicated, published entries first; the private network, contributions and bindings the pass's), published
when it differs; the pass says what it kept beyond the composed one. The user list already unions (KeepLoaded), additions pass there.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-08 00:33:24 +01:00
mesh-tools cd7f85c74a Merge pull request 'mesh-grants keeps what the bus loaded while it composes only part of the mesh (issue 1966, bootstrap recovery)' (#171) from fix/1966-grants-keeps-what-is-loaded into main 2026-11-07 22:35:23 +00:00
jschoubben ab2bbe9ff6 mesh-grants: a partial pass keeps every deny and every published membership
mesh/delivery merged: source.main moved to novox/mesh-delivery@cd7f85c74a75
Review round 1 of issue 1966's keep-what-is-loaded fix.

- KeepLoaded intersected the denies, and the composer gives every composed user an empty
  deny, so a user in force with a wide publish and a deny was sealed with no deny. The
  union of every deny any list says is kept now, and Losses counts a deny dropped.
- A pass composing part of the mesh (the seat list unread, or placed by the haves) no
  longer narrows a published membership: one whose published value serves, hears or gives
  more than the pass composes is kept as published and said so (not_published), so a tool
  runner or a seat holder goes on serving what it serves while keeping its login.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-07 23:33:07 +01:00
jschoubben dead64ee6e mesh-grants: a pass composing part of the mesh keeps what the bus loaded
Issue 1966: the list sealed 2026-11-07 23:09, composed while the seat list was unread
(only the bootstrapped seats compose), took the node seats from the tool runners, the
vault's reads from the node-engines and the seat queues from the build modules, and left
out ledger.novox.mesh-knowledge.

- While the seat list is unread (the gate's MayAct with no seat) or a pass is placed by
  the haves, each user of the loaded list and of the list in force is sealed with the
  union of what the pass composes and what those lists give it (publish, subscribe,
  responses; a deny only where every list saying one denies it), kept the way a refused
  principal is; the users so kept are the pass's kept_loaded.
- In such a pass a list that still takes a permission from, or leaves out, a loaded user
  is held (user-list-held), naming each user and how many permissions it loses.
- A held module keeps its ledger account, ledger.<node>.<module>, with its other users:
  heldModuleUsers matched <node>.<module>[.<process>] only, which dropped the ledger user.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-07 23:28:17 +01:00
mesh-tools dcc48b82d0 Merge pull request 'mesh-grants places modules by the node-engines' haves while the assigner's assignments view does not answer (issue 1966, bootstrap recovery)' (#170) from fix/1966-grants-places-by-haves into main 2026-11-07 22:05:11 +00:00
jschoubben 69b6b89af5 mesh-grants: the bootstrap row proves a removed have places nothing
mesh/delivery merged: source.main moved to novox/mesh-delivery@dcc48b82d0cb
Review round 1 of issue 1966's fix: the membership check alone did not pin the removed
phase; the row now reads the inputs and requires mod-y off b while its have is removed.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-07 22:51:35 +01:00
jschoubben ffaff3d3aa mesh-grants: prove the haves fallback lets the indexer serve the seat list's verb
Issue 1966: the seat list is read through mesh-catalog's seat-definitions, which got no
responders only because nothing was placed. A row shows that, the assignments view
unanswered, the indexer placed by its have (its real manifest) is composed to hear
mesh.seat.mesh-catalog.* and its membership serving seat-definitions is published, while
the seat list stays unread and other modules still wait for it.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-07 22:40:31 +01:00
jschoubben 9756dd6f1f mesh-grants: place by the node-engines' haves while the assignments view does not answer
Bootstrap only (issue 1966, notes 63 and 64; the operator chose it 2026-11-07 22:19,
bending ADR 0567 §9 for the bootstrap). An assigner that serves no first views answers
no assignments, so the grants part placed nothing and wrote no grant, membership or
bucket for anything, not even for the assigner that would serve the view.

When the assignments read fails and the haves read, each module is placed on the node
whose have says it runs (any phase but removed), the bus node found among them, and what
runs composed from each have's fingerprint instead of the assigner's wants. Said as a gap
naming the fallback, and kept as Inputs.ByHaves: such a pass retires no account and deletes
no withheld hearing (ReadFailures), and seals no list that drops a user of the list in
force or of the loaded list (holdsBack). Once the view answers, the fallback is unused.

Quick fix; the thorough one stays the module-graph edge (the assigner's views before the
grants part that reads them) in the delivery plan.

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
2026-11-07 22:37:56 +01:00
mesh-tools b73315ffe0 Merge pull request 'Record today's forge merges in the merge gate (issue 1966, bootstrap)' (#169) from fix/1966-gate-record-delivery into main 2026-11-07 20:21:43 +00:00
jschoubben 38d86366bf Record today's forge merges in the merge gate: an empty change merged through the gate, so the forge bridge can build the merged message for #166, #167 and #168 (issue 1966, the operator's bootstrap)
mesh/delivery merged: source.main moved to novox/mesh-delivery@b73315ffe05c
mesh/check failed: shanks: the check of novox/mesh-delivery#169 failed: downloading the asked version 08580d25d2dc49900… | 38d86366bf3a on b73315ffe05c
2026-11-07 21:12:57 +01:00
jschoubben a37ee99b41 Merge pull request 'The indexer publishes manifest-accepted and manifest-refused as events, without waiting for the stream's acknowledgement (issue 1966)' (#168) from fix/1966-indexer-event-refused into main
Reviewed-on: #168
2026-11-07 19:58:28 +00:00
jschoubben 71a56d4606 The indexer publishes manifest-accepted and manifest-refused as events, without waiting for the stream's acknowledgement (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@a37ee99b41d5
mesh/check pass 71a56d4606c9 on b73315ffe05c | carried from a37ee99b41d5 | unit 495 run, 947 kept | integration 494 run, 1014 kept | composition passe…
Both were published with the JetStream acknowledgement awaited, a request and response, for ten seconds each, and
manifest-accepted once more on failure. On a bus refusing the subject (the old grants do not grant the new indexer
mesh.seat.mesh-catalog.event.manifest-accepted) no acknowledgement ever came, so each judging pass took about twenty
seconds a manifest and the indexer never reached the forge's messages nor the seat definitions: the take-in stood
still. Now both are published plainly on their subject with the dedup id in Nats-Msg-Id, as an event is (the
operator, 2026-11-07: everything is event-driven); the stream that keeps the subject drops a duplicate by its id, and a
refusal is said on the connection's error handler, as the journal already shows. An error of the publish itself (no
connection) still goes to the caller, which retries once and writes the unsaid finding.

Quick vs thorough: thorough for these two events (every publish of a seat event by the indexer is now an event);
sayTakeIn keeps its acknowledged publish, said in the issue for 47/G.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-07 20:57:02 +01:00
jschoubben 5013bb06e0 Merge pull request 'Put the indexer's old seatfiles module back for now, so the running indexer can take in mesh-delivery's merges (issue 1966)' (#167) from fix/1966-bootstrap-seatfiles into main
Reviewed-on: #167
2026-11-07 19:06:01 +00:00
jschoubben e01d265dec Put the indexer's old seatfiles module back for now, so the running indexer can take in mesh-delivery's merges (issue 1966)
mesh/delivery merged: source.main moved to novox/mesh-delivery@5013bb06e0aa
mesh/check pass e01d265decb3 on b73315ffe05c | carried from a37ee99b41d5 | unit 495 run, 947 kept | integration 494 run, 1014 kept | over bound: integ…
The running indexer (built at the registry merge) publishes every Go module of a repository it published before in
one forge listing; seatfiles, published at 6bc232eb and removed since, is not in the tree, so the listing fails and
every take-in of mesh-delivery is 'computed and not written' (journal 19:56:29: 'the directory
modules/mesh-delivery-indexer/seatfiles is not in novox/mesh-delivery'). mesh-delivery #165 fixed that in the new
indexer, which cannot run yet. The module comes back as it stood at 6bc232eb, imported by nothing, until the new
indexer runs; the follow-up removes it. The operator's bootstrap of 2026-11-07.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
2026-11-07 20:00:26 +01:00
jschoubben 267b53635a Merge pull request 'Take the Go package artifacts out of the delivery parts for now, so the running builder builds them (issue 1966)' (#166) from fix/1966-bootstrap-no-packages into main
Reviewed-on: #166
2026-11-07 18:50:46 +00:00