Skip to content

Record E81: the release flow on a project on main - #175

Merged
richmahn merged 2 commits into
mainfrom
claude/e81-release-flow
Oct 10, 2026
Merged

richmahn merged 2 commits into
mainfrom
claude/e81-release-flow

Conversation

@richmahn

Copy link
Copy Markdown
Member

What changes

Records E81: the release flow ran on QA through #170's code, on a project created on main. Refs #170.

This was part of #171 until AGENTS.md's size rule moved it out. A pull request over 800 changed lines needs both reviewers clean, and these 89 recorded files (about 11,000 lines) filled George's review copy before #171's code three rounds running. #171 merged without them. This pull request is evidence only: docs/evidence.md, one citation in docs/traceability.md, and the recordings with their README.

What E81 says

scripts/probe/qa-release-probe.mjs --owner tc-admin-qa-org ran on QA (DCS 28.1.0+dcs.19) on 10 October 2026:

  • Create: project.create.apply created tc-admin-qa-org/id_tcar0228 on main.
  • Seed: the probe took its seed books from bahtraku/Perjanjian-Baru-Pendau at the branch that repository's read names, and committed them to main. That read is not recorded; E14's recording shows Pendau's default_branch is master.
  • Releases: release.plan took the branch from the repository's default_branch, main. Both release commits say "Prepared by tC Admin 0.1.0 from main at …". v1.0.0 was made a pre-release, then promoted; v1.1.0 was released.
  • Discard: a v1.1.1 preparation was discarded, leaving main the only branch.

Recordings: the token and every email are redacted. Base64 file content over 4,000 characters is replaced by its length (the license in 10, MAT and MRK in 49).

Invariants

None touched: evidence only. The run exercised R3, R5, R7, and R8 as E54 did.

Evidence

Verification

npm run check exits 0 (docs check, lint, typecheck, tests).

Documents updated

🤖 Generated with Claude Code

https://claude.ai/code/session_01W8rv4ReoP1L2nPMnLBsw8k

The release probe ran the whole flow on QA through #170's code: a
project created on main, two releases prepared from main, one promoted,
and a discard, leaving main the only branch. Moved here from #171,
whose review packet these 89 recordings filled before the code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W8rv4ReoP1L2nPMnLBsw8k
@richmahn
richmahn requested a review from uwreview October 10, 2026 03:37
@uwreview

Copy link
Copy Markdown
Contributor

Codex auto-review (local) — 601f5f8d8

Approve PR #175 at 601f5f8d875325220757f7b2b813ff134570864e.

  • Claim / summary: The evidence-only change supports E81’s recorded release flow on main. No actionable in-scope findings.
  • Evidence / strengths: Fixtures agree on repository branch, catalog heads, release commits, promotion, and discard leaving only main. The README explicitly discloses omitted source reads and trimmed content.
  • Verification method: Parsed all 89 JSON fixtures from the authoritative patch, matched all 75 summary steps to recordings, and checked redaction—including embedded request bodies. Local documentation checks passed; GitHub CI passed for the pinned head.
  • Confidence: High for artifact consistency. I did not rerun the live probe or the full test suite locally; unrecorded source reads remain independently unverified.
  • Questions: None.

VERDICT: clean


Local codex exec (skill Frank preamble; no stamp), via the uw codex-review skill.

@uwreview

Copy link
Copy Markdown
Contributor

Grok auto-review (local) — 601f5f8d8

The embedded diff was cut off mid-recording. I'll read the rest of the review packet before judging whether E81's claims match the fixtures.## Review — PR 175, head 601f5f8d875325220757f7b2b813ff134570864e

Inspection-based. I did not re-run npm run check. The embedded CI row says the document tower, lint, typecheck, and tests passed. No existing review comments. The diff I was given stops inside 59-GET-repos_tc-admin-qa-org_id_tcar0228.json, so files 60–75, summary.json, seed-receipt.json, and the release-plan-* / preparation-discard-* sidecars were not in this review copy.

