feat: STOCK V.1 two-mode config family + wire treatment arms to the pin
fox 2026-05-21: characterize substrate-ON under BOTH answer shapes, so
answer_mode is a swept axis, not a single pinned value.
stock_v1.py now exposes STOCK_V1_POLICIES{quote,claim_lattice} +
STOCK_V1_GOVERNANCE_HASHES (quote 5b6ca4c5..., claim_lattice 036a4c79...),
policy_for(mode), and assert_not_drifted(mode). Shared pins (crosslang
OFF, repair OFF, quantifier dry-run, metacognition label-only,
soft-preflight OFF, claim cap 12, v2-acronym-aware) are frozen
identically across modes.
Wire the treatment arms to the pin (the consumer-side step that makes
the freeze real):
* control_ab --answer-mode {quote,claim_lattice}
* control_sweep --arborist-answer-mode {quote,claim_lattice}
Both default claim_lattice (prior behavior), call assert_not_drifted on
non-reasoning runs (halts the sweep if DEFAULT_QUERY_POLICY drifts), and
load the frozen policy_for(mode) instead of an inline
dict(DEFAULT_QUERY_POLICY, ...). Reasoning refs (phase 3) keep their
documented JSON overrides and skip the assert by design (different hash).
jaggedness is left standalone — it is a mode-agnostic retrieval
instrument, coupling it to the answer-policy freeze adds friction with no
correctness gain. Full suite 2528 passed.
This commit is contained in:
parent
e227bbc32a
commit
1a7f8eb4ea
4 changed files with 177 additions and 84 deletions
|
|
@ -10,9 +10,21 @@ silently drift across a 3-4 day run. Source of truth:
|
|||
The full merkle-agi-dag reverse-RAG SQD / Prometheus-σ recursive-
|
||||
falsification substrate, **non-reasoning** and **non-distributed**.
|
||||
|
||||
STOCK V.1 is a **two-cell config family** (fox 2026-05-21): the substrate
|
||||
is characterized under both answer shapes, so `answer_mode` is a **swept
|
||||
axis**, each cell frozen with its own governance hash —
|
||||
|
||||
- **`quote`** — prose with inline verbatim quotes; bench leader on raw
|
||||
lexical grounding (~0.54 strict).
|
||||
- **`claim_lattice`** — structured JSON claim-lattice (the four-rung
|
||||
ladder); what `control_ab`/`control_sweep` already drive, and the only
|
||||
shape with phase-3 reasoning-variant support built (~0.42 strict).
|
||||
|
||||
Everything else below is frozen identically across both modes.
|
||||
|
||||
| knob | value | note |
|
||||
|---|---|---|
|
||||
| `answer_mode` | `quote` | bench leader on raw lexical grounding |
|
||||
| `answer_mode` | **swept**: `quote` \| `claim_lattice` | two-cell family |
|
||||
| `temperature` / `top_p` / `max_tokens` | `0.1` / `1.0` / `512` | from `DEFAULT_QUERY_POLICY` |
|
||||
| `repair_enabled` | `False` | one-shot discipline, no self-heal reprompts |
|
||||
| crosslang guard / translate / entity-mask | **OFF** | English-only; sandwich-MT is a separate capability |
|
||||
|
|
@ -31,19 +43,32 @@ falsification substrate, **non-reasoning** and **non-distributed**.
|
|||
arm A (question-only, neutral system prompt; gold text supplied
|
||||
identically to both arms per the §4b ruling).
|
||||
|
||||
## The one hash
|
||||
## The hashes (one per mode)
|
||||
|
||||
```
|
||||
governance_policy_hash = 5b6ca4c5e754e96b7e2e8af16a8948dec8d8b2a80b9304df21b1f6d494aade4e
|
||||
governance_policy_hash[quote] = 5b6ca4c5e754e96b7e2e8af16a8948dec8d8b2a80b9304df21b1f6d494aade4e
|
||||
governance_policy_hash[claim_lattice] = 036a4c79fd9d381a9ebf54094091c5f4e892793ae3b6dc56f70b8d4921c47455
|
||||
```
|
||||
|
||||
This identifies the whole campaign. `bench/stock_v1.py` snapshots the
|
||||
live `DEFAULT_QUERY_POLICY`, re-asserts the load-bearing pins, hashes
|
||||
the whole effective dict, and `assert_not_drifted()` fails **loudly** if
|
||||
that hash ever changes — a mid-campaign edit to `DEFAULT_QUERY_POLICY`
|
||||
(a pinned knob *or any other field the hash covers*) stops the harness
|
||||
rather than quietly changing what "substrate-ON" means. Re-pinning is a
|
||||
deliberate fox-gated bump to V.2, never silent.
|
||||
These identify the campaign. `bench/stock_v1.py` snapshots the live
|
||||
`DEFAULT_QUERY_POLICY`, re-asserts the load-bearing pins, sets the mode's
|
||||
`answer_mode`, hashes the whole effective dict, and
|
||||
`assert_not_drifted(mode)` fails **loudly** if that hash ever changes —
|
||||
a mid-campaign edit to `DEFAULT_QUERY_POLICY` (a pinned knob *or any
|
||||
other field the hash covers*) stops the harness rather than quietly
|
||||
changing what "substrate-ON" means. Re-pinning is a deliberate fox-gated
|
||||
bump to V.2, never silent.
|
||||
|
||||
**Phase 3 (reasoning) note.** Reasoning refs (qwen-think) layer
|
||||
documented overrides onto `claim_lattice` inside `control_sweep` (cleared
|
||||
JSON stop sequences, 8192-token budget for the reasoning trace,
|
||||
empty-output self-heal). Those overrides change the policy, so a
|
||||
reasoning run has a *different* governance hash by construction — correct,
|
||||
since it is a different phase-3 config. The V.1 drift guard therefore
|
||||
covers only the non-reasoning frozen base; reasoning runs skip the assert.
|
||||
|
||||
Harnesses select the mode via `--answer-mode` (`control_ab`) /
|
||||
`--arborist-answer-mode` (`control_sweep`), default `claim_lattice`.
|
||||
|
||||
## Campaign matrix
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue