c0f4074a5d
Nineteen of the twenty findings were open, and they lived in an untracked audit.md at the repo root that no next session would have read. The one that is closed, the unauthenticated mavgpud proxy, went out as V-673. The report is now a frozen measurement under docs/evals/, dated and never edited again — including when a finding it names gets fixed. The live state moved to docs/caveats/, one entry per limit, each carrying its Vikunja id and the condition that makes it worth fixing. A caveat with no revisit trigger is a complaint, so every entry has one. Closing a limit deletes its entry rather than editing the measurement that found it. Two directory indexes come with it. docs/CLAUDE.md states the tier rule the repo already followed by convention: living docs corrected in place, evals frozen by date, caveats deleted when fixed. docs/caveats/CLAUDE.md indexes the nineteen by claim and severity, because an index of filenames adds nothing a directory listing does not. Tasks V-675 through V-693 carry the plans. The doc line and the tracker now join in both directions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ESv8hqNPseYt1CnotZpqDz
28 lines
1.3 KiB
Markdown
28 lines
1.3 KiB
Markdown
# Unguarded invariants
|
|
|
|
`CLAUDE.md` names these as load-bearing. Nothing enforces either one. A rule
|
|
that lives only in prose gets broken by whoever did not read the prose. Both of
|
|
these fail silently when broken.
|
|
|
|
`tokenizerRev` and `preRouteLadder` were checked and need nothing. The rev is
|
|
baked into the embedder key, so a bump triggers re-embedding. A missing ladder
|
|
rung is observable in the decision record.
|
|
|
|
## heads_path may equal model_path [#692] {#heads}
|
|
|
|
Costs: the routing heads then score with the same graph the resident e5-small
|
|
uses, and recall degrades. There is no error and no log line, so it reads as
|
|
ordinary drift rather than a misconfiguration.
|
|
Revisit when: `deploy/mavend.json` is edited by hand, or a fine-tuned heads
|
|
graph is swapped in.
|
|
Workaround: check the two keys by eye. That is the whole guard today.
|
|
|
|
## baselineGrammars is mirrored by hand [#693] {#grammars}
|
|
|
|
Costs: the eval fixture restates the stage 0 rule set in the daemon's order,
|
|
and its own comment says so. Three test files score against it. A grammar added
|
|
to `buildRouter` alone means every routing measurement scores a set nobody
|
|
runs. `CLAUDE.md` warns about this failure by name.
|
|
Revisit when: the next stage 0 grammar is added. That is when it bites.
|
|
Workaround: add to both lists, which is what the rule already says.
|