diff --git a/.claude/board/AGENT_LOG.md b/.claude/board/AGENT_LOG.md
index 7f3465523..dbf75b1f6 100644
--- a/.claude/board/AGENT_LOG.md
+++ b/.claude/board/AGENT_LOG.md
@@ -1,3 +1,41 @@
+## 2026-09-30 — correction to the two D-LXC-1 / D-LXC-11 entries below
+
+- Their "70,396 triples", "G6 = 25" and "25 tags moved (G6 exact)" record
+ frequency changing tags: unintended semantic interference, not a passing
+ gate. The #1304 repair removed the counted pick; the tag is `main`'s legacy
+ tagging again. KJV: 70,393 triples, 1,227 subjects, 1,941 predicates,
+ identical to `main`. G6 is now the invariant
+ `counts_change_evidence_never_the_readings_or_the_tag`.
+
+## 2026-09-30 — D-LXC-11 coverage bands (5+3 council, orchestrator implements)
+
+- The 5 (Sonnet): prior-art, iron-rule, code truth (general-purpose,
+ runtime-archaeologist charter), cascade-impact, creative-explorer.
+ 0 VIOLATES; findings drove 17 v1→v2 changes (rank rule from ndarray
+ `rank_per_10000`, D-LXC-12 dropped for D-LXC-5, `CoverageBand` naming,
+ T3 split, reading-share key F8).
+- The 3 (Sonnet): overclaim-auditor, dilution-collapse-sentinel,
+ firewall-warden. 0 BLOCK, 3 P1, 9 P2; v2→v3 fixed one rank rule named
+ everywhere, receipts for every number, gate renames G8a-c, commit contents.
+- Code: `bible_wave.rs` gains `CoverageBand`, `BandCuts`, `calibrate`, G8c;
+ 8 new tests (T1-T8). No tag changes.
+- Gates: 126 lib + 17 example tests, clippy `-D warnings`, fmt clean. KJV:
+ 70,396 triples, G6 = 25, G8c = population 141, cuts (72, 97), bands
+ 34/71/36 — equal to the Python receipt in the plan.
+
+## 2026-09-29 — D-LXC-1 implemented (orchestrator, no agents)
+
+- `crates/deepnsm-v2/examples/bible_wave.rs`: counted PoS pick replaces the
+ `word_forms.csv` first-wins; lemma table still first. `Cargo.toml`:
+ `[[example]] bible_wave test = true`. 9 new tests; 124 lib tests unchanged.
+- Disable runs: 8 guards, each turned its named test red. One first attempt at
+ the first-wins disable was not the old rule and stayed green; replaced.
+- clippy `-D warnings` and fmt are clean.
+- KJV before/after: 70,393 → 70,396 triples; 25 tags moved (G6 exact); 107 of
+ 771,176 tokens changed; long-range shares unchanged. Counts-first
+ alternative: 71,088 triples, 141 tags.
+- `.claude/settings.json` gains `attribution` (D-LXC-7).
+
## 2026-09-29 — D-LXC-1 plan rewritten with Read (orchestrator, no agents, no code)
- Operator-directed. The council run below read source with shell
diff --git a/.claude/board/entries/2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md b/.claude/board/entries/2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md
index 809f32a39..484138ff6 100644
--- a/.claude/board/entries/2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md
+++ b/.claude/board/entries/2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md
@@ -1,32 +1,62 @@
-# DeepNSM-v2 counted PoS pick: tag-change counts (2026-09-29)
+# DeepNSM-v2 counted PoS pick: tag changes and the KJV run (2026-09-29)
-**Status:** MEASURED (offline, over committed CSVs plus the released KJV
-vocabulary). No code changed.
+**Status:** MEASURED. D-LXC-1 is implemented in `bible_wave` (this PR).
The removed `deepnsm-v2/src/lexicon.rs` (`68955ecb^`) assumed "the first row
[of a frequency-ranked table] is the dominant reading". For `word_forms.csv`
that is false: the file is ordered by lemma rank, and 259 surfaces have a
-first row that is not their most frequent reading (e.g. `changes`: first row
-v 13,624 at `:707`, noun n 113,085 at `:853`).
+first row that is not their most frequent reading. For example, `changes` has
+its verb row first (v 13,624 at `:707`), but the noun row (`:853`) counts
+113,085.
-Replacing that first-wins layer in `bible_wave::load_pos` with a counted pick
-(highest summed `wordFreq` per folded parser state, tie order Noun > Verb >
-Adj > Det > Other) changes:
+D-LXC-1 replaces that first-wins layer with a counted pick: the highest summed
+`wordFreq` per folded parser state, ties in the order Noun > Verb > Adj > Det
+> Other. The lemma table stays first.
-| variant | over both tables | within `bible_vocab.txt` (12,543) |
-|---|---|---|
-| B: lemma table first, as pinned by `ec50f07b` (the plan's choice) | 105 | **25** |
-| A: counted pick first, lemma table as fallback | 288 (183 lemma-derived) | 141 |
+| | before (first-wins) | after (B, shipped) | A (counts first) |
+|---|---|---|---|
+| in-vocabulary tags moved | — | 25 | 141 |
+| KJV triples (31,102 verses) | 70,393 | 70,396 | 71,088 |
+| distinct subjects | 1,227 | 1,237 | 1,243 |
+| same-subject links beyond ±5 / ±8 | 60.3% / 52.7% | 60.3% / 52.7% | 60.3% / 52.6% |
+
+Under B, 107 of 771,176 in-vocabulary KJV tokens change tag. The offline
+predictions (25 and 141 words) match the in-code G6 count exactly. Whether the
+moved tags are more correct is not measured.
Method: Python over `crates/deepnsm/word_frequency/{lemmas_5k,word_forms}.csv`
-and `bible_vocab.txt` from release `v0.1.0-cam96-data`. Surfaces are
-lowercased as `load_pos` does. Fold: `n|p→Noun, v→Verb, j→Adj, a|d→Det,
-else Other`. Whether either variant tags the KJV better is not measured; the
-KJV before/after is gate G5 of D-LXC-1.
+and `bible_vocab.txt` (release `v0.1.0-cam96-data`); `bible_wave` run on
+Gutenberg #10 with the same release artifacts, `main` `5282dfa3` against this
+branch. The KJV text is input only and is not committed.
+
+Reproduce: fetch the release assets per `crates/deepnsm-v2/data/README.md`,
+then `DEEPNSM_V2_DATA=
cargo run --release --example bible_wave --
+`. The in-code G6 count recomputes the 25 and asserts it. The 141
+(variant A) was measured once in Python and is not re-run by any gate. The
+`bible_vocab.txt` used had SHA-256
+`8dc3a65dcd3af38a2f53308fb96ef5fb5b34336c14587f6971b75ac966c3e212` (recorded
+as provenance, not a gate).
Pre-existing observations filed with the plan:
- `archaic_pos` never fires for COCA-known words such as `art` (D-LXC-9).
-- No in-crate tagger in deepnsm-v2 produces `Pos::Rel`; external callers can
- still pass it (D-LXC-10).
+- No in-crate tagger produces `Pos::Rel`; external callers can still pass it
+ (D-LXC-10).
+
+**Amended (same day).** The summed pick was replaced by the register:
+`LexicalEvidence` stores readings most frequent first with a cumulative
+percentile coverage, and the tagger reads position 0. The KJV run is identical
+to "after (B)" above (25 moved, 70,396 triples); the summing moved nothing.
Plan: `.claude/plans/deepnsm-v2-lexical-evidence-consumer-v1.md`.
+
+**Correction (2026-09-30, operator ruling on #1304).** Frequency is evidence,
+not a lexical decision. The 25 moved tags and the 70,396 triples above record
+frequency changing the tag: unintended semantic interference, not a
+correction. The counted pick and `dominant_pos` are removed. The tag is
+`main`'s tagging again, named `load_pos_legacy_first_wins`; its dependence on
+source-row order is inherited debt pending D-LXC-2/D-LXC-3, not an authorized
+resolver. KJV after the repair: 70,393 triples, 1,227 subjects, 1,941
+predicates — identical to `main`. G6 is now a paired invariant pinned by
+`counts_change_evidence_never_the_readings_or_the_tag`: count changes may move
+the order and the coverage, never the reading set or the tag. The table above
+is kept as the historical measurement.
diff --git a/.claude/board/entries/2026-09-30-deepnsm-v2-coverage-bands.md b/.claude/board/entries/2026-09-30-deepnsm-v2-coverage-bands.md
new file mode 100644
index 000000000..3ed982f03
--- /dev/null
+++ b/.claude/board/entries/2026-09-30-deepnsm-v2-coverage-bands.md
@@ -0,0 +1,40 @@
+# DeepNSM-v2 coverage bands at population-calibrated thresholds (2026-09-30)
+
+**Status:** MEASURED. D-LXC-11 is implemented in `bible_wave` (report only;
+no tag changes).
+
+Each word's dominant reading share (`coverage(id)[0]`, from D-LXC-1's
+frequency-ordered register) is banded Contested / Leaning / Decisive at the
+quartiles of the band population, calibrated once at load. The population is
+the vocabulary words that are not lemma-table keys, have known coverage, and
+have readings that fold to at least two parser states.
+
+On the release KJV vocabulary (`v0.1.0-cam96-data`):
+
+| quantity | value |
+|---|---|
+| band population | 141 (of 635 cross-state words; 494 are lemma-table keys) |
+| cuts (lo, hi), `rank_per_10000` indices 35 / 105 | 72, 97 |
+| share range | 50 … 99 |
+| contested / leaning / decisive | 34 / 71 / 36 |
+| absolute alternative "< 60 contested" | 20 |
+
+Contested words include flies, leaves, lies, promises, needs, means.
+
+The Rust gate G8c and the Python receipt in the plan give the same numbers.
+The KJV run is otherwise unchanged (70,396 triples, G6 = 25).
+
+Open for the operator: relative bands (this) vs an absolute floor.
+
+Ready-to-paste STATUS_BOARD row (the file is deny-listed for the agent):
+
+`| D-LXC-11 | coverage bands (population quartiles) in bible_wave | In PR | deepnsm-v2-coverage-bands-v1 |`
+
+Plan: `.claude/plans/deepnsm-v2-coverage-bands-v1.md`.
+
+**Correction (2026-09-30).** The bands are a measurement, not a decision: the
+labels are report vocabulary in `bible_wave`, nothing reads a band to select
+or drop a reading, and no downstream consumer exists. The numbers (141,
+(72, 97), 34 / 71 / 36) stand. "70,396 triples, G6 = 25" above is stale: after
+the #1304 repair the KJV run is 70,393 triples, identical to `main`, and G6 is
+the non-interference invariant (see the 2026-09-29 entry's correction).
diff --git a/.claude/board/entries/README.md b/.claude/board/entries/README.md
index 393a6e819..64fd79d33 100644
--- a/.claude/board/entries/README.md
+++ b/.claude/board/entries/README.md
@@ -25,10 +25,11 @@ index row, (3) no duplicate entry id. Checks 1 and 2 are deliberately
opposite directions; the stranding this convention prevents shows up in
exactly one of them, never both.
-176 entries, 2026-08-06 .. 2026-09-29.
+177 entries, 2026-08-06 .. 2026-09-30.
| date | entry id | finding | file |
|---|---|---|---|
+| 2026-09-30 | `deepnsm-v2-coverage-bands` | | [2026-09-30-deepnsm-v2-coverage-bands.md](2026-09-30-deepnsm-v2-coverage-bands.md) |
| 2026-09-29 | `deepnsm-v2-counted-pick-tag-deltas` | | [2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md](2026-09-29-deepnsm-v2-counted-pick-tag-deltas.md) |
| 2026-09-26 | `deepnsm-v2-lexical-evidence-survives-routing` | | [2026-09-26-deepnsm-v2-lexical-evidence-survives-routing.md](2026-09-26-deepnsm-v2-lexical-evidence-survives-routing.md) |
| 2026-09-25 | `window-scheduling-and-two-level-ternlog` | | [2026-09-25-window-scheduling-and-two-level-ternlog.md](2026-09-25-window-scheduling-and-two-level-ternlog.md) |
diff --git a/.claude/plans/deepnsm-v2-coverage-bands-v1.md b/.claude/plans/deepnsm-v2-coverage-bands-v1.md
new file mode 100644
index 000000000..a94e2b757
--- /dev/null
+++ b/.claude/plans/deepnsm-v2-coverage-bands-v1.md
@@ -0,0 +1,279 @@
+# DeepNSM-v2 coverage bands at population-calibrated thresholds (D-LXC-11)
+
+**Status:** RATIFIED v3 (5+3 council, 2026-09-30). Implementation in this PR.
+**Reframed 2026-09-30 (operator):** the bands are a MEASUREMENT, not a
+decision. Keep the number; be suspicious of the adjective. The labels
+Decisive / Leaning / Contested are report vocabulary for `bible_wave` only —
+nothing reads a band to select, rank or eliminate a reading, and no
+downstream consumer exists. See "Reframe" below.
+**Parent:** `.claude/plans/deepnsm-v2-lexical-evidence-consumer-v1.md` (D-LXC-1,
+the frequency-ordered register this reads).
+
+## Overview
+
+D-LXC-1 stores each word's readings most frequent first, with a cumulative
+percentile coverage per reading. The operator asked that frequency be read as
+percentile coverage with thresholds at prevalence boundaries:
+
+> "It should simply be percentile coverage"
+> "Compared with HDR popcount stacking early exit Belichtungsmesser statistical
+> confidence interval thresholds preheating rolling floor bucket assignment.
+> It's thresholds at certain Prävalenz boundaries/percentile coverage.
+> Akin to using Gini palette when looking at poor countries. Or IQ buckets in
+> gaussian distribution."
+
+This plan turns the most frequent reading's share into a three-level
+`CoverageBand` whose cut points are quartiles of the measured population, so
+each band holds a known share of it. The cuts are calibrated once at load from
+the evidence present. That is a load-time snapshot, not a streaming rolling
+floor; the streaming form exists as ndarray `hpc::rolling_floor::RollingFloor`.
+
+## Checklist
+
+- [x] Spec v1, 5 research savants, draft v2, 3 reviewers, v3 (this file)
+- [x] `CoverageBand`, `BandCuts`, `calibrate` in `bible_wave.rs`
+- [x] Tests T1-T8, each disable-verified red before landing
+- [x] Gates G8a-G8c
+- [x] Board entry + indexes in the same commit
+
+## Frozen decisions
+
+- F1 `LexicalEvidence` is evidence, not interpretation. It stores readings
+ frequency-first with cumulative coverage (`lexical.rs` `finish()` and
+ `coverage()`, PR #1304). It gets no band logic.
+- F2 The PoS fold (`coca_pos`) and all tagging live in the consumer example
+ `crates/deepnsm-v2/examples/bible_wave.rs` (commit `68955ecb`).
+- F3 Lemma table first (commit `ec50f07b`, pinned by
+ `the_forms_layer_never_retags_a_lemma_table_word`). The register is read only
+ for words the lemma table does not know.
+- F4 DeepNSM-v2 is the inbound leg: no reasoning, NARS truth or belief in it.
+- F5 Unknown is not zero: a word with unknown coverage has no band.
+- F6 No model identifiers or advertising; Read for source inspection; the
+ board files denied in `.claude/settings.json` are not edited by the agent.
+- F7 Search is navigation, never evidence.
+- F8 The band key is the most frequent READING's share, `coverage(id)[0]`. The
+ operator rejected summing at tag time ("why are you counting … it should
+ simply be percentile coverage"), so no parser-state sum is formed.
+- F9 Bands are relative by design: the operator asked for cuts at prevalence
+ boundaries ("IQ buckets", "Gini palette"), i.e. cuts that each hold a known
+ share of the population. The absolute floor is the recorded alternative.
+
+## Measured
+
+Method: the Python receipt below, run from the repo root against the release
+`bible_vocab.txt` (`v0.1.0-cam96-data`, SHA-256
+`8dc3a65dcd3af38a2f53308fb96ef5fb5b34336c14587f6971b75ac966c3e212`). The
+in-code gate G8c recomputes the band numbers and asserts them.
+
+| quantity | value |
+|---|---|
+| `word_forms.csv` rows with an empty `wordFreq` | 0 |
+| in-vocab words with ≥1 reading | 3,556 |
+| … whose readings fold to ≥2 parser states | 635 |
+| … of those, lemma-table keys (register never read) | 494 |
+| **band population** | **141** |
+| top reading shares its state with another reading | 0 of 141 |
+| rank indices (`rank_per_10000`, n = 141) | 35, 105 |
+| cuts (lo, hi) | 72, 97 |
+| share range | 50 … 99 |
+| contested / leaning / decisive | 34 / 71 / 36 |
+| absolute alternative "< 60 contested" | 20 |
+
+Because no top reading shares its state with another reading, reading share
+and state share are equal for all 141 words: F8 changes nothing here.
+
+Other vocabularies (same receipt, different word set):
+- The COCA 5k lemma vocab: population 0. Every word is a lemma-table key.
+- All COCA surfaces: population 388, cuts (66, 94), bands 96 / 189 / 103;
+ "< 60" gives 62.
+
+```python
+# receipt: python3 receipt.py (from the lance-graph root)
+import csv,collections,sys
+vs=set(l.strip() for l in open(sys.argv[1]) if l.strip())
+lem={}
+for r in list(csv.reader(open("crates/deepnsm/word_frequency/lemmas_5k.csv")))[1:]:
+ lem.setdefault(r[1].lower(),r[2])
+fold=lambda p:{'n':'N','p':'N','v':'V','j':'J','a':'D','d':'D'}.get(p,'O')
+rd=collections.defaultdict(list)
+for r in list(csv.reader(open("crates/deepnsm/word_frequency/word_forms.csv")))[1:]:
+ w=r[5].lower()
+ if w in vs: rd[w].append((fold(r[2]),int(r[4])))
+pop=[w for w,rs in rd.items() if len({p for p,_ in rs})>=2 and w not in lem]
+sh=sorted(max(c for _,c in rd[w])*100//sum(c for _,c in rd[w]) for w in pop)
+n=len(sh); rk=lambda p:min(p*n//10000,n-1)
+lo,hi=sh[rk(2500)],sh[rk(7500)]
+print(n,lo,hi,sum(s=hi for s in sh))
+```
+
+## Design
+
+In `bible_wave.rs` only:
+
+1. `enum CoverageBand { Decisive, Leaning, Contested }`. It is a separate
+ implementation from the planner's `NestedBands` quantile buckets
+ (`lance-graph-planner/src/nested_bands.rs`), which are cited as prior art
+ but live in a crate this one does not depend on. Doc comments say
+ "reading share" and never "confidence", "σ", "CI" or "reliability":
+ shares of rare and common words weigh equally.
+2. `struct BandCuts { lo: u8, hi: u8, population: usize }`, computed once in
+ `Tagger::load` by `calibrate(&lemmas, &evidence, &vocab)` (the vocabulary gives each id's word for the lemma check and its length).
+ - Population: every id in `0..vocab.len()` that (a) is not a key of the
+ tagger's own `lemmas` map (as built, first row wins), (b) has known
+ coverage, and (c) has readings that fold to ≥2 parser states.
+ - Key: `coverage(id)[0]`.
+ - Rank rule: ndarray `rank_per_10000`, index `p·n / 10000` (integer
+ division) clamped to `n − 1`, with p = 2500 for `lo` and 7500 for `hi`.
+ Hand-rolled in a few lines, because deepnsm-v2 builds with no ndarray
+ dependency (`Cargo.toml:17-20`). This rule is not nearest-rank: the two
+ differ when p·n/10000 is an exact integer (n = 4 gives index 1 here, 0
+ under nearest-rank). They agree at n = 141.
+ - Empty population: `None` (no cuts). The function must not panic for
+ n = 0 or n = 1; the unit-test fixtures build 1-5 word vocabularies.
+ - The calibrator reads `coverage` directly and never the tagger's
+ archaic/`Other` fallback.
+3. Assignment: share < lo is Contested; share ≥ hi is Decisive; otherwise
+ Leaning. Words outside the population get `None`. The three reasons for
+ `None` (lemma-table, single state, unknown coverage) are merged
+ deliberately: a reader asks only "is there a band", and the tests keep the
+ reasons apart.
+4. Storage: `bands: Vec