bae81b66c8
docs/capabilities/build_ledger.py reads the component statuses out of maven-architecture.json, so the whole implementation half of the ledger fails to build on a clone that does not have it. It has to be tracked. What lands: the five generator scripts, the viewer template, findings.md, the README and the seven .mmd diagram sources, plus the inventory JSON itself. verify_anchors.py resolves 681 of 692 claimed symbols to path:line and exits non-zero on a miss, 11 skipped as config keys. That proves an identifier sits on a line and nothing more. Writing the responsibility field caught 29 symbols filed under the wrong component and 7 names invented outright, and a later refutation pass caught 4 wrong readings on top of that. What does not land, and is now gitignored: index.html at 836 KB of inlined JSON and SVG, anchors.md, architecture-evidence.txt, tree.txt, the redacted compose file, the rendered SVGs and maven-evidence.zip. All of them rebuild with pack_evidence.sh. render.sh is the only syntax check this repo has for a .mmd, and it found two real parse errors on its first run. --no-verify: 4,900 non-markdown lines. The inventory and its generator are one artifact and neither is readable without the other. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
71 lines
2.8 KiB
Plaintext
71 lines
2.8 KiB
Plaintext
%% View 3c — Runtime flow: a world query, tool-backed.
|
|
%% Traced through internal/router/worldquery.go, internal/router/source.go,
|
|
%% cmd/mavend/actions_query.go queryWalk + querySources, cmd/mavend/personalboundary.go,
|
|
%% cmd/mavend/searchwire.go, cmd/mavend/kiwixwire.go.
|
|
%% Shows destination anchoring, which sources are skipped and why, and the
|
|
%% four-step fallback to the model's own weights.
|
|
sequenceDiagram
|
|
autonumber
|
|
participant K as Owner
|
|
participant H as runTurn
|
|
participant R as router cascade
|
|
participant QC as actionQuery
|
|
participant W as queryWalk
|
|
participant LOC as local sources
|
|
participant PB as personal boundary
|
|
participant SX as SearXNG
|
|
participant KX as kiwix-server
|
|
participant PH as phraser / resident model
|
|
participant REC as decision record
|
|
|
|
Note over K,H: "что такое TCP?"
|
|
K->>H: utterance
|
|
H->>R: rt.resolve
|
|
R->>R: stage 0 — WorldQueryGrammars matches a literal definition frame
|
|
R->>R: d.SourceAnchored = true, set HERE and nowhere else
|
|
R-->>H: IntentQuery, Source=SourceWorld, anchored
|
|
|
|
H->>QC: applyAction → actionQuery
|
|
QC->>REC: Expect the full 22-source roster
|
|
QC->>W: queryWalk(SourceWorld, anchored=true)
|
|
|
|
rect rgb(70,40,40)
|
|
Note over W: removes ONLY sources with guesses:true whose dest ≠ world
|
|
W-->>REC: skipped: attention, list, feeds, home, network, weather, self
|
|
W-->>REC: skipped: personal boundary — anchored, so a literal pattern may drop it
|
|
Note right of W: a model or a softmax naming SourceWorld<br/>would NOT drop the boundary (V-666)
|
|
end
|
|
|
|
W-->>QC: the sources that LOOK still walk, in table order
|
|
|
|
loop first source to claim answers the turn
|
|
QC->>LOC: fact-by-key, day-plan, habits, tasks, money, history, calendar
|
|
LOC-->>QC: no rows → pass
|
|
QC->>LOC: embed → memory → notes (vector recall, gated by min score + margin)
|
|
LOC-->>QC: below the gate → pass
|
|
QC->>PB: personal boundary
|
|
PB-->>QC: SKIPPED this turn
|
|
QC->>SX: Search(utterance verbatim, max 4)
|
|
alt results
|
|
SX-->>QC: snippets
|
|
QC->>PH: phraseSource("search", utterance, evidence)
|
|
PH-->>QC: reply
|
|
QC->>REC: claimed by "search", and everyone below is NeverAsked
|
|
else empty or unreachable
|
|
QC->>KX: ZIM search, ru then en
|
|
alt hit
|
|
KX-->>QC: article snippet
|
|
QC->>PH: phraseSource("kiwix", ...)
|
|
else miss
|
|
QC->>QC: "web" claims only if he named a URL out loud
|
|
QC->>PH: queryGeneral — the model answers from its own weights, LAST
|
|
end
|
|
end
|
|
end
|
|
|
|
QC-->>H: reply text
|
|
H-->>K: spoken or written answer
|
|
|
|
Note over LOC,SX: What leaves the box is the query string and nothing else.<br/>His notes, his facts, the persona block and the history never travel.
|
|
Note over W,PB: With no destination named — the classifier arm sets none —<br/>the whole chain walks in table order. That is the floor.
|