Skip to content

Record the seed rebuild after the 12 October reset (E83) - #179

Merged
richmahn merged 2 commits into
mainfrom
claude/3-seed-after-reset
Oct 12, 2026
Merged

richmahn merged 2 commits into
mainfrom
claude/3-seed-after-reset

Conversation

@richmahn

Copy link
Copy Markdown
Member

What changes

Refs #3. The first run of scripts/seed-qa.mjs after a QA reset, and the second run after it, both recorded, which is #3's remaining criterion.

  • docs/evidence.md: E83: after the 12 October 2026 reset, one run built tc-admin-qa-org/id_seedtb (v1.0.0 full, v1.1.0 pre-release), tc-admin-qa-org/en_seedobs (v1.0.0), and tc-admin-qa/id_seedhf (never released, health info), each on main with no step outside the script; a second run reported each "already exists, left alone". E82 and E23 record Rich's decision of the same day: TEST_TOKEN is issued on production so each reset copies it to QA, which was E82's labeled inference.
  • docs/deployment.md §6, AGENTS.md, README.md, .env.example: the Monday routine no longer asks for a token reissue; it says where the token comes from and what to do if it ever answers 401.
  • docs/traceability.md: Rebuild the standard QA test projects after each reset #3's row cites E83.
  • fixtures/door43/qa.door43.org/2026-10-12/seed/: both runs' summaries as the script wrote them, and branches-and-releases.json from public reads afterwards. No token, no email.

No code changes. George's low note from #178 round 3 ("each Monday (E23)") is not taken here: E23 says the reset happens periodically and this entry records a Monday one; the cadence is Rich's statement, not a probe's.

Invariants

None touched: documents and fixtures. The run exercised W1, W5, and X1 through the script's existing checks (a project that exists is left alone; nothing retried).

Evidence

E83 recorded. Relies on E75, E79, E80, E82. The host-only token rule in E23 is qualified, not weakened: a production-issued token works on QA because the reset copies it.

Verification

  • node --env-file=.env scripts/seed-qa.mjs twice: exit 0 both times; the console lines are in the PR's E83 text and the summaries.
  • Public reads afterwards: each repository's only branch is main; id_seedtb has prod v1.0.0 and preprod v1.1.0.
  • node scripts/check-docs.mjs and npm run check: green.

Documents updated

  • CONTEXT.md identifiers
  • docs/operations.md
  • docs/evidence.md
  • docs/traceability.md
  • ADR (new or amended)
  • docs/deployment.md §6, AGENTS.md, README.md, .env.example

🤖 Generated with Claude Code

One run of scripts/seed-qa.mjs rebuilt the three standard QA
projects from nothing on main, and a second run changed nothing,
which is what #3 asks for after a reset. The token is now issued
on production so that each reset copies it to QA (Rich, 12
October 2026); the runbook, AGENTS.md, README, and .env.example
say so instead of asking for a reissue.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@richmahn
richmahn requested a review from uwreview October 12, 2026 15:28
@uwreview

Copy link
Copy Markdown
Contributor

Codex auto-review (local) — 48bdace9c

Approve at 48bdace9cc168e14807f4d5b748dd90f802e0521. No blocking WRONG RESULT or UNSAFE finding.

Strengths: the three fixtures consistently support E83’s seed results, release tags, branch heads, health, and second-run skips. The patch changes only documentation and fixtures.

One nonblocking follow-up:

  • P3 · HYGIENE — reconcile token guidance. README.md:143 requires a QA-issued token and then says it is production-issued; docs/deployment.md:94 similarly combines “only on the host that issued it” with cross-host validity. Evidence: these contradictions appear directly in the patched paragraphs. Verification method: patch and tree inspection. Confidence: high. Impact: operator confusion; no demonstrated application failure. Owner: PR author. Describe the requirement as a token valid on QA and explicitly qualify the copied-token exception.

