Skip to content

Record the ten-layer lesson: a tail that never ran, and a fake artefact that masked real bugs - #2220

Merged
gHashTag merged 1 commit into
masterfrom
loop/t27-skill-onion
Aug 19, 2026
Merged

Record the ten-layer lesson: a tail that never ran, and a fake artefact that masked real bugs#2220
gHashTag merged 1 commit into
masterfrom
loop/t27-skill-onion

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Skill addition distilled from the #2215/#2216 campaign: fpga-bitstream took ten layers to fix, one CI round-trip each, because every step past the historical failure point had never executed. The key finding — the placeholder chipdb (1 MB of /dev/zero) was not merely failing to produce a bitstream, it was masking wrong design constants: the emitted XDC named pin C18, which the device does not have, and a zeroed database cannot reject a wrong pin. Same class as the ring-oscillator MHz figure, in infrastructure rather than a paper.

Rules recorded in .claude/skills/ci-gates/SKILL.md §9: dry-run the whole job's shell locally, not just the part being fixed; treat every line after the historical failure point as unreviewed code; assume everything downstream of a fake artefact is unvalidated, including unrelated-looking constants; edit workflow YAML by line number with parser re-validation, never by matched-string replace; and a timeout ceiling must clear the honest worst case, not the median. Refs #2215

Closes #2219

🤖 Generated with Claude Code

ci-gates section 9, distilled from the ten-layer fpga-bitstream campaign
(#2215/#2216): every step past the historical failure point had never executed,
each was a fresh landmine at one CI round-trip apiece.

The key finding: a fake artefact masks real bugs downstream of it. The job's
chipdb was 1 MB of /dev/zero, and a zeroed database cannot reject a wrong pin --
so the emitted XDC's pin C18, which the device does not have, survived every
prior run unnoticed. Same class as the ring-oscillator MHz figure, in
infrastructure rather than a paper.

Rules recorded: dry-run the whole job's shell locally, not just the part being
fixed (the three layers I tested locally were found before CI; the six I did not
each cost a round-trip); treat every line after the historical failure point as
unreviewed code; assume everything downstream of a fake artefact is unvalidated,
including constants that look unrelated; edit workflow YAML by line number and
re-validate with a parser; and a timeout ceiling must clear the honest worst
case, not the median -- mine killed a healthy 46-minute run at 45.

Closes #2219
Refs #2215

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 04:57:57 UTC

Summary

Status Count
Total Open PRs 31
PRs with Failing Checks 13
PRs with All Checks Green 18
READY 9
FAILING 13
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@gHashTag
gHashTag merged commit 9d28410 into master Aug 19, 2026
18 checks passed
@gHashTag
gHashTag deleted the loop/t27-skill-onion branch August 19, 2026 06:17
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.

Record the ten-layer lesson: a job that always failed early has a tail that never ran

1 participant