Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
c0c1a69
board: publication-limit wording + board-entry rule
claude Jul 26, 2026
0b9717c
plan: rosetta-codebook-convergence v1 (Bible Rosetta SoA + qualia agr…
claude Jul 26, 2026
4f16d2e
plan: D-RCC-1 demoted kill-gate -> calibrator (per-item anchors are t…
claude Jul 26, 2026
7155433
plan: worst case is a confidently wrong anchor (Erbsuende>Tod) — sour…
claude Jul 26, 2026
14f8e28
plan: translation-error search IS CHAODA — outlier-vs-fork by cluster…
claude Jul 26, 2026
3dce800
plan: WordNet synsets as language-neutral CHAODA coordinates; tier de…
claude Jul 26, 2026
2f48982
plan: research posture — licences documented in place, gate only the …
claude Jul 26, 2026
a64987b
D-RCC-1 v1: rosetta probe (4 PD lanes, one frozen key) + board
claude Jul 26, 2026
8858bfb
gitignore: keep wordnet generators, ignore wordnet data
claude Jul 26, 2026
91b9db0
WIP: rosetta versification-map + wordnet tier-delta generators (agent…
claude Jul 26, 2026
6fdf123
D-RCC-5 taxonomic arm + versification map: two findings (wordnet rail…
claude Jul 26, 2026
95a8bb7
gitignore: keep coca generators, ignore coca data
claude Jul 26, 2026
0ea2631
D-RCC-1 v2: split survives normalisation (48.9->43.0%), swallow ancho…
claude Jul 26, 2026
9f383d2
WIP: lane codebooks generator (agent in flight)
claude Jul 26, 2026
a92b553
lane codebooks: 4 lanes, morphology ordering as sanity check; closed_…
claude Jul 26, 2026
c76e407
wordnet rail v2: measured 12.76% sense-selection error (33.84% verbs)…
claude Jul 26, 2026
861b0c1
COCA x WordNet: coverage-inversion claim REFUTED; router keys on meas…
claude Jul 26, 2026
0efa227
audit: standing wave / rung ladder / 34 recipes all shipped, mutually…
claude Jul 26, 2026
679a63a
wire rung stratification: pass -> rung -> recipe admissibility (contr…
claude Jul 26, 2026
db8c867
peripheral-dissent guard: the rung prune must not become a blind spot
claude Jul 26, 2026
cd330cb
saturation -> passive quorum mantissa (hindsight-blind by signature);…
claude Jul 26, 2026
6c2a9ca
temporal axis: RevisionTrajectory (belief-state traversal) + churn ma…
claude Jul 26, 2026
8c14a37
greek lane acquired (Tischendorf PD); wordnet rail exact-arity guard …
claude Jul 26, 2026
949cf80
fix: multipass wave aborted before the budget that resolves the chain…
claude Jul 26, 2026
6e0e8d3
closed-class detection: negative result (dispersion loses to rank<=15…
claude Jul 26, 2026
a1dda62
plan: Greek-edition blocker discharged; D-RCC-3 in flight + closed-cl…
claude Jul 26, 2026
bf6eefd
board: D-RCC-9 Greek source lane shipped; D-RCC-3 in flight; blocker …
claude Jul 26, 2026
e3df46d
CLAUDE.md: falsifiability rule — an assertion implied by the code it …
claude Jul 26, 2026
107eaa8
eigenvalue sweep: 6/12 prunes blind, M1 critical; vacuous-assertion h…
claude Jul 26, 2026
3d00d26
WIP: D-RCC-3 alignment + CHAODA trajectory tag-file (agents in flight)
claude Jul 26, 2026
4d01f57
CHAODA relative-density over a proven trajectory metric; escalation c…
claude Jul 26, 2026
1dd2e99
D-RCC-3 aligner shipped: tongue split reproduced, Dice not better tha…
claude Jul 26, 2026
26b4f68
split ChainResolution::escalated into out_of_horizon/budget_exhausted…
claude Jul 26, 2026
3c332ca
temporal periphery: superseded beliefs enumerable/sampled/escalation-…
claude Jul 26, 2026
1c0893f
wave 3: CascadeRejects (recall@10=0.50, heel_threshold inert), vacuou…
claude Jul 26, 2026
0dc5818
lemma key: coverage up but tongue anchor broke — -chen rule splits sp…
claude Jul 26, 2026
70fe1be
ruling: i4-16D qualia are CMYK-native; observed statistics need a sep…
claude Jul 26, 2026
04966a1
board: separation is shipped (wire, don't invent); D-RCC-8 first Rele…
claude Jul 26, 2026
59a4e3a
release: kjv is GPL not PD — split regimes, add missing reports + PD …
claude Jul 26, 2026
b8de41a
plateau: move codebook/bake generators to claude/rosetta-codebook-bak…
claude Jul 26, 2026
71caab8
gitignore: branch-local ignore for the bake generators (tracked on th…
claude Jul 26, 2026
2799b4b
external review adjudicated: diagnosed wave (EscalateReason), coverag…
claude Jul 26, 2026
15d0870
foresight test shipped + meta-awareness adjudicated + mutation wave-1…
claude Jul 26, 2026
31a2dc9
fmt: deepnsm-v2 wave.rs (workspace-excluded crate CI checks explicitly)
claude Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 2026-07-26 — mutation-suite-wave1 consolidated (2 Sonnet grindwork executors, tag-files → this entry)

- **mutate-falsewitness** (tag: `exec-runs/mutate-falsewitness.txt`): `mutate_falsewitness.py` (466 lines, stdlib-only). KJV cloned as fake 6th lane, 7893 NT rows. Naive agreement +94.02% (inflates); pairwise similarity matrix detects clone at exactly 1.000000 (real luther↔elberfelder = 0.4413); independence-weighted M3 does NOT inflate (−26.12%) but deflates via cluster-dilution (German pair −18%) + small-denominator amplification (bkr +35.85% on 0.0027 base; tischendorf +0.00% exact — clean control). Two runs byte-identical. Board: E-MUTATION-WAVE1-VERSIFICATION-DETECTOR-IS-SCRIPT-BLIND-1 (shared entry).
- **mutate-verseoffset** (tag: `exec-runs/mutate-verseoffset.txt`): `mutate_verseoffset.py`. Tischendorf +1-per-chapter shift, 260 chapters. HEADLINE: anchor detector SCRIPT-BLIND — 0/258 recovery on anchor-basis chapters, offset=0 @ confidence 0.0000 on clean AND corrupted (structural: Latin prefix vs Greek codepoints). Length-fallback recovered 2/2 (expected failure class INVERTED). Content-word alignment survival 52% vs function-word 84%. TextAbsent exact: 7615 == 7895 − 280. Board: same entry + ISS-VERSIFICATION-SCRIPT-BLIND + task #43.
- Both scripts live on disk under `crates/lance-graph-planner/examples/data/rosetta/` (branch-local-ignored on the plateau branch; preservation → bake branch, pending).

## 2026-07-26 — foresight functions shipped (main-thread, no subagent)

- `witness_fabric::{ForesightSample, foresight_sample, foresight_calibration}` — the Epistemic Foresight Test, minimal honest form (risk = churn through upto=v; boundary-overlap flip counting; None on empty sides; counts-not-rates calibration). 5 tests incl. hindsight-blindness falsifier + miscalibrated-case honesty. 31 witness_fabric tests green; fmt + clippy clean. Tasks #41/#42/#43 filed; #27's contract core now in place.

## 2026-07-23 — D-SCI-1 COCA codebook moved to Release (repo de-bloat) (main-thread, no subagent)

- **Operator:** "use only the release for the coca codebook — the last PR has 26k LOC (lexicon.tsv)." The committed COCA tables (lexicon.tsv alone = 20k lines) were bloating #843.
Expand Down
707 changes: 694 additions & 13 deletions .claude/board/EPIPHANIES.md

Large diffs are not rendered by default.

19 changes: 19 additions & 0 deletions .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
## 2026-07-26 — rosetta-codebook-convergence v1 — PROPOSED (D-RCC-1 calibrator runnable today) — main thread

**Plan:** `.claude/plans/rosetta-codebook-convergence-v1.md`
The Bible Rosetta SoA + multi-codebook qualia agreement: frozen verse address
= external key ⇒ all translations are LANES on one row (~31k rows, in-memory);
language = lane discriminant resolved from classid (no LanguageDto — the
witness facet is the shipped `ClauseSignature`); codebooks never merge — the
qualia of a word is a VECTOR OF AGREEMENTS (rank stats, i4, support-masked,
POS-routed hydration); sense resolution = Schnittpunkt of cross-language
sense-set intersection (extensional) × CLAM/HHTL cascade descent
(intensional); cross-lane constraint propagation to fixpoint (facts cross,
form never; propagated ≠ attested); Czech/Kralická as the aspect-marked
lane; bake as PD-texts-only Release with NC treebanks as local oracle
(libtesseract pattern). Deliverables D-RCC-1 (lanes-to-singleton
CALIBRATOR — per-item anchors are the value, blocks nothing; operator-corrected
from a kill gate) + D-RCC-2..8. Absorbs task-board W4/W7/W15/W17/W18;
un-gates W11 via D-RCC-4. Blockers §4: per-treebank licence re-verify,
Kralická edition provenance, versification map source, Greek PD edition.

## 2026-07-23 — scientific-kg-substrate v1 — PROPOSED (scoping; outward-facing crawl BLOCKED) — main thread

**Plan:** `.claude/plans/scientific-kg-substrate-v1.md`
Expand Down
32 changes: 32 additions & 0 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# Issues Log — Open + Resolved (double-entry, append-only)

## 2026-07-26 — ISS-VERSIFICATION-SCRIPT-BLIND — the anchor-overlap versification detector cannot measure cross-script lane pairs and reports the tie as `offset=0` — the Greek lane's versification is UNVERIFIED — OPEN

**Status:** OPEN (P1 for any consumer of `versification_map.tsv` rows involving
tischendorf; the German/Czech rows are unaffected — same-script pairs carry real
anchor signal). Surfaced by the `Mutate_VersificationOffset` operator
(`E-MUTATION-WAVE1-VERSIFICATION-DETECTOR-IS-SCRIPT-BLIND-1`).

**Defect.** `build_versification_map.py`'s `fuzzy_present` prefix-matches
Latin-alphabet anchor tokens against Greek-script text — zero shared codepoints,
structurally can never match. All three candidate offsets tie at score 0.0 and
the tie-break silently picks `offset=0`, at confidence 0.0000, on clean and
corrupted data alike (0/258 recovery of an injected +1 shift on anchor-basis
chapters; the length-ratio fallback recovered 2/2). An absent measurement is
being read as a zero offset — the exact absent≠zero violation the substrate
bans, in shipped tooling.

**Fix (task #43).** (1) A script-compatibility guard: when the anchor token set
and the target lane share no script, the chapter's verdict is `CannotMeasure`,
never `offset=0`. (2) A tie at score 0.0 across all candidates is also
`CannotMeasure` regardless of script. (3) Cross-script pairs route to the
length-ratio basis (the only mechanism that worked) with its basis labelled, or
to a transliteration/alignment-based anchor set if one is ever built. The
generator lives on the bake branch (`claude/rosetta-codebook-bakes-z30uij`), so
the fix lands there; consumers of the published map must treat existing
tischendorf rows as unverified until regenerated.

**Cross-ref:** `E-MUTATION-WAVE1-VERSIFICATION-DETECTOR-IS-SCRIPT-BLIND-1`,
`exec-runs/mutate-verseoffset.txt` (tag-file with the full census), the
falsifiability rule (CLAUDE.md P0 — "a guard/channel needs a can-it-fire test":
this detector's first can-it-fire test was this mutation operator, and it
couldn't).

## 2026-07-21 — ISS-BUNDLE-RULING-SCOPE — does E-NO-BUNDLE-STANDING-WAVE-1's niche-closure retire the deepnsm MarkovBundler cluster? The ruling's LETTER says yes; its stated MECHANISM (single-owner SoA violation) does NOT describe this code — ruling-author decision

**Status:** RULED 2026-07-21 (operator, path **(b)**) — KEEP the MarkovBundler cluster as is (path (a) full-retire NOT taken; path (c) unwired-retire deferred). The standing-wave **resolution** complement is built where the parallel rebuild lives: **`deepnsm-v2::wave::WitnessStream`** — version-stamped single-owner loci events, resolved `Causal`/`Escalate` by `witness_fabric::standing_wave_grounded`/`resolve_chain` over `TemporalStream`'s version-range window (out-of-version target → Escalate; the ±8 horizon meets the version read). 10 tests green. NOT in old `deepnsm` (that would have been the redundant third artifact this entry warned against). **Priority:** P2. **Scope:** @truth-architect domain:deepnsm domain:substrate.
Expand Down
4 changes: 2 additions & 2 deletions .claude/board/PR_ARC_INVENTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@

**Added:** `.claude/knowledge/ast-as-partof-isa-address.md` corrections — Status CONJECTURE → PARTIALLY MEASURED (carrier #613/#614/#615 shipped AND the rank-minter brick-3 has RUN: `ruff_csharp_spo` harvest → `ruff_spo_address::{mint, mint_factored}` → `medcare_probe`); "The missing brick" → "The brick that ran"; Next-bricks checkmarked with the real open bricks (reroute *execution* in the mint pipeline, probe re-run blocked on harvest input data, classid Canon:Custom half-order, LSP serve end). New `.claude/knowledge/do-arm-triage-3-bucket.md` — the operator's 3-bucket DO-residue triage (fuzzy/order-varying → canonicalize-first; anticipated standard DO → ontologically-shaped landing zone as ONE DTO adapter + codebook swiss-knife `open`/`filter`/`reorder`/`apply_mask`; truly random → hand-port, recurrences graduate to bucket 2), refining OGAR's 85/15 split; records the C#/C++ DO-extractor gap (`ruff_python_dto_check` is Python-only). Lock: ogar pin `597ecb1 → a0c7936` (post-OGAR-#146). EPIPHANIES `E-BRICK3-RAN-TRUNCATION-DISALLOWED` (same-commit hygiene).

**Locked:** the naive fixed-width 6-tier `(part_of:is_a)` mint is FALSIFIED at real-corpus scale (mass truncation + god-class collisions); `mint_factored` (base-255 positional path + `is_a`-from-`inherits`-only) is the corrected minter. **Truncation is DISALLOWED by policy** — bucket overflow (256-cap / 6-tier depth) is a separation-of-concerns REROUTE trigger (split the god-class or escalate a cascade level; never truncate, never field-widen — the OGAR `256-cap-is-a-lint` law #130/#140 made operational). Division of labour: `mint_factored` = addressing precision; overflow→SoC-reroute = structure. Overflow *classification* SHIPPED upstream as `ruff_spo_address::soc` (`soc_findings` → `SocVerdict`, `law_holds`; class-conditioned cascade shapes Rails `6×2` / other `4×3` / canonical GUID `3×4`, all `G·D = 12`). **Privacy split:** proprietary corpus numbers live ONLY in private MedCare-rs `.claude/archive/ruff-spo-address-medcare-probe/`; the lance-graph tree carries the design consequence, zero corpus identifiers.
**Locked:** the naive fixed-width 6-tier `(part_of:is_a)` mint is FALSIFIED at real-corpus scale (mass truncation + god-class collisions); `mint_factored` (base-255 positional path + `is_a`-from-`inherits`-only) is the corrected minter. **Truncation is DISALLOWED by policy** — bucket overflow (256-cap / 6-tier depth) is a separation-of-concerns REROUTE trigger (split the god-class or escalate a cascade level; never truncate, never field-widen — the OGAR `256-cap-is-a-lint` law #130/#140 made operational). Division of labour: `mint_factored` = addressing precision; overflow→SoC-reroute = structure. Overflow *classification* SHIPPED upstream as `ruff_spo_address::soc` (`soc_findings` → `SocVerdict`, `law_holds`; class-conditioned cascade shapes Rails `6×2` / other `4×3` / canonical GUID `3×4`, all `G·D = 12`). **Privacy split:** the proprietary corpus numbers are recorded nowhere in this repo; the lance-graph tree carries the design consequence, zero corpus identifiers.

**Deferred:** overflow-reroute *execution* inside the mint pipeline (the lint flags, a human splits); `medcare_probe` re-run on the current minter (needs corpus/NDJSON access); C#/C++ DO harvester (bucket-2 landing-zone extractor); classid Canon:Custom half-order (superseded mid-arc by the #627 canon:custom flip plan).

Expand All @@ -415,7 +415,7 @@

**Confidence (2026-07-02):** HIGH for the knowledge content (brick-3 findings mirror the private archive's measured record; re-fetch diff against ruff `b459ec3` confirmed `lib.rs` byte-identical + `soc.rs` as the movement). Lock verified: contract `ogar_codebook` 8/8 + `lance-graph-ogar` standalone green at `a0c7936` (compile-time COUNT_FUSE holds); consumer medcare-bridge (`--features ontology`) compiles clean. NOTE: merged BEFORE #628's P1 flip — the ast-address doc's classid examples predate `ClassidOrder::CanonHigh`; interpret per the flip (canon `domain:appid` = HIGH u16).

**Cross-ref:** #616/#617 (the ast-address doc lineage); #623 (OGAR sink-in plan); OGAR #145/#146 (OSINT mint + zero-rows ruling); ruff `b459ec3` (`ruff_spo_address` + `soc`); `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`; MedCare-rs private archive (RESTORE-STATUS re-fetch log).
**Cross-ref:** #616/#617 (the ast-address doc lineage); #623 (OGAR sink-in plan); OGAR #145/#146 (OSINT mint + zero-rows ruling); ruff `b459ec3` (`ruff_spo_address` + `soc`); `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`.

**Correction (2026-07-02, from the OGAR+ruff review fan-out):** the Locked line's "`mint_factored` … is the corrected minter" overstates its location — on public ruff main only `mint` + `soc.rs` exist; `mint_factored`+`RadixCodebook` are stranded on branch `claude/medcare-ruff-csharp-sync-4iahey` (`505fdc4`), which predates and LACKS `soc.rs`. The corrected-minter state exists only as the union of two diverged branches. See `E-BRICK3-CORRECTION-MINT-FACTORED-IS-SPLIT-BRAIN`.

Expand Down
16 changes: 16 additions & 0 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
## rosetta-codebook-convergence-v1 — Bible Rosetta SoA + qualia agreement (ACTIVE)

Plan: `.claude/plans/rosetta-codebook-convergence-v1.md` (operator convergence arc, 3 same-day corrections baked). Absorbs W4/W15/W17/W18.

| D-id | Deliverable | Repo | Status | Evidence |
|---|---|---|---|---|
| D-RCC-1 | lanes-to-singleton probe (calibrator) | lance-graph | **v1 RUN** (`build_rosetta_probe.py`; 4 PD lanes kjv/luther1545/elberfelder1905/bkr; census 31,103 union / 31,097 common; swallow+grape receipts incl. LIVE Ps-84 versification-offset + two-lane rescue; en→de split census 48.9% of 3,071 mid-freq words; `tongue→Zunge/Sprache` real sense split) | `E-RCC-1-FOUR-LANES-ONE-KEY-1`; report in local `out/` |
| D-RCC-2 | Rosetta SoA shape (contract) | lance-graph | Queued | plan §2 |
| D-RCC-3 | corpus-derived word alignment | lance-graph | **In flight** (`build_alignment.py`; PMI v0 proven inside D-RCC-1; also the successor to the failed monolingual closed-class detector — labels TRANSFER through alignment) | plan §2 |
| D-RCC-4 | qualia-agreement vector (POS-routed) | lance-graph | Queued — un-gates W11 | plan §2 |
| D-RCC-5 | CLAM/WordNet probe + CHAODA lane-anomaly read | lance-graph | Queued (taxonomic arm runnable now) | plan §2 |
| D-RCC-6 | cross-lane constraint propagation to fixpoint | lance-graph | Queued | plan §2 |
| D-RCC-7 | Czech lane | lance-graph | **Data landed** (bkr lane fetched + in census) | plan §2 |
| D-RCC-9 | **Greek SOURCE lane (new)** | lance-graph | **Shipped** — Tischendorf 8th ed., stated `Public Domain`; TR + WH are both CC BY-NC-SA (the age-implies-PD assumption is false). 27 books / 7,895 verses; 62 KJV verses `TextAbsent`. Unblocks *source outranks translation*. | `E-PD-GREEK-LANE-ACQUIRED-TISCHENDORF-1`; `fetch_greek_lane.py` |
| D-RCC-8 | Rosetta package Release | lance-graph | Licence blocker §4.4 **DISCHARGED** (PD Greek acquired); remaining: per-treebank re-verify, Kralická edition provenance, versification map source | plan §4 |

## dialectic-engine-v1 — the reasoning cathedral (ACTIVE)

Plan: `.claude/plans/dialectic-engine-v1.md` (six operator pillars + S1-S12 synthesis). V0-V1 SHIPPED; V2-V5 queued.
Expand Down
47 changes: 47 additions & 0 deletions .claude/board/TECH_DEBT.md
Original file line number Diff line number Diff line change
Expand Up @@ -3189,3 +3189,50 @@ bijection needs re-seeding. Pair: D-IDENTITY-4.
- **TD-CI-EXCLUDED-FUSE (F5):** main's CI never compiles the workspace-`exclude`d `lance-graph-ogar`, so its compile-time `COUNT_FUSE` fires only in *consumers'* builds (medcare hit E0080 twice). Fix: one CI job `cargo check`-ing the excluded crate against OGAR main. Effort S.
- **TD-OGAR-LOCK-UNDECIDED (F3):** `lance-graph-ogar/Cargo.lock` is gitignored → fresh checkouts build the fuse against OGAR HEAD (floating canary) while the workspace lock pins. Decide canary-vs-pin; document in one sentence. Effort S.
- **TD-BOARD-PREPEND-CONFLICTS (F6):** at fleet cadence the append-only board files (EPIPHANIES/LATEST_STATE/PR_ARC) are the only recurring rebase-conflict cost (~30-60 min/day/session). Per-entry board files + generated index make the conflict structurally impossible. Council-sized; forwarded to the V3/coordination session.

## TD-COCA-LEXICON-RANK-UNRELIABLE-AT-HEAD (2026-07-26)

`crates/lance-graph-planner/examples/data/coca/lexicon.tsv` (20,004 rows) is a
PRE-FILTERED list, not raw COCA rank 1..N, and its `rank` column is wrong in the
high-frequency band: `the` = 5645 (pos `i`), `and` = 3584 (pos `r`/adverb — also
a wrong tag), while `of` = 5. Pure function words `a, I, you, he, she, they, not,
what, which` are absent entirely.

Impact: any consumer treating `rank` as a frequency proxy gets a scrambled head of
the distribution; any coverage/decile analysis silently excludes function words.
Surfaced by `E-COVERAGE-INVERSION-CLAIM-REFUTED-1` (the decile analysis is sound
for content vocabulary only, for this reason).

Fix options: (a) re-derive rank from a real COCA frequency list; (b) rename the
column `list_order` and add a MANIFEST note that it is not a frequency rank;
(c) supersede with the verse-attested lane codebooks (`rosetta/build_lane_codebooks.py`),
whose `freq`/`rank`/`dispersion` ARE corpus-measured — at the cost of Bible-domain bias.

## TD-COCA-LEXICON-POS-UNUSABLE-FOR-FUNCTION-WORDS (2026-07-26)

Extends `TD-COCA-LEXICON-RANK-UNRELIABLE-AT-HEAD`: the same file's **`pos`
column is wrong for exactly the words a POS column is most needed for.**
Spot-checked on the main thread:

| word | recorded pos | correct |
|---|---|---|
| `the` | `i` (preposition) | determiner |
| `and` | `r` (adverb) | coordinating conjunction |
| `it` | `n` (**noun**) | pronoun |
| `that` | `r` (adverb) | determiner/conjunction/pronoun |
| `of` | `i` (preposition) | ✓ correct |
| `a` | ABSENT | determiner |

3 of 5 function words checked are mis-tagged and 1 is missing; the one
correct tag is the one that is unambiguously a preposition.

Impact: any consumer treating this column as POS ground truth for
closed-class vocabulary is reading noise. Surfaced by the closed-class
transfer work (`E-BOTH-CLOSED-CLASS-METHODS-LOSE-TO-RANK-150-1`), which had
to substitute a curated word list. **Do not use `coca/lexicon.tsv` `pos` for
function words.** For open-class content words it was not audited — unknown,
not vindicated.

Fix options: (a) re-derive POS from a real tagged corpus (the German lane
already uses UD-derived tags and they are sound); (b) rename the column to
mark it unreliable; (c) supersede with UD-derived English tags.
Comment on lines +3192 to +3238

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Board-hygiene violation: new entries appended at the end instead of prepended.

These two 2026-07-26 entries land after the existing 2026-07-02 TD-FLEET-CADENCE entry, breaking newest-first ordering.

Based on learnings, "For governance files in .claude/board/*.md, follow the Mandatory Board-Hygiene Rule defined in CLAUDE.md: treat these files as append-only ledgers that are ordered newest-first... prepend new entries rather than appending at the end."

📋 Fix: move the new entries to the top of the file

Relocate the TD-COCA-LEXICON-RANK-UNRELIABLE-AT-HEAD and TD-COCA-LEXICON-POS-UNUSABLE-FOR-FUNCTION-WORDS sections above the earlier TD-FLEET-CADENCE entry (or to the very top of the document, per convention), leaving all prior entries in their original order.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/TECH_DEBT.md around lines 3192 - 3238, Move the
TD-COCA-LEXICON-RANK-UNRELIABLE-AT-HEAD and
TD-COCA-LEXICON-POS-UNUSABLE-FOR-FUNCTION-WORDS sections to the top of
.claude/board/TECH_DEBT.md, before TD-FLEET-CADENCE, while preserving the
existing order and content of all prior entries.

Source: Learnings

Loading
Loading