Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I3072 — A task holding the release seat does not finish completed while landed work has waited past the threshold

Add a doctrine of its own, enforced by finish with its own validator, policy key and wording, that reads release.currency. It refuses the outcome completed only to the release seat's task. A task is the seat's when a live exclusive claim matching release/seat is held by a mesh session whose provider session is the task's own. The join is derived, never declared. The MCP bridge reads the provider session from the variables the lifecycle adapters declare and hands it to the server at initialize. The board projection carries a digest of it into the mesh session record as provider_session, and start records the same digest in the task record, so no raw session id leaves the machine. Before the field ships, a test shows that an event's signature covers the bytes received, so that a runtime that does not know the field still verifies the event. The seat's task is refused completed when release.currency says overdue, and when the measurement is unknown, naming the count, the wait and the version or why none was decided. A pushed v* tag counts as released only while scripts/ci/release-check reads its run as queued or running, or once that run has succeeded. A failed run, or none past release-check's grace, refuses the seat, and a forge that cannot be read is reported, never counted. Every other finish is told the stance and who holds release/seat, its session and machine, or that the seat is vacant, and is never refused by it. A measurement or seat that cannot be read refuses no other task. A task whose provider session differs from the seat holder's, such as a new session that resumed the seat's handover, is told that release/seat is held by another provider session, so the seat sees why its work was not gated. A task started with no observable provider session is never the seat's. Case 3472 proves each of these, and the intent's criterion the-seat-releases names it instead of case 3470.

BLOKOVÁNO vlna 1 · p1 · profil implementation · běží samostatně

Part of a-version-follows-the-work — Landed work is released as a measured version, and how long it has waited is a finding.

Blocked. This issue cannot start until I3070 is done. The status is derived from that, not declared.

Cíl

Add a doctrine of its own, enforced by finish with its own validator, policy key and wording, that reads release.currency. It refuses the outcome completed only to the release seat's task. A task is the seat's when a live exclusive claim matching release/seat is held by a mesh session whose provider session is the task's own. The join is derived, never declared. The MCP bridge reads the provider session from the variables the lifecycle adapters declare and hands it to the server at initialize. The board projection carries a digest of it into the mesh session record as provider_session, and start records the same digest in the task record, so no raw session id leaves the machine. Before the field ships, a test shows that an event's signature covers the bytes received, so that a runtime that does not know the field still verifies the event. The seat's task is refused completed when release.currency says overdue, and when the measurement is unknown, naming the count, the wait and the version or why none was decided. A pushed v* tag counts as released only while scripts/ci/release-check reads its run as queued or running, or once that run has succeeded. A failed run, or none past release-check's grace, refuses the seat, and a forge that cannot be read is reported, never counted. Every other finish is told the stance and who holds release/seat, its session and machine, or that the seat is vacant, and is never refused by it. A measurement or seat that cannot be read refuses no other task. A task whose provider session differs from the seat holder's, such as a new session that resumed the seat's handover, is told that release/seat is held by another provider session, so the seat sees why its work was not gated. A task started with no observable provider session is never the seat's. Case 3472 proves each of these, and the intent's criterion the-seat-releases names it instead of case 3470.

Proč

Rule 4 of the cooperation model binds the release seat. A seat that ends its session with overdue landed work leaves the owner's order unmet, with every check green. The plan critique of 2026-10-19 found that nothing joins a finishing task to the seat (a task's own claim is advisory and holds no seat), and that a gate copied into publication-currency's shape would refuse every task on an unknown measurement and name the published site as the cause. The join was agreed with the release seat on 2026-10-21. A seat held by each release task would show the seat vacant between tasks and invite a second session to take it, and a seat claim that carried a task id would go silent whenever its holder forgot to claim it again. Claude Code exports its session id to the Bash tool and to every MCP process it starts, so the session that holds the seat and the task that finishes can be told apart, or matched, without anyone declaring it.

Aktuální stav

finish asks publication-currency about the site and nothing about the release. No task record names its provider session, and no mesh session record carries one.

Cílový stav

The release seat's finish says completed only when the trunk's landed work is released, still inside the threshold, or being released by a run the release check reads as alive. The seat's task is found by its provider session, and every other finish names the stance and the seat's holder.

Rozsah

  • .ai/repo/ci/gates.yaml
  • .ai/repo/policy.yaml
  • .ai/repo/rules/project/land-and-publish.v1.md
  • .ai/repo/project/intents/a-version-follows-every-session.yaml
  • apps/majordomus-cli/src/capability/builtin/release.rs
  • apps/majordomus-cli/src/capability/builtin/mesh.rs
  • apps/majordomus-cli/src/mcp/bridge.rs
  • apps/majordomus-cli/src/peers.rs
  • apps/majordomus-cli/src/mesh/cooperation.rs
  • apps/majordomus-cli/src/mesh/journal.rs
  • lib/start.sh
  • lib/finish.sh
  • lib/gates.sh
  • lib/common.sh
  • docs/DOCTRINE.md
  • docs/RELEASE.md
  • docs/MESH.md

Závislosti

Kritéria přijetí

  • A task is the seat's exactly when a live exclusive claim matching release/seat is held by a mesh session whose provider_session digest equals the one start recorded for the task, and nobody declares it
  • The seat's task is refused completed when release.currency says overdue, naming the count, the wait and the version or the reason none was decided, and when the measurement is unknown
  • The same task finishes when its tag's run is queued or running by release-check's reading, or has succeeded, and when nothing has landed past the release; a failed run, or none past the grace, refuses it
  • A task that is not the seat's is told the stance and who holds release/seat, and is never refused by this gate, including when release.currency or the mesh cannot be read; one whose provider session differs from the holder's is told the seat is held by another provider session, and one started with none is never the seat's
  • The provider_session field replicates to a runtime that does not know it, and that runtime still verifies the event

Validace

  • bin/majordomus plan validate
  • bash test/run.sh 3472_the_release_seat_finishes_only_when_released

Požadované důkazy

  • case_the_release_seat_finishes_only_when_released

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Canonical record: .ai/repo/project/issues/I3072.yaml. Read it back with majordomus plan show I3072.

Prohledává názvy a popisy všech stránek, které tento web publikuje.