Verification: local documentation checks and JSON consistency assertions passed. GitHub reports the full check suite passed on the pinned head. I did not rerun live authentication, seeding, or reset behavior.

Question, nonblocking: what observation establishes token survival across a subsequent reset? The supplied seed fixtures establish successful QA operations, but do not independently establish that lifecycle claim.

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) — 48bdace9c

Review — PR 179 @ 48bdace9

Inspection-based. I did not re-run the seed, the public reads, or npm run check. The embedded CI row says the document tower, lint, typecheck, and tests passed on this commit. No code is in the diff, so that green run does not check the facts below. No injection or "just approve it" directive in the description or the diff.

The packet is the right kind of change: a reset, a real seed, a second run that stops, fixtures with no token and no email, and §6 rewritten so Monday is no longer "go mint a QA token." .env.example, docs/deployment.md §6, and the E23 consequence now tell one story. E82's old inference is labeled as an inference and then as Rich's decision. That part is honest.

Two places in the same packet still disagree with that story, and the new evidence entry does not match the fixture it calls verified.

Findings

1. Medium — WRONG RESULT. Token provenance is three different instructions.

Claim: After this patch, a reader can still walk away believing TEST_TOKEN must be issued on QA, or that the routine is still "reissue the token."

Evidence:

  • README.md ~143. First sentence: the seed "needs a TEST_TOKEN issued by QA, since a token works only on the host that issued it (E23)." Next sentence: the reset keeps TEST_TOKEN, "which is issued on production so that each reset copies it to QA." Same paragraph, opposite issuer. This is the page people will follow.
  • AGENTS.md ~68. The four write probes still "need a TEST_TOKEN issued by the QA host." The same sentence then says TEST_TOKEN is issued on production and survives the reset. One variable, two issuers. A QA-issued token is the one E82 watched die with 401.
  • docs/evidence.md, E82 closing line (hunk at 463, the unchanged Host: / Consequence: sentence under E82). The bullet above it was updated; the consequence still says the runbook is "reissue the token, run the end-to-end test, run the seed script."

.env.example ~16 and docs/deployment.md §6 item 1 already say the thing that is true: production-issued, copied by the reset, reissue on production only if QA answers 401, never in the repo. That is the third time this series has had to touch "where does the token come from." Stop point-fixing. One sweep: every remaining "issued on QA" / "reissue the token" sentence matches §6.

Exit condition: README.md, the probe clause in AGENTS.md, and E82's consequence match §6 and .env.example. Nothing in the changed docs tells an operator to issue TEST_TOKEN on QA as the steady state.

2. Medium — WRONG RESULT. E83's release commits are not the commits in the public-read fixture, and the quoted second-run outcome is not the string the script wrote.

Claim: Status: verified is ahead of what branches-and-releases.json and summary-152539.json actually contain.

Evidence, all in this diff:

Project What E83 and summary-152418.json say the release was cut from What branches-and-releases.json records for that tag (catalog.*.commit_sha and releases[].target_commitish, and they agree with each other)
id_seedtb v1.0.0 8716d20f32b2b2ce4272f370d020485606a564bf a96371986d122ded82f833c11e7db4a47770f6c2
id_seedtb v1.1.0 d0c1ab421fe5cd1e858dd2f4a31b00286ead510f c63823bfe258a4df45c18431942d229d621629e2
en_seedobs v1.0.0 6c620b737692aa085105d546762a5f2ac3f891e9 ae4dcb18e840716182c28301cd7ff35034675040

These are not prefixes. 8716d20f, d0c1ab42 (as a release target), and 6c620b73 do not appear in the public-read fixture at all. d0c1ab42 and 6c620b73 do appear, as main / catalog.latest. id_seedhf matches, which is the one project with no release (8e338fdb…, health info, empty releases). So this is one pattern, three times: every release tag's public commit differs from the branch commit the summary says it was cut from.

E83 also quotes the second run as "already exists, left alone". summary-152539.json says "exists, left alone". The description repeats the longer string. Quoted script output should be the script's output.

