Skip to content

feat: record relationship kind, horizon and intentional dead ends - #11

Merged
codethor0 merged 1 commit into
mainfrom
claude/model-integrity
Sep 27, 2026
Merged

codethor0 merged 1 commit into
mainfrom
claude/model-integrity

Conversation

@codethor0

@codethor0 codethor0 commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Model integrity, part 1 of 3. Makes what each relationship asserts explicit, and makes every dead end a recorded decision instead of an accident of the topology.

  • Relationship kind and horizon. Every edge now states kind (accounting, causal or association) and horizon (short, medium or long). Both are separate from confidence (empirical or modeled), which still says only whether a read citation backs the edge. The arithmetic ignores both new fields.
  • Terminal nodes. A node with no outgoing edge must say why in a terminal field, and a node that drives an edge must leave it null. The validator enforces both directions.
    • hate_crimes stays isolated on purpose.
    • food_insecurity, homelessness and institutional_confidence are outcome indicators the model does not trace further.
    • For payrolls_headline and savings_rate, the downstream effects are too noisy or too contested to model.
  • Two accounting edges close the federal borrowing loop. net_interest -> debt_growth_rate (+, 0.5): interest outlays add to the deficit and so to borrowing. debt_growth_rate -> federal_debt (+, 0.75): the growth rate is the change in the stock. Both are modeled, with no citation. Simple paths count the loop once, so it never compounds.
  • Claims qualified where they overstated: refinancing lags on the fed rate to net interest link, inflation to real earnings described as an accounting relation, poverty depending on the bottom of the distribution rather than the median, and association edges reworded so they claim no causation.

Arithmetic, redone by hand in src/lib/propagation.test.ts (fed_rate at +1):

  • debt_growth_rate = 0.0875 (E3, E10) + 0.75 x 0.5 x 0.7 = 0.2625 (E4, E21) = 0.35
  • federal_debt = -0.5 x -0.25 x 0.75 x 0.49 = 0.0459375 (E3, E10, E22) + 0.75 x 0.5 x 0.75 x 0.49 = 0.1378125 (E4, E21, E22) = 0.18375
  • Twelve nodes are now reached. Every other hand-worked value is unchanged.

No baseline and no confidence changed. The primary-source hosts could not be reached from the build environment, so nothing is marked as verified or cited.

Validation

  • npm run verify passes: 725 tests, 100% coverage, and the numerical audit passes (1,680 scenarios, 33,600 comparisons, sign mutation detected).
  • npm run test:e2e passes.
  • npm audit --audit-level=low: 0 vulnerabilities. No dependency changes.
  • No secrets, credentials, private logs, local machine paths, or generated build output are included.
  • The pull request contains no unrelated changes.

Data or model changes

  • Source/provenance metadata is updated when facts or baselines change. No baselines changed.
  • Observed and projected values remain explicitly distinguished.
  • Every changed causal relationship is explicitly classified as modeled or empirical. All 22 are modeled.
  • Claims do not present a modeled relationship as a measured causal estimate.

Security

None. Data, schema, validator, tests and docs only.

Model integrity release, part 1.

- Every edge now states what it asserts (kind: accounting, causal or
  association) and a rough horizon (short, medium, long), separately
  from confidence (empirical or modeled). The arithmetic ignores both.
- Every node with no outgoing edge states why in a terminal field, and
  the validator rejects an unexplained dead end or a terminal node that
  drives an edge.
- Two accounting links close the federal borrowing loop:
  net_interest -> debt_growth_rate and debt_growth_rate -> federal_debt.
  Both are modeled, with no citation.
- Claims are qualified where the old wording overstated: refinancing
  lags, distribution versus median, association versus causation.

No baseline or confidence changes: primary sources could not be read
from the build environment, so nothing is marked as verified.
Hand-worked expectations are recomputed in the test comments.
@codethor0
codethor0 merged commit 17440c4 into main Sep 27, 2026
5 checks passed
@codethor0
codethor0 deleted the claude/model-integrity branch September 27, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant