{"version":"2026-05-13.path-family.v1","generatedAt":"2026-05-13T06:59:20.211Z","contract":"Typed Path-family graph. Store many edges internally; render only high-confidence, pedagogically meaningful links.","policy":{"center":"TheoremPath is the canonical formal spine.","visibleLinkRule":"A visible cross-site link must have descriptive anchor text, a one-sentence reason, confidence >= 0.75, a meaningful relation, and a render location other than hidden-graph-only.","renderLocationLimits":{"prerequisites":5,"body":3,"next-steps":5,"related-paths":3,"references":3,"hidden-graph-only":0},"topicContract":{"fields":["site","slug","title","subtitle","layer","tier","module","estimatedMinutes","prerequisites","leadsTo","companionLabs","diagnosticItems","teaches","assesses","misconceptions","failureModes","canonicalSources","appliedSources","diagrams","katexConcepts","exercises","seo"],"requiredSections":["Why this matters","Prerequisites","Core idea","Formal / technical statement","Worked example","Common failure modes","Diagnostic check","Practice","Diagram or lab","References","Next topics"]},"qaChecklist":{"structure":["Has title, subtitle, layer, tier, module, and estimated time.","Has direct prerequisites and next topics.","Has canonical references.","Has visible content matching JSON-LD."],"pedagogy":["Opens with the practical reason the topic matters.","Explains the core idea before formalism.","Includes a worked example.","Includes common misconceptions.","Includes diagnostics mapped to prerequisite gaps."],"rigor":["Does not overclaim.","Defines notation.","States assumptions.","Uses KaTeX for formulas.","Distinguishes theorem, heuristic, rule of thumb, and empirical benchmark."],"retrieval":["Unique title and meta description.","Stable canonical URL.","JSON-LD graph present.","BreadcrumbList present.","LearningResource metadata present.","Internal links to prerequisites and leads-to pages.","References include canonical sources."]}},"sites":[{"id":"theorempath","name":"TheoremPath","canonicalHost":"theorempath.com","origin":"https://theorempath.com","tier":0,"ring":"canonical-spine","status":"live-monolith","canonicalFocus":"Formal definitions, theorem statements, proof obligations, assumptions, and mathematical generalizations.","linkGuidance":"Link out only when the application genuinely clarifies the formal object.","visibleLinkBudget":{"min":8,"max":14}},{"id":"dsapath","name":"DSAPath","canonicalHost":"dsapath.com","origin":"https://dsapath.com","tier":1,"ring":"technical-professional","status":"live-monolith","canonicalFocus":"Implementation-first data structures, algorithms, complexity, and common coding failure modes.","linkGuidance":"Link to TheoremPath for proof foundations and to IOIPath/SystemDesignPath/CUDAPath for genuine applications.","visibleLinkBudget":{"min":6,"max":12}},{"id":"probabilitypath","name":"ProbabilityPath","canonicalHost":"probabilitypath.com","origin":"https://probabilitypath.com","tier":1,"ring":"technical-professional","status":"planned","canonicalFocus":"Random variables, distributions, stochastic processes, expectation intuition, and applied probability models.","linkGuidance":"Bridge TheoremPath formalism to StatisticsPath, ActuaryPath, SystemDesignPath, and PhilosophyPath only where probability changes decisions.","visibleLinkBudget":{"min":6,"max":12}},{"id":"statisticspath","name":"StatisticsPath","canonicalHost":"statisticspath.com","origin":"https://statisticspath.com","tier":1,"ring":"technical-professional","status":"planned","canonicalFocus":"Inference, estimation, uncertainty quantification, regression, diagnostics, and model checking.","linkGuidance":"Link to TheoremPath for assumptions and proofs, ProbabilityPath for random structure, and ActuaryPath for professional use.","visibleLinkBudget":{"min":6,"max":12}},{"id":"calculuspath","name":"CalculusPath","canonicalHost":"calculuspath.com","origin":"https://calculuspath.com","tier":1,"ring":"technical-professional","status":"planned","canonicalFocus":"Learner-facing limits, derivatives, integrals, series, approximations, and computational calculus.","linkGuidance":"Keep pages computational and applied; link to TheoremPath when a rigorous analysis theorem is doing the work.","visibleLinkBudget":{"min":6,"max":12}},{"id":"actuarypath","name":"ActuaryPath","canonicalHost":"actuarypath.com","origin":"https://actuarypath.com","tier":1,"ring":"technical-professional","status":"external-project","canonicalFocus":"Actuarial exams, risk, life contingencies, loss models, credibility, reserving, pricing, and professional judgment.","linkGuidance":"Use ProbabilityPath, StatisticsPath, CalculusPath, and TheoremPath as foundations; avoid thin exam-note clones.","visibleLinkBudget":{"min":6,"max":10}},{"id":"systemdesignpath","name":"SystemDesignPath","canonicalHost":"systemdesignpath.com","origin":"https://systemdesignpath.com","tier":1,"ring":"technical-professional","status":"planned","canonicalFocus":"Production architecture, constraints, trade-offs, reliability, observability, security, cost, and operations.","linkGuidance":"Link to math only where it improves a design decision; do not write interview-template fluff.","visibleLinkBudget":{"min":5,"max":9}},{"id":"cudapath","name":"CUDAPath","canonicalHost":"cudapath.com","origin":"https://cudapath.com","tier":1,"ring":"technical-professional","status":"planned","canonicalFocus":"Profiler-driven CUDA and GPU programming from C++/systems foundations to high-performance kernels.","linkGuidance":"Tie performance claims to official docs or measured benchmarks; never claim an optimization is universally faster.","visibleLinkBudget":{"min":6,"max":10}},{"id":"ioipath","name":"IOIPath","canonicalHost":"ioipath.com","origin":"https://ioipath.com","tier":1,"ring":"contest-excellence","status":"planned","canonicalFocus":"IOI-style algorithmic modeling, constraints, correctness proofs, C++ implementation, subtasks, testing, and contest execution.","linkGuidance":"Depend on DSAPath for implementation primitives and TheoremPath for proof structure; keep broader CP topics labeled as out-of-scope when needed.","visibleLinkBudget":{"min":6,"max":10}},{"id":"putnampath","name":"PutnamPath","canonicalHost":"putnampath.com","origin":"https://putnampath.com","tier":1,"ring":"contest-excellence","status":"planned","canonicalFocus":"Undergraduate proof-contest synthesis across analysis, algebra, combinatorics, number theory, linear algebra, and probability.","linkGuidance":"Link to TheoremPath for theorem depth and IMOPath for elementary proof moves; avoid copying official problem statements.","visibleLinkBudget":{"min":6,"max":10}},{"id":"imopath","name":"IMOPath","canonicalHost":"imopath.com","origin":"https://imopath.com","tier":1,"ring":"contest-excellence","status":"planned","canonicalFocus":"Proof-first olympiad technique graph from fundamentals to shortlist-level synthesis.","linkGuidance":"Teach recognition, false starts, clean proof writing, and original exposition; avoid trick lists.","visibleLinkBudget":{"min":6,"max":10}},{"id":"philosophypath","name":"PhilosophyPath","canonicalHost":"philosophypath.com","origin":"https://philosophypath.com","tier":2,"ring":"conceptual-bridge","status":"live-monolith","canonicalFocus":"Logic, epistemology, decision theory, philosophy of language, ethics, and philosophy of science/math.","linkGuidance":"Use serious bridges through logic, probability interpretation, causality, semantics, and argumentation.","visibleLinkBudget":{"min":5,"max":9}},{"id":"linguisticspath","name":"LinguisticsPath","canonicalHost":"linguisticspath.com","origin":"https://linguisticspath.com","tier":2,"ring":"conceptual-bridge","status":"live-monolith","canonicalFocus":"Syntax, semantics, phonology, pragmatics, formal grammars, and NLP-adjacent language theory.","linkGuidance":"Bridge to technical pages through formal language, parsing, semantics, probability, and information theory.","visibleLinkBudget":{"min":5,"max":9}},{"id":"classicspath","name":"ClassicsPath","canonicalHost":"classicspath.com","origin":"https://classicspath.com","tier":3,"ring":"humanities-edge","status":"live-monolith","canonicalFocus":"Ancient texts, ancient languages, rhetoric, ancient philosophy/science, and Greco-Roman intellectual history.","linkGuidance":"Connect lightly through Euclid, Aristotle, rhetoric, philology, and history of science; do not force technical links.","visibleLinkBudget":{"min":3,"max":7}},{"id":"literaturepath","name":"LiteraturePath","canonicalHost":"literaturepath.com","origin":"https://literaturepath.com","tier":3,"ring":"humanities-edge","status":"live-monolith","canonicalFocus":"Literary works, narrative, genres, rhetoric, interpretation, criticism, and cultural literacy.","linkGuidance":"Connect through rhetoric, semantics, pragmatics, interpretation, and philosophy of language; keep technical links rare.","visibleLinkBudget":{"min":3,"max":7}},{"id":"computationpath","name":"ComputationPath","canonicalHost":"computationpath.com","origin":"https://computationpath.com","tier":2,"ring":"technical-professional","status":"live-monolith","canonicalFocus":"Computing foundations, machines, logic, systems primitives, and CS theory outside the main ML curriculum.","linkGuidance":"Use as the CS-foundations bridge where DSAPath would be too implementation-heavy.","visibleLinkBudget":{"min":5,"max":9}},{"id":"pedagogypath","name":"PedagogyPath","canonicalHost":"pedagogypath.com","origin":"https://pedagogypath.com","tier":2,"ring":"internal-support","status":"live-monolith","canonicalFocus":"Adaptive learning, psychometrics, tutoring systems, FSRS, IRT, BKT, and curriculum engineering.","linkGuidance":"Use for learning-system design and diagnostics, not as generic education commentary.","visibleLinkBudget":{"min":4,"max":8}},{"id":"proofspath","name":"ProofsPath","canonicalHost":"proofspath.com","origin":"https://proofspath.com","tier":2,"ring":"contest-excellence","status":"legacy-bridge","canonicalFocus":"Current proof-technique bridge for induction, inequalities, and olympiad-style moves until IMOPath becomes the dedicated domain.","linkGuidance":"Keep useful pages, but assign future olympiad contest ownership to IMOPath and formal proof ownership to TheoremPath.","visibleLinkBudget":{"min":4,"max":8}}],"matrix":{"theorempath":{"dsapath":"M","probabilitypath":"M","statisticspath":"M","calculuspath":"M","actuarypath":"M","systemdesignpath":"M","cudapath":"L","ioipath":"L","putnampath":"M","imopath":"M","philosophypath":"L","linguisticspath":"L","classicspath":"L","literaturepath":"L"},"dsapath":{"theorempath":"H","probabilitypath":"M","statisticspath":"M","calculuspath":"L","systemdesignpath":"M","cudapath":"M","ioipath":"H","putnampath":"L","imopath":"L","philosophypath":"L","linguisticspath":"M","classicspath":"X","literaturepath":"X"},"probabilitypath":{"theorempath":"H","dsapath":"L","statisticspath":"H","calculuspath":"M","actuarypath":"H","systemdesignpath":"M","putnampath":"M","philosophypath":"M","linguisticspath":"M"},"statisticspath":{"theorempath":"H","probabilitypath":"H","calculuspath":"M","actuarypath":"H","systemdesignpath":"M","philosophypath":"M","linguisticspath":"M"},"calculuspath":{"theorempath":"H","probabilitypath":"M","statisticspath":"M","actuarypath":"H","cudapath":"M","putnampath":"M"},"actuarypath":{"theorempath":"H","probabilitypath":"H","statisticspath":"H","calculuspath":"H","systemdesignpath":"M","putnampath":"L","philosophypath":"L"},"systemdesignpath":{"theorempath":"M","dsapath":"H","probabilitypath":"M","statisticspath":"M","calculuspath":"L","actuarypath":"M","cudapath":"L","ioipath":"L","philosophypath":"L","linguisticspath":"L"},"cudapath":{"theorempath":"H","dsapath":"H","probabilitypath":"L","statisticspath":"L","calculuspath":"M","systemdesignpath":"L","ioipath":"L"},"ioipath":{"theorempath":"M","dsapath":"H","probabilitypath":"L","imopath":"M","putnampath":"L"},"putnampath":{"theorempath":"H","probabilitypath":"M","statisticspath":"M","calculuspath":"M","actuarypath":"L","imopath":"H","philosophypath":"M","linguisticspath":"L","classicspath":"L"},"imopath":{"theorempath":"H","dsapath":"L","probabilitypath":"L","ioipath":"M","putnampath":"M","philosophypath":"L","classicspath":"L"},"philosophypath":{"theorempath":"H","probabilitypath":"M","statisticspath":"M","actuarypath":"L","systemdesignpath":"L","putnampath":"M","imopath":"L","linguisticspath":"H","classicspath":"M","literaturepath":"M"},"linguisticspath":{"theorempath":"M","dsapath":"M","probabilitypath":"M","statisticspath":"M","systemdesignpath":"L","putnampath":"L","philosophypath":"H","classicspath":"M","literaturepath":"M"},"classicspath":{"theorempath":"M","putnampath":"L","imopath":"L","philosophypath":"H","linguisticspath":"M","literaturepath":"H"},"literaturepath":{"theorempath":"L","statisticspath":"L","philosophypath":"H","linguisticspath":"H","classicspath":"H"},"computationpath":{"theorempath":"H","dsapath":"H","linguisticspath":"M","philosophypath":"M"},"pedagogypath":{"theorempath":"M","statisticspath":"M","systemdesignpath":"L"},"proofspath":{"theorempath":"H","imopath":"H","putnampath":"M"}},"concepts":[{"id":"proof.induction","name":"Induction","canonicalSite":"theorempath","canonicalSlug":"basic-logic-and-proof-techniques","canonicalUrl":"https://theorempath.com/topics/basic-logic-and-proof-techniques","domains":["theorempath","dsapath","ioipath","imopath","putnampath"],"conceptType":"proof-technique","importance":5,"theoremPathCentrality":5},{"id":"proof.invariants","name":"Invariants","canonicalSite":"theorempath","canonicalSlug":"basic-logic-and-proof-techniques","canonicalUrl":"https://theorempath.com/topics/basic-logic-and-proof-techniques","domains":["theorempath","dsapath","ioipath","imopath","putnampath"],"conceptType":"proof-technique","importance":5,"theoremPathCentrality":4},{"id":"probability.bayes_theorem","name":"Bayes' theorem","canonicalSite":"theorempath","canonicalSlug":"bayes-theorem","canonicalUrl":"https://theorempath.com/topics/bayes-theorem","domains":["theorempath","probabilitypath","statisticspath","actuarypath","philosophypath","linguisticspath"],"conceptType":"theorem","importance":5,"theoremPathCentrality":5},{"id":"probability.conditional_expectation","name":"Conditional expectation","canonicalSite":"theorempath","canonicalSlug":"conditional-expectation","canonicalUrl":"https://theorempath.com/topics/conditional-expectation","domains":["theorempath","probabilitypath","statisticspath","actuarypath"],"conceptType":"definition","importance":5,"theoremPathCentrality":5},{"id":"stochastic.markov_chains","name":"Markov chains","canonicalSite":"theorempath","canonicalSlug":"markov-chains","canonicalUrl":"https://theorempath.com/topics/markov-chains","domains":["theorempath","probabilitypath","statisticspath","actuarypath","systemdesignpath","linguisticspath"],"conceptType":"model","importance":5,"theoremPathCentrality":5},{"id":"information.entropy","name":"Entropy","canonicalSite":"theorempath","canonicalSlug":"entropy-cross-entropy-and-kl-divergence","canonicalUrl":"https://theorempath.com/topics/entropy-cross-entropy-and-kl-divergence","domains":["theorempath","probabilitypath","statisticspath","linguisticspath","systemdesignpath"],"conceptType":"definition","importance":5,"theoremPathCentrality":5},{"id":"calculus.taylor_expansion","name":"Taylor expansion","canonicalSite":"theorempath","canonicalSlug":"calculus-foundations","canonicalUrl":"https://theorempath.com/topics/calculus-foundations","domains":["theorempath","calculuspath","putnampath","cudapath"],"conceptType":"theorem","importance":5,"theoremPathCentrality":5},{"id":"analysis.compactness","name":"Compactness","canonicalSite":"theorempath","canonicalSlug":"compactness-and-heine-borel","canonicalUrl":"https://theorempath.com/topics/compactness-and-heine-borel","domains":["theorempath","putnampath","philosophypath"],"conceptType":"theorem","importance":4,"theoremPathCentrality":5},{"id":"linear_algebra.eigenvalues","name":"Eigenvalues","canonicalSite":"theorempath","canonicalSlug":"spectral-theory-foundations","canonicalUrl":"https://theorempath.com/topics/spectral-theory-foundations","domains":["theorempath","putnampath","statisticspath","cudapath"],"conceptType":"definition","importance":5,"theoremPathCentrality":5},{"id":"graph.shortest_paths.dijkstra","name":"Dijkstra's algorithm","canonicalSite":"dsapath","canonicalSlug":"dijkstra","canonicalUrl":"https://dsapath.com/topics/dijkstra","domains":["dsapath","ioipath","theorempath"],"conceptType":"algorithm","importance":5,"theoremPathCentrality":2},{"id":"data_structure.segment_tree","name":"Segment tree","canonicalSite":"dsapath","canonicalSlug":"segment-tree","canonicalUrl":"https://dsapath.com/topics/segment-tree","domains":["dsapath","ioipath"],"conceptType":"data-structure","importance":4,"theoremPathCentrality":1},{"id":"parallel.prefix_scan","name":"Prefix scan","canonicalSite":"dsapath","canonicalSlug":"prefix-sums","canonicalUrl":"https://dsapath.com/topics/prefix-sums","domains":["dsapath","ioipath","cudapath","theorempath"],"conceptType":"algorithm","importance":5,"theoremPathCentrality":3},{"id":"systems.littles_law","name":"Little's Law","canonicalSite":"systemdesignpath","canonicalSlug":"littles-law","canonicalUrl":"https://systemdesignpath.com/topics/littles-law","domains":["systemdesignpath","probabilitypath","theorempath"],"conceptType":"theorem","importance":5,"theoremPathCentrality":3},{"id":"systems.idempotency","name":"Idempotency","canonicalSite":"systemdesignpath","canonicalSlug":"idempotency","canonicalUrl":"https://systemdesignpath.com/topics/idempotency","domains":["systemdesignpath","dsapath","theorempath"],"conceptType":"design-pattern","importance":5,"theoremPathCentrality":2},{"id":"gpu.memory_coalescing","name":"CUDA memory coalescing","canonicalSite":"cudapath","canonicalSlug":"memory-coalescing","canonicalUrl":"https://cudapath.com/topics/memory-coalescing","domains":["cudapath","dsapath","theorempath"],"conceptType":"method","importance":5,"theoremPathCentrality":1},{"id":"olympiad.extremal_principle","name":"Extremal principle","canonicalSite":"imopath","canonicalSlug":"extremal-principle","canonicalUrl":"https://imopath.com/topics/extremal-principle","domains":["imopath","putnampath","theorempath"],"conceptType":"proof-technique","importance":5,"theoremPathCentrality":3},{"id":"olympiad.double_counting","name":"Double counting","canonicalSite":"imopath","canonicalSlug":"double-counting","canonicalUrl":"https://imopath.com/topics/double-counting","domains":["imopath","putnampath","theorempath"],"conceptType":"proof-technique","importance":5,"theoremPathCentrality":3},{"id":"language.context_free_grammar","name":"Context-free grammar","canonicalSite":"linguisticspath","canonicalSlug":"context-free-grammars","canonicalUrl":"https://linguisticspath.com/topics/context-free-grammars","domains":["linguisticspath","theorempath","dsapath","computationpath"],"conceptType":"linguistic-concept","importance":4,"theoremPathCentrality":3},{"id":"philosophy.bayesian_epistemology","name":"Bayesian epistemology","canonicalSite":"philosophypath","canonicalSlug":"bayesian-epistemology","canonicalUrl":"https://philosophypath.com/topics/bayesian-epistemology","domains":["philosophypath","probabilitypath","statisticspath"],"conceptType":"philosophical-concept","importance":4,"theoremPathCentrality":2},{"id":"classics.euclid_elements","name":"Euclid's Elements","canonicalSite":"classicspath","canonicalSlug":"euclids-elements","canonicalUrl":"https://classicspath.com/topics/euclids-elements","domains":["classicspath","theorempath","philosophypath"],"conceptType":"text","importance":3,"theoremPathCentrality":2}],"edges":[{"id":"theorempath--basic-logic-and-proof-techniques--implementation-version--dsapath--dynamic-programming","fromSite":"theorempath","fromSlug":"basic-logic-and-proof-techniques","toSite":"dsapath","toSlug":"dynamic-programming","relation":"implementation-version","anchorText":"dynamic programming correctness","reason":"Dynamic programming uses induction and invariants as implementation-level proof obligations.","strength":5,"requiredForUnderstanding":false,"renderLocation":"related-paths","source":"curriculum-spec","confidence":0.95,"visibleEligible":true},{"id":"dsapath--dynamic-programming--proof-foundation--theorempath--basic-logic-and-proof-techniques","fromSite":"dsapath","fromSlug":"dynamic-programming","toSite":"theorempath","toSlug":"basic-logic-and-proof-techniques","relation":"proof-foundation","anchorText":"inductive proof structure","reason":"The correctness argument for DP recurrences relies on induction over states or subproblem size.","strength":5,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.95,"visibleEligible":true},{"id":"ioipath--dijkstra-shortest-paths--implementation-version--dsapath--priority-queues","fromSite":"ioipath","fromSlug":"dijkstra-shortest-paths","toSite":"dsapath","toSlug":"priority-queues","relation":"implementation-version","anchorText":"priority queue implementation details","reason":"The IOI solution depends on heap-based extract-min behavior and stale-entry handling.","strength":5,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.95,"visibleEligible":true},{"id":"ioipath--dijkstra-shortest-paths--proof-foundation--theorempath--basic-logic-and-proof-techniques","fromSite":"ioipath","fromSlug":"dijkstra-shortest-paths","toSite":"theorempath","toSlug":"basic-logic-and-proof-techniques","relation":"proof-foundation","anchorText":"settled-node invariant","reason":"The correctness proof uses an invariant over settled nodes and nonnegative edge weights.","strength":4,"requiredForUnderstanding":false,"renderLocation":"body","source":"curriculum-spec","confidence":0.9,"visibleEligible":true},{"id":"cudapath--parallel-prefix-scan--implementation-version--dsapath--prefix-sums","fromSite":"cudapath","fromSlug":"parallel-prefix-scan","toSite":"dsapath","toSlug":"prefix-sums","relation":"implementation-version","anchorText":"sequential prefix sums","reason":"CUDA scan pages should contrast the parallel algorithm with the sequential DSA primitive.","strength":4,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.9,"visibleEligible":false},{"id":"cudapath--parallel-prefix-scan--formal-foundation--theorempath--associativity-and-monoids","fromSite":"cudapath","fromSlug":"parallel-prefix-scan","toSite":"theorempath","toSlug":"associativity-and-monoids","relation":"formal-foundation","anchorText":"associativity requirement","reason":"Parallel scan correctness depends on the operation being associative.","strength":4,"requiredForUnderstanding":true,"renderLocation":"body","source":"curriculum-spec","confidence":0.9,"visibleEligible":true},{"id":"systemdesignpath--littles-law--probabilistic-application--probabilitypath--queueing-intuition","fromSite":"systemdesignpath","fromSlug":"littles-law","toSite":"probabilitypath","toSlug":"queueing-intuition","relation":"probabilistic-application","anchorText":"queueing intuition","reason":"Little's Law is easier to use when arrival rate, waiting time, and in-flight work are separated.","strength":4,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.9,"visibleEligible":false},{"id":"systemdesignpath--availability--probabilistic-application--probabilitypath--independent-events","fromSite":"systemdesignpath","fromSlug":"availability","toSite":"probabilitypath","toSlug":"independent-events","relation":"probabilistic-application","anchorText":"independent event assumptions","reason":"Availability calculations are often wrong when independence assumptions are unstated.","strength":5,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.92,"visibleEligible":true},{"id":"actuarypath--credibility-theory--formal-foundation--theorempath--conditional-expectation","fromSite":"actuarypath","fromSlug":"credibility-theory","toSite":"theorempath","toSlug":"conditional-expectation","relation":"formal-foundation","anchorText":"conditional expectation","reason":"Credibility theory relies on conditional expectation and variance decomposition.","strength":5,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.95,"visibleEligible":true},{"id":"putnampath--compactness-putnam--formal-foundation--theorempath--compactness-and-heine-borel","fromSite":"putnampath","fromSlug":"compactness-putnam","toSite":"theorempath","toSlug":"compactness-and-heine-borel","relation":"formal-foundation","anchorText":"Heine-Borel and extreme-value theorem","reason":"The Putnam page should teach recognition while TheoremPath owns the exact theorem and assumptions.","strength":5,"requiredForUnderstanding":true,"renderLocation":"prerequisites","source":"curriculum-spec","confidence":0.95,"visibleEligible":true},{"id":"putnampath--extremal-principle--contest-application--imopath--extremal-principle","fromSite":"putnampath","fromSlug":"extremal-principle","toSite":"imopath","toSlug":"extremal-principle","relation":"contest-application","anchorText":"elementary extremal principle","reason":"Putnam versions often reuse the same minimal-counterexample move introduced in olympiad training.","strength":4,"requiredForUnderstanding":false,"renderLocation":"related-paths","source":"curriculum-spec","confidence":0.9,"visibleEligible":true},{"id":"linguisticspath--context-free-grammars--implementation-version--dsapath--parsing-algorithms","fromSite":"linguisticspath","fromSlug":"context-free-grammars","toSite":"dsapath","toSlug":"parsing-algorithms","relation":"implementation-version","anchorText":"parsing algorithms","reason":"Formal grammar pages should point to implementation-level parsing when the learner needs algorithms.","strength":4,"requiredForUnderstanding":false,"renderLocation":"related-paths","source":"curriculum-spec","confidence":0.88,"visibleEligible":true},{"id":"classicspath--euclids-elements--historical-context--theorempath--axiomatic-geometry","fromSite":"classicspath","fromSlug":"euclids-elements","toSite":"theorempath","toSlug":"axiomatic-geometry","relation":"historical-context","anchorText":"axiomatic geometry","reason":"Euclid is a historically explicit bridge into axiomatic mathematical method.","strength":4,"requiredForUnderstanding":false,"renderLocation":"body","source":"curriculum-spec","confidence":0.88,"visibleEligible":true},{"id":"literaturepath--metaphor--linguistic-context--linguisticspath--semantics-and-pragmatics","fromSite":"literaturepath","fromSlug":"metaphor","toSite":"linguisticspath","toSlug":"semantics-and-pragmatics","relation":"linguistic-context","anchorText":"semantics and pragmatics","reason":"Metaphor has a genuine language-theory treatment through meaning and use.","strength":4,"requiredForUnderstanding":false,"renderLocation":"related-paths","source":"curriculum-spec","confidence":0.86,"visibleEligible":false},{"id":"systemdesignpath--microservices--sibling-treatment--literaturepath--narrative-structure","fromSite":"systemdesignpath","fromSlug":"microservices","toSite":"literaturepath","toSlug":"narrative-structure","relation":"sibling-treatment","anchorText":"narrative structure","reason":"Keyword-only example retained as a hidden negative control; it should never render visibly.","strength":1,"requiredForUnderstanding":false,"renderLocation":"hidden-graph-only","source":"agent-suggested","confidence":0.4,"visibleEligible":false}],"launchSpecs":[{"site":"systemdesignpath","positioning":"SystemDesignPath is a production-first system design curriculum: constraints, trade-offs, scaling, reliability, data, cost, and operations.","launchTarget":{"topicPages":50,"caseStudies":6,"diagnostics":1},"sourcePolicy":["Use Designing Data-Intensive Applications for data-system trade-offs.","Use the Google SRE books for SLOs, monitoring, toil, incidents, and reliability practice.","Use AWS Well-Architected and Azure Architecture Center for cloud-pattern trade-offs.","Date any pricing or vendor-behavior claims and mark them vendor-specific."],"modules":[{"layer":0,"module":"Engineering Foundations","goal":"Give learners the vocabulary and math needed to reason about systems.","topics":["Latency, throughput, and capacity","Little's Law","Availability and reliability","Back-of-the-envelope estimation","APIs and data models","HTTP, DNS, TLS, TCP"]},{"layer":1,"module":"Core Building Blocks","goal":"Understand the primitives used in almost every system.","topics":["Load balancers","Caches","Relational databases","Indexes","Object storage","Message queues","Search indexes","CDNs"]},{"layer":2,"module":"Distributed Systems Mechanics","goal":"Teach why systems break and what trade-offs actually mean.","topics":["Replication","Partitioning and sharding","Consistency models","Quorums","Transactions","Idempotency","Retries and backoff","Clock and ordering problems"]},{"layer":3,"module":"Architecture Patterns","goal":"Teach reusable designs and when not to use them.","topics":["Event-driven architecture","CQRS","Saga pattern","Outbox pattern","Rate limiting","Circuit breakers","Bulkheads"]},{"layer":4,"module":"Production Readiness","goal":"Turn diagrams into operable systems.","topics":["SLOs and SLIs","Observability","Incident response","Capacity planning","Security design review","Cost modeling","Disaster recovery"]},{"layer":5,"module":"Case Studies and Design Reviews","goal":"Build real design judgment.","topics":["Design a URL shortener","Design a distributed cache","Design a payment system","Design a notification system","Production readiness review"]}],"priorityTopics":[{"slug":"latency-throughput-capacity","title":"Latency, Throughput, and Capacity","layer":0,"tier":1,"prerequisites":[],"katex":["throughput = \\frac{requests}{second}"],"diagram":"Request timeline with queueing, service time, and response time","exercise":"Estimate required servers for a workload."},{"slug":"littles-law","title":"Little's Law for System Design","layer":0,"tier":1,"prerequisites":["latency-throughput-capacity"],"katex":["L = \\lambda W"],"diagram":"Queue with arrivals, waiting, and in-flight requests","exercise":"Estimate concurrent requests from RPS and latency."},{"slug":"availability","title":"Availability and Reliability","layer":0,"tier":1,"prerequisites":["probability-basics"],"katex":["A = \\frac{MTBF}{MTBF + MTTR}"],"diagram":"Failure and recovery timeline","exercise":"Compare downtime budgets for 99.9%, 99.99%, and 99.999%."},{"slug":"caching","title":"Caching","layer":1,"tier":1,"prerequisites":["latency-throughput-capacity"],"katex":["E[T] = hT_{cache} + (1-h)T_{origin}"],"diagram":"Cache-aside read path","exercise":"Design cache keys, TTLs, invalidation, and stampede protection."},{"slug":"idempotency","title":"Idempotency","layer":2,"tier":1,"prerequisites":["http-apis","retries"],"katex":["f(f(x)) = f(x)"],"diagram":"Client retry with idempotency key","exercise":"Design idempotent payment creation."},{"slug":"slo-sli-error-budget","title":"SLOs, SLIs, and Error Budgets","layer":4,"tier":1,"prerequisites":["availability","observability-basics"],"katex":["error\\ budget = 1 - SLO"],"diagram":"User journey -> SLI -> SLO -> alert","exercise":"Define SLOs for an API and background job."}]},{"site":"cudapath","positioning":"CUDAPath is a rigorous, profiler-driven path from C++/systems fundamentals to high-performance GPU kernels.","launchTarget":{"topicPages":40,"labs":8,"diagnostics":1},"sourcePolicy":["Use NVIDIA CUDA Programming Guide, CUDA Best Practices Guide, and Nsight Compute documentation as the canonical spine.","Every performance claim must be tied to official docs, a measured local benchmark, or a clearly labeled illustrative example.","State hardware, CUDA version, problem size, memory layout, and measurement method for benchmarks."],"modules":[{"layer":0,"module":"Systems and C++ Foundations","goal":"Give learners enough systems/C++ knowledge to write and reason about kernels.","topics":["C++ pointers, arrays, alignment, and aliasing","Row-major layout and multidimensional indexing","Floating-point arithmetic and numerical error","Parallel decomposition"]},{"layer":1,"module":"CUDA Programming Model","goal":"Understand the execution model before optimizing anything.","topics":["Host vs device execution","Kernels, grids, blocks, threads","Thread indexing formulas","Warps and SIMT execution","Device memory allocation and transfers"]},{"layer":2,"module":"Memory Systems and Throughput","goal":"Teach the real bottleneck: moving data efficiently.","topics":["Global memory access patterns","Memory coalescing","Shared memory","Bank conflicts","Registers and local memory spills","Arithmetic intensity and roofline thinking"]},{"layer":3,"module":"Kernel Patterns","goal":"Teach reusable GPU algorithm patterns.","topics":["Parallel reduction","Prefix scan","Tiled matrix multiplication","Convolution and stencil kernels","Warp-level primitives"]},{"layer":4,"module":"Profiling and Optimization","goal":"Move learners from guessing to measurement.","topics":["Nsight Systems vs Nsight Compute","Occupancy vs achieved occupancy","Memory throughput diagnosis","Warp divergence diagnosis","Benchmark hygiene"]},{"layer":5,"module":"Applied GPU Engineering","goal":"Connect CUDA to real production and ML/HPC workloads.","topics":["Custom PyTorch CUDA extensions","cuBLAS and cuDNN baselines","Tensor Cores and mixed precision","Streams and overlapping copy/compute","CUDA graphs"]}],"priorityTopics":[{"slug":"cuda-thread-indexing","title":"CUDA Thread Indexing","layer":1,"tier":1,"prerequisites":["row-major-layout","integer-arithmetic"],"katex":["i = blockIdx.x \\cdot blockDim.x + threadIdx.x"],"diagram":"Grid -> block -> thread hierarchy","lab":"Write vector add and verify each thread owns one element."},{"slug":"memory-coalescing","title":"Memory Coalescing","layer":2,"tier":1,"prerequisites":["cuda-memory-hierarchy","warps-and-simt"],"diagram":"Warp accessing contiguous vs strided addresses","lab":"Benchmark contiguous, stride-2, and stride-32 loads."},{"slug":"parallel-reduction","title":"Parallel Reduction","layer":3,"tier":1,"prerequisites":["shared-memory","synchronization","warps-and-simt"],"diagram":"Tree reduction inside a block","lab":"Implement naive, shared-memory, and warp-level reduction."},{"slug":"roofline-model","title":"Roofline Model for CUDA Kernels","layer":3,"tier":2,"prerequisites":["memory-throughput","floating-point-throughput"],"katex":["P \\le \\min(P_{peak}, I \\cdot B_{peak})"],"diagram":"Arithmetic intensity vs attainable performance","lab":"Classify vector add, reduction, and matmul."},{"slug":"nsight-compute-first-profile","title":"First Nsight Compute Profile","layer":4,"tier":1,"prerequisites":["cuda-kernels","memory-coalescing"],"diagram":"Kernel -> metrics -> bottleneck hypothesis -> next experiment","lab":"Profile vector add and identify memory throughput limit."}]},{"site":"ioipath","positioning":"IOIPath is a rigorous path from programming fundamentals to IOI-level algorithmic problem solving: constraints, models, proofs, implementations, subtasks, and contest execution.","launchTarget":{"topicPages":45,"labs":12,"exercises":80,"diagnostics":1},"sourcePolicy":["Use the official IOI syllabus as the canonical scope authority.","Use official IOI contest archives for practice references.","Use CP-Algorithms, CSES, and USACO Guide as applied references, not syllabus authority.","Mark broader CP topics as out-of-scope when they are excluded or outside focus for IOI."],"modules":[{"layer":0,"module":"Programming and Contest Mechanics","goal":"Make students able to implement correct programs under contest constraints.","topics":["C++ contest setup","Fast input/output","Integer types and overflow","Testing small cases and random stress tests","Reading constraints and inferring complexity"]},{"layer":1,"module":"Core Algorithmic Moves","goal":"Teach the first transformations from brute force to accepted solution.","topics":["Prefix sums","Binary search on answer","Two pointers","Greedy algorithms","Exchange arguments","Divide and conquer"]},{"layer":2,"module":"Data Structures for IOI","goal":"Use data structures as contest tools.","topics":["Priority queues","Disjoint set union","Fenwick trees","Segment trees","Lazy propagation","Coordinate compression"]},{"layer":3,"module":"Graph Algorithms and Trees","goal":"Build the graph toolkit that appears repeatedly in IOI tasks.","topics":["BFS and DFS","Topological ordering","Shortest paths","Minimum spanning trees","Lowest common ancestor","Tree DP"]},{"layer":4,"module":"Dynamic Programming and Optimization","goal":"Train state design, transition design, proof, and compression.","topics":["DP states and transitions","Knapsack DP","LIS and sequence DP","Tree DP","Bitmask DP","DP with data structures"]},{"layer":5,"module":"IOI-Level Synthesis","goal":"Handle unfamiliar tasks with models, subtasks, proofs, and implementation-risk control.","topics":["Subtask-driven discovery","Partial scoring strategy","Interactive and grader-based tasks","Stress testing","Mock IOI day strategy"]}],"priorityTopics":[{"slug":"constraint-reading","title":"Reading Constraints to Infer Complexity","layer":0,"tier":1,"prerequisites":["big-o-basics","loops-and-arrays"],"katex":["10^5 \\Rightarrow O(n \\log n) \\text{ is usually plausible}","10^3 \\Rightarrow O(n^2) \\text{ may be plausible}"],"diagram":"Input size -> candidate complexity -> algorithm family","lab":"Given 20 task constraints, predict acceptable complexity before solving."},{"slug":"binary-search-on-answer","title":"Binary Search on Answer","layer":1,"tier":1,"prerequisites":["binary-search","monotonic-predicates"],"katex":["P(x)=\\text{true} \\Rightarrow P(y)=\\text{true for all } y\\ge x"],"diagram":"False false false true true true decision boundary","lab":"Solve minimum feasible capacity with a monotone checker."},{"slug":"disjoint-set-union","title":"Disjoint Set Union","layer":2,"tier":1,"prerequisites":["sets","trees"],"katex":["find(x)","union(a,b)"],"diagram":"Forest with parent pointers and path compression","lab":"Maintain connected components under edge insertions."},{"slug":"dijkstra-shortest-paths","title":"Dijkstra's Algorithm","layer":3,"tier":1,"prerequisites":["graphs","priority-queues","greedy-exchange-arguments"],"katex":["dist[v] = \\min_{p:s\\to v} w(p)"],"diagram":"Settled nodes, frontier, priority queue","lab":"Implement Dijkstra and test against Bellman-Ford on small graphs."},{"slug":"dp-state-design","title":"Dynamic Programming State Design","layer":4,"tier":1,"prerequisites":["recursion","induction","arrays"],"katex":["dp[state] = \\min_{prev \\to state} dp[prev] + cost(prev,state)"],"diagram":"State graph with transitions","lab":"Convert recursive recurrence to bottom-up DP."}]},{"site":"putnampath","positioning":"PutnamPath is a proof-first undergraduate problem-solving graph: from olympiad-style moves to analysis, algebra, linear algebra, combinatorics, number theory, and probability under Putnam constraints.","launchTarget":{"topicPages":50,"exercises":120,"diagnostics":1},"sourcePolicy":["Use the MAA Putnam archive as canonical for official problems and solutions.","Link to official year/problem identifiers; do not copy official problems or solutions in full.","Use Putnam and Beyond, Engel, and Zeitz as secondary pedagogy sources.","Make session strategy configurable because the official format changed for 2026."],"modules":[{"layer":0,"module":"Proof Language and Contest Technique","goal":"Make students able to write complete, compact, rigorous contest proofs.","topics":["Direct proof","Contradiction and contrapositive","Strong induction","Extremal principle","Invariants and monovariants","Casework discipline"]},{"layer":1,"module":"Core Undergraduate Objects","goal":"Build fluency with the objects that Putnam problems actually use.","topics":["Integers and congruences","Polynomials","Sequences and series","Matrices and linear maps","Finite probability spaces"]},{"layer":2,"module":"Theorem Bank","goal":"Make standard undergraduate theorems usable under contest pressure.","topics":["Intermediate value theorem","Mean value theorem","Taylor expansion with remainder","Cauchy-Schwarz","Eigenvalues and diagonalization","Generating functions"]},{"layer":3,"module":"Putnam Problem-Solving Moves","goal":"Teach recognition and transformation, not theorem memorization.","topics":["Look at small cases","Strengthen the induction hypothesis","Exploit symmetry","Use compactness to force extrema","Find the equality case first"]},{"layer":4,"module":"Domain Synthesis","goal":"Handle mixed Putnam problems that combine several areas.","topics":["Analysis and inequalities","Linear algebra and combinatorics","Number theory and polynomials","Probability and expectation"]},{"layer":5,"module":"Putnam Readiness","goal":"Train scoring, proof compression, session strategy, and postmortem review.","topics":["A1/B1 first-solve strategy","Partial-credit proof fragments","Writing a 10-point solution","Mock session review"]}],"priorityTopics":[{"slug":"putnam-proof-writing","title":"Putnam Proof Writing","layer":0,"tier":1,"prerequisites":["direct-proof","contradiction"],"diagram":"Claim -> justification -> conclusion -> no hidden gap","practice":"Rewrite incomplete arguments into full-score solutions."},{"slug":"compactness-putnam","title":"Compactness in Putnam Problems","layer":2,"tier":2,"prerequisites":["sequences-and-limits","continuity"],"katex":["K \\subset \\mathbb R^n \\text{ compact} \\Rightarrow f(K) \\text{ attains max/min}"],"diagram":"Closed bounded set with continuous function attaining extrema","practice":"Existence and extremal-value problems."},{"slug":"eigenvalues-diagonalization","title":"Eigenvalues and Diagonalization","layer":2,"tier":1,"prerequisites":["linear-maps-and-change-of-basis","polynomials"],"katex":["Av=\\lambda v","A=PDP^{-1}"],"diagram":"Matrix action decomposed along eigenvectors","practice":"Powers of matrices, recurrences, and invariant subspaces."},{"slug":"expectation-method","title":"Linearity of Expectation and the Probabilistic Method","layer":3,"tier":2,"prerequisites":["finite-probability","random-variables"],"katex":["\\mathbb E\\left[\\sum_i X_i\\right]=\\sum_i\\mathbb E[X_i]"],"diagram":"Random construction -> expected value -> existence","practice":"Existence proofs without constructing the object."}]},{"site":"imopath","positioning":"IMOPath is a proof-first olympiad training graph from contest fundamentals to shortlist-level synthesis.","launchTarget":{"topicPages":50,"exercises":80,"diagnostics":1},"sourcePolicy":["Use the official IMO archive as the primary contest source.","Use Evan Chen and Yufei Zhao as high-quality secondary pedagogy references.","Write original exposition and do not copy long official solutions."],"modules":[{"layer":0,"module":"Proof and Problem Language","goal":"Build proof fluency before hard techniques.","topics":["Direct proof","Proof by contradiction","Induction","Extremal principle","Invariants and monovariants","Pigeonhole principle"]},{"layer":1,"module":"Core Domains","goal":"Give the four olympiad pillars clean foundations.","topics":["Inequalities","Functional equations","Divisibility","Congruences","Euclidean geometry foundations","Counting and double counting"]},{"layer":2,"module":"Standard Lemma Bank","goal":"Make common tools recallable and usable.","topics":["Vieta jumping","LTE and valuations","Fermat, Euler, Wilson","AM-GM, Cauchy, Jensen","Ceva and Menelaus","Power of a point"]},{"layer":3,"module":"Problem-Solving Techniques","goal":"Teach move selection, not just theorem recall.","topics":["Bounding and equality cases","Transformations and substitutions","Descent","Auxiliary constructions","Local-to-global arguments"]},{"layer":4,"module":"Mixed Olympiad Synthesis","goal":"Train contest-level recognition and proof construction.","topics":["Algebra-number theory hybrids","Geometry inequality hybrids","Functional equation strategy","Shortlist problem deconstruction"]},{"layer":5,"module":"IMO Readiness","goal":"Simulate real contest demands and train judgment.","topics":["Problem ordering under time pressure","Partial progress strategy","Writing official-style solutions","Common proof gaps"]}],"priorityTopics":[{"slug":"proof-by-induction","title":"Proof by Induction","layer":0,"tier":1,"prerequisites":["direct-proof"],"katex":["P(1)","P(n) \\Rightarrow P(n+1)"],"diagram":"Domino chain of implications","practice":"Prove divisibility, inequalities, and recurrence claims."},{"slug":"extremal-principle","title":"Extremal Principle","layer":0,"tier":1,"prerequisites":["proof-by-contradiction"],"diagram":"Choose minimal/maximal object -> derive impossible smaller/larger object","practice":"Geometry, graph, and number theory examples."},{"slug":"modular-arithmetic","title":"Modular Arithmetic","layer":1,"tier":1,"prerequisites":["divisibility"],"katex":["a \\equiv b \\pmod n"],"diagram":"Integer line wrapped into residue classes","practice":"Congruence manipulation and obstruction finding."},{"slug":"ceva-menelaus","title":"Ceva and Menelaus","layer":2,"tier":1,"prerequisites":["triangle-ratios","directed-lengths"],"katex":["\\frac{BD}{DC}\\frac{CE}{EA}\\frac{AF}{FB}=1"],"diagram":"Triangle cevians and transversals","practice":"Concurrency and collinearity problems."}]}]}