Skip to content

row 159: kind-isolation admits no one-letter alias as a free-text needle (gate false positive) - #860

Merged
MattJackson merged 2 commits into
predevfrom
lane-audit-xtask-alias-needle
Oct 15, 2026
Merged

MattJackson merged 2 commits into
predevfrom
lane-audit-xtask-alias-needle

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

What

xtask/src/gates/kind_isolation/matrix/instances.rs: a learned instance name (census id or plugins.yaml alias) shorter than MIN_NEEDLE_LEN = 3 is no longer a needle. It still attributes a module-name constant that spells it. Module-name constants count at any length. --report prints each dropped name as a short line.

Why

The instance vocabulary reads plugins.yaml aliases, and the secret alias c (busbar-secret-c) became a whole-literal needle. Literals are lower-cased, so every extern "C" ABI string and every one-letter "c" key in a neutral crate counted as an instance:secret hit. That was 262 of the axis's 444 Law 0 hits on predev 5c99bef. It cost #833 a red and threatens #840.

Every other alias and census id of the five neutral kinds is at least 3 characters (the shortest is env). The floor therefore drops c and nothing else.

RED plants (matrix battery, instances::selftest)

  • GREEN case: the fixture crate writes extern "C", c == "c" and every live short axis alias, and its × secret cell stays at 0. On predev the c alias makes this an unlisted-instance, so without the fix the case goes red.
  • RED case: the same plant plus module == "vault" (the first 3+ character secret alias, read off plugins.yaml) is still the fixture's × secret unlisted-instance. Long aliases keep counting.
  • Unit test: an_alias_under_three_characters_is_no_needle_and_a_longer_one_still_is.

Rows moved ([[law0]], exact both ways)

Reason on each row: alias needle min length (false positive), ARCHITECT 2026-10-13.

crate × axis before after
busbar × instance:secret 35 19
busbar-contract × instance:secret 133 45
busbar-core-admin × instance:secret 50 38
busbar-kernel × instance:secret 114 67
busbar-plugin-loader × instance:secret 107 12
busbar-core-connector × instance:secret 3 0 (row dropped)
busbar-kernel-egress × instance:secret 1 0 (row dropped)

Precedent for the dropped rows is ad19498: a neutral cell at 0 with no row is still held at 0. busbar-core-oauth2 × instance:secret stays at 1 (an env hit). The [[instance]] presence rows for secret all stay live.

Figures were re-measured by reading only (no local cargo). A line-for-line port of file_literals reproduces every current instance:secret ceiling exactly; the "after" column is the same port without c.

…stance needle

The hole (row 159, gate false positive): the instance vocabulary reads plugins.yaml aliases,
and the C-built secret plugin's alias `c` became a whole-literal needle. Literals are folded to
lower case, so every `extern "C"` ABI string and every one-letter `"c"` key in a neutral crate
counted as a busbar x instance:secret hit: 262 of the axis's 444 Law 0 hits on predev 5c99bef.

The fix: a LEARNED name (census id or registry alias) shorter than MIN_NEEDLE_LEN = 3 is no
needle. Every other alias and census id of the five neutral kinds is 3+ characters (shortest:
`env`), so the floor drops `c` and nothing else. The short name still attributes a module-name
constant that spells it; module-name constants themselves count at any length. --report prints
each dropped name as a `short` line.

RED plants (matrix battery, instances::selftest):
- GREEN case: the fixture crate writes `extern "C"`, `c == "c"` and every live short axis alias
  as a literal; its x secret cell stays 0. On predev the `c` alias makes it an
  unlisted-instance, so the case is red without this fix.
- RED case: the same plant plus `module == "<first 3+ secret registry alias>"` (`vault`) is still
  the fixture's x secret unlisted-instance: long registry aliases keep counting.
- unit test an_alias_under_three_characters_is_no_needle_and_a_longer_one_still_is.

[[law0]] instance:secret rows re-measured (exact both ways), alias needle min length (false
positive), ARCHITECT 2026-10-13: busbar 35 -> 19, busbar-contract 133 -> 45, busbar-core-admin
50 -> 38, busbar-kernel 114 -> 67, busbar-plugin-loader 107 -> 12; busbar-core-connector 3 -> 0
and busbar-kernel-egress 1 -> 0 (rows dropped: a neutral cell at 0 with no row is held at 0).
@MattJackson
MattJackson merged commit b38bc35 into predev Oct 15, 2026
1 check was pending
@MattJackson
MattJackson deleted the lane-audit-xtask-alias-needle branch October 15, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant