Thales
← research journal

An internal research document, published verbatim by the automated daily export — not written for an audience, and better for it. All performance discussed is simulated paper trading; nothing here is investment advice.

MEM-1 — the memory/ directory does not exist in the repo, and the C0 kill list is one of the files that is missing

status: open · raised panel run 1 (2026-08-06) · migrated 2026-08-24 from the frozen RESEARCH_QUEUE.md archive (body verbatim below) · class: hygiene / loop-integrity · judgement: YES · effort 0.25 pd


1. MEM-1 — the memory/ directory does not exist in the repo, and the C0 kill list is one of the files that is missing. · judgement: YES · effort 0.25 pd · horizon: immediate

Mechanism. git log --all --diff-filter=A -- 'memory/*' is empty: memory/ was never committed, and it is not in .gitignore either — it lives only on the owner's Mac. Meanwhile 22+ references to 11 distinct memory/*.md files appear across committed docs. Two of them are load-bearing for the autonomous loop: ops/RESEARCH_PANEL.md §2 instructs this panel to check memory/strategic-posture.md (the kill list enforcing the C0 anti-relitigation rule), and ops/WEEKLY_AUDIT.md check #8 instructs comparing "the memory index" against RESEARCH.md/CLAUDE.md — a check that has been reporting green while structurally unable to read one of its three inputs. tests/test_docs_consistency.py verifies that ops/*.md referenced files exist; nothing checks memory/*.md, so the dangling references are invisible to the suite whose stated purpose (line 5) is that "an agent acts on what is written".

Not fatal today, and say so: ops/RESEARCH_PANEL.md §2 enumerates the kill list inline and web/public/data/killlist.json carries 13 entries, so cloud routines are degraded, not blind. This panel used both.

Test design / kill criterion. Extend tests/test_docs_consistency.py to assert every referenced memory/*.md path resolves. It reds today. The owner must then either commit memory/ or strip the references; doing nothing does not satisfy it, and "it works on my machine" is unavailable because CI's checkout is the one that matters. If the owner's intent is that memory/ stay private and local, the correct resolution is to strip the references and inline what the routines need — not to weaken the test.

Owner judgement required: commit vs de-reference is a policy call.

Triage note — 2026-08-24 (annotation only; the body above is untouched)

Premise re-verified on origin/main @ 3e0161a: memory/ still does not exist in the checkout, and git log --all --diff-filter=A -- 'memory/*' is still empty. Eighteen days open, unchanged. Still the owner's policy call (commit the directory vs strip the references).


Triage note — 2026-08-31 (annotation only; the body above is untouched)

Premise intact, scope materially NARROWED — the policy call is now worth about a tenth of what it was. Verified at HEAD 528793d: memory/ is still absent from the checkout, git log --all --diff-filter=A -- 'memory/*' is still empty, it is still not in .gitignore, and tests/test_docs_consistency.py still contains zero memory/ checks.

But the two load-bearing references this row named have been annotated in place rather than left dangling: ops/RESEARCH_PANEL.md now reads "sources IN THE REPO (the memory/ dir is owner-side and absent from cloud checkouts)" and inlines the 13-entry kill list, and ops/DAILY_AUDIT.md twice says "owner-side … NOT in the repo; cloud sessions: context pointer only, do not try to read it". A cloud routine that reads either file now knows what it cannot see. That is de-referencing by annotation — one of the two resolutions this row asked for — applied to the two files that mattered most.

Still bare, and still the reason this stays open: ops/WEEKLY_AUDIT.md check #8 ("the memory index") and ops/RESEARCH_AUDIT.md. Check #8 is the row's second load-bearing claim and the one that offends this shop's cardinal rule — a check that reports green while structurally unable to read one of its three inputs. Two files, two sentences, or one committed directory.

Also found: CLAUDE.md cites a twelfth file, memory/MEMORY.md, which is not in this row's list of eleven.

Twenty-five days open. Still the owner's policy call (commit vs strip), but it is now a five-minute call, not a half-day one.


Triage note — 2026-09-07 (annotation only; the body above is untouched)

Premise unchanged; one factual correction to the 08-31 note. Re-verified at HEAD e25f80b: memory/ still absent from the checkout, git log --all --diff-filter=A -- 'memory/*' still empty, still not in .gitignore, and tests/test_docs_consistency.py still carries zero memory/ checks. The two bare references are unchanged: ops/WEEKLY_AUDIT.md:70 ("the memory index") and ops/RESEARCH_AUDIT.md:60.

Correction: the 08-31 note said the twelfth file memory/MEMORY.md is cited by CLAUDE.md. It is not — it is cited by RESEARCH.md:4 ("when this file disagrees with memory/MEMORY.md, this file wins") and RESEARCH.md:1159. CLAUDE.md's memory references are a different set (:278-282, :299, :312, :353, :361, :363, :401, :413, :414) and all resolve to files in the row's original eleven. The consequence is slightly worse than recorded: the dangling reference sits in the canonical research notebook's precedence clause, i.e. in the sentence that tells a reader which of two sources wins when one of them is unreadable.

Thirty-two days open. Still a five-minute owner policy call (commit the directory, or strip two sentences).