L8 Jacquard selector: L2 and L7 are selected but gate nothing -- 128 cards, 32 behaviours #188

Open
opened 2026-11-12 20:54:07 +00:00 by rajames · 0 comments
Owner

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 -- 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."
rajames added the
kind
bug
priority
should
status
backlog
area/v3
labels 2026-11-12 20:54:09 +00:00
Sign in to join this conversation.