What still holds, and I am not asking you to reopen it: host qa.door43.org, both runs exit-shaped as described, 81 seconds between 15:24:18.479Z and 15:25:39.539Z, only branch main, catalog stage names, health success / success / info, no token and no email in the fixtures. #3's "second run leaves an existing project alone" is in the fixture.

I do not have the script or Door43's release payload in this diff, so I will not guess whether target_commitish is a tag object, a catalog commit Door43 created, or a bad capture. Inference, labeled as such: catalog and release entries agree, so the public read is internally consistent, and the script summary is a different identifier. Shipping both under Status: verified with no sentence makes the next person "fix" the wrong hash.

Exit condition: E83 says which identifier is which, in one or two sentences, using the three fixture SHAs. The second-run quote is exists, left alone. If the public SHAs are the real tag targets, the prose stops being readable as "tag v1.0.0 points at 8716d20f."

Not blocking

Security, follow-up, not a hold on this docs PR. A production-issued TEST_TOKEN with write:user, write:repository, and write:organization is a production write credential that also works on QA. Before 12 October the QA-issued token failed closed on production (E23/E82). The boundary is now "every script refuses to write by its host check." That check is not in this diff. I do not have evidence here that it is one shared fail-closed guard rather than a copy in each probe. A leaked .env used to be a QA incident. It is now a production incident. §6 does say the token works on production and that scripts refuse the write; keep that sentence when you fix finding 1. Worth a later pass on the host check itself. E82 says the token "worked on both hosts" and points at E83; E83's method and fixtures are QA only. Narrow that clause or point at the production check.

The "each Monday (E23)" cadence was already in §6. This diff does not add it. Leaving it alone is the right scope.

Verdict

Request changes. Mergeable once finding 1 is one consistent issuer story and finding 2 reconciles E83 with the two JSON files. Neither needs a code change, and neither is permission to widen the PR.

VERDICT: findings


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

…h round 1

Fixes George r1 #1 (README, AGENTS, E82 still said QA-issued/reissue) and #2 (E83 snapshot vs branch-head SHAs).
@uwreview

Copy link
Copy Markdown
Contributor

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

  • [blocking] george · README.md:143 — WRONG RESULT: token provenance contradicts itself — README:143 and AGENTS.md:68 still require a QA-issued TEST_TOKEN, and E82's consequence still says to reissue the token, against §6 and .env.example → fixed c2c8d5cf1: Reproduced at 48bdace: README.md:143 said 'issued by QA' and then 'issued on production'; AGENTS.md:68 said 'issued by the QA host'; evidence.md:478 E82 consequence said 'reissue the token'. Fixed in c2c8d5c: README now says 'a TEST_TOKEN that works on QA'; AGENTS.md says 'works on QA (issued on production and copied to QA by each reset, E83)'; E82 consequence says 'since E83 the token is issued on production and not reissued'. node scripts/check-docs.mjs and npm run check:docs were both refused by the lane's permission layer ('requires approval'), so they did not run. A manual check found only E27/E83 newly referenced, both defined, and no new links.
  • [blocking] george · docs/evidence.md:468 — WRONG RESULT: E83's 'from main at' commits differ from the tag targets in branches-and-releases.json without explanation; the second-run quote differs from the summary's outcome string → fixed c2c8d5cf1: The SHA half reproduces as a missing explanation. The prose itself is accurate: seed-qa.mjs:229 records from: ${branch}@${head}, and release-create.ts:124 targets stored.snapshot.commit_sha, the preparation's snapshot commit (E27: 'release.create targets the snapshot commit SHA directly'). c2c8d5c adds one sentence to E83 that names the three snapshot SHAs (a9637198, c63823bf, ae4dcb18). The quote half did not reproduce: seed-qa.mjs:192 prints 'already exists, left alone' to the console, and the summary's outcome field (line 191) is 'exists, left alone'. E83 now cites both.
  • [follow-up] frank · docs/deployment.md:94 — HYGIENE: token guidance mixes 'works only on the host that issued it' with cross-host validity (README:143, deployment.md:94) → deferred: The README:143 half was fixed by George Create the tc-admin-qa organization on production Door43 #1 in c2c8d5c. deployment.md:94 still opens with 'A token works only on the host that issued it' before the reset-copy explanation. That file was not otherwise changed this round, so a follow-up-band fix cannot ride along. Follow-up for the author: qualify the host-only sentence in §6 item 1 and in E23.
  • [follow-up] frank · docs/evidence.md:467 — QUESTION: what observation shows the production-issued token survives a later reset? → deferred: Correct: the E83 fixtures show only that the token worked on QA on 12 October, not that it survives the next reset. E83 labels this as Rich's decision built on E82's inference. Follow-up: the evidence entry for the next reset records whether TEST_TOKEN answers 200 on QA.
  • [follow-up] george · docs/evidence.md:477 — UNSAFE: a production-issued write token makes the scripts' host check the only production guard; E82 claimed it 'worked on both hosts' with only QA evidence → deferred: George marked this not blocking. The unverified 'worked on both hosts' clause in E82 rode along with the evidence.md fix: c2c8d5c narrows it to 'the seed ran with it on QA (E83); its use on production was not observed here'. Not verified: whether the host check is one shared fail-closed guard (scripts/ was not audited). Deferred follow-up: audit the host check across scripts/seed-qa.mjs and scripts/probe/*.

