← Home ← Glossary ← Codex ← DEBT
On this page
Pages
Contact

DEBT Risk Propagation Engine

Most of a concept’s risk is invisible to the naked eye.

Under the glossary sits a typed knowledge graph. Every concept carries a four-axis DEBT score; every relationship is a typed edge that can carry risk forward. The engine walks those edges — bounded to 3 hops, decaying 0.5 per step — to surface the structural risk no single page reveals on its own.

LIVE DATA PREVIEW · CURRENT TOP RISK
regex_syntax Trap axis
What the eye sees
0
direct dependencies, 1 hop
What the engine sees
5.92
full propagation · 100% of it hidden

100% of this concept’s computed risk — +5.92 on the Trap axis — is inherited from concepts two and three hops away, invisible to direct inspection.

Auto-selected as the highest-exposure concept right now · explore any concept yourself in section 03 ↓

3-hop traversal decay 0.5 / step axis cap 10 readiness 40% · Foundation solid snapshot 2026-07-14
How the engine works →

Which read wins — and why

The two reads either agree or pull apart, and the disagreement is the signal. No invented score — each verdict is a call over reach (structure) and whether the axes diverge (DEBT). Three worked examples:

Lead with structure
abstract_syntax_tree
structure 8.5 reach · 27 nodes DEBT 1 · axes collapse

Reaches 27 downstream concepts, but its four axes collapse — one number captures the cost. Triage by reach; the fix is unlikely to need the full vector.

Lead with DEBT
account_takeover
structure 0.875 reach · 3 nodes DEBT 8.75 · axes diverge

Structurally contained, but the axes pull apart with trap dominant — if you touch it, which axis leads decides the fix.

Both agree
php_compilation_pipeline
structure 3.375 reach · 10 nodes DEBT 3.59 · axes diverge

High reach (10 concepts) and the axes diverge — structure says where, DEBT says the fix is non-trivial. Highest priority.

See both rankings in full under Where to look ↓

01 / TELEMETRY

What the machine is, by the numbers

Raw content is one thing; relational depth is another. The engine’s value lives in the edges — how densely the concepts are wired, and how much of that wiring actually transmits risk.

1,519
Graph nodes
100% DEBT-scored
819
Live typed edges
623 risk · 196 neutral
76%
Risk-edge density
edges that carry risk
13/13
Risk verbs in use
full risk vocabulary active
359
Terms that spread risk
24% of the graph
369
Terms that inherit risk
24% downstream-exposed
29
Deepest reach (hops out)
80 hubs · avg 0.78
21/21
Verb weights synced
every vocab verb weighted

High-risk concepts wired into the graph

479 of 1,196 connected
2026-06-13 · 27% readiness over time ↗ 2026-07-14 · 40%
Total propagated risk by DEBT axis — Detectability, Effort, Burden, Trap
Detectability
138.1
how visible it is
Effort
174.2
cost to fix
Burden
462.9
cost to live with
Trap
583.7
how easily it misleads
Built for machines too The underlying graph is published as structured flat-file JSON with typed edges — designed for programmatic agent ingestion and retrieval-augmented grounding (RAG), not just human reading.
02 / RISK CORRIDORS

How risk travels between domains

A vulnerability in one technology rarely stays put. Following typed edges, the engine traces corridors where risk crosses from one software domain into another — weakening by 0.5 each hop, but still arriving.

security → php cross-domain
supply_chain_attack often_seen_in ×0.5 composer contains ×0.25 composer_scripts
Risk from supply_chain_attack still reaches composer_scripts 2 hops away — at about 25% strength after decay.
typescript → javascript cross-domain
typescript_config configures ×0.5 typescript_modules specializes ×0.25 js_module_patterns
Risk from typescript_config still reaches js_module_patterns 2 hops away — at about 25% strength after decay.
php → quality cross-domain
readonly_classes contains ×0.5 readonly_properties leverages ×0.25 value_object
Risk from readonly_classes still reaches value_object 2 hops away — at about 25% strength after decay.
database → security cross-domain
db_document_stores often_seen_in ×0.5 nosql_injection causes ×0.25 account_takeover
Risk from db_document_stores still reaches account_takeover 2 hops away — at about 25% strength after decay.
php → security cross-domain
php_ini configures ×0.5 allow_url_fopen enables ×0.25 ssrf
Risk from php_ini still reaches ssrf 2 hops away — at about 25% strength after decay.
quality → architecture cross-domain
dependency_injection implements ×0.5 dependency_inversion realizes ×0.25 hexagonal_architecture
Risk from dependency_injection still reaches hexagonal_architecture 2 hops away — at about 25% strength after decay.
php → testing cross-domain
interfaces implements ×0.5 anonymous_classes leverages ×0.25 test_doubles
Risk from interfaces still reaches test_doubles 2 hops away — at about 25% strength after decay.
frontend → accessibility cross-domain
accessibility_aria implements ×0.5 aria_live_regions often_seen_in ×0.25 accessible_forms
Risk from accessibility_aria still reaches accessible_forms 2 hops away — at about 25% strength after decay.
One hub, both directions — refactor it and the whole ripple shifts
Feeds risk in
xml_signature_wrapping
oauth_vulnerabilities
cache_poisoning
+7 more
account_takeover
Its risk reaches
attack_chain
03 / WHERE TO LOOK

Two reads on the same graph

The same propagation graph answers two different questions. Structure tells you where damage concentrates — trust it first. DEBT-weighting tells you what kind of cost it is — reach for it once structure has put you at a hotspot.

Structure → where · audit

Pure graph reach, DEBT-independent. The strongest single signal across the propagation-dominated majority of a codebase, and it stays trustworthy where the four axes collapse. Triage with it — and let it gate the next read.

DEBT-weighting → what · prepare

The four-axis cost layered on that structure. It earns its keep only where damage factorizes — independent error modes, cost varying separately from wrongness. At a hotspot, it tells you which fix to spend.

Most load-bearing concept
php_ini reaches 30 downstream concepts, up to 3 hops out.

Decayed reach 9.625 — closer dependencies weigh more. No DEBT magnitudes here: this ranking is pure structure, the signal you can trust even where the axes collapse.

  1. 1 php_ini 30 nodes · 3 hops · reach 9.625
  2. 2 abstract_syntax_tree 27 nodes · 3 hops · reach 8.5
  3. 3 lexer_parser 25 nodes · 3 hops · reach 5.625
  4. 4 observability_pillars 16 nodes · 3 hops · reach 4.875
  5. 5 py_logging 21 nodes · 3 hops · reach 4.75
  6. 6 structured_logging 17 nodes · 3 hops · reach 4.125
  7. 7 inline_expansion 15 nodes · 3 hops · reach 4.125
  8. 8 infrastructure_as_code 12 nodes · 3 hops · reach 4
  9. 9 array_data_structure 9 nodes · 2 hops · reach 4
  10. 10 hash_functions_deep 14 nodes · 3 hops · reach 3.625
  11. 11 health_check 13 nodes · 3 hops · reach 3.625
  12. 12 http_status_codes 11 nodes · 3 hops · reach 3.5

For each concept, the engine compares what a developer sees from its direct dependencies against the full propagated exposure. The wider the gap, the more risk hides upstream — biggest blind spots first.

04 / METHOD

How the engine works

The engine is deliberately simple to reason about. Here is every moving part, in plain terms. The exact weights and parameters are tuned internally — but the mechanics below are the whole story.

Propagation
Risk doesn’t stay in one concept. The engine follows typed relationships outward, letting a concept’s risk flow to the concepts it connects to. It walks the graph a bounded number of hops, so every score reflects a concept and its neighbourhood, not just itself.
Weighting
Not every relationship carries risk the same way — a “causes” edge transmits far more than a loose “often seen with.” Each relationship type carries a calibrated weight that decides how much risk crosses it, so the graph reflects how software actually fails, not just how concepts happen to be linked.
Decay
Risk fades with distance. Each hop counts for less than the one before, so a direct dependency weighs more than something three steps away. This keeps far-flung connections from dominating and anchors every score to what’s actually close.
Normalization
Scores are scaled to a common range so different axes and different concepts compare on equal footing. A number means the same thing whether you’re looking at one concept or the next.
Caps
Accumulated risk is bounded. No matter how many paths feed into a concept, its score can’t run away — a ceiling keeps results stable, comparable, and readable instead of compounding without limit.
Readiness
A coverage measure, not a risk score: how much of the high-risk graph is actually wired into the propagation model. Low readiness means the engine can only see part of the picture; as more risk-bearing relationships are added, readiness climbs and the model sees more.
Verb ontology
Every relationship is one of a controlled set of typed verbs — causes, requires, contains, configures, and so on. The vocabulary is the contract: it decides which relationships transmit risk, and in which direction. Nothing propagates that isn’t an explicit, typed edge.

The specific weights, decay factor and caps are part of the model’s calibration and kept internal. Everything above is the full set of moving parts — nothing is hidden in how it reasons, only in how it’s tuned.

05 / GUESTBOOK

Who’s been reading the graph

AI agents and crawlers that fetched this page, matched by User-Agent against known bot patterns. Last 30 days. No personal data stored — just the machines that came to read.

38
Agent visits
total recorded
13
Distinct agents
unique bots seen
1
Today
visits so far
just now
Last visit
since 23 Jun 2026
30-day visit velocity
162123 Jun · 3 visits25 Jun · 2 visits26 Jun · 2 visits2627 Jun · 3 visits28 Jun · 5 visits29 Jun · 1 visit30 Jun · 2 visits1 Jul · 4 visits12 Jul · 1 visit3 Jul · 1 visit4 Jul · 2 visits5 Jul · 1 visit6 Jul · 1 visit67 Jul · 1 visit8 Jul · 1 visit9 Jul · 1 visit10 Jul · 1 visit11 Jul · 1 visit1112 Jul · 3 visitsYesterday · 1 visitToday · 1 visitToday
Perplexity 8
Google 6
Claude 4
ChatGPT 3
Yandex 3
Brave Search 3
Ahrefs 2
Applebot 2
Meta AI 2
Common Crawl 2
SEMrush 1
Gemini 1
Bing 1