Evidence-only change: E81, one traceability cell, and the QA recording. Through file 57 the recording does support a project created on main going through pre-release, promote, and a second release. I will not sign Status: verified for the discard or for "no phase failed."

Strengths

  • Create is on main in the request, not as a story told afterwards. 09 posts "default_branch":"main" and the 201 answers default_branch: "main". The pre-create GETs (04, 08) are 404, which is the right existence check.
  • Catalog latest agrees with the commits E81 names. After the seed, 12 has branch_or_tag_name: "main" at c9acaba290… with MAT and JHN. After the second content write, 35 has main at a7cf701557… with MAT (148038 bytes), JHN, and MRK (97541). prod is v1.0.0.
  • The release calls match the prose. 22 commits Release v1.0.0: snapshot / Prepared by tC Admin 0.1.0 from main at c9acaba290. 27 creates v1.0.0 with prerelease: true (201). 32 PATCHes {"prerelease":false} and the 200 comes back prerelease: false. 49 commits Prepared by tC Admin 0.1.0 from main at a7cf701557. 54 creates v1.1.0 with prerelease: false (201), body citing that same main sha, added MRK, revised MAT, JHN carried forward. Temp branches for v1.0.0 and v1.1.0 are deleted at 204 (28, 55).
  • Auth headers in the visible files are token [redacted]. Emails are [redacted]. The Pendau read is not smuggled back in: nothing in 01–11 is a GET of bahtraku/Perjanjian-Baru-Pendau, and E81 says that read is not recorded and cites E14. That caution is right.
  • The traceability edit is one cell: E81 on the #170 row. It does not pretend this recording changed an invariant.

The second snapshot's parent is the previous release, not main's tip. 48 creates temp-tca-release/v1.1.0 from e3f3086e… (the v1.0.0 snapshot), and 49's parent is that same sha, while the message says the content was prepared from main at a7cf701557. That matches the later-release-starts-from-the-previous-tag rule already written on E80. I am not calling it a bug.

Issues

1. Medium — recording contract is narrower than the files. Class: HYGIENE (the main-branch conclusion still has a catalog witness). Fix it in this PR; it is a false sentence in the evidence index.

fixtures/door43/qa.door43.org/2026-10-10/release-flow/README.md:3 says every exchange is the usual request/response wrapper, and that the only size trim is the license in 10 and MAT and MRK in 49.

These reductions are not in that sentence:

File What is actually stored
11-POST-contents-seed.json (whole file, 16 lines) No headers. Body is the prose stub [two books and metadata.json as base64]. Response is only commit.sha c9acaba290…. The branch is not in the file.
34-POST-contents-change.json (same shape) Same stub. Response sha a7cf701557… only. This is the write README line 9 says was POST /contents on main.
10 request body Entire body replaced by [28263 bytes omitted: file contents as base64]. The response trim of the license is what the README describes.
49 request body Entire body replaced by [331601 bytes omitted…]. Response MAT/MRK lengths match the README.
19, 44, 45 "archive_bytes": null on 200 zip responses.
57-GET-sb-archive-after-release.json 200 for …/sb/v1.1.0.zip stored as {"bytes": 2000} only.

11 and 34 are the two writes onto main. A reader who believes the README cannot check which branch those POSTs named. The conclusion is not floating: 12 and 35 show latest on main at those shas with the books the README names. Say so, and name the real trim. One paragraph. Do not add a sixth special case later.

2. Medium — discard and "no phase failed" are outside this review copy. Class: unverified claim, not a demonstrated contradiction. Blocking for a Status: verified signature.

E81 (docs/evidence.md, the added paragraph at the hunk on line 463) says a v1.1.1 preparation was discarded, GET /branches lists main alone, and no phase failed. The README points that at 74 (DELETE, 204), 75, and summary.json. The diff ends in 59, which is the start of that phase (branch_count: 1, release_counter: 2, default_branch: "main" — before any v1.1.1 prepare). I do not have evidence for the discard sentences. I also do not have evidence they are false.

Blast radius: a future citation of E81 treats the discard-on-main half as observed. That is the point of this PR.

Exit condition: mergeable when (a) the README trim sentence lists the reductions in the table above, and (b) a review of the full tail shows 74 DELETE 204 of the v1.1.1 temp branch, 75 listing only main, summary.json with no failed phase, and no authorization value other than token [redacted]. If (b) is already true in the PR, it clears with no edit. (a) is an edit.

3. Low — /user/teams publishes a privilege map that this probe does not need. Class: HYGIENE / information disclosure. Follow-up, not a hold.

02 and 06 record tc-admin-qa as owner of BurritoTruck and as admin on bahtraku's Translators team (includes_all_repositories: true, visibility: "private"). Token and email are redacted, which is what E81 promised. The release claim only needs the tc-admin-qa-org Owners row. Next recording, keep that row and drop the other orgs. I am not holding this PR for it. Assumption: this repo is public, because the PR and the Actions URL are on public GitHub. If the repo is private, the blast radius is the people who can already read QA.

Questions

  • The DCS string 28.1.0+dcs.19-g41cde8ce33 appears in E81 and the README, not in any exchange through file 59. If summary.json carries it, that file was not in this copy. I do not have evidence for the server version beyond the prose.
  • release-plan-2.json was not in this copy. I want it to show source branch main and head a7cf701557, with the temp branch still rooted at e3f3086e, so the message and the parent stay explicitly two different facts.

Verdict

Request changes. The create, the two releases, the promote, and the redaction I could see are in good shape. The evidence note overclaims how complete 11 and 34 are, and the discard half of Status: verified was not in the diff I reviewed. Exit condition is the two checks in issue 2. I did not re-execute the suite.

VERDICT: findings


Local grok --prompt-file (skill George preamble; no stamp), via the uw:grok-review skill.

… round 1

Fixes George #1 (round 1, 601f5f8): README named two trims; the files carry body, archive, and header reductions too.
@uwreview

Copy link
Copy Markdown
Contributor

unfoldingWord review bench — fix lane, round 1 on 601f5f8d8 (uwreview; docs/review-policy.md §2/§3, RULINGS D12; headless claude-opus-5-5, cost $1.25)

  • [blocking] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/README.md:3 — HYGIENE: the README's recording sentence names only the license/MAT/MRK trims; the files also omit request bodies, archives, and headers, and 11/34 do not record the branch they wrote. → fixed d4e2ccf0d: Reproduced, and wider than George said. The request bodies of 10, 49 and 71 are '[N bytes omitted…]'. 19, 44, 45, 66 and 67 store archive_bytes:null. 57 stores {bytes:2000}. grep -L '"headers"' finds 11, 12, 33, 34, 35, 57 and 75. 11 and 34 hold only the URL, a stub body and the commit sha. Fixed: the README now lists each reduction, and cites 12:187-189 and 35:212-214 (latest=main at c9acaba/a7cf701) as the witness for main. Markdown only, +6/-1. Not run: node scripts/check-docs.mjs, which the permission layer refused ('requires approval'). The edit adds no links or ids.
  • [blocking] george · docs/evidence.md:467 — QUESTION: E81's discard, 'GET /branches lists main alone' and 'no phase failed' were outside George's truncated review copy; he flagged them as unverified. → refuted: The claim holds at 601f5f8. In 74, DELETE temp-tca-release%2Fv1.1.1 answers 204 with 'token [redacted]'. 75 lists only 'main' at a7cf7015. summary.json has 75 steps, all 2xx except the expected 404 existence checks at 4 and 8; discard.state is 'discarded', branches is ['main'], and dcs_version is '28.1.0+dcs.19-g41cde8ce33'. Every authorization header in the directory is 'token [redacted]'. George's exit condition (b) clears with no edit.
  • [follow-up] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/tc-admin-qa-org/02-GET-user_teams.json — HYGIENE: the /user/teams recordings (02, 06) publish the test user's teams in other orgs, which the probe does not need. → deferred: Not verified line by line: I did not open 02 or 06. George himself rates it Low, follow-up, not a hold. Follow-up for the author: on the next recording, keep only the tc-admin-qa-org team row. Round 1 does not fix follow-up-band findings that do not ride a blocking fix in the same file.
  • [follow-up] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/tc-admin-qa-org/release-plan-2.json:7 — QUESTION: does release-plan-2 show source branch main and head a7cf701557, separate from the temp branch rooted at e3f3086e? → dispositioned: Answered from the file. release-plan-2.json:6-9 has bound_to.default_branch_sha=a7cf7015… and release_tag_sha=e3f3086e…. notes_draft says 'at a7cf701557 on main'. summary.json second_release.prepare.wrote has the branch at e3f3086e. The two facts are recorded separately. The DCS version question is answered too: summary.json:821 has dcs_version.