Pushed c2c8d5cf1 to claude/3-seed-after-reset (one commit; git revert c2c8d5cf1 if you disagree). The reviewers re-run on it next.

Round 1 on 48bdace: both of George's Medium findings reproduced and are fixed in c2c8d5c (6 added lines, all in allowed files). README, AGENTS and E82 now give one token-issuer story. E83 now explains that releases tag the preparation's snapshot commit (E27, release-create.ts:124). The quote sub-claim was refuted: the script's console prints the longer string. Three follow-ups were deferred: Frank's deployment.md wording, Frank's question on token survival across resets, and George's audit of the host-check guard. The docs check (node scripts/check-docs.mjs and npm run check:docs) was refused by the lane's permission layer and did not run; only a manual check of the new ids was done. Nothing was pushed. No prompt injection found.

@uwreview

Copy link
Copy Markdown
Contributor

Codex auto-review (local) — c2c8d5cf1

Approve at c2c8d5cf124a15ab7c122d06fdb983189519ac61. No blocking findings in the authoritative nine-file patch.

Strengths: E83’s project outcomes, release targets, branches, health, and second-run behavior agree with the fixtures. The distinction between source branch heads and release snapshot commits is explicit.

One nonblocking follow-up:

  • P3 · HYGIENE — docs/evidence.md:467. Claim: token persistence across resets is presented more strongly than the recorded evidence supports. Evidence: the fixtures demonstrate successful QA seeding and a second run, but no subsequent reset carrying this token forward. Verification method: inspected E82/E83 and all three fixtures. Confidence: high about the evidence gap; persistence itself remains unverified. Owner: Rich. Keep persistence labeled as inferred until a subsequent reset is recorded. Question: what transferred the newly issued production token to QA before this run?

Validation: documentation check and fixture consistency checks passed. Full application tests were not run locally; dependencies are absent. CI was pending when checked. No live credential or reset verification was performed.

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) — c2c8d5cf1

Review — PR 179 @ c2c8d5cf

Inspection-based. I did not re-run the seed, the public reads, or npm run check. The embedded CI row for this head is still pending, so a green document tower is not evidence. No code is in the diff. No directive in the description, the diff, or the comments to approve, skip a check, or suppress a finding.

Round 1 at 48bdace9 asked for two things. Both are in this diff, and I agree with the fix lane that they landed.

