docs: chains-primary reality in architecture.md + README; two stale comments fixed
- architecture.md section 6 rewritten: stored truth = propositions + chains (chains.jsonl); deriveView as the lossy image (implication nodes + untyped arrows, rebuilt per read); the bijection framing (independent arguments for one conclusion stay distinct — the corruption the edge store invited); new deletion-semantics paragraph (proposition death cascades to every referencing chain; arg_ death = one argument); supports retirement stated plainly; auditor's propositions-only scope; clusters stated as birth-session partition truth (no Louvain claim) - section 7 practice chain model: stored-chains inclusion law replaces follows-edge grouping; chainsToGraph bijection claim deleted - README: graph clauses (stored chains, derived view, chain dedupe), practice clause, ledger inventory, and two long-stale line-5 claims (ledger events, semantic top-K) corrected - contracts/graph.ts GraphSnapshot comment: Louvain claim replaced with birth-session truth; extraction.ts comments no longer narrate the dead expandFindings/chainsToEdges seam
This commit is contained in:
@@ -137,10 +137,9 @@ const propositionProps = {
|
||||
};
|
||||
|
||||
// The extractor redesign (owner, 2026-09-30): the extractor submits
|
||||
// REASONING CHAINS — premises + conclusion — and the seam expands each
|
||||
// premise to one follows-edge (chainsToEdges, core/practice.ts). The
|
||||
// old follows/supports edges array is GONE from the wire; supports stay
|
||||
// in the graph contract/store/UI/old data, but no stage mints one again.
|
||||
// REASONING CHAINS — premises + conclusion — stored AS-IS (chains-primary,
|
||||
// same evening: chains.jsonl is the truth; edges are a derived view, and
|
||||
// supports edges are retired entirely).
|
||||
const chainSchema = Type.Object({
|
||||
premises: Type.Array(Type.String(), {
|
||||
minItems: 1,
|
||||
@@ -171,8 +170,9 @@ const findingsSchema = Type.Object(findingsProps);
|
||||
|
||||
/** What the extractor SUBMITS (the redesign's wire shape) — propositions
|
||||
* + chains. fillFindings normalizes it; validateFindingsChains checks
|
||||
* the chain laws; expandFindings translates it to SessionFindings at
|
||||
* the seam. */
|
||||
* the chain laws; asSessionFindings lifts it straight into
|
||||
* SessionFindings — chains are stored AS-IS (chains-primary, owner
|
||||
* 2026-09-30: no edge translation at any seam). */
|
||||
type FindingsSubmit = Static<typeof findingsSchema>;
|
||||
|
||||
// VERDICTS-ONLY (owner, 2026-09-28): the auditor never alters the
|
||||
@@ -246,8 +246,8 @@ function fillFindings(raw: FindingsSubmit): FindingsSubmit {
|
||||
* runSubmitAgent turns a problem string into an error tool result and
|
||||
* the model re-submits within its turns (the practice-proven hook).
|
||||
* Identical (premise-set, conclusion) chains are NOT errors — they
|
||||
* dedupe silently at the expansion (chainsToEdges): restating an
|
||||
* argument is a no-op. */
|
||||
* dedupe silently at the merge (chainKey): restating an argument is a
|
||||
* no-op. */
|
||||
function validateFindingsChains(value: FindingsSubmit): string | null {
|
||||
const ids = new Set(value.propositions.map((p) => p.id));
|
||||
for (const chain of value.chains) {
|
||||
|
||||
Reference in New Issue
Block a user