Record the ten-layer lesson: a tail that never ran, and a fake artefact that masked real bugs - #2220
Merged
Merged
Conversation
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>
Contributor
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
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.
Skill addition distilled from the #2215/#2216 campaign:
fpga-bitstreamtook 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 #2215Closes #2219
🤖 Generated with Claude Code