Skip to content

skills: the board-tend contract amendment, C1 Delivery closure and the delivery declaration (Refs #5136) - #5168

Merged
EHotwagner merged 4 commits into
mainfrom
routine/5136-board-tend-contract
Nov 1, 2026
Merged

EHotwagner merged 4 commits into
mainfrom
routine/5136-board-tend-contract

Conversation

@EHotwagner

@EHotwagner EHotwagner commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Refs #5136

This is phase 2 PR 6 of the board reconciler design (docs/coordination/2026-10-31-board-reconciler-design.md, §12 item 6): the contract amendment that the contract-gated board-v2 tend rules need (S1, S3, S3b, S4, S9, S9r, O1, E1, C1, W1d, T1d). It is a governing skill/policy change. It writes nothing to the board, and it does not wire the engine's marker read (see "Not in this PR").

Lifecycle contract (work-board/references/lifecycle-contract.md, both roots)

  • New section "Board tend automatic writes". It carries <!-- fsgg:board-tend-contract/v1 -->, the only occurrence of that marker in the file. It states:
    • the intended-fields line grammar, matching the implemented V2Tend.parseIntendedLine;
    • the S9, S9r, W1d and T1d fill limits, including S9r's Root-authorship check;
    • the S3, S3b and S4 Delivery Status moves, which act only on strict linkage;
    • the bounded O1 Outcome roll-up (D3).
  • Dispatch rule 3. It adds C1 Delivery closure: programme decision 9, Root's docs: board reconciler design amendment for decision 9, Delivery closure rule C1 (Refs #5136) #5150 conditions, and the last merge declaring fsgg:delivery-completes/v1. Root's manual sweep applies the same conditions until C1 is enabled. The rule also adds the S1 Done backstop (D2).
  • Dispatch rule 5. It adds E1, the one attended membership add. Membership is not enrollment.
  • Installed acceptance. "A merged source PR cannot establish installed acceptance" now says how C1 relates to it. A Delivery whose Done when owes a release, install or readback declares fsgg:delivery-continues/v1 on its source merges, so C1 never closes it on source alone. Root closes it under rule 3 once that effect is read back.
  • Parent roll-up. "Never … automatically climb/close parents" now allows only the bounded O1 roll-up. The Status-ownership sentence in organization scope points to the section.

Status lifecycle (status-lifecycle.md, both roots)

  • It names the bounded automatic Status writes as the one exception to Root-decided Status.
  • It adds O1's limits to the Outcome paragraph.
  • Closure by C1 and the S1 backstop follow rule 3.

Routine-PR contract

  • pnext-item/SKILL.md, step 3 (both roots). Every routine PR body carries exactly one of fsgg:delivery-continues/v1 and fsgg:delivery-completes/v1. A Delivery is closed by Root's acceptance, or by C1 only after a last merge that declares completion.
  • Board-currency gate design. The marker table says that C1 closes only after a declared completion, and that a Delivery owing a release, install or readback declares fsgg:delivery-continues/v1. The §2b table, the automatic-writes table and decision 2 name S1 as the Done backstop and add C1 and the tend Status moves. The §2b roll-up sentence names O1.

Generated and release files

Local checks (printed results)

  • tests/skill-quality/run.sh: "all 60 rejection cases passed"
  • skill-union-assert.sh: "29/29 byte-identical"; skill-view check: "29 declared skill(s) visible in every one of 2 root(s)"; skill-view-parity.sh: "AGREE … over 29 id(s)"
  • generate-driver-manifest --check: current; generate-projections --check: current; repos.sh validate: OK (10 kit items)
  • check-v1-writer-census.py --structural: PASS (73 source identities); census advisory: passes
  • check-kit-published-coherence.py --pr-arm: ok (0.114.2 > 0.114.1); tests/kit-published-coherence/run.sh: all 273 legs ran
  • check-coherent-set-version.py: ok (0.114.2); check-engine-release-notes.py: 4990 of 35000 characters; fixtures: engine-release-notes 32 passed, coherent-set-version 13 passed; tests/release-successor-candidate/run.py: 26 tests OK
  • check-paths-coherence.py: 120 workflows agree; check-prose-citations.py: ok (674 documents); check-worker-id-attractor.py: ok; check-projection.py: ok (24 coherence ids)

Review repairs (Root's REQUEST_CHANGES at feabdc20, ada7990)

Not in this PR

architecture-map: unaffected

🤖 Generated with Claude Code

…e delivery declaration (Refs #5136)

Phase 2 PR 6 of the board reconciler design (section 12 item 6). The lifecycle contract gains a
"Board tend automatic writes" section carrying the fsgg:board-tend-contract/v1 marker, which admits the
contract-gated rules S1, S3, S3b, S4, S9, S9r, O1, E1, C1, W1d and T1d:

- the intended-fields line grammar (as implemented by V2Tend.parseIntendedLine) and S9/S9r's limits;
- the S3, S3b and S4 Delivery Status moves on strict linkage;
- the bounded Outcome roll-up O1 among Backlog, Ready and In progress (D3), replacing "never climb";
- dispatch rule 3: C1 Delivery closure (programme decision 9 with the #5150 rulings, including the
  delivery-completes last-merge condition) and the S1 Done backstop (D2);
- dispatch rule 5: E1's attended membership add;
- the installed-acceptance line: a Delivery owing a release, install or readback declares
  delivery-continues on its source merges, so C1 never closes it on source alone.

status-lifecycle names the bounded automatic Status writes; the board-currency gate design names the
S1 backstop, C1 and the tend Status moves in its automatic-writes table and marker grammar. pnext-item
step 3 (the routine-PR contract) requires exactly one of fsgg:delivery-continues/v1 and
fsgg:delivery-completes/v1 in every routine PR body.

pnext-item is a kit item and 0.114.1 is published, so the coherent set moves to 0.114.2 (source
preparation; the release is #5136 PR 7) with the CLI release notes. Mirrored into .agents/skills;
driver and coordination-kit manifests, repos.lock and the writer-census digests regenerated;
skills.CHANGELOG entry.

Refs #5136

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@EHotwagner

Copy link
Copy Markdown
Contributor Author

Root/fdev: independent review of feabdc20 is REQUEST_CHANGES. Each finding is classified below.

Fix now, on this PR:

  • B1: the S9 bullet must say "and S9 still fills Backlog" for other declared values, matching the design's P-INTENT and V2Tend.fs:486-489.
  • B2: qualify status-lifecycle's In review row and line 30 for tend. A strictly linked non-draft PR shows In review. A PR whose required validation is unfinished stays draft, which S3b maps to In progress.
  • N1: completes means "nothing in Done when remains after this merge". Declare continues on every merge after which any release, install or readback remains.
  • N3: say "most recent strictly linked merge".
  • N4: clarify that O1 only proposes for an Outcome with no open child.
  • N5: headings are matched ignoring case.
  • N6: name the merge gate's post-merge transition and "Item closed → Done" as the existing automatic writers.
  • N7: update the strict-item-lifecycle wording.
  • N8: the 0.114.2 release notes mention the delivery-marker check from coord: board-v2 tend proposals to #4985 and the merge gate's advisory delivery-marker check (Refs #5136) #5161.

Follow-up: N2 (engine marker read) is filed as #5174. It must land before PR 7.

A delta re-review follows. Refs #5136

rev and others added 2 commits November 1, 2026 10:26
Root's REQUEST_CHANGES on #5168 at feabdc2:
- B1: S9 still fills Backlog when the line declares another Status, beside the P-INTENT proposal.
- B2: status-lifecycle's In review row and validation line name tend's S3/S3b mapping: a PR whose
  required validation is unfinished stays draft; pnext-item step 3 keeps a PR draft until its
  required gates pass.
- N1: delivery-completes means nothing in Done when remains after the merge; continues is declared
  on every merge after which any release, install or readback remains (lifecycle-contract,
  pnext-item, board-currency gate marker table).
- N3: C1 reads the most recent strictly linked merge. N4: O1 only proposes, and writes nothing, for
  an Outcome with no open child. N5: section headings match ignoring case.
- N6: status-lifecycle names the merge gate's post-merge transition and "Item closed -> Done" as
  existing automatic writers.
- N7: strict-item-lifecycle section 6: a strict PR carries no declaration, so C1 never closes after it.
- N8: the 0.114.2 release notes name the merge gate's delivery-marker check (#5161).
- The BoardV2Application comment points at #5174 for the engine's marker read (comment only).

Mirrors, manifests, repos.lock, census digest and changelog regenerated.

Refs #5136

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nd-contract

# Conflicts:
#	registry/driver-skill-manifest.json
#	registry/skills.CHANGELOG.md
@EHotwagner

Copy link
Copy Markdown
Contributor Author

Root/fdev: the independent delta re-review APPROVED exact head 35113805.

Finding triage: the three wording observations (the line-80 scope, pnext's draft rule, the changelog summary) change no rule's effect. They are follow-up #5185, deferred so they don't cost another full CI cycle under the current congestion (#5182).

Auto-merge is set, pinned to this head, once required CI is green. Refs #5136

@EHotwagner
EHotwagner merged commit 84f3bb8 into main Nov 1, 2026
85 of 86 checks passed
@EHotwagner
EHotwagner deleted the routine/5136-board-tend-contract branch November 1, 2026 10:17
@EHotwagner

Copy link
Copy Markdown
Contributor Author

Root/fdev: merged as 84f3bb8a at the approved head 35113805. All required contexts were green. The non-required engine, pr-arm, determinism, probe, parse and others were still queued under hosted-runner congestion (#5182). They will run on main. Refs #5136

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant