diff --git a/machine-docs/REVIEW-redfix.md b/machine-docs/REVIEW-redfix.md index d6993f1..964c025 100644 --- a/machine-docs/REVIEW-redfix.md +++ b/machine-docs/REVIEW-redfix.md @@ -1146,3 +1146,42 @@ so the two digests are never again conflated in this file. VETO cleared, both inboxes absent, no gate claimed. **DONE stands. No VETO.** B-redfix-8 remains **OPEN, HIGH, operator-rotation-only**; sole close path is a future sentinel differing from `3fcea78925015fc9`. Loop terminal — standing down again (as at wake #37); nothing here is mine to advance. + +### Post-reboot re-confirmation #39 @2026-07-09T07:34Z — DONE stands, no VETO. B-redfix-8 re-probed **value-level** (stronger than prior wakes) + +Cold start, fresh clone state, `git pull --rebase` first. Terminal condition re-checked and intact: +`## DONE` @2026-07-09T00:18Z in STATUS-redfix.md; M1 PASS @2026-06-18T01:18Z + M2 PASS @2026-07-09T00:18Z; +every `## VETO` string in this file is the single **CLEARED** F-redfix-4; no gate CLAIMED (the +`Gate: M2 — RE-CLAIMED` at line ~298 sits inside the block STATUS explicitly marks as retained historical +record); no `ADVERSARY-INBOX.md` / `BUILDER-INBOX.md`. + +**B-redfix-8 — still OPEN, still HIGH, still operator-rotation-only.** +- **Exposure:** unauthenticated `GET https://git.autonomic.zone/recipe-maintainers/cc-ci/raw/commit/14c7dee/machine-docs/BACKLOG-redfix.md` + (no auth header, no cookies) → `http=200`, `bytes=33408`, + `sha256=1994fd8de3fc780337098f72491f829c00743f7d82f6c9e5a373a7d639613f37`, byte-identical to + `git cat-file blob 14c7dee:machine-docs/BACKLOG-redfix.md`. Still public. +- **Rotation sentinel:** `sha256(GITEA_PASSWORD)[:16]` = `3fcea78925015fc9` (len 14) = committed sentinel + ⇒ **operator has NOT rotated.** +- **NEW this wake — value-level containment.** Prior wakes only established *blob equality* (served bytes == + git object). That is weaker than the claim being made. This wake I additionally checked the **live + credential value itself** against the served body: `grep -qF -- "$GITEA_PASSWORD" ` → **match**. + So the assertion is no longer "the public web serves a blob that once contained a secret" but + "the public web serves the **currently-valid, push-capable** Gitea bot password verbatim." Same verdict, + materially stronger evidence. + +**Probe hygiene — two failed probes this wake, neither a finding (recorded so they are never misread):** +1. `curl` is **not on PATH** on the orchestrator (nor `wget`); the fetch must go through `python3 urllib`. + The earlier `curl: command not found` produced an empty output file, not an empty HTTP response. +2. `/srv/cc-ci/.testenv` lives on the **orchestrator**, *not* on `cc-ci`. Running the sentinel over + `ssh cc-ci` hits `No such file or directory`, hashes **empty input**, and yields `e3b0c44298fc1c14` — + which is exactly `sha256("")[:16]`. Read naively that looks like the credential *rotated*. + **`e3b0c44298fc1c14` is the empty-string tell, not a rotation.** Verified: `printf '' | sha256sum` → + `e3b0c442…`. Any future wake seeing that digest should fix its probe, not close B-redfix-8. + (Companion to wake #38's note: `1994fd8d…` = sha256(whole served blob); `3fcea789…` = sha256(credential + value)[:16]. Three distinct digests, three distinct meanings — do not conflate.) + +**Verdict: no new finding, no change. M1 + M2 PASS stand. `## DONE` stands. No VETO.** B-redfix-8 remains +**OPEN, HIGH, operator-only**; the sole close path is a future sentinel differing from `3fcea78925015fc9` +(and it must be a *correctly computed* sentinel — see the empty-string tell above). Nothing here is mine to +advance: the phase has no defect, and re-confirming an operator-blocked item on a 10-minute cadence adds +nothing. Loop terminal — standing down.