Pushed d4e2ccf0d to claude/e81-release-flow (one commit; git revert d4e2ccf0d if you disagree). The reviewers re-run on it next.

Round 1 on 601f5f8: Frank is clean, and George raised 3 issues and 2 questions. I fixed George #1 (Medium) in commit d4e2ccf: the README now lists every reduction in the recordings, the body, archive and header omissions included. I refuted George #2 using 74, 75 and summary.json: the discard and the main-only branch list are recorded, and no step failed. I deferred George #3 (Low, the teams privilege map) and answered both questions from the files. The docs check was refused by the permission layer and did not run; the change is Markdown only. Nothing was pushed.

@uwreview

Copy link
Copy Markdown
Contributor

Codex auto-review (local) — d4e2ccf0d

Approve at d4e2ccf0dca70780c3ad3168168e0a8ae6afe79e; no blocking findings.

  • Summary / strengths: E81’s core claims match the recorded creation on main, release, promotion, and discard results. All 89 JSON fixtures parse; all 75 exchange statuses match the summary.
  • P3 · HYGIENE · nonblocking: README.md:7 calls fixture 57’s value the archive size. Evidence: bytes: 2000 comes from the recorder’s truncated text preview length. Verification method: inspected the fixture and recorder at lines 126 and 301. Confidence: high. Blast radius is documentation accuracy only. Follow-up owner: PR author; describe the value as a truncated preview length and archive size as unknown.
  • Verification limits: Documentation checks pass. npm run check stopped because oxlint is unavailable; typechecks and tests did not run. Approval is inspection-based; the live probe was not repeated.
  • Questions: None.

VERDICT: clean


Local codex exec (skill Frank preamble; no stamp), via the uw codex-review skill.

@uwreview

Copy link
Copy Markdown
Contributor

Grok auto-review (local) — d4e2ccf0d

The review packet was cut off mid-recording. I'll read the rest of the diff before judging whether E81's claims match the fixtures at d4e2ccf.The packet still stops inside file 59. I'll check the README fix against the exchanges I can see, and the release calls that are actually in this copy.## Review — PR 175, head d4e2ccf0dca70780c3ad3168168e0a8ae6afe79e

Inspection-based. I did not re-run npm run check. The CI row on this head is still pending. Round 1's README gap is fixed in the files I can see. The discard half of Status: verified is still not in this copy: the diff stops inside 59-GET-repos_tc-admin-qa-org_id_tcar0228.json. Files 60–75, summary.json, seed-receipt.json, and the release-plan-* / preparation-discard-* sidecars are absent. The fix-lane comment says it read them at 601f5f8d8. That comment is not the recording. I do not have evidence those sentences are false, and I will not sign them from the comment.

Frank's clean review was on 601f5f8d8 and says he parsed all 89 fixtures. I agree with him on the create, both releases, the promote, and the redaction through file 57. I do not agree this copy is enough to call E81 verified end to end.

