Repository navigation
fix(bootstrap): stage only generated files; test: workflow hygiene pins - #4
SaulBuilds wants to merge 4 commits into
Conversation
…(red) Runs the real bootstrap.sh --non-interactive in an isolated temp copy of the skeleton with unrelated files planted in the tree, and asserts they are neither staged nor committed, while the generated files still are. Red on main: the planted files are committed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGMeatV8UjtCB4CTbWuAv4
Step 9 used `git add -A`, so in --non-interactive mode (where every confirm auto-answers yes) any unrelated file in the adopter's tree was committed with the bootstrap. Stage an explicit list instead: CONFIG.md, PRODUCT_SPEC.md, coverage BASELINE.md + baseline.json, INDEX/, CLAUDE.md, the renamed Sprint 0 dir (plus the placeholder's removal), and .claude/settings.json only when this run seeded it. tests/test_bootstrap_staging.py: red before, green after; revert check (re-adding `git add -A`) turns it red again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGMeatV8UjtCB4CTbWuAv4
…checks
- every ${{ }} inside a run: body must be an allowlisted value (event name,
SHAs, PR number); inputs, step outputs and free text go through env:
- every `uses:` (including the `- uses:` list form, which the existing pin
test skipped) is SHA-pinned, docker images version- or digest-pinned, no
abandoned or latest refs
- each claim-grade step that consumes $PR_NUMBER validates it before use
Each assertion was revert-checked: re-introducing an inline dispatch input,
an inline step output, a tag-pinned or abandoned action, or dropping one
numeric check turns a named test red.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KGMeatV8UjtCB4CTbWuAv4
….yml The repo's own regression suite under tests/ was not run by any workflow, and the workflows README had drifted (merge-gate.yml missing), which turned the README test red on main unnoticed. Add a self-tests job to tripwires.yml (skips cleanly if tests/ is removed) and add the missing README row and permission count. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KGMeatV8UjtCB4CTbWuAv4
Claim grader (shadow mode)Each commit / PR-text element scored against the claim-compression rubric. Shadow mode: this comment is informational; merge is not blocked.
|
BerryManifold
left a comment
There was a problem hiding this comment.
Automated Codex static review of aec167af38e473ffab8c99cd916f71ae6756093a is complete. Result: blockers; details retained privately. Details and coverage limits are recorded in the project's private review log. No tests were executed by this reviewer. Both account submissions represent the same Codex review, not independent reviews.
Matr0xshka
left a comment
There was a problem hiding this comment.
Automated Codex static review of aec167af38e473ffab8c99cd916f71ae6756093a is complete. Result: blockers; details retained privately. Details and coverage limits are recorded in the project's private review log. No tests were executed by this reviewer. Both account submissions represent the same Codex review, not independent reviews.
What
git add -A, so in--non-interactivemode (where every prompt auto-answers yes) any unrelated file in the adopter's tree was committed with the bootstrap. It now stages an explicit list: CONFIG.md, PRODUCT_SPEC.md, the coverage baselines, INDEX/, CLAUDE.md, the renamed Sprint 0 directory plus the placeholder's removal, and.claude/settings.jsononly when this run seeded it.tests/test_bootstrap_staging.pyruns the real bootstrap in an isolated temp copy with HOME and git config overridden.tests/test_workflow_hygiene.pychecks three things:${{ }}in arun:body is an allowlisted value;uses:line is pinned, including the- uses:list form, which the existing pin test skipped;$PR_NUMBERbefore using it.tests/suite wasn't run by any workflow. Aself-testsjob intripwires.ymlnow runs it. The workflows README had drifted (merge-gate.yml was missing), which left the existing README test red on main; it now has the missing row and the corrected permission count.Standard: met
git add -Aturns the staging test red. Each of these turns a named hygiene test red: an inline dispatch input, an inline step output, a tag-pinned or abandoned action, or dropping one numeric check. (Under the old suite, those four, plus removing the numeric check, all stayed green.)python3 -m unittest discover -s tests36 OK (was 29 passing + 1 failing on main). actionlint 1.7.7 is clean on tripwires.yml.🤖 Generated with Claude Code
https://claude.ai/code/session_01KGMeatV8UjtCB4CTbWuAv4