docs(rules): a rejected flag reads as "no results"; CI waits race check registration - #342
Merged
Merged
Conversation
…ck registration Two silent-wrong-answer traps, both hit live while deduping and merging. tool-use-patterns: any `cmd | jq/grep` whose NON-ZERO exit yields empty stdout masquerades as a legitimate empty result. Worst case is a dedup step — you conclude nobody reported the bug and file a duplicate. Live instance: `gh search issues --state all` is invalid (that flag takes only open|closed; `all` belongs to `gh issue list`), so it prints usage to stderr and a --jq pipeline emits nothing. Six consecutive false "no duplicate" verdicts, caught by exactly one control run against a title known to exist. The rule is the control-test discipline from never-fabricate-test-identifiers, applied to search: control-test every negative that gates an action. git-hazards #7: waiting for CI races check REGISTRATION, not just completion. A loop on "zero pending checks" can exit immediately after a push or update-branch, because zero pending is trivially true before the jobs are registered. Observed state=CLEAN on a single check while three CI jobs had not yet appeared; merging there merges untested. Gate on both nothing-pending and a minimum expected check count. Same root cause as the mergeability race directly above it: an async field read once, too early. Budget: raises TOTAL_BUDGET_BYTES 110,000 -> 114,000, with the justification the test file requires. The surface had reached 109,998 of 110,000 — 2 bytes free — so the budget had stopped being a cleanup trigger and become a hard stop on any new rule content. Both additions were compressed ~50% before bumping, and both host files are back under PER_FILE_CAP_BYTES (9,917 and 9,706). The cleanup pass is deferred, not skipped: the standing CONSOLIDATE candidate is recorded in the test file so the budget can ratchet back down. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKbmsKBLRJMKNejkwujokZ
Contributor
|
| Status | Count |
|---|---|
| 🔍 Total | 170 |
| ✅ Successful | 160 |
| ⏳ Timeouts | 0 |
| 🔀 Redirected | 0 |
| 👻 Excluded | 9 |
| ❓ Unknown | 0 |
| 🚫 Errors | 1 |
Errors per input
Errors in exact_dot_claude/docs/prds/daily-catchup.PRD.md
- [404] https://docs.anthropic.com/claude-code/commands | Failed: Network error: Not Found
Full Github Actions output
Please fix the broken links before merging.
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.
Two silent-wrong-answer traps, both hit live this session while deduping an upstream report and merging a pair of PRs.
tool-use-patterns.md— a rejected flag looks exactly like "no results"Any
cmd … | jq/grepwhose non-zero exit yields empty stdout masquerades as a legitimate empty result. The worst place for that is a dedup step: you conclude nobody reported the bug and file a duplicate.Live instance:
gh search issues --state allis invalid — that flag takes only{open|closed};allbelongs togh issue list. It prints usage to stderr, so a--jqpipeline emits nothing. That produced six consecutive false "no duplicate" verdicts, caught by exactly one control run against a title I knew existed, which failed identically and exposed the bad flag.The durable rule is the control-test discipline from
never-fabricate-test-identifiers.mdapplied to search: control-test every negative that gates an action.git-hazards.md#7 — waiting for CI races check registrationA loop on "zero pending checks" can exit immediately after a push or
update-branch, because zero-pending is trivially true before the jobs are registered. Observedstate=CLEANon a single check while three CI jobs had not yet appeared — merging on that read merges untested code. Gate on both nothing-pending and a minimum expected check count.Same root cause as the mergeability race directly above it in the file: an asynchronously-populated field read once, too early.
Budget bump — 110,000 → 114,000
The test file asks for a justification in the commit message, so: the always-loaded surface had reached 109,998 of 110,000 — two bytes free. At that point the budget had stopped being a cleanup trigger and become a hard stop on any new rule content.
Good-faith steps taken before bumping:
PER_FILE_CAP_BYTES(9,917 and 9,706, from 10,835 and 10,147)The cleanup pass is deferred, not skipped. The standing CONSOLIDATE candidate —
multi-model-delegation.md(~6.6 kB), which largely duplicates theagent-patterns-plugin:multi-model-delegationskill — is recorded in the test file's comment so the budget can ratchet back toward 110,000 once it lands. It was being edited by a concurrent session at the time, so touching it here would have collided.dot_zshrc.tmplwas modified in the working tree by other work and is deliberately not included.🤖 Generated with Claude Code
https://claude.ai/code/session_01PKbmsKBLRJMKNejkwujokZ