tri fpga-jtag --ir · IR capture must end in 01
Same even DR word, two verdicts: IR 0x35 says BYPASS, IR 0x34 says the shift is broken. The rule is a t27 spec with 8 tests; one mutant fails 6 checks.
tri fpga-jtag --ir · IR capture must end in 01
0x13636092: bit 0 clear: not an IDCODE (BYPASS or a broken shift)
verdict: bypass: IR capture 0x35 ends in 01 and DR 0x13636092 has bit 0 clear: the TAP is alive and BYPA
SS is selected, not IDCODE
exit 1
website $ tri fpga-jtag --decode 0x13636092 --ir 0x34; echo "exit $?"
0x13636092: bit 0 clear: not an IDCODE (BYPASS or a broken shift)
verdict: broken-shift: IR capture 0x34 does not end in 01, so the shift itself is broken (TCK, TMS order
, or the TDO path); the DR word means nothing yet
exit 1
website $ tri fpga-jtag --self-test | grep -E "ir:|IR|PASS|FAIL"
ok tdo: all zeros, IR 0 -> stuck-low
ok tdo: real code, IR 0x35 -> answers
ok tdo: real-looking code, IR 0x3F -> broken-shift
ok ir: 0x35 + 0x13636093 -> answers
ok ir: 0x35 + 0x13636092 -> bypass
ok ir: 0x34 + 0x13636092 -> broken-shift
ok ir: 0x36 + 0x13636093 -> broken-shift
jtag self-test: PASS
website $ node ~/.claude/skills/course-27/scripts/t27check.mjs tdo_verdict.t27
clean tdo_verdict.t27 module jtag_tdo_verdict {"typecheckOk":true,"errors":0,"discarded":0,"hirOk":true}
tests 8 asserts 8
website $ diff tdo_verdict.t27 tdo_verdict.mutant.t27; true
30c30
< return (ir & IR_CAPTURE_MASK) == IR_CAPTURE_LOW;
---
> return true;
website $ node ~/.claude/skills/course-27/scripts/t27check.mjs tdo_verdict.mutant.t27 | grep -c "^ fail
"
6
website $
recorded 2026-10-09 07:17 UTC real 30.2 s shown 30.2 s exit codes 0 0 0 0 0 0 0
$ tri fpga-jtag --decode 0x13636093 --ir 0x35; echo "exit $?"
$ tri fpga-jtag --decode 0x13636092 --ir 0x35; echo "exit $?"
$ tri fpga-jtag --decode 0x13636092 --ir 0x34; echo "exit $?"
$ tri fpga-jtag --self-test | grep -E "ir:|IR|PASS|FAIL"
$ node ~/.claude/skills/course-27/scripts/t27check.mjs tdo_verdict.t27
$ diff tdo_verdict.t27 tdo_verdict.mutant.t27; true
$ node ~/.claude/skills/course-27/scripts/t27check.mjs tdo_verdict.mutant.t27 | grep -c "^ fail"
Staged: the prompt and the typing. Real: every byte the commands printed, at the time they printed it. Any silence longer than 2 s is shown for 2 s, and the title bar says so while it happens. Edited: home directory shown as ~.