Call the ship binary projections #38

Merged
PerishFire merged 1 commit from land/ship-cargo-probe into main 2026-08-14 15:03:02 +00:00
Owner

Call the ship binary projections

Route matrix, build, assemble, publish, verify and smoke through ship binary.
source, authority, inspect, packport, promote, compile, registry and activate
stay on release: the first four are the truth cycle, and the last three are
transitional until a Cargo adaptor and the activate split land.

This must not merge before the Plumb version carrying ship binary activates as
stable. Every job installs the frozen stable Plumb, so the workflow can only
name verbs that the current stable already answers.

Read the release anchor from its ref

The binary and Cargo lanes took channel and version as workflow inputs, so the
anchor reached every job as two strings a human typed into a dispatch form.
Worse, channel bypassed the freeze entirely: resolve emitted version and commit
while build and coordinate re-read inputs.channel directly, which is the second
source the release law forbids.

Derive both from github.ref instead. refs/heads/release/vX.Y.Z carries a stable
version and refs/tags/vX.Y.Z-c.N an exact one; anything else refuses. The
channel then comes from plumb release channel, which owns that rule alone, and
every downstream job reads the frozen resolve outputs.

The concurrency group can call no binary, so it reads the ref directly: a
release line collapses to one consensus group per repository while an exact tag
keys its own, which is what the old channel and version expression produced.

Both inputs stay declared and unread so every existing caller keeps working.
Behaviour is single -- the anchor always comes from the ref -- and the
declarations are inert, so this is a migration window rather than a second code
path. Callers drop them at their own pace; a later commit drops the
declarations once none remain.

Ask the binary which Cargo projection it holds

The Cargo steps spelled one verb, and the lane installs canonical stable Plumb
rather than the tree it is releasing. The moment stable crosses the release
that moves plumb release registry under ship cargo, every product calling
these lanes fails at argument parsing -- eleven repositories at once, on a
version bump none of them made.

Probe the deed and run whichever spelling answers. Probing the deed rather
than the adaptor matters: a Plumb that declares cargo and still refuses it
answers ship cargo --help, so an adaptor-level probe would choose a verb that
cannot run. The deed-level probe was exercised against all three shapes -- the
current stable, a build that declares and refuses, and a build that absorbs --
and selects correctly for each.

This is a migration window, not a second code path. It goes when no released
Plumb spells the verb the old way.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

Call the ship binary projections Route matrix, build, assemble, publish, verify and smoke through ship binary. source, authority, inspect, packport, promote, compile, registry and activate stay on release: the first four are the truth cycle, and the last three are transitional until a Cargo adaptor and the activate split land. This must not merge before the Plumb version carrying ship binary activates as stable. Every job installs the frozen stable Plumb, so the workflow can only name verbs that the current stable already answers. Read the release anchor from its ref The binary and Cargo lanes took channel and version as workflow inputs, so the anchor reached every job as two strings a human typed into a dispatch form. Worse, channel bypassed the freeze entirely: resolve emitted version and commit while build and coordinate re-read inputs.channel directly, which is the second source the release law forbids. Derive both from github.ref instead. refs/heads/release/vX.Y.Z carries a stable version and refs/tags/vX.Y.Z-c.N an exact one; anything else refuses. The channel then comes from plumb release channel, which owns that rule alone, and every downstream job reads the frozen resolve outputs. The concurrency group can call no binary, so it reads the ref directly: a release line collapses to one consensus group per repository while an exact tag keys its own, which is what the old channel and version expression produced. Both inputs stay declared and unread so every existing caller keeps working. Behaviour is single -- the anchor always comes from the ref -- and the declarations are inert, so this is a migration window rather than a second code path. Callers drop them at their own pace; a later commit drops the declarations once none remain. Ask the binary which Cargo projection it holds The Cargo steps spelled one verb, and the lane installs canonical stable Plumb rather than the tree it is releasing. The moment stable crosses the release that moves `plumb release registry` under `ship cargo`, every product calling these lanes fails at argument parsing -- eleven repositories at once, on a version bump none of them made. Probe the deed and run whichever spelling answers. Probing the deed rather than the adaptor matters: a Plumb that declares `cargo` and still refuses it answers `ship cargo --help`, so an adaptor-level probe would choose a verb that cannot run. The deed-level probe was exercised against all three shapes -- the current stable, a build that declares and refuses, and a build that absorbs -- and selects correctly for each. This is a migration window, not a second code path. It goes when no released Plumb spells the verb the old way. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Call the ship binary projections
All checks were successful
guard / runner-control (pull_request) Successful in 8s
guard / guard (pull_request) Successful in 24s
guard / package-windows (pull_request) Successful in 55s
guard / runner-control (push) Successful in 39s
guard / package-windows (push) Successful in 35s
guard / guard (push) Successful in 58s
59b0ec9bd1
Call the ship binary projections

Route matrix, build, assemble, publish, verify and smoke through ship binary.
source, authority, inspect, packport, promote, compile, registry and activate
stay on release: the first four are the truth cycle, and the last three are
transitional until a Cargo adaptor and the activate split land.

This must not merge before the Plumb version carrying ship binary activates as
stable. Every job installs the frozen stable Plumb, so the workflow can only
name verbs that the current stable already answers.

Read the release anchor from its ref

The binary and Cargo lanes took channel and version as workflow inputs, so the
anchor reached every job as two strings a human typed into a dispatch form.
Worse, channel bypassed the freeze entirely: resolve emitted version and commit
while build and coordinate re-read inputs.channel directly, which is the second
source the release law forbids.

Derive both from github.ref instead. refs/heads/release/vX.Y.Z carries a stable
version and refs/tags/vX.Y.Z-c.N an exact one; anything else refuses. The
channel then comes from plumb release channel, which owns that rule alone, and
every downstream job reads the frozen resolve outputs.

The concurrency group can call no binary, so it reads the ref directly: a
release line collapses to one consensus group per repository while an exact tag
keys its own, which is what the old channel and version expression produced.

Both inputs stay declared and unread so every existing caller keeps working.
Behaviour is single -- the anchor always comes from the ref -- and the
declarations are inert, so this is a migration window rather than a second code
path. Callers drop them at their own pace; a later commit drops the
declarations once none remain.

Ask the binary which Cargo projection it holds

The Cargo steps spelled one verb, and the lane installs canonical stable Plumb
rather than the tree it is releasing. The moment stable crosses the release
that moves `plumb release registry` under `ship cargo`, every product calling
these lanes fails at argument parsing -- eleven repositories at once, on a
version bump none of them made.

Probe the deed and run whichever spelling answers. Probing the deed rather
than the adaptor matters: a Plumb that declares `cargo` and still refuses it
answers `ship cargo --help`, so an adaptor-level probe would choose a verb that
cannot run. The deed-level probe was exercised against all three shapes -- the
current stable, a build that declares and refuses, and a build that absorbs --
and selects correctly for each.

This is a migration window, not a second code path. It goes when no released
Plumb spells the verb the old way.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Land-Source: ship-cargo-probe@802d482533fa61d263f69c0f8786c541eaa32503
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishLab/actions!38
No description provided.