Commit Graph
95 Commits
Author SHA1 Message Date
jschoubben 9493d0d289 Contract: the seat mesh-wants' wanted is said per node and module, kept last per subject
Builds: design 47 G A-61 (§693, §683, §556, §73)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:57:31 +01:00
jschoubben 24d8e4e987 Contract: the seat mesh-wants' wait gains the step outside
Builds: design 47 G §706 (step outside added to §498's list), §498

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
2026-11-11 22:39:00 +01:00
jschoubben 7024df820a §693 / A-6: the seat mesh-wants' wanted event gains removed
Builds: design 47 G §693, A-6 (G-20)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:42:07 +01:00
jschoubben 0c28d6a716 A-5 (§614): meshcatalogclient follows the branches once for every part: registrations, the gate's source, views adopted and dropped, entries by fingerprint
Builds: design 47 G §614, A-5 (G-20)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:41:28 +01:00
jschoubben 33c6fc4f7f CT15 (take-in bodies, none-yet): the seat mesh-catalog's bodies give take-in.taken and take-in.pending; revision answers none-yet in a field
The seat's bodies hold TakeInTaken (branch, source, entries with repository and pull) and TakeInPending (branch); revision's
answer gains none-yet and its revision is optional; meshcatalogclient reads the field, never the error's words. The holders'
and readers' uses of the answer follow (a pointer revision).

Builds: design 47 G §476, §493, §530, §454, §648

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:32:40 +01:00
jschoubben 92d938dd8c §702 the seat mesh-wants' wait gains owner, on and words, and its module is optional
The builder's toolchain wait is said with this type, step build; how may be superseded. Fixtures and generated code follow.

Builds: design 47 G §702, §629, §512

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:31:18 +01:00
jschoubben f9df426396 §690 the seat mesh-delivery's source takes no branch and answers the branches it keeps
source's input branch is optional; given none it answers branches, the branch of each source key the gate keeps.
Fixtures and generated code follow.

Builds: design 47 G §690, §614

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:30:49 +01:00
jschoubben f8e509ce56 The assigner and the indexer use the catalog key's codec meshcatalogkey; meshcatalogclient's two wrappers go
BL6 (ba43e400) kept KeyPart and ParseKeyPart in meshcatalogclient until the callers moved; they have, so the wrappers and their duplicate test go.

Builds: design 47 G §670

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 21:18:40 +01:00
jschoubben 57a4397c90 Merge branch 'feat/47-G-indexer-dev2' into feat/47-G-dev2-join 2026-11-11 21:06:21 +01:00
jschoubben 02f3d8c208 Merge branch 'feat/47-G-builder-2' into feat/47-G-dev2-join 2026-11-11 21:06:16 +01:00
jschoubben 1ddc26087d CT16 (approval carried, pins stated): the seat mesh-delivery says approval-carried and pins-stated
approval-carried.<repository>.<pull> is kept 90 days; pins-stated has the keep of pinned, which is the seat's family.

Builds: design 47 G §542, §579, §652

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:35:40 +01:00
jschoubben 0e67e56c7c CT17 (tag-wanted out): the checker's definition holds no tag-wanted
Builds: design 47 G §528, §645, §321

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:35:24 +01:00
jschoubben 01be023d26 CT14 (runner bodies): the runner's bodies name fingerprint, a wait may be of the step pipeline, a pipeline keeps its version
Pipeline, PipelineStarted, PipelineEnded, StepEvent and Wait name the build-input fingerprint fingerprint, not fp; Wait.step
takes pipeline; Pipeline gains version. Fixtures and generated code follow. What a pipeline wait says in on is not given by
a line (reported).

Builds: design 47 G §534, §550, §585, §646

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:34:40 +01:00
jschoubben 28da5e08c3 CT13b (dependency part): package-published's dependency names its part
Each item of dependencies is {kind, part, version, digest}: kind 1 a resolved package's artifact reference, kind 3 the
toolchain's part. Its field artifact is part.

Builds: design 47 G §673, §466, §374

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:33:26 +01:00
jschoubben 02a4ef3497 CT13 (reserved's answers and its client): reserved answers released or error, and meshbuildsclient asks it
reserved answers module, version, artifacts and released (a boolean), or error alone; module, version and artifacts are
read as required only without error. contracts/go/clients/meshbuildsclient (artifact go-meshbuildsclient) has Reserved,
which answers the reservation or release, a Refusal for the error and an error for an answer that is not one.

Builds: design 47 G §679, §582, §586, §650

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:33:08 +01:00
jschoubben 9b6f886577 IX30 (§491, D-15): each entry carries its artifacts' package names, and a name two modules carry is refused
The entry's artifact gains package {ecosystem, name} (the seat mesh-catalog's definition, regenerated), read at take-in
from the revision's own files (go.mod, package.json) through the forge; the validator's PackageNameProblems refuses
every module sharing one name in one ecosystem, naming them, in the trunk's judge pass. An image's name is not written:
the design does not say what it is.

Builds: design 47 G §676, §491, §478, §504, §412
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:30:49 +01:00
jschoubben 7ecae5a6dd CT12: the build seats' ask carries its version, every ask says ask-taken and step-ended (issue 1966)
The builder's reserved version reaches the build in the ask; a holder says when it takes and ends
any ask, a builder's build included, so the watchman times every ask; the toolchains key names its
program's digest; the checker may drop its own asks until its removal. step-progress and ask-taken
name no keep and go on the shared events stream. The delivery SDK's neutral forms follow the part.

Builds: design 47 G §472, §548, §549, §552, §573, §602, §603

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:27:39 +01:00
jschoubben c7ad2477f0 BL6 (key codec): the catalog key's codec is meshcatalogkey, so the builder's builds package reaches no bus
meshcatalogclient imports the new package and keeps two one-line wrappers for the callers of the other parts until
they move to it.

Builds: design 47 G §670, §614 (wiring unchanged)

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 20:26:55 +01:00
jschoubben 7fca7f0ac8 CT12: the build seats' ask carries its version, every ask says ask-taken and step-ended (issue 1966)
The builder's reserved version reaches the build in the ask; a holder says when it takes and ends
any ask, a builder's build included, so the watchman times every ask; the toolchains key names its
program's digest; the checker may drop its own asks until its removal. step-progress and ask-taken
name no keep and go on the shared events stream. The delivery SDK's neutral forms follow the part.

Builds: design 47 G §472, §548, §549, §552, §573, §602, §603

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 16:01:17 +01:00
jschoubben e7ef3f3a78 Take out StepRun.names: the step ask no longer carries the registrations' names for a lint scan
The part build-step.json, its generated Go and TypeScript (seatgen, check clean), the three build seats' fixtures and sdk/buildstep lose StepNames and the ask's required names.

Builds: design 47 G §7, §328, §329
2026-11-11 14:51:56 +01:00
jschoubben f288270513 W7.3: the toolchain gate takes its placements from the assignment half (design 47 lines 1466-1471, 1487-1490; issue 1966)
Design 47 *Each part acts on its own entries* and *Every part takes a first view, then
follows the events*: the builder reads its placements through the seat mesh-wants'
view, never the assigner's state. The seat's client gets Placed over assignment graph
revisions (ADR 0625 §4: the logic the gate's three callers share), and the gate a
Revision feed; the first revision settles it, a pair new in a later one stands since
that revision's time, as the state's write time did (issue 1940).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ

Builds: design 47 G §348, §195, §200
2026-11-11 14:43:55 +01:00
jschoubben 73d15c08f2 CT3 (answers): the catalog graph entry carries manifest-digest
Builds: design 47 G §506 (the entry gains manifest-digest, the sha256: digest of the manifest's bytes as the forge answered them, set by the indexer at take-in). Regenerated by seatgen (-check clean).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:57:00 +01:00
jschoubben 9d79964487 CT2 (answers): mesh-builds' reserved takes a package's name, toolchain-agreed carries digests with their nodes
Builds: design 47 G §478 (reserved takes module or name, with version; an unknown or doubled name answered error, §491), §472, §495 (toolchain-agreed carries digests, each with the nodes reporting it, in place of one digest). Regenerated by seatgen (-check clean).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 13:53:17 +01:00
jschoubben e1499f0617 CT4: a wait names its clock and its kind: clock-from, step of the acting steps, a put's fingerprint, a delivery wait's machines; regenerated
mesh-wants' Wait gains clock-from, the step enum of section 203 with put, delivery, kept-build and backup,
fingerprint and machines, and requires step, module and since only (a put's wait has no part);
the runner's wait body gains clock-from. The runner's `step` already names pipeline steps: see the report.

Builds: design 47 G §498, §266, §269

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:21:56 +01:00
jschoubben 940d42c659 CT5: the build seats' steps takes drop and why, fetch gains builds, a build names what it resolved, steps are keyed by asker, toolchain-reported and step-progress; regenerated
steps callers: the runner, the indexer, the operator and sessions (D-18); BLD12 builds in the fetch;
BLD13 resolved and the toolchain digest; BLD14 the step key <asker>.<node>.<id> beside main's
<node>.<id>; the events toolchain-reported and step-progress on the three build seats, and
step-progress on mesh-wants.

Builds: design 47 G §463, §480, §465, §466, §467, §481, §483, §492, §496

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:20:54 +01:00
jschoubben ce286795e0 CT10: a branch with no revision yet is a ready, empty catalog view
Builds: design 47 G §479, §495

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:17:16 +01:00
jschoubben dd8c4d405a Merge branch 'feat/47-G-build' into feat/47-G-build-contracts 2026-11-11 12:15:39 +01:00
jschoubben 5e0c04c3cf CT10: meshcatalogclient follows the catalog half per watched branch, a first view then each catalog-revision of that branch
The view of a branch is named mesh-catalog.catalog-revisions.<branch>; two branches give two views.
A revision heard and not held asks revision once more, said in the log.

Builds: design 47 G §358, §196, §479, §495

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 12:15:39 +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 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 18c954ddcd CT10: meshwantsclient holds a part's view of the assignment half, a first view then assignment-revision
The typed first view and the following of each half sit in the seats' client packages, built on go/views
(design 47 G §245), so no part follows the assignment half by a follower of its own: a newer trunk revision
heard is waited for, said in the status, asked and held; a candidate's, or one held, asks nothing.

Builds: design 47 G §245, §365

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:45:50 +01:00
jschoubben 496989ccfb CT10: meshcatalogclient follows the registrations, a first view then each registration-changed
The assigner and the forge module's merge switch on their first registrations (design 47 G §353), so the
seat's client carries the typed follower on go/views: a first view asked of the verb registrations, a newer
version heard asked again until the picture holds it, an answer read before the change asked once more.

Builds: design 47 G §353, §245

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:43:53 +01:00
jschoubben eca4320d1c CT1: the runner's step outcome not asked, a pipeline's end count, and the step log kept 100 days; regenerated
An approval step after a failed required step ends not asked, naming that step (the
fixture of a failed pipeline said waiting before); Pipeline and PipelineEnded carry
end-count, one higher at each end again after a passing rerun. The fixture rows fail
against the contract before (end-count dropped on read).

Builds: design 47 G §24, §325 (not asked), §29, §85, §325 (the end count), §85 (step-log,
100 days).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:31:09 +01:00
jschoubben ab9b8d3471 CT5: the build seats accept step on check and on delivery, and run on check, each kind by its stream; regenerated
A kind's subject is <stream>.<kind>: check.step, delivery.step (a recovery's steps, the
runner alone) and check.run (node-build-go). Regenerated with seatgen at mesh-catalog
b5aebbbe (GEN4); its fixture rows for the three subjects fail to compile against the
contract before.

Builds: design 47 G §415, §455, §22, §206, §86, §338.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:29:13 +01:00
jschoubben 349a3519ef CT10: meshdeliveryclient reads the source per watched branch; SourceMainKey and the removed-verb rows retire
Builds: design 47 G §15, §305 (a reader names a branch's source revision: SourceKey, the
value SourceByBranchValue), §431 (the five verbs of release 6 leave the definition, so the
list RemovedVerbs and its test go; the settle ask goes with the verb settle).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:05:56 +01:00
jschoubben e1df6af536 CT7: the seat mesh-delivery keeps the state turns, and asks until their last users go; regenerated
Left in the definition: no line of the contracts part removes the state turns, and the
state asks is read by the teller, the forge bridge, the view and the indexer, whose rows
remove their reads; it is removed in the head where its last reader goes (design 47 G §431).

Builds: design 47 G §305, §431.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 11:05:56 +01:00
jschoubben 3883667254 CT10: meshwantsclient compares wants that now carry their parts by value
The want gained the released version and each part's digest (CT4), so two wants are
compared by value; a table row writes and reads one back. Failed to compile before.

Builds: design 47 G §379, §308.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:56:59 +01:00
jschoubben 90b8ba6461 CT10: the client meshpipelinerunnerclient: the runner's event subjects built and parsed, its bodies decoded
Builds: design 47 G §73, §74, §332 (every subject built and parsed back; group-ended
under branch and group with no module part). The rule Passed of the dev branch is not
built: no line of the contracts part names it.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:50:30 +01:00
jschoubben 72ac9b09cb CT11: regenerate the Go and TypeScript contracts from CT1 to CT9; each TypeScript contract as index.js with index.d.ts
Generated by seatgen (mesh-catalog, GEN1 and GEN2 on its worktree) from the
definitions of CT1 to CT9; module.json names the artifacts of the new seats
mesh-builds, mesh-pipeline-runner and git. seatgen -check is clean; every seat
package's generated fixture test passes.

Builds: design 47 G §341 (a TypeScript contract is emitted as index.js with
index.d.ts), §196, §339 (the generator refuses an unknown callers entry),
§260, §331.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:48:56 +01:00
jschoubben 15c065d2bb CT8: the seat mesh-delivery-checker: the events owed per repository and number, and checked
Builds: design 47 G §162, §164, §260 (owed on mesh.seat.mesh-delivery-checker.event.owed.<repository>.<number>, kept 7 days and 64 MiB per §396; checked).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:47:35 +01:00
jschoubben 71afa10f4d CT7: the seat mesh-delivery: source, recovery, groups with acts, owed and the record events; table, recheck, close and the milestone events removed
Builds: design 47 G §304, §305 (verbs source with a branch, recovery; groups; events
owed, pinned, freed, heads-replaced, record-opened, record-ended, filling, full, room,
source-moved, recovery-merged; table, recheck, close and the three milestone events
removed), §15, §162 (owed per repository and number, 7 days, 64 MiB), §431 (asks,
turns and the five verbs of release 6, checks and settle leave the definition),
§394 (recovery is of class act: the operator and sessions), §391 (class).

Open, left as the dev branch built it: the state merges is kept (no line says the
merge states of the gate go whole).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:47:13 +01:00
jschoubben 0c37cd6402 CT6: the seat git: its verbs with callers and error answers, tag, its events with hyphens, branch-moved kept
Builds: design 47 G §310, §311, §312 (an error answer fixture per verb), §313
(status, comment, view, note the forge bridge alone; merge-pull persons and
sessions; the reads invokers), §370 (tag, callers the builder), §396 (event names
with hyphens), §331 (branch-moved 64 MiB, 90 days), §11, §39 (state failed-steps),
§129, §111 (statuses, status), §391 (class).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:46:26 +01:00
jschoubben cbaa9a35e9 CT4: the seat mesh-wants: input, version-delivered, the accepted step, the want's version and parts, the step place
Builds: design 47 G §308, §22, §24, §116, §338 (accepted kind step from the runner
alone; step-ended.<node>), §331 (step-ended 32 MiB, version-delivered 64 MiB, 90
days), §376, §379 (version-delivered; the want names the released version and each
part's digest), §354 (verb input, callers the holders of the build seats; state
inputs), §184 (assignment revision per watched branch), §398 (the step place
declared here), §400 (no verb optional).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:45:40 +01:00
jschoubben 17517b9f4e CT5: the build seats' accepted kinds step and run, and the state detected-steps
Builds: design 47 G §22, §338 (accepted kinds step, runner alone; run, node-build-go,
callers the runner, the indexer, the assigner and the checker), §326, §414 (state
detected-steps, one key per artifact, apart from today's step keys steps).

Not built: §415's kind names check.step, check.run, delivery.step (the definition
reader refuses a dotted accepted-kind name); stopped on that question.

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:44:58 +01:00
jschoubben 6acad9425d CT9: the registry seats' text callers become lists of the forms of §336
Builds: design 47 G §68, §127, §336, §392 (seat:<seat>, invokers).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:44:02 +01:00
jschoubben 94f8d3a48c CT5: the build seats: steps, drop, kept-artifact with callers, step-ended on the node, the accepted step
Builds: design 47 G §22, §116, §206, §271, §326, §338 (callers: steps the runner
and the indexer, drop the runner and the builder, kept-artifact the node-engines),
§24, §331 (step-ended.<node>, 128 MiB), §370, §373 (the ask carries the version and
each package member's digest), §203, §324 (acts build on the language).

Not yet in this commit, left as the dev branch built them and not read against the
lines: the accepted kind names (dev's 'step'; G-9 §415 names check.step, check.run,
delivery.step), the state rename detected-steps (G-9 §414).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:44:02 +01:00
jschoubben c8b11baf04 CT3: the seat mesh-catalog: registrations, versions, outdated, input, entry, version-released, versions-filled, entries with languages
Definition and fixtures; the generated contracts come with CT11 (their fixture
test is the proof: it fails on a fixture the definition does not read).

Builds: design 47 G §2, §3, §4, §100, §108, §394 (registrations read; register,
policy, watch, unwatch act, callers operator and sessions), §349, §372, §375,
§354, §443 (versions, outdated, input, entry; version-released, versions-filled
with no age limit; layouts versions, build-edges, inputs), §307, §260
(catalog-revision.<branch>), §47, §323, §365, §374, §378 (entry: artifacts with
language, edges with stale/order, word and part, the events the streams declare),
§331, §396 (keep objects), §400 (no verb optional), §391 (class).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:44:02 +01:00
jschoubben 7f0fbf15ae CT2: the seat mesh-builds, held once for the mesh: package-published, toolchain-agreed, reserved
Definition and fixtures; the generated contracts come with CT11.

Builds: design 47 G §52, §307 (seat held once, event package-published), §334
(artifact reference, version, digest, branch, source revision), §374 (resolved
dependencies with version and digest), §376 (toolchain-agreed: language, version,
toolchain digest), §369 (verb reserved, callers the registry seats' holders),
§331, §396 (keep: package-published 128 MiB, toolchain-agreed 16 MiB, 90 days),
§391 (class read).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:35:25 +01:00
jschoubben 04270ef754 CT1: the seat mesh-pipeline-runner, its twelve verbs with callers and class, its kept events and acts
Definition and fixtures only: the generated Go and TypeScript contracts and the
module.json artifacts come with CT11, once the reader of G-9's forms and the
generator read them (seatgen refuses these forms today).

Builds: design 47 G §306, §394, §391 (verbs, callers, class), §73, §332 (event
subjects; group-ended under branch and group), §331, §396 (each event's keep
object: 90 days and its cap), §65, §203, §266 (acts pipeline, bound 30m), §261
(fixtures name each subject), §419 (pipeline-ended: tests, over-budget yes/no),
§441 (widens says could not run).

Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-11 10:34:52 +01:00
jschoubben a8c8f8fb5a F8, dropped: the Drop layout is the generated contracts' (not the domain SDK's) and the key form sits beside Pause's helpers; a step ended by drop is the state dropped (ADR 0664 §4, issue 1748 review 1)
Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
2026-11-09 23:40:29 +01:00