Skip to content

One of the four checks protecting master was an echo - #2756

Merged
gHashTag merged 2 commits into
masterfrom
w699-hardcoded-paths
Aug 28, 2026
Merged

One of the four checks protecting master was an echo#2756
gHashTag merged 2 commits into
masterfrom
w699-hardcoded-paths

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #2754

The gate that checked nothing

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 passed every pull request it ever ran on. There is no run of it on master at all — the workflow has neither push: nor workflow_dispatch:, so gh run list --branch master returns [].

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 Gate already requires that an entry was added; it never reads it:

NOW Sync Gate "you wrote one"
this "what you wrote says something"

tools/check_now_entry_shape.py asserts, per entry the PR 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 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_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 — 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-scan rejects /Users/playra/ and finds it in 233 files. Most are prose. Sixty were 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; all 27 targets verified to exist.
  • 33 scripts carried it as their repository root — 26 as the literal 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.
files carrying the path: 233 -> 173
scripts/ carrying it:     33 -> 0
seals carrying it:        27 -> 0

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/.glob recording 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.py exits 0, suite 2424 passed / 0 failed.

🤖 Generated with Claude Code

gHashTag and others added 2 commits August 28, 2026 23:04
…-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>
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-28 16:06:02 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=25a9c40dc273 != 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).

@gHashTag
gHashTag merged commit d8ccc4e into master Aug 28, 2026
21 of 23 checks passed
@gHashTag
gHashTag deleted the w699-hardcoded-paths branch August 28, 2026 16:08
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