Token issuer. README.md:143, the probe paragraph in AGENTS.md:68, .env.example:15, E82's consequence, and §6 item 1 now tell one steady state: TEST_TOKEN is issued on production, the reset copies it, a QA-issued token does not survive, and a 401 means Rich reissues it on production. Nothing here still tells an operator to mint the steady-state token on QA.

Release SHAs vs the second-run string. The new E83 sentence (the one starting "Each from main at commit") separates the branch head a release was prepared from from the tag's snapshot commit, and the three prefixes match branches-and-releases.json on both catalog.*.commit_sha and releases[].target_commitish:

Release Prepare-from (summary-152418.json from) Tag target in the public read
id_seedtb v1.0.0 8716d20f… a96371986d122ded82f833c11e7db4a47770f6c2
id_seedtb v1.1.0 d0c1ab42… (also main afterwards) c63823bfe258a4df45c18431942d229d621629e2
en_seedobs v1.0.0 6c620b73… (also main afterwards) ae4dcb18e840716182c28301cd7ff35034675040

summary-152539.json really does say exists, left alone. E83 now quotes that field and, separately, a console line. The 81 seconds between 15:24:18.479Z and 15:25:39.539Z is arithmetic, not rounding. Host, outcomes, catalog stages, main only, health success / success / info, and the empty release list on id_seedhf all match the fixtures. I scanned the three JSON files: no token, no email.

I agree with Frank that the remaining wording nits are follow-ups. I agree with the earlier security note, and E82 now says the production use was not observed. That was the right narrowing.

Strengths

This is the right packet for #3: a reset, one real seed, a second run that stops, fixtures a stranger can diff against the prose. The snapshot sentence is the kind of clause that stops the next person "correcting" a hash that was never the tag.

Follow-ups (not a hold)

