Commit Graph
1402 Commits
Author SHA1 Message Date
jschoubben 3cdecff518 IX26: the indexer's manifest says version 0.1 (none published), checked as MAJOR.MINOR
Builds: design 47 G §368, §299, §295

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:11:08 +01:00
jschoubben 5009bb9256 IX23: the indexer keeps no mesh-wide hold, serves no tool or view of modules, and hears no engine's manifest reads
Builds: design 47 G §196, §185, §364

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:09:55 +01:00
jschoubben 83b5275fe2 IX22: a test that a merged revision naming a newer indexer is the previous catalog graph revision with only the indexer's entry replaced
Builds: design 47 G §273, §237

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:05:04 +01:00
jschoubben ae8a6f1a6d IX16: the indexer's manifest test lets the assigner's invoke of modules stand until the assigner's own subtask moves it to revision
Builds: design 47 G §263

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 14:03:28 +01:00
jschoubben bcca6028db Merge branch 'feat/47-G-build' into feat/47-G-build-indexer 2026-11-11 14:03:01 +01:00
jschoubben f30c54faa1 IX16: the catalog graph revisions as objects (the research 085 half joined), an entry carrying its manifest whole and the digest of its bytes, a full store holding the take-in's merges
Builds: design 47 G §173, §174, §175, §176, §177, §178, §179, §180, §181, §194, §200, §209, §210, §263, §443, §506

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:58:09 +01:00
jschoubben cb6dc7c320 BL4: the git tag go/vMAJOR.MINOR.PATCH is written on the catalog's version-released, at the commit the version was reserved from
The reservation keeps the repository and commit of the build and whether the module has a Go package; version-released writes
the tag through the seat git's verb tag before the key goes, and a tag the forge did not write leaves the release to be heard again.

