Skip to content

ci(now-gate): the frozen archive is declared, not detected - #3390

Open
gHashTag wants to merge 1 commit into
masterfrom
s2-archrepair
Open

ci(now-gate): the frozen archive is declared, not detected#3390
gHashTag wants to merge 1 commit into
masterfrom
s2-archrepair

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Refs #3368

docs/NOW.md carries "FROZEN ARCHIVE — do not add entries here." on its first line, and nothing enforced it. Measured: every mention of that path under .github/workflows/, scripts/ and .githooks/ is a comment — zero lines reject an edit. An author following one of the stale instructions that pointed there could reopen the archive and pass all four required checks.

Both detection rules were measured, and both fail on the same commit

  • "Refuse any diff touching it" blocks 458ec0bd6, which repairs destroyed entries. Of the 600 commits since the freeze, 2 touch the file and that is one of them.
  • "Refuse an ADDED ## heading" — the narrower rule I proposed as the replacement — blocks it too: that repair adds three, because it restored headings whose bodies had been destroyed.

My recommendation was wrong in the same direction twice, and the second time I had not run the replacement past the exception that killed the first.

No textual rule separates adding an entry from repairing one: the only difference is position, which is the coupling the one-file-per-entry layout exists to remove.

So the exception is declared, not detected

The shape # tri:no-dispatch and # tri:cause-removed already use here:

Archive-Repair: <what was damaged, and how you know>

The gate does not judge the reason. It requires one to exist, so reopening a frozen file is a decision somebody signed rather than an accident.

Controls — run, not reasoned about

case expected got
PR edits docs/NOW.md, no trailer refuse exit 1, archive message
PR edits it, trailer present allow exit 0
PR does not touch it unchanged exit 0
trailer with no reason refuse exit 1
push edits it, no trailer refuse exit 1
push edits it, trailer present allow exit 0

Historical control: 458ec0bd6 carries 0 trailers and would be refused — correctly. The point is not to permit it retroactively.

Blast radius: 2 commits in 600. Every other PR is unaffected.

My own probe was the broken instrument first: git reset --hard removed docs/now/, the entry file could not be written, and two cases failed on the presence check rather than on the guard. Fixed the harness, not the reading.

R12 states the rule; LOOP-RULES.sha256 moves with it in the same commit.

`docs/NOW.md` carries "FROZEN ARCHIVE -- do not add entries here." on its first
line, and nothing enforced it. Measured: every mention of that path under
`.github/workflows/`, `scripts/` and `.githooks/` is a comment -- zero lines
reject an edit -- so an author following one of the stale instructions that
pointed there could reopen the archive and pass all four required checks.

BOTH detection rules were measured, and both fail on the same commit.

"Refuse any diff touching it" blocks `458ec0bd6`, which REPAIRS destroyed
entries: of the 600 commits since the freeze, 2 touch the file and that is one
of them. So does the narrower "refuse an ADDED `## ` heading" I proposed as the
replacement -- that repair adds three, because it restored headings whose bodies
had been destroyed. My recommendation was wrong in the same direction twice, and
the second time I had not run the replacement past the exception that killed the
first.

No textual rule separates adding an entry from repairing one: the only
difference is POSITION, which is the coupling the one-file-per-entry layout
exists to remove.

So the exception is DECLARED, where the tool looks -- the shape `# tri:no-dispatch`
and `# tri:cause-removed` already use here. A commit that edits the archive on
purpose says so:

    Archive-Repair: <what was damaged, and how you know>

The gate does not judge the reason. It requires one to exist, so reopening a
frozen file is a decision somebody signed rather than an accident.

Six controls, run against a scratch repository rather than reasoned about: PR
and push, each with and without the trailer; a trailer carrying no reason
(refused); and a range that does not touch the file (unchanged). Historical
control: `458ec0bd6` carries no trailer and would be refused -- correctly; the
point is not to permit it retroactively.

My own probe was the broken instrument first: `git reset --hard` removed
`docs/now/`, the entry file could not be written, and two cases failed on the
presence check instead of on the guard. Fixed the harness, not the reading.

R12 states the rule; LOOP-RULES.sha256 moves with it in this commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-06 18:00:52 UTC

Summary

Status Count
Total Open PRs 15
PRs with Failing Checks 11
PRs with All Checks Green 4
READY 1
FAILING 11
PENDING 0
NO CHECKS YET 0

These columns do not partition: 1 + 11 + 0 + 0 = 12, and there are 15 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=745cf51f9c7e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

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.

1 participant