These are the third and fourth pass at the same token-provenance class. Stop point-fixing sentences. One sweep later.

  1. Low — HYGIENE — claim strength inside Status: verified. docs/evidence.md E23's consequence still says the one value "works on both hosts" and cites E83. E83's method and fixtures are QA only, and E82 in this same diff says production use was not observed. E83's opening parenthetical does label the copy/"both hosts" clause as the inference now turned into Rich's decision; E23's verified consequence does not. Blast radius is the evidence register, not the seed. Owner: author, next docs pass. Exit for that pass: every verified sentence that says the token works on production is either an observation with a fixture or explicitly Rich's decision, unobserved.

  2. Low — HYGIENE — §6 still opens with the absolute. docs/deployment.md §6 item 1, and the same shape in E23: "A token works only on the host that issued it," then the copy exception. Frank's round-1 note. The rest of the paragraph is the true runbook, which is why this does not block. When you do the sweep above, make the first sentence the exception you actually operate: issued on production, copied onto QA, reissue on production only after a 401.

  3. Low — UNSAFE, deferred — the host check is now the production boundary. A production-issued token with write:user, write:repository, and write:organization is a production write credential that also works on QA. §6 says every script refuses the production write by its host check. That check is not in this diff. I do not have evidence here that it is one shared fail-closed guard. A leaked .env used to be a QA incident. It is now a production incident. Follow-up: audit scripts/seed-qa.mjs and scripts/probe/* before the next new write script. Not a hold on a docs-and-fixtures PR.

Frank's question stands, and E83 does not answer it: these fixtures show the token worked on QA on 12 October. They do not show it surviving the next reset. The next reset's evidence entry should record whether TEST_TOKEN answers 200 on QA.

What I could not verify

  • The console string already exists, left alone. It is not in either summary. The fix lane cites seed-qa.mjs outside this diff. The fixture field is quoted correctly; the console claim stays unverified from this packet.
  • That the tag SHAs are preparation snapshot commits. The three SHAs match the public-read fixture. The noun "snapshot" is an E27 citation. E27 and release-create.ts are not in this diff.
  • node scripts/check-docs.mjs / npm run check. The fix lane says the permission layer refused them. CI on this head is pending.

Verdict

Approve. Round 1's two exit conditions are met in the diff: one issuer story, and E83 no longer reads as if v1.0.0 points at 8716d20f. The leftovers are follow-ups, and this PR does not need to grow to close them.

VERDICT: clean


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 c2c8d5cf1: Frank (Codex) clean and George (Grok) clean, with 5 finding(s) on the disposition record and 0 still open and blocking. Tier T2 (declared none, derived T2).

Frank (Codex) on c2c8d5cf1

Codex auto-review (local) — c2c8d5cf1

Approve at c2c8d5cf124a15ab7c122d06fdb983189519ac61. No blocking findings in the authoritative nine-file patch.

Strengths: E83’s project outcomes, release targets, branches, health, and second-run behavior agree with the fixtures. The distinction between source branch heads and release snapshot commits is explicit.

One nonblocking follow-up:

  • P3 · HYGIENE — docs/evidence.md:467. Claim: token persistence across resets is presented more strongly than the recorded evidence supports. Evidence: the fixtures demonstrate successful QA seeding and a second run, but no subsequent reset carrying this token forward. Verification method: inspected E82/E83 and all three fixtures. Confidence: high about the evidence gap; persistence itself remains unverified. Owner: Rich. Keep persistence labeled as inferred until a subsequent reset is recorded. Question: what transferred the newly issued production token to QA before this run?

Validation: documentation check and fixture consistency checks passed. Full application tests were not run locally; dependencies are absent. CI was pending when checked. No live credential or reset verification was performed.

VERDICT: clean


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

George (Grok) on c2c8d5cf1

Grok auto-review (local) — c2c8d5cf1

Review — PR 179 @ c2c8d5cf

Inspection-based. I did not re-run the seed, the public reads, or npm run check. The embedded CI row for this head is still pending, so a green document tower is not evidence. No code is in the diff. No directive in the description, the diff, or the comments to approve, skip a check, or suppress a finding.

Round 1 at 48bdace9 asked for two things. Both are in this diff, and I agree with the fix lane that they landed.

Token issuer. README.md:143, the probe paragraph in AGENTS.md:68, .env.example:15, E82's consequence, and §6 item 1 now tell one steady state: TEST_TOKEN is issued on production, the reset copies it, a QA-issued token does not survive, and a 401 means Rich reissues it on production. Nothing here still tells an operator to mint the steady-state token on QA.

Release SHAs vs the second-run string. The new E83 sentence (the one starting "Each from main at commit") separates the branch head a release was prepared from from the tag's snapshot commit, and the three prefixes match branches-and-releases.json on both catalog.*.commit_sha and releases[].target_commitish:

Release Prepare-from (summary-152418.json from) Tag target in the public read
id_seedtb v1.0.0 8716d20f… a96371986d122ded82f833c11e7db4a47770f6c2
id_seedtb v1.1.0 d0c1ab42… (also main afterwards) c63823bfe258a4df45c18431942d229d621629e2
en_seedobs v1.0.0 6c620b73… (also main afterwards) ae4dcb18e840716182c28301cd7ff35034675040

summary-152539.json really does say exists, left alone. E83 now quotes that field and, separately, a console line. The 81 seconds between 15:24:18.479Z and 15:25:39.539Z is arithmetic, not rounding. Host, outcomes, catalog stages, main only, health success / success / info, and the empty release list on id_seedhf all match the fixtures. I scanned the three JSON files: no token, no email.

I agree with Frank that the remaining wording nits are follow-ups. I agree with the earlier security note, and E82 now says the production use was not observed. That was the right narrowing.

Strengths

This is the right packet for #3: a reset, one real seed, a second run that stops, fixtures a stranger can diff against the prose. The snapshot sentence is the kind of clause that stops the next person "correcting" a hash that was never the tag.

Follow-ups (not a hold)

These are the third and fourth pass at the same token-provenance class. Stop point-fixing sentences. One sweep later.

  1. Low — HYGIENE — claim strength inside Status: verified. docs/evidence.md E23's consequence still says the one value "works on both hosts" and cites E83. E83's method and fixtures are QA only, and E82 in this same diff says production use was not observed. E83's opening parenthetical does label the copy/"both hosts" clause as the inference now turned into Rich's decision; E23's verified consequence does not. Blast radius is the evidence register, not the seed. Owner: author, next docs pass. Exit for that pass: every verified sentence that says the token works on production is either an observation with a fixture or explicitly Rich's decision, unobserved.

  2. Low — HYGIENE — §6 still opens with the absolute. docs/deployment.md §6 item 1, and the same shape in E23: "A token works only on the host that issued it," then the copy exception. Frank's round-1 note. The rest of the paragraph is the true runbook, which is why this does not block. When you do the sweep above, make the first sentence the exception you actually operate: issued on production, copied onto QA, reissue on production only after a 401.

  3. Low — UNSAFE, deferred — the host check is now the production boundary. A production-issued token with write:user, write:repository, and write:organization is a production write credential that also works on QA. §6 says every script refuses the production write by its host check. That check is not in this diff. I do not have evidence here that it is one shared fail-closed guard. A leaked .env used to be a QA incident. It is now a production incident. Follow-up: audit scripts/seed-qa.mjs and scripts/probe/* before the next new write script. Not a hold on a docs-and-fixtures PR.

Frank's question stands, and E83 does not answer it: these fixtures show the token worked on QA on 12 October. They do not show it surviving the next reset. The next reset's evidence entry should record whether TEST_TOKEN answers 200 on QA.

What I could not verify

  • The console string already exists, left alone. It is not in either summary. The fix lane cites seed-qa.mjs outside this diff. The fixture field is quoted correctly; the console claim stays unverified from this packet.
  • That the tag SHAs are preparation snapshot commits. The three SHAs match the public-read fixture. The noun "snapshot" is an E27 citation. E27 and release-create.ts are not in this diff.
  • node scripts/check-docs.mjs / npm run check. The fix lane says the permission layer refused them. CI on this head is pending.

Verdict

Approve. Round 1's two exit conditions are met in the diff: one issuer story, and E83 no longer reads as if v1.0.0 points at 8716d20f. The leftovers are follow-ups, and this PR does not need to grow to close them.

VERDICT: clean


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

Disposition record

  • [blocking] george · README.md:143 — WRONG RESULT: token provenance contradicts itself — README:143 and AGENTS.md:68 still require a QA-issued TEST_TOKEN, and E82's consequence still says to reissue the token, against §6 and .env.example → fixed
  • [blocking] george · docs/evidence.md:468 — WRONG RESULT: E83's 'from main at' commits differ from the tag targets in branches-and-releases.json without explanation; the second-run quote differs from the summary's outcome string → fixed
  • [follow-up] frank · docs/deployment.md:94 — HYGIENE: token guidance mixes 'works only on the host that issued it' with cross-host validity (README:143, deployment.md:94) → deferred
  • [follow-up] frank · docs/evidence.md:467 — QUESTION: what observation shows the production-issued token survives a later reset? → deferred
  • [follow-up] george · docs/evidence.md:477 — UNSAFE: a production-issued write token makes the scripts' host check the only production guard; E82 claimed it 'worked on both hosts' with only QA evidence → deferred

Checked

  • reviewers: Frank clean · George clean (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 c2c8d5cf1 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=clean · tier=uW T2 · builders=claude · head c2c8d5cf1 (RULINGS D6/D12/D13). The merge stays a human act.

@richmahn
richmahn merged commit 0c8ac1b into main Oct 12, 2026
1 check passed
@richmahn
richmahn deleted the claude/3-seed-after-reset branch October 12, 2026 16:07
@richmahn
richmahn restored the claude/3-seed-after-reset branch October 12, 2026 16:07
@richmahn
richmahn deleted the claude/3-seed-after-reset branch October 12, 2026 16:07
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