Builds: design 47 G §370

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:57:54 +01:00
jschoubben 83ff5c747d Merge branch 'ix16-wip' into feat/47-G-build-indexer 2026-11-11 13:55:20 +01:00
jschoubben fbe34bcf07 Merge branch 'feat/47-G-build' into feat/47-G-build-watchman 2026-11-11 13:54:53 +01:00
jschoubben 9f43e927e4 WM7 (store-filling): a store clears below 80 % of its cap, not 70 %
Builds: design 47 G §181, §263

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:53:50 +01:00
jschoubben 33d9e942f2 Merge branch 'feat/47-G-build' into feat/47-G-build-assigner 2026-11-11 12:37:06 +01:00
jschoubben 846340c553 AS4: the assigner computes a node's entries from the catalog half of the branch its placement names
The indexer's first views of manifests, modules and graph are replaced by one meshcatalogclient.Catalog per watched branch
(the trunk's from the start, each branch a registration names from then on); the world keeps each branch's modules, graph nodes
and manifests, and a pass splits a module's nodes by the branch their placements name and computes each group's wants from that
branch's half. Not built: AC2 (a composition step on beta only), which is AS5's step.

Builds: design 47 G §14, §184, §191, §194, §195
Tests: TestACommitOnBetaMovesOnlyTheNodeThatChoseBeta (failed with the groups on the trunk alone), TestTheCatalogHalfIsTakenInPerBranch

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:37:06 +01:00
jschoubben 38a2492394 RN3 (publish half): a pipeline starts by compare-and-set on its key, and a package-published starts one per dependent behind
A start writes the pipeline's key (watched branch, source revision, module) only when it is absent and says
pipeline-started; a second start of the same revision and module writes nothing. A package-published asks the
catalog's outdated for that package on that branch, a kept call, and starts a pipeline for each dependent behind
by kind 1, keyed by the publication's branch and source revision. The start on take-in.taken, and a gathered
group's one pipeline per branch, wait for take-in.taken's body (design 47 G §476, in review).

Builds: design 47 G §54, §103, §334, §53, §75

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:34:26 +01:00
jschoubben 68c10c5664 RN24: the runner's manifest says version 0.1, declares its finding stream and hears the keeper's ask
Builds: design 47 G §368, §383, §387

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:31:58 +01:00
jschoubben 7fcf1ce9ee Merge branch 'feat/47-G-build' into feat/47-G-build-runner 2026-11-11 12:28:08 +01:00
jschoubben 2b052791da RN2: the runner reads its policy from the registrations and each watched branch's catalog half, and says when it waits for a view
The runner follows the registrations (a first view, then registration-changed) and, for each watched branch
they name, that branch's catalog half (a first view, then catalog-revision of that branch), each in its state
first-views, read by pipeline_first_views and asked again by hand with pipeline_first_view_again; past five
minutes without a view it writes view-waits. A step's status is read per module and artifact from the
registration, and the build seat of an artifact from the acting rule build naming its language.

Builds: design 47 G §21, §23, §323, §77, §195, §200
Open: design questions Q-RN7 (where a build seat's holder is read, §323) and Q-RN8 (a status left empty, §23).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:28:00 +01:00
jschoubben 2c1f5a4033 VW1: the view reads the modules from the catalog half of the trunk, by meshcatalogclient.Catalog
The view's process follows the trunk's catalog half (first view of the seat mesh-catalog's verb revision, then each
catalog-revision of branch main) and hands each changed entry to its model in the form of the value it always kept; its tools
read the newest trunk revision through the verb. The manifest invokes seat:mesh-catalog.revision and consumes
mesh-catalog.catalog-revision instead of the indexer's modules read tool and views family.

Builds: design 47 G §196, test 61

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:21:20 +01:00
jschoubben 1ec1e0a224 Merge branch 'feat/47-G-build' into feat/47-G-build-watchman 2026-11-11 12:14:30 +01:00
jschoubben 5fc1dbd264 WM11, CK12, EN1 (manifest half): finding stream, the keeper's ask and MAJOR.MINOR version in the manifests of the watchman, the checker and enrolment
Builds: design 47 G §383, §387, §368 (the findings writer half waits for the generated writer of §439)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:14:24 +01:00
jschoubben c3068b15e1 CK1: the checker reads no merge turn of the gate and claims a new check at once
Builds: design 47 G §278, §197 (test 52)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:10:49 +01:00
jschoubben 21195a06be CK2: the checker takes the trunk heads from the catalog half's revision and catalog-revision, not the gate's source (repairs the checker against the new contracts)
Builds: design 47 G §197, §195, §200

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:08:09 +01:00
jschoubben 190fdef8b3 AS19 (the seat list): the assigner wires its seat list reader through mesh-sdk's seatlist.Part
Its hand-wired seatGate goes; the reader, its tools assigner_seat_list and assigner_seat_list_again and the
re-read when the events are live are the SDK's Part. A test searches the code for a wiring of its own.
Left of AS19: the indexer's views and the gate's reads, which wait for AS4's catalog half.

Builds: design 47 G §204
Test: TestTheSeatListIsWiredByTheSDKAlone

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:07:39 +01:00
jschoubben 60937e2526 Merge branch 'feat/47-G-build' into feat/47-G-build-assigner 2026-11-11 12:05:11 +01:00
jschoubben ec14823429 AS15, AS16: a provider counts healthy by the node-engine seat's running, and a put ends on it
The assigner hears running.<node>.<module> through its durable consumer on the seat's stream (last message per
subject), counts a provider healthy while its running build is not stopped whatever a newer want of it waits for,
and ends a put when running names the put's fingerprint (a running without one, or stopped, ends none); the have
no longer ends a put. With the stream not heard, rule 5 reads the have as before.

Builds: design 47 G §199, §309; main file "A provider before its consumers" and "Until milestone G, from the have; from G, from running"
Tests: TestAProviderRunsHealthyByItsRunning, the put rows of TestTheBusMovesByTheRulesAndItsUserListRevisionIsWrittenAtOnce, TestAnAnswerCountsOnlyForTheAskingItAnswered (running ends the put)
Manifest: consumes node-engine.running; validator: no finding new against trunk.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:05:11 +01:00
jschoubben fdc2cec328 Merge branch 'feat/47-G-build' into feat/47-G-build-watchman 2026-11-11 11:59:01 +01:00
jschoubben cbbb971d35 WM12: the watchman's manifest says its version as MAJOR.MINOR
Builds: design 47 G §368, §372 (0.1 for a module with none published)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:58:33 +01:00
jschoubben 7d1ce3296d Merge branch 'feat/47-G-build' into feat/47-G-build-assigner 2026-11-11 11:58:00 +01:00
jschoubben b1fcabcebe AS3: a placement's branch and build, set by a proposal, bound by the ask, and its build a held put
A proposal sets a module's watched branch and build (a re-place keeps them), the changes digest an ask binds to
carries both, and a placement's build is a held put of that build, released when the placement drops it while a
person's put stays. Taken over from 6bc6fe53 and b8e50fff.

Builds: design 47 G §14, §78, §114, §360, §361
Tests: TestAssignments (place change branch, build, digest rows), aPlacementsBuildIsPut. Test 77 (§79) covered by the put row.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:57:53 +01:00
jschoubben 5fcd76a9f9 WM7: the watchman raises record-open 24 hours after a merge unless another condition covers it, and store-filling from the seats' filling, full and room
Builds: design 47 G §148, §160, §181, §218, §263

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:56:50 +01:00
jschoubben 51e34d5369 Merge branch 'feat/47-G-build' into feat/47-G-build-bridge 2026-11-11 11:56:06 +01:00
jschoubben 4866f7097a Merge branch 'feat/47-G-build' into feat/47-G-build-teller 2026-11-11 11:55:32 +01:00
jschoubben 91a9c41290 gofmt 2026-11-11 11:55:02 +01:00
jschoubben 0b597eb417 FB3, FB4, FB5: the bridge performs what the gate owes through the seat git and says each outcome, reads groups from the seat, and its owed tools
Taken over from the join (6ada2089, f1417ab0, 6e162a60, 3a4e62b0, 73fb42d7, ee15a280, a5476f62, 94a4e62a, 33907a81, e519cc87, e8f268c1) and fitted to the final
contracts: the seat's events are pull-updated, pull-merged, pull-closed, forge-delete; OwedEnded keeps only the fields §164 names; merge-pull
takes no ask. A merge act is performed only as a switched act (§169); from G the gate owes none (§167).

Builds: design 47 G §43, §45, §157, §161, §162, §163, §164, §167, §168, §169, §171, §250

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:54:56 +01:00
jschoubben d7c8fdd0ed Merge branch 'feat/47-G-build' into feat/47-G-build-assigner 2026-11-11 11:54:50 +01:00
jschoubben 1778888acc AS2: the wants keep the trunk-only form until the first registration, and follow the pipelines' ends from it
Builds: design 47 G §95, §130, §353, §352

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:54:50 +01:00
jschoubben a227e061ec Merge branch 'feat/47-G-build' into feat/47-G-build-indexer 2026-11-11 11:53:52 +01:00
jschoubben ee34487126 Merge branch 'feat/47-G-build' into feat/47-G-build-teller 2026-11-11 11:53:45 +01:00
jschoubben 61277b6b9b VW4: the view's manifest says version 0.1, declares its finding stream and hears the keeper's ask
Builds: design 47 G §383, §387, §368, §411

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:53:41 +01:00
jschoubben 3b31e6df05 AS1: a want follows a passed pipeline, by compare-and-set per module and watched branch
The assigner hears pipeline-ended and group-ended, keeps the newest end per module and branch in the state written (tool assigner_written), and writes a want only from an end whose required steps passed.

Builds: design 47 G §29, §35, §102, §120, §291, §325, §352, §85

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:53:07 +01:00
jschoubben 43bebef626 WM3: the watchman says machine-away and machine-back of the seat mesh-watchdogs when a machine's presence expires and when it is heard again
Builds: design 47 G §389, §436

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:52:13 +01:00
jschoubben e7bd54e67b IX19: the indexer reads every contracts module's trunk definitions at its start before judging, waits for the seat git at most two minutes, says view-waits past five and judges again once it answers
Taken from the join base (6ce86c96, ff6e74f9) onto the build branch.

Builds: design 47 G §198, §248, §316, §255, §57 (tests 54, 57)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:51:07 +01:00
jschoubben 799241364f VW0: the view reads the trunk's source by the branch key and the per-branch value
Builds: design 47 G §305 (the state source is kept per watched branch), §431

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:50:04 +01:00
jschoubben 69aeb817e2 WM2: the watchman raises build-capacity-waits for a build seat whose oldest queued step has waited 60 minutes
Builds: design 47 G §86

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:49:32 +01:00
jschoubben 07832b1a2c The indexer's whole-module test proves a merge kept as one catalog graph revision, said on the seat, and the recompute and the drop answered by the running indexer (milestone 47/G W4.13)
Rows in TestIndexerWritesModulesAtAMerge; the pin rows come with W4.5.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:46 +01:00
jschoubben a217a44f05 The indexer's catalog graph revisions are read and steered by its tools: one revision, every revision with the store's fill, the candidates' halves, a recompute compared with the kept one, and a drop by hand that says room (milestone 47/G W4.12)
Pins and the consumer of the gate's events come with W4.5, which makes them.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:46 +01:00
jschoubben 0f618f1998 WM1 (head half): the watchman raises pipeline-stands for a watched branch's head with no pipeline within five minutes
Builds: design 47 G §12, §75, §112 (the head half; the step half waits on a design question)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:38 +01:00
jschoubben 3a4768ab43 FB6a: the forge bridge reads trees, files, pulls and tags through the seat git and hears its pull and delete events
Taken over from the join's 473f9323, 5f40d230, 159a679b; the events are the seat's pull-updated, pull-merged, pull-closed and forge-delete.

Builds: design 47 G §252, §310, §312, §317

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:36 +01:00
jschoubben 9b9e9f68bb TL4: the teller's manifest says version 0.1, declares its finding stream and hears the keeper's ask
Builds: design 47 G §383, §387, §368, §411

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:34 +01:00
jschoubben b2b449c913 The indexer says filling, full and room of its catalog graph revisions and holds a merge while they are full (milestone 47/G W4.6)
Design 47, Two graphs: a keep that would pass the store's cap refuses
the next revision and says full, naming the source revision held pending
with the reason objects full (Pending.Held, which indexer_pending shows);
a keep crossing 80 % says filling; once something removes revisions,
RoomAgain says room below the filling mark and evaluates pending again
(no timer). Each event is said once by its duplicate id.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:20 +01:00
jschoubben deb88b17b9 The indexer answers the seat mesh-catalog's verb revision in its own runtime, to exactly the parts that declare it; modules ends as a first view (milestone 47/G W4.4)
ADR 0663: the catalog half is read through revision, answered by the
tools bundle from the catalog graph revisions before it asks anything,
to the parts whose entry in the newest trunk revision declares
seat:mesh-catalog.revision in invokes, the holder refused too; none kept,
every reader waits. The first view modules, its callers list and its
tool leave the manifest; the assigner declares revision instead (its
code moves in W5.10); the grants part keeps its read of modules until W8.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:48:09 +01:00