Strengths

  • The README now says what the visible files actually store. 10 and 49 request bodies are length stubs ([28263 bytes omitted…], [331601 bytes omitted…]). The license in 10 and MAT/MRK in 49 are length stubs; metadata.json and README.md stay inline. 19, 44, and 45 are archive_bytes: null. 57 is {"bytes": 2000} and has no headers. 11, 12, 33, 34, and 35 have no headers. 11 and 34 keep the URL, a prose body, status 201, and the commit sha. That matches the new bullets. I am not opening a sixth trim case.
  • Create is on main in the request. 09 posts "default_branch":"main" and the 201 answers default_branch: "main". 04 and 08 are 404.
  • Catalog latest agrees with the shas E81 names. 12 has main at c9acaba290… with MAT and JHN. After the promote, 33 has prod = v1.0.0 at e3f3086e… and latest still main at c9acaba290…. 35 has latest = main at a7cf701557… with MAT (148038), JHN, and MRK (97541), and prod still v1.0.0.
  • The release calls match the prose. 21 branches temp-tca-release/v1.0.0 from c9acaba290…. 22 commits Prepared by tC Admin 0.1.0 from main at c9acaba290. with parent c9acaba290…. 27 creates v1.0.0 with prerelease: true (201); 30 shows that tag on preprod and prod: null. 32 PATCHes {"prerelease":false} and the 200 is prerelease: false, stage prod. 48 branches temp-tca-release/v1.1.0 from e3f3086e… (the v1.0.0 snapshot, not main's tip). 49's parent is that same sha, and the message says prepared from main at a7cf701557. Same split E80 already records. 54 creates v1.1.0 with prerelease: false (201) at befdb4fa…, body citing a7cf701557 on main, added MRK, revised MAT, JHN carried forward. 28 and 55 delete the temp branches at 204.
  • Auth headers in 01–58 are token [redacted]. Emails are [redacted]. No Pendau GET appears in 01–11. The traceability edit is one cell, E81 on the #170 row.

Issues

1. Medium — discard, "no phase failed", and the README's "no others" tail are outside this copy. Class: unverified claim on a Status: verified sentence. Not a demonstrated contradiction. Blocking for that signature.

docs/evidence.md (E81, the added paragraph) says a v1.1.1 preparation was discarded, GET /branches lists main alone, no phase failed, and names DCS 28.1.0+dcs.19-g41cde8ce33. fixtures/door43/qa.door43.org/2026-10-10/release-flow/README.md:3 and the discard row say 66 and 67 are archive_bytes: null, 71's body is a length stub, 75 has no headers, 74 is a 204 DELETE, and 75 lists only main, and that no other reduction exists. 59 is the start of that phase: branch_count: 1, release_counter: 2, default_branch: "main", before any v1.1.1 prepare. The DCS string is not in any exchange through 59.

Blast radius: a later citation treats the discard-on-main half as observed. That is what this PR is for. Round 1's exit (a), the README trim list, is met for 01–57. Exit (b) is not met in this packet. This is the second time that tail has been missing. I am not adding another point fix on top of the README.

Exit condition: mergeable when a review of the full tail shows 74 DELETE 204 of temp-tca-release/v1.1.1 with token [redacted], 75 listing only main, summary.json with no failed phase, the README sentences for 66, 67, 71, and 75 matching those files, and no authorization value other than token [redacted]. If that is already true, it clears with no edit. The fix-lane comment does not clear it.

2. Low — /user/teams still publishes a privilege map this probe does not need. Class: HYGIENE. Follow-up, not a hold.

Same finding as round 1, still open, still not a merge block. 02 and 06 record tc-admin-qa as owner of BurritoTruck and as admin on bahtraku's Translators team (includes_all_repositories: true, visibility: "private"). Token and email are redacted. The release claim only needs the tc-admin-qa-org Owners row. Next recording, keep that row. Assumption: this repo is public, because the PR and the Actions URL are on public GitHub. If it is private, the blast radius is people who can already read QA.

Questions

  • release-plan-2.json is not in this copy. I still want source branch main and head a7cf701557 recorded separately from the temp branch rooted at e3f3086e. The fix lane says the file does that. I have not seen it.
  • summary.json's dcs_version is the only place the server string can live, and that file is not here.

Verdict

Request changes. The README fix holds for every reduction I can see, and the create, both releases, the promote, and the redaction through 57 are in good shape. I will not sign E81's discard, the "no phase failed" line, or the README's "no others" claim while 60–75 and the sidecars are missing from the review copy. Exit condition is issue 1. I did not re-execute the suite.

VERDICT: findings


Local grok --prompt-file (skill George preamble; no stamp), via the uw:grok-review skill.

@uwreview uwreview left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: approve

This PR was built with Claude (builders: claude), so under RULINGS D13 the bench's Claude pass does not review it. The gate is the independent reviewers on d4e2ccf0d: Frank (Codex) clean and George (Grok) findings, with 4 finding(s) on the disposition record and 0 still open and blocking. Tier T2 (declared none, derived T2).

Frank (Codex) on d4e2ccf0d

Codex auto-review (local) — d4e2ccf0d

Approve at d4e2ccf0dca70780c3ad3168168e0a8ae6afe79e; no blocking findings.

  • Summary / strengths: E81’s core claims match the recorded creation on main, release, promotion, and discard results. All 89 JSON fixtures parse; all 75 exchange statuses match the summary.
  • P3 · HYGIENE · nonblocking: README.md:7 calls fixture 57’s value the archive size. Evidence: bytes: 2000 comes from the recorder’s truncated text preview length. Verification method: inspected the fixture and recorder at lines 126 and 301. Confidence: high. Blast radius is documentation accuracy only. Follow-up owner: PR author; describe the value as a truncated preview length and archive size as unknown.
  • Verification limits: Documentation checks pass. npm run check stopped because oxlint is unavailable; typechecks and tests did not run. Approval is inspection-based; the live probe was not repeated.
  • Questions: None.

VERDICT: clean


Local codex exec (skill Frank preamble; no stamp), via the uw codex-review skill.

George (Grok) on d4e2ccf0d

Grok auto-review (local) — d4e2ccf0d

The review packet was cut off mid-recording. I'll read the rest of the diff before judging whether E81's claims match the fixtures at d4e2ccf.The packet still stops inside file 59. I'll check the README fix against the exchanges I can see, and the release calls that are actually in this copy.## Review — PR 175, head d4e2ccf0dca70780c3ad3168168e0a8ae6afe79e

Inspection-based. I did not re-run npm run check. The CI row on this head is still pending. Round 1's README gap is fixed in the files I can see. The discard half of Status: verified is still not in this copy: the diff stops inside 59-GET-repos_tc-admin-qa-org_id_tcar0228.json. Files 60–75, summary.json, seed-receipt.json, and the release-plan-* / preparation-discard-* sidecars are absent. The fix-lane comment says it read them at 601f5f8d8. That comment is not the recording. I do not have evidence those sentences are false, and I will not sign them from the comment.

Frank's clean review was on 601f5f8d8 and says he parsed all 89 fixtures. I agree with him on the create, both releases, the promote, and the redaction through file 57. I do not agree this copy is enough to call E81 verified end to end.

Strengths

  • The README now says what the visible files actually store. 10 and 49 request bodies are length stubs ([28263 bytes omitted…], [331601 bytes omitted…]). The license in 10 and MAT/MRK in 49 are length stubs; metadata.json and README.md stay inline. 19, 44, and 45 are archive_bytes: null. 57 is {"bytes": 2000} and has no headers. 11, 12, 33, 34, and 35 have no headers. 11 and 34 keep the URL, a prose body, status 201, and the commit sha. That matches the new bullets. I am not opening a sixth trim case.
  • Create is on main in the request. 09 posts "default_branch":"main" and the 201 answers default_branch: "main". 04 and 08 are 404.
  • Catalog latest agrees with the shas E81 names. 12 has main at c9acaba290… with MAT and JHN. After the promote, 33 has prod = v1.0.0 at e3f3086e… and latest still main at c9acaba290…. 35 has latest = main at a7cf701557… with MAT (148038), JHN, and MRK (97541), and prod still v1.0.0.
  • The release calls match the prose. 21 branches temp-tca-release/v1.0.0 from c9acaba290…. 22 commits Prepared by tC Admin 0.1.0 from main at c9acaba290. with parent c9acaba290…. 27 creates v1.0.0 with prerelease: true (201); 30 shows that tag on preprod and prod: null. 32 PATCHes {"prerelease":false} and the 200 is prerelease: false, stage prod. 48 branches temp-tca-release/v1.1.0 from e3f3086e… (the v1.0.0 snapshot, not main's tip). 49's parent is that same sha, and the message says prepared from main at a7cf701557. Same split E80 already records. 54 creates v1.1.0 with prerelease: false (201) at befdb4fa…, body citing a7cf701557 on main, added MRK, revised MAT, JHN carried forward. 28 and 55 delete the temp branches at 204.
  • Auth headers in 01–58 are token [redacted]. Emails are [redacted]. No Pendau GET appears in 01–11. The traceability edit is one cell, E81 on the #170 row.

Issues

1. Medium — discard, "no phase failed", and the README's "no others" tail are outside this copy. Class: unverified claim on a Status: verified sentence. Not a demonstrated contradiction. Blocking for that signature.

docs/evidence.md (E81, the added paragraph) says a v1.1.1 preparation was discarded, GET /branches lists main alone, no phase failed, and names DCS 28.1.0+dcs.19-g41cde8ce33. fixtures/door43/qa.door43.org/2026-10-10/release-flow/README.md:3 and the discard row say 66 and 67 are archive_bytes: null, 71's body is a length stub, 75 has no headers, 74 is a 204 DELETE, and 75 lists only main, and that no other reduction exists. 59 is the start of that phase: branch_count: 1, release_counter: 2, default_branch: "main", before any v1.1.1 prepare. The DCS string is not in any exchange through 59.

Blast radius: a later citation treats the discard-on-main half as observed. That is what this PR is for. Round 1's exit (a), the README trim list, is met for 01–57. Exit (b) is not met in this packet. This is the second time that tail has been missing. I am not adding another point fix on top of the README.

Exit condition: mergeable when a review of the full tail shows 74 DELETE 204 of temp-tca-release/v1.1.1 with token [redacted], 75 listing only main, summary.json with no failed phase, the README sentences for 66, 67, 71, and 75 matching those files, and no authorization value other than token [redacted]. If that is already true, it clears with no edit. The fix-lane comment does not clear it.

2. Low — /user/teams still publishes a privilege map this probe does not need. Class: HYGIENE. Follow-up, not a hold.

Same finding as round 1, still open, still not a merge block. 02 and 06 record tc-admin-qa as owner of BurritoTruck and as admin on bahtraku's Translators team (includes_all_repositories: true, visibility: "private"). Token and email are redacted. The release claim only needs the tc-admin-qa-org Owners row. Next recording, keep that row. Assumption: this repo is public, because the PR and the Actions URL are on public GitHub. If it is private, the blast radius is people who can already read QA.

Questions

  • release-plan-2.json is not in this copy. I still want source branch main and head a7cf701557 recorded separately from the temp branch rooted at e3f3086e. The fix lane says the file does that. I have not seen it.
  • summary.json's dcs_version is the only place the server string can live, and that file is not here.

Verdict

Request changes. The README fix holds for every reduction I can see, and the create, both releases, the promote, and the redaction through 57 are in good shape. I will not sign E81's discard, the "no phase failed" line, or the README's "no others" claim while 60–75 and the sidecars are missing from the review copy. Exit condition is issue 1. I did not re-execute the suite.

VERDICT: findings


Local grok --prompt-file (skill George preamble; no stamp), via the uw:grok-review skill.

Disposition record

  • [blocking] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/README.md:3 — HYGIENE: the README's recording sentence names only the license/MAT/MRK trims; the files also omit request bodies, archives, and headers, and 11/34 do not record the branch they wrote. → fixed
  • [blocking] george · docs/evidence.md:467 — QUESTION: E81's discard, 'GET /branches lists main alone' and 'no phase failed' were outside George's truncated review copy; he flagged them as unverified. → refuted
  • [follow-up] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/tc-admin-qa-org/02-GET-user_teams.json — HYGIENE: the /user/teams recordings (02, 06) publish the test user's teams in other orgs, which the probe does not need. → deferred
  • [follow-up] george · fixtures/door43/qa.door43.org/2026-10-10/release-flow/tc-admin-qa-org/release-plan-2.json:7 — QUESTION: does release-plan-2 show source branch main and head a7cf701557, separate from the temp branch rooted at e3f3086e? → dispositioned

Checked

  • reviewers: Frank clean · George findings (required: Frank and George; RULINGS D13/D16); the Claude pass was not run — Claude built this PR
  • what this approval does not cover: nothing here was verified by an independent Claude read; it rests on the two reviewers and the gate

This approval covers d4e2ccf0d only. A push after it restarts review — please hold pushes to this branch until it is merged, unless it needs changes.


unfoldingWord review bench (uwreview) — gate: checks=pass · Frank=clean · George=findings · tier=uW T2 · builders=claude · head d4e2ccf0d (RULINGS D6/D12/D13). The merge stays a human act.

@richmahn

Copy link
Copy Markdown
Member Author

Author's check of George's round 2 exit condition at d4e2ccf, read from the files, since the review copy ends near 59 (about 297 KB of a 451 KB diff):

  • 74: DELETE /repos/tc-admin-qa-org/id_tcar0228/branches/temp-tca-release%2Fv1.1.1 answered 204. Its headers are accept and authorization: token [redacted].
  • 75: status 200; the branch list is main alone, at a7cf701557.
  • summary.json:
    • Phases: seed, first_release, second_release, and discard, none carrying an error or a failure.
    • dcs_version: 28.1.0+dcs.19-g41cde8ce33.
  • Authorization: across all 89 files, the only value is token [redacted].
  • README sentences for 66, 67, 71, and 75: they match the files.
    • 66 and 67 are archive_bytes: null.
    • 71's body is [4029 bytes omitted: file contents as base64].
    • 75 has no request headers.
  • release-plan-2.json: bound_to.default_branch_sha is a7cf7015…, the head of main. release_tag is v1.0.0 at e3f3086e….

Frank's P3 note (round 2) is correct.

  • The cause: 57 stores bytes: 2000. qa-release-probe.mjs:301 records the length of publicCall's capped text preview, not the archive's size.
  • The fix: the README's "the one in 57 as its size alone" is wrong, and will be corrected with the next push to this pull request, together with that probe line.

Not merged. This pull request is over 800 changed lines, so AGENTS.md needs both reviewers clean, and George's copy cannot hold the recordings' tail. Whether to accept this check or to reduce the recordings so his copy holds them all is Rich's call. I have not pushed again tonight, since another round would be cut off at the same place.

@richmahn

Copy link
Copy Markdown
Member Author

Rich chose to accept the author's check of the recordings' tail (comment above) and merge at d4e2ccf, waiving AGENTS.md's both-clean rule for this evidence-only pull request; George's copy could not hold the files his exit condition named. Frank's P3 on 57 follows in a pull request of its own.

@richmahn
richmahn merged commit e180e15 into main Oct 10, 2026
1 check passed
@richmahn
richmahn deleted the claude/e81-release-flow branch October 10, 2026 14:22
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.

2 participants