From 576d4f8d147f904440aeb3cfd2531935f506fd2b Mon Sep 17 00:00:00 2001 From: Nirav Patel Date: Tue, 11 Aug 2026 22:30:34 -0400 Subject: [PATCH] fix(registry): break all 6 investing depends_on cycles (DAG acyclic again) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve every CRITICAL depends_on_cycle reported by full_diagnostic_scan by enforcing the directional-DAG convention (STYLE_GUIDE #6/#7), following the precedent of 3cd9717 and 7082150: orient each mutual pair toward the more-foundational skill (higher in-degree) and drop the redundant reverse. Fixed at source in scripts/wire-investing-graph.py DEPENDENCY_MAP (the generator that owns investing edges), then propagated to data/registry.json via --apply, which also rebuilt the referenced_by reverse index. 11 edges dropped: - macro-cycles -> monetary-regime, fiscal-regime (macro-cycles is the sink) - market-psychology -> reflexivity-theory, sentiment-signals - sentiment-signals -> alt-data-monitoring - tail-risk -> correlation-regimes, position-sizing (core risk primitive) - factor-exposure -> equities - intrinsic-value -> quality-compounders - event-driven -> insider-signals, spinoffs-restructuring Zero relationship loss: every dropped direction keeps its reverse edge or is already documented in the source skill's Related Skills prose. No SKILL.md edits needed — sync-registry's prose harvester only re-adds cross-domain refs, and all 11 edges are intra-investing. Recalibrated composite scores for the 8 skills whose connectivity changed (-4 to -6 pts; 2 reclassified healthy -> warning) to keep CI's idempotency check green. NOTE: scripts/patch_mentor_suite.py was NOT run — it is currently unsafe (its DEPS table has drifted from the registry since the cycle cleanups and rerunning rewrites all 43 mentor/career lists; see the NOTE in that file). Verified: wire-investing tests 3/3, sync-registry in sync, wire-all-domains 0 modifications, recalibrate idempotent, scan TOTAL ISSUES: 0. Co-Authored-By: Claude Fable 5 --- data/registry.json | 90 +++++++++++---------------------- scripts/wire-investing-graph.py | 16 +++--- 2 files changed, 39 insertions(+), 67 deletions(-) diff --git a/data/registry.json b/data/registry.json index 759f163..5af69b2 100644 --- a/data/registry.json +++ b/data/registry.json @@ -6838,9 +6838,7 @@ "depends_on": [ "sentiment-signals" ], - "referenced_by": [ - "sentiment-signals" - ], + "referenced_by": [], "parent": "adaptive-monitoring", "tags": [ "domain:investing", @@ -7246,20 +7244,18 @@ "estimated_tokens_body": 4047, "estimated_tokens_total": 4088 }, - "health_status": "healthy", + "health_status": "warning", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 69, + "auto_score": 63, "manual_rating": null, "manual_notes": null, - "composite_score": 69, + "composite_score": 63, "depends_on": [ "factor-exposure", "regime-intelligence" ], - "referenced_by": [ - "factor-exposure" - ], + "referenced_by": [], "parent": "asset-universe", "tags": [ "domain:investing", @@ -7785,13 +7781,12 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 76, + "auto_score": 72, "manual_rating": null, "manual_notes": null, - "composite_score": 76, + "composite_score": 72, "depends_on": [ - "asset-allocation", - "equities" + "asset-allocation" ], "referenced_by": [ "equities", @@ -7968,10 +7963,7 @@ "manual_rating": null, "manual_notes": null, "composite_score": 74, - "depends_on": [ - "reflexivity-theory", - "sentiment-signals" - ], + "depends_on": [], "referenced_by": [ "behavioral-game-theory", "belief-auditor", @@ -8016,17 +8008,16 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 76, + "auto_score": 72, "manual_rating": null, "manual_notes": null, - "composite_score": 76, + "composite_score": 72, "depends_on": [ "macro-cycles", "market-psychology" ], "referenced_by": [ "frontier-intelligence", - "market-psychology", "mindshare-tracker", "second-level-thinking" ], @@ -8064,18 +8055,16 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 71, + "auto_score": 67, "manual_rating": null, "manual_notes": null, - "composite_score": 71, + "composite_score": 67, "depends_on": [ - "alt-data-monitoring", "market-psychology" ], "referenced_by": [ "alt-data-monitoring", "insider-signals", - "market-psychology", "signaling-screening" ], "parent": "reflexivity-sentiment", @@ -8170,8 +8159,7 @@ "monetary-regime" ], "referenced_by": [ - "fixed-income", - "macro-cycles" + "fixed-income" ], "parent": "regime-intelligence", "tags": [ @@ -8211,10 +8199,7 @@ "manual_rating": null, "manual_notes": null, "composite_score": 79, - "depends_on": [ - "fiscal-regime", - "monetary-regime" - ], + "depends_on": [], "referenced_by": [ "commodities", "currencies", @@ -8258,10 +8243,10 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 76, + "auto_score": 72, "manual_rating": null, "manual_notes": null, - "composite_score": 76, + "composite_score": 72, "depends_on": [ "macro-cycles" ], @@ -8269,7 +8254,6 @@ "currencies", "fiscal-regime", "fixed-income", - "macro-cycles", "money-and-financial-systems" ], "parent": "regime-intelligence", @@ -8364,8 +8348,7 @@ "alternatives", "asset-allocation", "fixed-income", - "hedging-architecture", - "tail-risk" + "hedging-architecture" ], "parent": "risk-architecture", "tags": [ @@ -8456,8 +8439,7 @@ "tail-risk" ], "referenced_by": [ - "drawdown-psychology", - "tail-risk" + "drawdown-psychology" ], "parent": "risk-architecture", "tags": [ @@ -8497,10 +8479,7 @@ "manual_rating": null, "manual_notes": null, "composite_score": 79, - "depends_on": [ - "correlation-regimes", - "position-sizing" - ], + "depends_on": [], "referenced_by": [ "correlation-regimes", "counterfactual-reasoner", @@ -8635,14 +8614,11 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 76, + "auto_score": 72, "manual_rating": null, "manual_notes": null, - "composite_score": 76, - "depends_on": [ - "insider-signals", - "spinoffs-restructuring" - ], + "composite_score": 72, + "depends_on": [], "referenced_by": [ "auction-theory", "complexity-premium", @@ -8692,7 +8668,6 @@ "sentiment-signals" ], "referenced_by": [ - "event-driven", "information-economics", "signaling-screening" ], @@ -8727,20 +8702,18 @@ "estimated_tokens_body": 5372, "estimated_tokens_total": 5419 }, - "health_status": "healthy", + "health_status": "warning", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 69, + "auto_score": 63, "manual_rating": null, "manual_notes": null, - "composite_score": 69, + "composite_score": 63, "depends_on": [ "event-driven", "intrinsic-value" ], - "referenced_by": [ - "event-driven" - ], + "referenced_by": [], "parent": "special-situations", "tags": [ "domain:investing", @@ -8825,7 +8798,6 @@ "manual_notes": null, "composite_score": 72, "depends_on": [ - "quality-compounders", "second-level-thinking" ], "referenced_by": [ @@ -8866,17 +8838,15 @@ "health_status": "healthy", "last_checked": "2026-03-28T04:11:39Z", "status": "active", - "auto_score": 72, + "auto_score": 66, "manual_rating": null, "manual_notes": null, - "composite_score": 72, + "composite_score": 66, "depends_on": [ "factor-exposure", "intrinsic-value" ], - "referenced_by": [ - "intrinsic-value" - ], + "referenced_by": [], "parent": "value-quality", "tags": [ "domain:investing", diff --git a/scripts/wire-investing-graph.py b/scripts/wire-investing-graph.py index 2b056a8..18702ef 100644 --- a/scripts/wire-investing-graph.py +++ b/scripts/wire-investing-graph.py @@ -24,7 +24,9 @@ DEPENDENCY_MAP: dict[str, list[str]] = { # ── Regime Intelligence ─────────────────────────────────────────────── - "macro-cycles": ["regime-intelligence", "monetary-regime", "fiscal-regime"], + # macro-cycles is the foundational sink of this cluster (highest in-degree); + # its links to monetary/fiscal live in its Related Skills prose, not here. + "macro-cycles": ["regime-intelligence"], "monetary-regime": ["regime-intelligence", "macro-cycles"], "fiscal-regime": ["regime-intelligence", "macro-cycles", "monetary-regime"], @@ -32,21 +34,21 @@ "correlation-regimes": ["risk-architecture", "regime-intelligence", "tail-risk"], "drawdown-psychology": ["risk-architecture", "position-sizing", "tail-risk", "market-psychology"], "position-sizing": ["risk-architecture", "tail-risk", "portfolio-construction"], - "tail-risk": ["risk-architecture", "correlation-regimes", "position-sizing"], + "tail-risk": ["risk-architecture"], # ── Portfolio Construction ──────────────────────────────────────────── "asset-allocation": ["portfolio-construction", "regime-intelligence", "risk-architecture", "correlation-regimes"], - "factor-exposure": ["portfolio-construction", "equities", "asset-allocation"], + "factor-exposure": ["portfolio-construction", "asset-allocation"], "hedging-architecture":["portfolio-construction", "tail-risk", "correlation-regimes"], "tax-optimization": ["portfolio-construction", "asset-allocation"], # ── Reflexivity & Sentiment ─────────────────────────────────────────── - "market-psychology": ["reflexivity-sentiment", "reflexivity-theory", "sentiment-signals"], + "market-psychology": ["reflexivity-sentiment"], "reflexivity-theory": ["reflexivity-sentiment", "market-psychology", "macro-cycles"], - "sentiment-signals": ["reflexivity-sentiment", "market-psychology", "alt-data-monitoring"], + "sentiment-signals": ["reflexivity-sentiment", "market-psychology"], # ── Value & Quality ─────────────────────────────────────────────────── - "intrinsic-value": ["value-quality", "second-level-thinking", "quality-compounders"], + "intrinsic-value": ["value-quality", "second-level-thinking"], "quality-compounders": ["value-quality", "intrinsic-value", "factor-exposure"], "second-level-thinking":["value-quality", "market-psychology", "reflexivity-theory"], @@ -75,7 +77,7 @@ # ── Special Situations ──────────────────────────────────────────────── "complexity-premium": ["special-situations", "second-level-thinking", "event-driven"], - "event-driven": ["special-situations", "insider-signals", "spinoffs-restructuring"], + "event-driven": ["special-situations"], "insider-signals": ["special-situations", "event-driven", "sentiment-signals"], "spinoffs-restructuring":["special-situations", "intrinsic-value", "event-driven"],