One of the four checks protecting master was an echo - #2756
Merged
Conversation
…-bearing position
`secret-scan` rejects `/Users/playra/` and finds it in 233 files. Most are
prose. Sixty are not:
* 27 SEALS carried it as `spec_path`. The seal gate RESOLVES that field, so an
absolute path into another machine's home directory can never resolve --
the seal describes a spec nothing can fetch. Now repository-relative, like
every other seal. All 27 targets verified to exist.
* 33 SCRIPTS carried it as their repository root -- 26 of them as the literal
`ROOT = Path(...)`, the rest as quoted absolute paths in reads, writes and
shell invocations. Each could run for exactly one person. The root is now
derived from the file's own location.
Deliberately NOT quoting the old literal in any of the comments: a comment
naming that path trips the same gate, which is a mistake this commit made once
and corrected.
files carrying the path: 233 -> 173
scripts/ carrying it: 33 -> 0
seals carrying it: 27 -> 0
The remainder is 98 markdown files (research notes, setup docs) and 67 Coq
BUILD ARTIFACTS -- .aux/.vo/.glob files that record their absolute build path.
208 such artifacts are tracked in this repository, which is a separate question
from this one and is left to #2754.
Seal gate exits 0, check_gate_preconditions.py exits 0, suite 2424 passed / 0
failed.
Refs #2754
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`t27-master-protection` requires four status checks:
check-now-freshness, validate, check, check-linked-issue
and `check` -- the only job in check-now-freshness.yml -- was this, in full:
- name: Check freshness
run: |
# Add freshness check logic here in future
echo "Checking repository freshness..."
It asserted nothing. It passed every pull request it ever ran on, and there is
no run of it on master at all, because the workflow has neither `push:` nor
`workflow_dispatch:`. Its green was about the placeholder, not the repository.
Branch rulesets are not this file's to edit, so the job keeps the name the
ruleset requires and is given something real to do. NOW Sync Gate already
requires that a docs/now/ entry was ADDED; it never reads it. So the two are
complementary and neither is redundant:
NOW Sync Gate -> "you wrote one"
this -> "what you wrote says something"
tools/check_now_entry_shape.py asserts, per entry the pull request adds: the
filename is YYYY-MM-DD-<slug>.md; the first line is the NOW heading; the date
in the heading MATCHES the date in the filename -- a log whose job is
chronology cannot have the two disagree; there is a section heading; and there
is at least one bullet that is not a placeholder.
It does NOT check whether the content is true. No gate can, and pretending
otherwise would be this same defect one level up.
Zero entries is a FAILURE here, not a pass: NOW Sync Gate should have caught
that first, and two gates disagreeing about one requirement is worth hearing
about. A missing PR_BASE_SHA exits 2 with a message rather than returning a
verdict it did not earn.
Six controls, run as a step before the check itself: a well-formed entry, a
heading date that disagrees with the filename, no bullets, placeholder bullets,
a wrong first line, and an empty file. All six behave as stated.
Refs #2754
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-28 16:06:02 UTC
Summary
Seal Status
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #2754
The gate that checked nothing
t27-master-protectionrequires four status checks:and
check— the only job incheck-now-freshness.yml— was this, in full:It passed every pull request it ever ran on. There is no run of it on master at all — the workflow has neither
push:norworkflow_dispatch:, sogh run list --branch masterreturns[].Branch rulesets are not mine to edit, so the job keeps the name the ruleset requires and is given something real to do.
NOW Sync Gatealready requires that an entry was added; it never reads it:tools/check_now_entry_shape.pyasserts, per entry the PR adds: the filename isYYYY-MM-DD-<slug>.md; the first line is the NOW heading; the date in the heading matches the date in the filename — a log whose job is chronology cannot have the two disagree; there is a section heading; and at least one bullet that is not a placeholder.It does not check whether the content is true. No gate can, and pretending otherwise would be this same defect one level up.
Zero entries is a failure here, not a pass. A missing
PR_BASE_SHAexits 2 with a message rather than returning a verdict it did not earn.Six controls run as a step before the check itself — well-formed, heading/filename date mismatch, no bullets, placeholder bullets, wrong first line, empty file. All six behave as stated.
60 files carried one developer's home directory where it was load-bearing
secret-scanrejects/Users/playra/and finds it in 233 files. Most are prose. Sixty were not:spec_path. The seal gate resolves that field, so an absolute path into another machine's home directory can never resolve — the seal describes a spec nothing can fetch. Now repository-relative; all 27 targets verified to exist.ROOT = Path(...), the rest in reads, writes and shell invocations. Each could run for exactly one person. The root now comes from the file's own location.The comments deliberately do not quote the old literal — a comment naming that path trips the same gate, a mistake this branch made once and corrected.
The remaining 173 are 98 markdown files and 67 Coq build artifacts (
.aux/.vo/.globrecording their absolute build path). 208 such artifacts are tracked in this repository, which is a separate question and is left to #2754.Seal gate exits 0,
check_gate_preconditions.pyexits 0, suite 2424 passed / 0 failed.🤖 Generated with Claude Code