The L8 Jacquard selector (v3/src/ssm_jacquard.c) selects among all 128 cards -- the adaptive table holds the full 7-bit L1-L7 space (v3/src/compudynamics.c:52, num_configs = 128u) and ssm_apply_mode_from_table() writes all seven bits of the chosen card into the VM's ssm_config_t (ssm_jacquard.c:450-456). But only five of the seven fields are read by a gate:
none -- only set at bootstrap (vm_bootstrap.c:346) and printed in the DoE trace (vm_time.c:460, kernel/src/vm/vm_runtime.c:463)
L3
linear decay
v3/src/physics_metadata.c:338
L4
pipelining
v3/src/physics_execution_hooks.c:101
L5
window inference
v3/src/inference_engine.c:703
L6
decay inference
v3/src/inference_engine.c:727
L7
adaptive heartrate
none -- only set at bootstrap (vm_bootstrap.c:351) and printed
So cards that differ only in L2 or L7 behave the same: the 128 cards are 32 distinct behaviours, four cards each. The bandit's exploration and scoring treat the four as different; the DoE trace reports L2 and L7 as if they acted. ssm_jacquard.h (~lines 120-130) says L1/L4/L7 were made live "at their four call sites" -- true of L1 and L4, not of L7; L2 was never wired. The legacy 16-mode fallback (C0-C15, used when the table cannot be allocated) spans L2/L3/L5/L6 -- one of its four bits the dead L2.
v3 only (L8 is v3's runtime; v4 has none). v3 is not part of acceptance and is being retired (#156).
Done when
Ruled: wire L2 and L7 to real gates, or reduce the deck to the cards that differ (and say what that means for the DoE data measured over 128)
A test, written first and seen to fail, that each of the seven bits changes the VM's behaviour -- or that the deck holds only cards that do
ssm_jacquard.h's comment states what is wired
🤖 Filed with Claude Code -- Captain Bob, 2026-11-12: "Is the jacquard selector implementing all of the possible cards?" -- "File the jacquard selector finding as a bug."
### Found
The L8 Jacquard selector (`v3/src/ssm_jacquard.c`) selects among all **128** cards -- the adaptive table holds the full 7-bit L1-L7 space (`v3/src/compudynamics.c:52`, `num_configs = 128u`) and `ssm_apply_mode_from_table()` writes all seven bits of the chosen card into the VM's `ssm_config_t` (`ssm_jacquard.c:450-456`). But only five of the seven fields are read by a gate:
| Bit | Loop | Gate |
|---|---|---|
| L1 | heat tracking | `hotwords_cache_set_enabled(...)`, `v3/src/vm_time.c:489` |
| **L2** | **rolling window** | **none** -- only set at bootstrap (`vm_bootstrap.c:346`) and printed in the DoE trace (`vm_time.c:460`, `kernel/src/vm/vm_runtime.c:463`) |
| L3 | linear decay | `v3/src/physics_metadata.c:338` |
| L4 | pipelining | `v3/src/physics_execution_hooks.c:101` |
| L5 | window inference | `v3/src/inference_engine.c:703` |
| L6 | decay inference | `v3/src/inference_engine.c:727` |
| **L7** | **adaptive heartrate** | **none** -- only set at bootstrap (`vm_bootstrap.c:351`) and printed |
So cards that differ only in L2 or L7 behave the same: the 128 cards are **32 distinct behaviours**, four cards each. The bandit's exploration and scoring treat the four as different; the DoE trace reports L2 and L7 as if they acted. `ssm_jacquard.h` (~lines 120-130) says L1/L4/L7 were made live "at their four call sites" -- true of L1 and L4, not of L7; L2 was never wired. The legacy 16-mode fallback (C0-C15, used when the table cannot be allocated) spans L2/L3/L5/L6 -- one of its four bits the dead L2.
v3 only (L8 is v3's runtime; v4 has none). v3 is not part of acceptance and is being retired (#156).
### Done when
- [ ] Ruled: wire L2 and L7 to real gates, or reduce the deck to the cards that differ (and say what that means for the DoE data measured over 128)
- [ ] A test, written first and seen to fail, that each of the seven bits changes the VM's behaviour -- or that the deck holds only cards that do
- [ ] `ssm_jacquard.h`'s comment states what is wired
🤖 Filed with [Claude Code](https://claude.com/claude-code) -- Captain Bob, 2026-11-12: "Is the jacquard selector implementing all of the possible cards?" -- "File the jacquard selector finding as a bug."
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found
The L8 Jacquard selector (
v3/src/ssm_jacquard.c) selects among all 128 cards -- the adaptive table holds the full 7-bit L1-L7 space (v3/src/compudynamics.c:52,num_configs = 128u) andssm_apply_mode_from_table()writes all seven bits of the chosen card into the VM'sssm_config_t(ssm_jacquard.c:450-456). But only five of the seven fields are read by a gate:hotwords_cache_set_enabled(...),v3/src/vm_time.c:489vm_bootstrap.c:346) and printed in the DoE trace (vm_time.c:460,kernel/src/vm/vm_runtime.c:463)v3/src/physics_metadata.c:338v3/src/physics_execution_hooks.c:101v3/src/inference_engine.c:703v3/src/inference_engine.c:727vm_bootstrap.c:351) and printedSo cards that differ only in L2 or L7 behave the same: the 128 cards are 32 distinct behaviours, four cards each. The bandit's exploration and scoring treat the four as different; the DoE trace reports L2 and L7 as if they acted.
ssm_jacquard.h(~lines 120-130) says L1/L4/L7 were made live "at their four call sites" -- true of L1 and L4, not of L7; L2 was never wired. The legacy 16-mode fallback (C0-C15, used when the table cannot be allocated) spans L2/L3/L5/L6 -- one of its four bits the dead L2.v3 only (L8 is v3's runtime; v4 has none). v3 is not part of acceptance and is being retired (#156).
Done when
ssm_jacquard.h's comment states what is wired🤖 Filed with Claude Code -- Captain Bob, 2026-11-12: "Is the jacquard selector implementing all of the possible cards?" -- "File the jacquard selector finding as a bug."