Four gaps found while triaging the Jules PRs. Each PR was closed for a specific defect, but the coverage they were reaching for is genuinely missing. Ordered by whether a regression would be caught today.
1. bin/idstack-gen-skills target isolation (from #52). Nothing asserts that --target claude leaves dist/codex/ and AGENTS.md untouched. If render_codex_assets escaped its guard at bin/idstack-gen-skills:212-214, AGENTS.md would still be a byte-identical copy of templates/agent-context.md, so both smoke-test.sh:362 and the :353 dry-run gate stay green. Silent regression today. Fix: two check lines near integration-test.sh:162, plus one for --target bogus exiting 2 (:50-53).
2. bin/idstack-slugify stdin (from #51). Both the implicit branch (:42) and explicit - (:35) are documented at :20 and untested. The emoji case is the only input reaching .encode("ascii","ignore") at :51. Re-land those assertions with #51's deadlocking pty test dropped.
3. bin/idstack-migrate:84 (from #53). The || { cat "$MANIFEST"; exit 0; } fallback on a malformed manifest is exercised by nothing. One assertion, folds into the existing block at smoke-test.sh:311-350.
4. Comment fix, bin/idstack-learnings-delete:4. Says "Exit 0 always" while :9, :12 and the sys.exit(1) at :38 all exit 1. Fix the comment, not the code — skills/learn/SKILL.md:389 depends on the nonzero exit to avoid reporting success on a no-op.
Larger coverage gaps (idstack-doctor, idstack-status --readiness) stay tracked on open PRs #55 and #54.
Four gaps found while triaging the Jules PRs. Each PR was closed for a specific defect, but the coverage they were reaching for is genuinely missing. Ordered by whether a regression would be caught today.
1.
bin/idstack-gen-skillstarget isolation (from #52). Nothing asserts that--target claudeleavesdist/codex/andAGENTS.mduntouched. Ifrender_codex_assetsescaped its guard atbin/idstack-gen-skills:212-214,AGENTS.mdwould still be a byte-identical copy oftemplates/agent-context.md, so both smoke-test.sh:362 and the :353 dry-run gate stay green. Silent regression today. Fix: twochecklines near integration-test.sh:162, plus one for--target bogusexiting 2 (:50-53).2.
bin/idstack-slugifystdin (from #51). Both the implicit branch (:42) and explicit-(:35) are documented at :20 and untested. The emoji case is the only input reaching.encode("ascii","ignore")at :51. Re-land those assertions with #51's deadlocking pty test dropped.3.
bin/idstack-migrate:84(from #53). The|| { cat "$MANIFEST"; exit 0; }fallback on a malformed manifest is exercised by nothing. One assertion, folds into the existing block at smoke-test.sh:311-350.4. Comment fix,
bin/idstack-learnings-delete:4. Says "Exit 0 always" while :9, :12 and thesys.exit(1)at :38 all exit 1. Fix the comment, not the code —skills/learn/SKILL.md:389depends on the nonzero exit to avoid reporting success on a no-op.Larger coverage gaps (
idstack-doctor,idstack-status --readiness) stay tracked on open PRs #55 and #54.