Skip to content

Commit 4a3f7bd

Browse files
authored
Merge branch 'main' into claude/builder-1-1276a-clean
2 parents 871cc77 + 3978e3c commit 4a3f7bd

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

docs/BACKLOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16121,3 +16121,35 @@ federation on, the authorization request would travel the browser-visible front
1612116121
identity provider is the only party positioned to reject tampering. That is true, and it is not by
1612216122
itself a finding against this cell.
1612316123

16124+
16125+
## 1358. claim.ps1 -Release records the script copy's tree as the actor, and nothing downstream catches a misdirected release
16126+
16127+
> 🔢 **Filed 2026-08-25 - not started.** ***The release audit record names WHICHEVER CHECKOUT'S COPY OF THE SCRIPT WAS INVOKED, not the seat that invoked it -- so a release run from another tree is silently misattributed.*** **And the asymmetry is the item:** the same anchoring on `-Take` is caught downstream by the ledger gate, because a claim naming the wrong tree makes the commit fail. **A release is never re-checked by anything**, so a wrong actor in the record stands permanently and looks correct.
16128+
> Verdict: build
16129+
> Research: none
16130+
> Closing-act: code
16131+
16132+
**Cluster:** coordination tooling. **Priority:** P2. **Verdict:** build.
16133+
**Severity:** no product axis (sec. 0). ***The cost is an audit record that names the wrong actor while reading as authoritative*** -- and that record exists specifically because `-Force` takeovers previously "left no record of who released whose claim". **The defect is the record silently failing at the job it was built for, one verb over.**
16134+
16135+
**MEASURED.** `scripts/coord/claim.ps1:69` derives `$repo` from `$PSScriptRoot`, and `released_by` at `:272` and `:302` is that `$repo`. Resolving the same expression against three checked-out copies:
16136+
16137+
| script copy invoked | resulting `$repo` |
16138+
|---|---|
16139+
| the PRIMARY checkout's copy | the primary checkout, branch `main` |
16140+
| worktree A's copy | worktree A |
16141+
| worktree B's copy | worktree B |
16142+
16143+
Three copies, three different values, from the one expression at `:69`. The specific trees do not
16144+
matter and are deliberately not named here -- what matters is that `$repo` tracks the COPY, never the
16145+
caller.
16146+
16147+
A seat that runs its OWN copy is recorded correctly. A seat that runs another copy -- an absolute `-File` path to the primary is the easy way in -- is recorded as that other tree. **A real release performed from the primary was recorded as `released_by: .../MessageFoundry, branch main` and is unattributable.**
16148+
16149+
**THE ASYMMETRY, AND WHY `-Take` IS NOT THE SAME BUG.** `claim_check.py` reads the repo from **cwd**, which is correct for it because it runs as a commit hook and cwd IS the committing worktree. So a claim TAKEN against the wrong tree makes the later commit fail the gate -- loudly, at the point of use. **BACKLOG #1297 is the worked instance of exactly that**, from the allocator rather than the claim tool: allocated from the primary checkout, gate correctly refused with *"#1297 was not allocated to this worktree"*, item re-filed at #1298, lesson written up at [docs/BACKLOG.md](BACKLOG.md) lines 53-55. **Nothing plays that role for a release.** Verified: `released_by` and `release` appear nowhere in `scripts/hooks/claim_check.py`, so the enforcing gate never reads a release record at all.
16150+
16151+
**DO NOT SIMPLY RE-ANCHOR ON cwd.** The `$PSScriptRoot` anchoring is DELIBERATE, its reasoning is written out at the head of `alloc.ps1` under **BACKLOG #1060**, and `claim.ps1:62-68` records that this file was fixed the same way *"by inspection rather than by a second reproduction"*. For `-Take` the claim must name the tree that will commit, and the anchoring is what makes a mismatch detectable. **Flipping the anchor would trade a silent wrong actor for a silently-passing wrong claim, which is worse.** The likely shape is recording BOTH trees, or refusing/warning when the script's tree and cwd differ -- a design call inside a small file, not a one-liner.
16152+
16153+
**Acceptance should include the negative case:** a release invoked from a tree other than the script's must not produce a record that reads as authoritative about who acted. A test that only exercises the same-tree path cannot fail on this defect, since the same-tree path is already correct.
16154+
16155+
**Related:** #1297 (the worked `-Take` instance, allocator side), #1060 (why the anchoring exists and must not be naively reverted).

0 commit comments

Comments
 (0)