Fleet triage · 2026-07-29
The fleet cleaned house today — a few calls for you
Your new engine (v4) shipped and you accepted it. So today the team of helper agents (the “fleet”) did a full read-through of the pipeline’s source code looking for maintainability risks, ran a trash sweep to delete dead files, and pushed forward on two content jobs — the sound-alike memory hooks (“pegs”) and the word-family variations (“forms”). This board is what needs you: one urgent security action, a short list of code-cleanup jobs to green-light, and a batch of small curation picks. Each item says in plain words what it means and what changes when you answer.
1 urgent action
8 cleanup calls + 1 batch
6 peg picks
6 FYIs
Code cleanup backlog
The top 8 to green-light
Today’s audit read the whole codebase for one kind of risk: the same fact written down in two or more places that can quietly drift apart. When two copies disagree and nothing catches it, you get a silent bug — the kind that ate days this week. The audit found 26 such spots and ranked them by how dangerous that silent drift is. Here are the top 8 to approve; the other 18 can be approved as a batch below. Options on every item: F-now (fix now) · F-next · F-later · F-skip.
1
“Which row is ours?” is spelled five different ways
census id S1 · effort: small · ✅ recommended: F-now
In plain wordsWhen the pipeline updates a word card it must find the exact row it owns among many. The rule for “this is my row” is hand-written in five separate spots instead of one shared helper. Two days ago the team collapsed it to one place — and then brand-new code re-spelled it again.
Risk if ignored: A lookup can match the wrong row — a live, published card for a different word — and every layer still reports success. Wrong content ships, silently.
2
Two copies of “did this step run after the save?” — already disagreeing
census id S15 · effort: small · ✅ recommended: F-now
In plain wordsOne part of the code answers a yes/no question two different ways — 73 lines apart in the same file — and the two answers already disagree for a real section today. The correct version is already written right there; the wrong one just needs swapping out.
Risk if ignored: The pipeline can write fields that another step already owns, for whole categories of words, with nothing reporting the clash.
3
Two hand-written copies of “retry this AI call?” — and they’ve drifted
census id S17 · effort: medium · ✅ recommended: F-now · 💰 costs money
In plain wordsWe talk to two different AI providers. The rule for “this request failed — try again, and how long do we wait?” is coded separately for each, and the two copies have already drifted apart. One retries server errors the rules never approved; the other does no retries at all in a case where it should.
Risk if ignored: Silent and it costs money — the same setting produces different, unapproved retry behavior per provider, surfacing as unexplained bills and lopsided reliability. A test the code cites as proof they “must agree” actually only checks one of the four things they disagree on.
4
We pay for bulk AI replies — then throw them away
census id S19 · promoted to top-tier today · effort: medium · ✅ recommended: F-now · 💰 costs money
In plain wordsThe pipeline has a cheaper “bulk” mode: it sends a big batch of work to the AI, the provider charges for it, the replies come back — and the code counts them as collected and then discards them without ever saving the results. Worse, a run like that reports “OK”, which looks exactly like “the work landed.” The architect ruled today: wire it in (do not delete it), and until it’s wired, make it stop saying “OK.”
Risk if ignored: Silent and it costs money — you pay a real provider bill, see “OK,” and conclude the work saved. It didn’t, and the batch expires in 48 hours.
5
A memory-hook’s keyword is frozen into its sentence — 62% no longer match
census id S2 · effort: medium
In plain wordsEach memory hook (“peg”) is built on a keyword — e.g. the syllable di → DISH. The hook’s written-out sentence keeps a frozen copy of that keyword, while the card’s real keyword can change during curation. Right now 708 of 1,137 references (62%) disagree. The fix makes stale copies detectable.
Risk if ignored: Silent and already happening at 62% — a learner can be taught a hook built on a keyword the card no longer uses (di DISH→DICE, pro PROW→PROBE).
6
The same 4-line “read the word’s shape” copied into two more spots
census id S20 · effort: small
In plain wordsA small helper for reading a word’s grammatical shape exists, but two sections re-typed the same four lines by hand instead of calling it. Same class as #1, lower stakes — nearly free to fix once #1’s guard is in place.
Risk if ignored: Silent, one edit away — change the shared shape and two hidden copies keep the old one.
7
The hook’s “address” format is defined three times — and one taught the wrong thing
census id S5 · effort: small
In plain wordsThe format for pointing at a source (an “anchor reference”) is written in three places. One of them — the model’s own instructions — lists a forbidden example, and the model copied it back out. Already ruled; this is just transcription.
Risk if ignored: Silent — the instructions teach a format the checker then rejects (banyak proved it).
8
One data bundle, two separate readers
census id S18 · effort: medium
In plain wordsA single packet of sense data is read by two independently-written readers. Add a field to the packet and one reader can’t see it; change a rule in one and the other keeps the old rule. Not biting yet, but it’s the same trap as the others.
Risk if ignored: Silent, not yet realized — one payload, two parsers that can quietly disagree on what it means.
∑
The remaining 18 findings — approve as a batch?
✅ recommended: BULK-yes
In plain wordsThe other 18 spots the audit found are already ranked and written up. Approve them as one set and the fleet works through them in priority order. Or ask to see them all and we build the full board next.
Options: BULK-yes approve the remaining 18 as ranked · BULK-show-me-all build the full board.
Peg curation
Sound-hook picks
A peg is a sound-alike memory hook: to remember an Indonesian syllable we attach an English word that sounds like it, plus a picture. run sounds like ROOSTER — picture a rooster. The table that stores these is t015. Part A below is now an FYI — a ruling resolved it for you; Part B needs your yes/no, with options P-yes (confirm) · P-no (reject) · P-note (flag / discuss).
A · The 24 collision picks — resolved for you (no action)
These 24 turned out to be one bug, not 24 choices
These started as 24 “pick the winner” questions — each a syllable that showed up in the table twice, under two spellings. Measuring them together showed they are all the same systematic bug: one syllable stored under two spellings (a plain one and a raw phonetic one), with nothing folding the pair back together.
An architect ruling now fixes the whole class mechanically — the plain-spelling winner stays, and its diacritic twin is retired by a ruled migration already handed to a build lane. The plain winners your earlier curation confirmed all stay, so there is nothing here for you to pick.
The two weak cases (pəng, tən) — where the surviving winner is only a tier-3 card — fold into the standing veto queue. No new decision needed.
B · Proposed new matches — your yes/no (6)
Six syllables have no hook yet. Each has no perfect English match (the first sound doesn’t line up), so they need your call rather than auto-fill. nyak is the important one: 10 live hints already point at it with no hook behind them.
jau→COW🐄 T2Onset mismatch only (dʒ vs k); rest of the sound matches. 0 hints point here yet.
jauh→JOKER🃏 T3First sound matches but the vowel doesn’t, plus a stray h — weaker than jau despite more uses. Phonetically adjacent to jau; you may want to weigh them together.
nyai→PINEAPPLE🍍 T2Onset mismatch only (ɲ vs p); vowel matches. 0 hints yet.
nyak→CACTUS🌵 T2 10 live hints waiting⭐ Highest stakes here: 10 hint aids already point at nyak with no hook behind them. Onset mismatch only (ɲ vs k); rest matches.
nye→MELON🍈 T2Onset mismatch only (ɲ vs m); vowel matches. 0 hints yet.
nyet→METRO🚇 T2Onset mismatch only (ɲ vs m); vowel and end sound match. 0 hints yet.
FYI — tat deferred, not a decision here
The tat / t̪at̪̤̯̪ row is a known corruption: both spellings are corrupt, so it needs a separate fix that’s already in flight. Listed for completeness only — nothing to decide on this board.