alphacouncil-agent 0.9.4 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +4 -4
- package/AGENTS.md +25 -11
- package/CHANGELOG.md +146 -0
- package/CLAUDE.md +24 -7
- package/README.ja.md +15 -10
- package/README.md +21 -13
- package/README.zh-CN.md +17 -12
- package/data/authored/core-seats.mjs +808 -0
- package/data/authored/growth-seats.mjs +581 -0
- package/data/authored/index.mjs +114 -0
- package/data/authored/quant-seats.mjs +564 -0
- package/data/authored/value-seats.mjs +663 -0
- package/data/build-profile.v1.json +2 -1
- package/data/council-evaluation-protocol.v1.json +7 -4
- package/data/master-selector-method-locales.v1.mjs +10 -0
- package/data/persona-v3-ai-assisted-solo-profile.v1.json +2 -2
- package/data/persona-v3-build-specs.v1.mjs +60 -3
- package/docs/INSTALL.md +6 -10
- package/docs/personas.md +2 -1
- package/docs/plans/v1.0-roadmap.md +487 -0
- package/docs/plans/v1.1-basket-native-seats.md +267 -0
- package/docs/releases/v0.9.5.md +96 -0
- package/docs/releases/v1.0.0.md +164 -0
- package/docs/report-contract.md +30 -6
- package/knowledge/ai-assisted-solo/experiments/runs/a.json +13 -13
- package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/d13.json +126 -126
- package/knowledge/ai-assisted-solo/experiments/runs/d26.json +274 -254
- package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +129 -129
- package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +277 -257
- package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +278 -258
- package/knowledge/ai-assisted-solo/experiments/simulation-input.json +7278 -556
- package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +22 -22
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{change_value_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{power_map.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{compute_power_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{timeline_reverse_valuation.ai-review.json → price_implied_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{crowding_cost_stress.ai-review.json → nominal_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{factor_decomposer.ai-review.json → real_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/expected_return_over_long_bond.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/fundamental_expected_return.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{incremental_returns.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{owner_earnings_rebuilder.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{mispricing_carry.ai-review.json → net_current_asset_surplus_per_share.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{capital_structure_reader.ai-review.json → net_current_asset_value_per_share.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{cost_adoption_curve.ai-review.json → current_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{capture_valuation_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{regime_classifier.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/{master_munger/reviews/incentive_map.ai-review.json → master_dalio/reviews/real_curve_slope.ai-review.json} +51 -51
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{reverse_valuation.ai-review.json → implied_equity_risk_premium.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{story_dcf.ai-review.json → premium_versus_long_run_average.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{liquidity_revision_map.ai-review.json → liquidity_curve_impulse.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{inflection_payoff.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{user_value_evidence.ai-review.json → five_year_opportunity_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{opportunity_cost.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{research_productivity.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{scuttlebutt_graph.ai-review.json → reinvestment_spread.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/{master_dalio/reviews/debt_driver_stress.ai-review.json → master_forensic_short/reviews/cash_conversion_gap.ai-review.json} +51 -51
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/{accounting_rebuilder.ai-review.json → cash_cover_of_leverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{asset_floor.ai-review.json → defensive_hurdle_base.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{normalized_earnings.ai-review.json → half_normalised_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{penetration_liquidity.ai-review.json → cash_quality_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{promoter_governance.ai-review.json → real_structural_growth.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{recovery_waterfall.ai-review.json → downside_asset_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{cash_catalyst_compare.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{promise_integrity_ledger.ai-review.json → cash_backed_decade_return.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{ten_year_return_bridge.ai-review.json → decade_return_over_long_bond.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{story_numbers_check.ai-review.json → growth_justified_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{category_classifier.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{cycle_temperature.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{implied_expectations.ai-review.json → equity_over_corporate_debt.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/{failure_path_graph.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/reported_earnings_cash_gap.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{surface_builder.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{greeks_payoff.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{downside_floor.ai-review.json → downside_floor_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{discrete_payoff.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{leakage_audit.ai-review.json → absolute_session_move.ai-review.json} +42 -42
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{oos_cost_test.ai-review.json → session_move_over_implied.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{realized_vol_forecast.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{net_edge_sizer.ai-review.json → volatility_per_unit_of_width.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reflexivity_graph.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reversal_monitor.ai-review.json → financing_burden.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{tail_friction.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{payoff_ruin.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{fractional_kelly.ai-review.json → edge_per_unit_of_volatility.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{edge_recalculator.ai-review.json → net_edge.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/review-manifest.json +288 -270
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-adjudications/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-extractions/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-skeptic-reviews/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-source-prereviews/index.json +6 -2
- package/knowledge/solo-test/masters/master_ackman/decision_policy.json +122 -11
- package/knowledge/solo-test/masters/master_ackman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_ackman/manifest.json +13 -6
- package/knowledge/solo-test/masters/master_ackman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_ackman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_ackman/tools.json +56 -30
- package/knowledge/solo-test/masters/master_aschenbrenner/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_aschenbrenner/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +12 -4
- package/knowledge/solo-test/masters/master_aschenbrenner/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_aschenbrenner/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_aschenbrenner/tools.json +56 -30
- package/knowledge/solo-test/masters/master_asness/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_asness/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_asness/manifest.json +11 -4
- package/knowledge/solo-test/masters/master_asness/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_asness/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_asness/tools.json +56 -30
- package/knowledge/solo-test/masters/master_bogle/counterfactuals.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_policy.json +170 -0
- package/knowledge/solo-test/masters/master_bogle/doctrine.jsonl +14 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/calibration_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/experiments.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/golden_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/pairwise_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/failures.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/manifest.json +141 -0
- package/knowledge/solo-test/masters/master_bogle/memory_policy.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/provisional-index.json +41 -0
- package/knowledge/solo-test/masters/master_bogle/research_policy.json +11 -0
- package/knowledge/solo-test/masters/master_bogle/sources.jsonl +1 -0
- package/knowledge/solo-test/masters/master_bogle/tools.json +120 -0
- package/knowledge/solo-test/masters/master_bogle/voice.en.md +7 -0
- package/knowledge/solo-test/masters/master_bogle/voice.zh.md +7 -0
- package/knowledge/solo-test/masters/master_buffett/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_buffett/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_buffett/manifest.json +10 -4
- package/knowledge/solo-test/masters/master_buffett/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_buffett/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_buffett/tools.json +55 -29
- package/knowledge/solo-test/masters/master_burry/decision_policy.json +102 -12
- package/knowledge/solo-test/masters/master_burry/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_burry/manifest.json +12 -6
- package/knowledge/solo-test/masters/master_burry/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_burry/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_burry/tools.json +56 -30
- package/knowledge/solo-test/masters/master_cathie_wood/decision_policy.json +74 -12
- package/knowledge/solo-test/masters/master_cathie_wood/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +12 -6
- package/knowledge/solo-test/masters/master_cathie_wood/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_cathie_wood/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_cathie_wood/tools.json +56 -30
- package/knowledge/solo-test/masters/master_dalio/decision_policy.json +123 -16
- package/knowledge/solo-test/masters/master_dalio/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_dalio/manifest.json +10 -4
- package/knowledge/solo-test/masters/master_dalio/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_dalio/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_dalio/tools.json +56 -30
- package/knowledge/solo-test/masters/master_damodaran/decision_policy.json +58 -10
- package/knowledge/solo-test/masters/master_damodaran/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_damodaran/manifest.json +9 -4
- package/knowledge/solo-test/masters/master_damodaran/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_damodaran/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_damodaran/tools.json +54 -28
- package/knowledge/solo-test/masters/master_druckenmiller/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_druckenmiller/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +11 -4
- package/knowledge/solo-test/masters/master_druckenmiller/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_druckenmiller/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_druckenmiller/tools.json +55 -29
- package/knowledge/solo-test/masters/master_duan_yongping/decision_policy.json +138 -13
- package/knowledge/solo-test/masters/master_duan_yongping/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +17 -7
- package/knowledge/solo-test/masters/master_duan_yongping/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_duan_yongping/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_duan_yongping/tools.json +82 -30
- package/knowledge/solo-test/masters/master_fisher/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_fisher/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_fisher/manifest.json +13 -6
- package/knowledge/solo-test/masters/master_fisher/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_fisher/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_fisher/tools.json +58 -32
- package/knowledge/solo-test/masters/master_forensic_short/decision_policy.json +93 -14
- package/knowledge/solo-test/masters/master_forensic_short/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_forensic_short/manifest.json +6 -4
- package/knowledge/solo-test/masters/master_forensic_short/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_forensic_short/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_forensic_short/tools.json +53 -27
- package/knowledge/solo-test/masters/master_graham/decision_policy.json +103 -12
- package/knowledge/solo-test/masters/master_graham/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_graham/manifest.json +12 -4
- package/knowledge/solo-test/masters/master_graham/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_graham/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_graham/tools.json +67 -28
- package/knowledge/solo-test/masters/master_jhunjhunwala/decision_policy.json +77 -12
- package/knowledge/solo-test/masters/master_jhunjhunwala/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +11 -6
- package/knowledge/solo-test/masters/master_jhunjhunwala/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_jhunjhunwala/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_jhunjhunwala/tools.json +54 -28
- package/knowledge/solo-test/masters/master_klarman/decision_policy.json +105 -14
- package/knowledge/solo-test/masters/master_klarman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_klarman/manifest.json +8 -2
- package/knowledge/solo-test/masters/master_klarman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_klarman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_klarman/tools.json +55 -29
- package/knowledge/solo-test/masters/master_li_lu/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_li_lu/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_li_lu/manifest.json +13 -6
- package/knowledge/solo-test/masters/master_li_lu/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_li_lu/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_li_lu/tools.json +58 -32
- package/knowledge/solo-test/masters/master_lynch/decision_policy.json +127 -16
- package/knowledge/solo-test/masters/master_lynch/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_lynch/manifest.json +14 -6
- package/knowledge/solo-test/masters/master_lynch/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_lynch/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_lynch/tools.json +67 -28
- package/knowledge/solo-test/masters/master_marks/decision_policy.json +71 -9
- package/knowledge/solo-test/masters/master_marks/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_marks/manifest.json +11 -6
- package/knowledge/solo-test/masters/master_marks/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_marks/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_marks/tools.json +54 -28
- package/knowledge/solo-test/masters/master_munger/decision_policy.json +141 -16
- package/knowledge/solo-test/masters/master_munger/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_munger/manifest.json +10 -6
- package/knowledge/solo-test/masters/master_munger/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_munger/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_munger/tools.json +52 -26
- package/knowledge/solo-test/masters/master_natenberg/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_natenberg/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_natenberg/manifest.json +9 -6
- package/knowledge/solo-test/masters/master_natenberg/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_natenberg/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_natenberg/tools.json +50 -24
- package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +125 -14
- package/knowledge/solo-test/masters/master_pabrai/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_pabrai/manifest.json +8 -2
- package/knowledge/solo-test/masters/master_pabrai/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_pabrai/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_pabrai/tools.json +55 -29
- package/knowledge/solo-test/masters/master_simons/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_simons/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_simons/manifest.json +8 -4
- package/knowledge/solo-test/masters/master_simons/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_simons/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_simons/tools.json +43 -30
- package/knowledge/solo-test/masters/master_sinclair/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_sinclair/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_sinclair/manifest.json +8 -6
- package/knowledge/solo-test/masters/master_sinclair/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_sinclair/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_sinclair/tools.json +54 -28
- package/knowledge/solo-test/masters/master_soros/decision_policy.json +98 -10
- package/knowledge/solo-test/masters/master_soros/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_soros/manifest.json +10 -7
- package/knowledge/solo-test/masters/master_soros/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_soros/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_soros/tools.json +54 -28
- package/knowledge/solo-test/masters/master_taleb/decision_policy.json +124 -13
- package/knowledge/solo-test/masters/master_taleb/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_taleb/manifest.json +9 -5
- package/knowledge/solo-test/masters/master_taleb/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_taleb/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_taleb/tools.json +50 -24
- package/knowledge/solo-test/masters/master_thorp/decision_policy.json +61 -13
- package/knowledge/solo-test/masters/master_thorp/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_thorp/manifest.json +11 -6
- package/knowledge/solo-test/masters/master_thorp/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_thorp/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_thorp/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/compilation-manifest.json +290 -264
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/price_implied_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/nominal_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/real_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/components/tools.json +120 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/expected_return_over_long_bond.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/fundamental_expected_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_surplus_per_share.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_value_per_share.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/current_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/real_curve_slope.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/implied_equity_risk_premium.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/{reverse_valuation.derived-proxy-evidence.json → premium_versus_long_run_average.derived-proxy-evidence.json} +29 -16
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_curve_impulse.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/components/tools.json +84 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/five_year_opportunity_cost.derived-proxy-evidence.json +102 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/reinvestment_spread.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/components/tools.json +55 -29
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/{accounting_rebuilder.derived-proxy-evidence.json → cash_conversion_gap.derived-proxy-evidence.json} +28 -15
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/cash_cover_of_leverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/defensive_hurdle_base.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/half_normalised_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/cash_quality_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/real_structural_growth.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/downside_asset_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/cash_backed_decade_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/decade_return_over_long_bond.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/growth_justified_capitalisation.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/equity_over_corporate_debt.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/components/tools.json +54 -28
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/reported_earnings_cash_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/{surface_builder.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/components/tools.json +45 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/{master_natenberg/provisional-derivations/greeks_payoff.derived-proxy-evidence.json → master_simons/provisional-derivations/absolute_session_move.derived-proxy-evidence.json} +17 -17
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/session_move_over_implied.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/volatility_per_unit_of_width.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/financing_burden.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/{tail_friction.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_per_unit_of_volatility.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/net_edge.derived-proxy-evidence.json +76 -0
- package/mcp/lib/breadth.mjs +126 -0
- package/mcp/lib/constants.mjs +15 -0
- package/mcp/lib/damodaran.mjs +119 -0
- package/mcp/lib/fred.mjs +246 -0
- package/mcp/lib/fund-holdings-parsers.mjs +297 -0
- package/mcp/lib/fund-observations.mjs +152 -0
- package/mcp/lib/fundamentals.mjs +806 -0
- package/mcp/lib/funds.mjs +785 -0
- package/mcp/lib/gates.mjs +71 -4
- package/mcp/lib/grounding.mjs +209 -36
- package/mcp/lib/index-aggregate.mjs +733 -0
- package/mcp/lib/insider-ownership.mjs +149 -0
- package/mcp/lib/instrument-facts.mjs +855 -0
- package/mcp/lib/instruments.mjs +216 -0
- package/mcp/lib/markdown.mjs +216 -43
- package/mcp/lib/master-catalog.mjs +4 -0
- package/mcp/lib/orchestrator.mjs +173 -29
- package/mcp/lib/packets.mjs +59 -6
- package/mcp/lib/personas/engine.mjs +23 -10
- package/mcp/lib/personas-v3/deterministic-executor.mjs +13 -2
- package/mcp/lib/personas-v3/ga-external-evidence.mjs +3 -2
- package/mcp/lib/personas-v3/ga-gate.mjs +2 -1
- package/mcp/lib/personas-v3/ga-package-evidence.mjs +5 -4
- package/mcp/lib/personas-v3/grounding-adapter.mjs +309 -2
- package/mcp/lib/personas-v3/production-root.mjs +5 -4
- package/mcp/lib/personas-v3/release-formula-evidence.mjs +14 -7
- package/mcp/lib/personas-v3/release-source-evidence.mjs +2 -1
- package/mcp/lib/personas-v3/releases.mjs +5 -4
- package/mcp/lib/personas-v3/runtime-release-integrity.mjs +6 -5
- package/mcp/lib/personas-v3/semantic-source-adjudication.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-extraction.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-skeptic-review.mjs +2 -1
- package/mcp/lib/personas-v3/source-review-operations.mjs +3 -2
- package/mcp/lib/personas-v3/staging.mjs +22 -3
- package/mcp/lib/prompts.mjs +87 -3
- package/mcp/lib/quotes.mjs +5 -0
- package/mcp/lib/rpc.mjs +27 -10
- package/mcp/lib/run-store.mjs +5 -3
- package/mcp/lib/sec.mjs +32 -0
- package/mcp/lib/tables.mjs +11 -0
- package/mcp/lib/voice.mjs +122 -0
- package/mcp/lib/xbrl-aggregates.mjs +153 -0
- package/mcp/lib/xbrl-series.mjs +341 -0
- package/mcp/lib/xlsx.mjs +155 -0
- package/package.json +5 -5
- package/personas/masters/masters-value/bogle.md +145 -0
- package/schemas/council-evaluation-protocol-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-assisted-solo-profile-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-machine-simulation-v1.schema.json +1 -1
- package/schemas/persona-v3-build-spec-v1.schema.json +3 -3
- package/schemas/persona-v3-release-formula-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-release-manifest-v1.schema.json +6 -6
- package/schemas/persona-v3-release-source-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-tool-graph-v1.schema.json +1 -1
- package/schemas/source-review-batch-v1.schema.json +9 -9
- package/scripts/assemble-persona-v3-release.mjs +3 -2
- package/scripts/build-persona-v3-solo-test-packs.mjs +6 -8
- package/scripts/check-persona-v3-ga.mjs +1 -1
- package/scripts/check-persona-v3-production-candidates.mjs +1 -1
- package/scripts/compile-persona-v3-formulas.mjs +19 -18
- package/scripts/doctor.mjs +11 -9
- package/scripts/export-persona-source-review-batch.mjs +1 -1
- package/scripts/generate-persona-v3-drafts.mjs +2 -2
- package/scripts/lib/build-profile.mjs +24 -0
- package/scripts/lib/council-evaluation-protocol.mjs +7 -6
- package/scripts/lib/host-capabilities.mjs +2 -1
- package/scripts/lib/packaged-host-parity.mjs +9 -3
- package/scripts/lib/persona-v3-ai-assisted-solo-status.mjs +6 -4
- package/scripts/lib/persona-v3-ai-formula-review.mjs +6 -5
- package/scripts/lib/persona-v3-ai-machine-simulations.mjs +32 -4
- package/scripts/lib/persona-v3-build-specs.mjs +3 -2
- package/scripts/lib/persona-v3-draft-packs.mjs +2 -2
- package/scripts/lib/persona-v3-formula-pipeline.mjs +11 -10
- package/scripts/lib/persona-v3-production-candidates.mjs +10 -9
- package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +188 -16
- package/scripts/lib/persona-v3-solo-test-packs.mjs +112 -11
- package/scripts/package-smoke.mjs +2 -1
- package/scripts/report-persona-corpus-gaps.mjs +4 -1
- package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
- package/scripts/scaffold-persona-v3-staging.mjs +1 -1
- package/skills/agent-skills-governance/SKILL.md +8 -2
- package/skills/alphacouncil-agent/SKILL.md +12 -4
- package/skills/public-equity-investing/SKILL.md +17 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/borrow_catalyst.ai-review.json +0 -277
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/change_value_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/power_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/compute_power_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/timeline_reverse_valuation.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/crowding_cost_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/factor_decomposer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/incremental_returns.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_rebuilder.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/capital_structure_reader.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/mispricing_carry.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/capture_valuation_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/cost_adoption_curve.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/debt_driver_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/regime_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/story_dcf.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/inflection_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_revision_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/opportunity_cost.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/user_value_evidence.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/research_productivity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/scuttlebutt_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/borrow_catalyst.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/asset_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/normalized_earnings.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/penetration_liquidity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/promoter_governance.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/cash_catalyst_compare.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/recovery_waterfall.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/promise_integrity_ledger.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/ten_year_return_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/category_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/story_numbers_check.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/cycle_temperature.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/implied_expectations.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/failure_path_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/incentive_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/discrete_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/leakage_audit.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/oos_cost_test.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/net_edge_sizer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/realized_vol_forecast.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reflexivity_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reversal_monitor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/payoff_ruin.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_recalculator.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/fractional_kelly.derived-proxy-evidence.json +0 -64
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# v1.1 — Every seat can price a basket
|
|
2
|
+
|
|
3
|
+
## The complaint, and what is actually wrong
|
|
4
|
+
|
|
5
|
+
A SOX run ended with 25 of 27 seats `out_of_scope`. That reads as "the masters don't answer",
|
|
6
|
+
and the reflex is to blame the seats. The seats are not the problem. Three separate things are.
|
|
7
|
+
|
|
8
|
+
### 1. SOX has no data path at all
|
|
9
|
+
|
|
10
|
+
`INDEX_PROXIES` covers `^GSPC`, `^NDX` and `^DJI`. `FUND_REGISTRY` covers eleven tickers.
|
|
11
|
+
Neither contains `^SOX`, `SOXX`, `SMH` or `SOXQ`. With no registered holdings source there is no
|
|
12
|
+
look-through, no top-ten weight, no breadth, no aggregate valuation — so even `master_bogle`,
|
|
13
|
+
the seat built specifically to price a basket, had nothing to read and correctly abstained.
|
|
14
|
+
|
|
15
|
+
The run reported this honestly ("缺少同日SOX聚合估值", "SOXQ 只是6月30日滞后代理"), which is
|
|
16
|
+
why it is diagnosable at all. But an honest report of a gap is not a substitute for the data.
|
|
17
|
+
|
|
18
|
+
### 2. A failed fetch silently halves the answer
|
|
19
|
+
|
|
20
|
+
Two QQQ runs minutes apart, same code:
|
|
21
|
+
|
|
22
|
+
| run | basket facts produced |
|
|
23
|
+
|---|---|
|
|
24
|
+
| A | 13 — top-ten weight, HHI, breadth ×2, AUM, leverage, revenue growth, aggregate P/E ×3, dividend yield, ERP, percentile |
|
|
25
|
+
| B | 6 — the aggregate valuation block only |
|
|
26
|
+
|
|
27
|
+
One failed holdings fetch removes everything downstream of it. Nothing in the report says the
|
|
28
|
+
run was degraded, so the same symbol answers differently on different days and the difference
|
|
29
|
+
looks like the seats changing their minds. **A degraded run must be labelled as degraded.**
|
|
30
|
+
|
|
31
|
+
### 3. Company facts do not rise to the basket level
|
|
32
|
+
|
|
33
|
+
This is the real one, and it is a design gap rather than a defect. On QQQ — where the data IS
|
|
34
|
+
complete — 18 of 27 seats are still blocked, and the blocking facts fall into three classes:
|
|
35
|
+
|
|
36
|
+
| class | facts | seats blocked |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| **Absolute currency** | `capital_allocation.share_count`, `financial.free_cash_flow_5y`, `financial.owner_earnings`, `financial.net_current_asset_value`, `valuation.downside_asset_value`, `valuation.downside_floor` | 10, 4, 2, 1, 1, 1 |
|
|
39
|
+
| **Pure ratio, legal but unwired** | `accounting.cash_conversion`, `financial.gross_margin_5y`, `financial.net_margin_5y`, `financial.interest_coverage`, `financial.return_on_equity_10y`, `financial.incremental_return_on_capital` | 4, 2, 2, 2, 1, 1 |
|
|
40
|
+
| **Index-level market data** | `options.implied_volatility`, `options.skew_25d`, `execution.bid_ask` | 5 |
|
|
41
|
+
|
|
42
|
+
`capital_allocation.share_count` alone blocks ten seats — and no seat wants the share count.
|
|
43
|
+
They want it as a **denominator**: owner earnings over market capitalisation, free cash flow
|
|
44
|
+
over market capitalisation, net current assets over price. Summing share counts across a basket
|
|
45
|
+
is meaningless, which is exactly why `LOOK_THROUGH_BLOCKED` refuses it. But converting each
|
|
46
|
+
constituent's absolute figure to a **yield first**, then weighting the yields, is arithmetically
|
|
47
|
+
sound and is what those methods were reaching for anyway. The existing code comment says so:
|
|
48
|
+
|
|
49
|
+
> "…so they become yields first. That is real and worth doing; it is simply not this pass."
|
|
50
|
+
|
|
51
|
+
This is that pass.
|
|
52
|
+
|
|
53
|
+
## What this is not
|
|
54
|
+
|
|
55
|
+
It is not "make the masters say something about indices". A seat that produces a number because
|
|
56
|
+
the pipeline handed it one, without the number meaning what the method means, is worse than an
|
|
57
|
+
abstention — it is an abstention wearing a verdict. Two rules govern every change below:
|
|
58
|
+
|
|
59
|
+
1. **A basket reading must be the same question the method asks of a company.** Buffett asks
|
|
60
|
+
what the business earns for its owners against what the market charges. Asked of a basket
|
|
61
|
+
that is a weighted owner-earnings yield. Asked of a basket it is *not* "the ETF's owner
|
|
62
|
+
earnings", and no amount of wanting an answer makes it one.
|
|
63
|
+
2. **A threshold authored for a company is not automatically valid for a basket.** Graham's
|
|
64
|
+
net-current-asset test on any broad index will fail every time; a seat that always says the
|
|
65
|
+
same thing regardless of input has no information in it. Where a company threshold is
|
|
66
|
+
degenerate on a basket, the seat gets an explicitly authored basket band — or it keeps
|
|
67
|
+
declining, and says why.
|
|
68
|
+
|
|
69
|
+
## Plan
|
|
70
|
+
|
|
71
|
+
### Phase A — coverage and honesty (immediate, fixes the reported run)
|
|
72
|
+
|
|
73
|
+
**A1. Register the missing baskets.** `^SOX`, `^RUT`, `^IXIC` in `INDEX_PROXIES`; `SOXX`, `SMH`,
|
|
74
|
+
`SOXQ`, `IWM`, `VTI`, `XLK`, `XLF`, `XLE` and the rest of the sector SPDRs in `FUND_REGISTRY`.
|
|
75
|
+
Each needs a real issuer product id or slug, verified against a live fetch, not guessed.
|
|
76
|
+
|
|
77
|
+
**A2. Fail loudly on an unregistered basket.** Today an unknown index quietly produces nothing.
|
|
78
|
+
It should name itself as unregistered and say which issuer file would fix it, so the next SOX is
|
|
79
|
+
a one-line registry addition rather than a diagnosis.
|
|
80
|
+
|
|
81
|
+
**A3. Label a degraded run.** The instrument block records which sources answered and which did
|
|
82
|
+
not, and the report states it. A run that lost its holdings feed must not present as a run that
|
|
83
|
+
had one. This is the difference between "the seats abstained" and "the data did not arrive".
|
|
84
|
+
|
|
85
|
+
### Phase B — wire the ratio aggregates that are already legal (unlocks ~8 seats)
|
|
86
|
+
|
|
87
|
+
`LOOK_THROUGH_FACT_RULES` maps two facts today. Every pure ratio in the table above aggregates
|
|
88
|
+
as a weight-weighted mean under the same coverage floor already enforced (refuse below 50%).
|
|
89
|
+
Add: cash conversion, gross margin, net margin, interest coverage, ten-year ROE, incremental
|
|
90
|
+
return on capital.
|
|
91
|
+
|
|
92
|
+
Unblocks munger, fisher, li_lu, forensic_short, taleb, soros, jhunjhunwala, bogle.
|
|
93
|
+
|
|
94
|
+
**Done and measured.** Two things had to be fixed beyond the mapping itself:
|
|
95
|
+
|
|
96
|
+
- The margins, cash conversion, ten-year ROE and interest coverage come from the **mechanical
|
|
97
|
+
screen**, not from the derived fundamentals — and the look-through only ran the latter, so
|
|
98
|
+
those aggregates could never have had inputs. Both readers now run on one Company Facts
|
|
99
|
+
document per constituent, at no extra network cost.
|
|
100
|
+
- An aggregate arrived as a bare `decimal` with the outer envelope of its constituents'
|
|
101
|
+
reporting periods. Interest coverage and cash conversion are `multiple`s, and the union of
|
|
102
|
+
forty five-year spans is five years plus a year of calendar edges — so facts were present and
|
|
103
|
+
rejected by the contract, which reads exactly like being absent. An aggregate now carries the
|
|
104
|
+
same unit as its single-company counterpart, over the **median** constituent span.
|
|
105
|
+
|
|
106
|
+
Result on QQQ: 13 basket facts → 18; blocked seats 18 → 11. The residue is almost entirely the
|
|
107
|
+
absolute-currency class, which is what Phase C exists for — the control group the sequencing
|
|
108
|
+
note asked for.
|
|
109
|
+
|
|
110
|
+
### Phase C — per-constituent yields (unlocks ~10 seats, the big one)
|
|
111
|
+
|
|
112
|
+
New aggregation kind in `funds.mjs`: `yield_of(absolute_fact, market_capitalisation)`. For each
|
|
113
|
+
resolved constituent, divide the absolute figure by that constituent's own market cap, then
|
|
114
|
+
weight the resulting yields. Produces:
|
|
115
|
+
|
|
116
|
+
| new basket fact | from | unblocks |
|
|
117
|
+
|---|---|---|
|
|
118
|
+
| `valuation.owner_earnings_yield` | owner earnings ÷ mcap | buffett, ackman |
|
|
119
|
+
| `valuation.free_cash_flow_yield` | 5y FCF ÷ mcap | graham, aschenbrenner, cathie_wood, lynch |
|
|
120
|
+
| `valuation.ncav_to_price` | NCAV ÷ mcap | burry |
|
|
121
|
+
| `valuation.downside_floor_ratio` | downside floor ÷ mcap | klarman, pabrai |
|
|
122
|
+
|
|
123
|
+
Each seat's tool then reads the basket yield where it read a company yield. The arithmetic is
|
|
124
|
+
identical; only the input changes. Market capitalisation per constituent is already available —
|
|
125
|
+
the fundamentals path produces share count, and the quote path produces price.
|
|
126
|
+
|
|
127
|
+
**Done and measured — and implemented differently from the sketch above, for the better.**
|
|
128
|
+
Emitting new yield fact ids would have required re-authoring ten seats to read them. It is
|
|
129
|
+
also not what a fund owns. A fund holding 1% of a company has a claim on 1% of its owner
|
|
130
|
+
earnings, and summing that across the basket is a dollar figure ABOUT THE FUND:
|
|
131
|
+
|
|
132
|
+
fund's claim = AUM x SUM over i of ( weight_i / market_cap_i ) x figure_i
|
|
133
|
+
|
|
134
|
+
This is ordinary look-through accounting, not the category error `LOOK_THROUGH_BLOCKED`
|
|
135
|
+
refuses — that one sums constituents as though the fund owned each outright. Because a fund's
|
|
136
|
+
market capitalisation IS its AUM, a seat dividing this claim by market capitalisation gets the
|
|
137
|
+
weighted look-through yield **with no change to its method at all**.
|
|
138
|
+
|
|
139
|
+
Per-constituent market capitalisation costs nothing extra: the share count is already fetched
|
|
140
|
+
by the fundamentals pass and the price by the breadth pass, which fetched a year of closes for
|
|
141
|
+
every constituent and threw the last one away.
|
|
142
|
+
|
|
143
|
+
Two contract corrections fell out of it:
|
|
144
|
+
|
|
145
|
+
- A share count is a point-in-time quantity, not a span. It was declared over a fiscal year
|
|
146
|
+
because that is how the filing reports it, which meant a fund's count — a genuine instant —
|
|
147
|
+
could satisfy no contract. It exists to denominate a market capitalisation, where how many
|
|
148
|
+
shares there are matters and which window they were averaged over does not; the averaging
|
|
149
|
+
basis stays stated in `assumptions`.
|
|
150
|
+
- A claim inherits the reporting window of the figure it is a claim on.
|
|
151
|
+
|
|
152
|
+
**The honest limit, recorded on every such fact:** a weighted mean of yields is not the yield of
|
|
153
|
+
the aggregate, and the difference grows with dispersion. It is the right number for "what does
|
|
154
|
+
the average dollar in this basket earn", which is the question these methods ask, and it is the
|
|
155
|
+
wrong number for "what would this basket earn if it were one company". The fact carries which
|
|
156
|
+
one it is.
|
|
157
|
+
|
|
158
|
+
### Phase D — the basket's own option surface (unlocks ~4 seats)
|
|
159
|
+
|
|
160
|
+
Volatility seats read `options.implied_volatility`, `options.skew_25d` and `execution.bid_ask`,
|
|
161
|
+
none of which the basket path supplies today. Index options (SPX, NDX, SOX) and liquid ETF
|
|
162
|
+
options both exist on the same chain endpoint the single-stock path already uses; the work is
|
|
163
|
+
routing a basket symbol to its own chain rather than skipping options for non-companies.
|
|
164
|
+
|
|
165
|
+
Unblocks simons, thorp, natenberg, sinclair; strengthens taleb.
|
|
166
|
+
|
|
167
|
+
### Phase F — fund flow, which is currently a gap for every issuer
|
|
168
|
+
|
|
169
|
+
Flow is the question people actually ask of an ETF — is money going in or out — and today the
|
|
170
|
+
answer is "gap" for all four issuers, for two different reasons.
|
|
171
|
+
|
|
172
|
+
`fundFlow` computes the only honest version: `(shares_now − shares_prior) × NAV`. Shares
|
|
173
|
+
created and redeemed are what a flow IS; an AUM change is a flow plus a market move, and
|
|
174
|
+
reporting the second as the first is the standard way this number gets faked.
|
|
175
|
+
|
|
176
|
+
What is available, verified by live fetch:
|
|
177
|
+
|
|
178
|
+
| issuer | shares outstanding | flow today |
|
|
179
|
+
|---|---|---|
|
|
180
|
+
| iShares | **yes** — in the holdings CSV header (`Shares Outstanding, "82,650,000.00"`) with its own date | no: only today's file is retrievable |
|
|
181
|
+
| SSGA | sometimes — absent from some funds' holdings files | no |
|
|
182
|
+
| Invesco | no — `/nav` and `/profile` both answer HTTP 501 | no |
|
|
183
|
+
| Vanguard | no keyless endpoint | no |
|
|
184
|
+
|
|
185
|
+
So even where the share count is published, only **one** dated observation is reachable, and a
|
|
186
|
+
flow needs two. iShares serves no dated holdings file (`?asOfDate=` is a 404) and its product
|
|
187
|
+
page carries field metadata, not a time series. There is no keyless history to fetch.
|
|
188
|
+
|
|
189
|
+
**F1. An observation ledger.** Every run already retrieves the holdings file. Record what it
|
|
190
|
+
saw — symbol, as-of date, shares outstanding, NAV, AUM — under the run data directory, append
|
|
191
|
+
only, one row per symbol per as-of date. From the second observation of a symbol onward the
|
|
192
|
+
flow is computable exactly, by the arithmetic already implemented.
|
|
193
|
+
|
|
194
|
+
This bootstraps rather than backfills, and that is the honest trade: a user who runs SOXX
|
|
195
|
+
weekly has weekly flows after the second week. It is not a substitute for a vendor flow series
|
|
196
|
+
and the fact says so.
|
|
197
|
+
|
|
198
|
+
**F2. Flow as a typed fact.** `fund.net_flow` (monetary, currency + scale) and
|
|
199
|
+
`fund.net_flow_ratio` (flow ÷ AUM, so a small fund's move is comparable to a large one), each
|
|
200
|
+
carrying the two dated observations it was computed from and the gap in days between them. A
|
|
201
|
+
flow computed across a 40-day gap is not a daily flow and must not be read as one.
|
|
202
|
+
|
|
203
|
+
**F3. Seats that should read it.** Flow is a crowding and reflexivity signal, not a valuation
|
|
204
|
+
one. `master_soros` reads it directly — participant behaviour reinforcing price is his
|
|
205
|
+
mechanism, and creations against a rising price is that loop in its most literal form.
|
|
206
|
+
`master_druckenmiller` reads it as price confirmation. `master_marks` reads persistent inflow
|
|
207
|
+
into an already-expensive basket as where the cycle stands. No valuation seat should read it:
|
|
208
|
+
a flow says nothing about what a business earns.
|
|
209
|
+
|
|
210
|
+
**Done and measured.** The accuracy question turned out to be the whole problem, and the
|
|
211
|
+
answer is which share count is allowed to price a flow.
|
|
212
|
+
|
|
213
|
+
A flow is a DIFFERENCE of two counts, so it cancels the number and keeps the error. Three
|
|
214
|
+
routes to a count exist and only two may be differenced:
|
|
215
|
+
|
|
216
|
+
| route | basis | flow-eligible |
|
|
217
|
+
|---|---|---|
|
|
218
|
+
| the holdings file's own `Shares Outstanding` (iShares) | filed | **yes** |
|
|
219
|
+
| issuer assets ÷ issuer NAV, same source, same date | an identity, not an estimate | **yes** |
|
|
220
|
+
| disclosed positions ÷ market price | reconstruction | **no** |
|
|
221
|
+
|
|
222
|
+
The third is fine for a market capitalisation — the product is the size we already had — and
|
|
223
|
+
unfit for a flow: a 95%-priced position sum and a premium to NAV each carry error that survives
|
|
224
|
+
the subtraction. Half a percent at each end of a $300bn fund manufactures $1.5bn of flow that
|
|
225
|
+
never happened, and it appears as conviction exactly when the market moved.
|
|
226
|
+
|
|
227
|
+
The second route is what makes **sector ETFs** work, which is the case people ask about most.
|
|
228
|
+
The Select Sector SPDRs publish no share count in their holdings file, but do publish assets
|
|
229
|
+
and NAV — and assets over NAV is shares outstanding by definition. Verified live: XLK 654.8M
|
|
230
|
+
shares, SOXX 82.7M from its filed count.
|
|
231
|
+
|
|
232
|
+
**F4. Refuse rather than estimate.** Where only one observation exists, or the issuer publishes
|
|
233
|
+
no share count at all, the fact is absent with a named reason. The failure mode this guards
|
|
234
|
+
against is deriving flow from an AUM change — which would silently report a market rally as an
|
|
235
|
+
inflow, and would be wrong in exactly the direction that makes a momentum story look confirmed.
|
|
236
|
+
|
|
237
|
+
### Phase E — basket bands where the company threshold is degenerate
|
|
238
|
+
|
|
239
|
+
For each seat unblocked above, decide explicitly whether the authored threshold means the same
|
|
240
|
+
thing on a basket. Graham's NCAV line and Burry's net-net test are the obvious candidates for a
|
|
241
|
+
basket-specific band. This is authoring work, per seat, and it is what stops Phase C from
|
|
242
|
+
producing eighteen confident numbers that all mean "the pipeline handed me a float".
|
|
243
|
+
|
|
244
|
+
## Expected result
|
|
245
|
+
|
|
246
|
+
| | before | after A+B | after C |
|
|
247
|
+
|---|---|---|---|
|
|
248
|
+
| QQQ | 11/27 | 12/27 | **16/27** |
|
|
249
|
+
| SOXX | 0/27 (unregistered) | 9/27 | **17/27** |
|
|
250
|
+
| SOX | 0/27 (unregistered) | 1/27 | 1/27 |
|
|
251
|
+
| AAPL (company path, control) | 18/27 | 18/27 | **18/27** |
|
|
252
|
+
| union over seven symbols | 26/27 | — | **27/27, none mute** |
|
|
253
|
+
|
|
254
|
+
QQQ trails SOXX because Invesco publishes no share count, so its market capitalisation is
|
|
255
|
+
reconstructed rather than filed, and because more of its constituents fall below the
|
|
256
|
+
look-through coverage floor. SOX itself stays low: it is a cash index with no aggregate P/E
|
|
257
|
+
published by any implemented source, so the valuation seats have nothing to read even now.
|
|
258
|
+
|
|
259
|
+
Measured the same way as v1.0.0: live grounding, no fixtures, contract failures counted
|
|
260
|
+
separately from abstentions.
|
|
261
|
+
|
|
262
|
+
## Sequencing note
|
|
263
|
+
|
|
264
|
+
A and B are mechanical and independently verifiable. C is where the judgment is, and it should
|
|
265
|
+
not start until B is measured — if wiring the legal ratios moves QQQ from 11 to 19, that is the
|
|
266
|
+
control group that tells us the yield conversion is doing what it claims rather than the
|
|
267
|
+
coverage improving underneath it.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# AlphaCouncil Agent v0.9.5 — ETF/Index Routing and Complete Method Handoff (Non-GA)
|
|
2
|
+
|
|
3
|
+
`v0.9.5` is a non-GA GitHub preview that fixes the QQQ acceptance defects found after the
|
|
4
|
+
`v0.9.4` locale release. It does not publish npm, change npm dist-tags, promote a PersonaPack
|
|
5
|
+
maturity level, or claim a new investment conclusion for QQQ.
|
|
6
|
+
|
|
7
|
+
This is a runtime/reporting release, not a method-pack revision. The build profile therefore
|
|
8
|
+
pins `persona_pack_version=0.9.4`: all 26 reviewed solo-test pack hashes and their existing
|
|
9
|
+
machine-simulation evidence remain unchanged while the package/plugin version moves to
|
|
10
|
+
`0.9.5`. Runtime version bumps must not manufacture pack-hash drift and then rerun research
|
|
11
|
+
merely to recover a green check.
|
|
12
|
+
|
|
13
|
+
## Why 0.9.5 exists
|
|
14
|
+
|
|
15
|
+
The failed QQQ experience exposed four separate defects:
|
|
16
|
+
|
|
17
|
+
1. Yahoo's chart response identified QQQ as an ETF, but the quote adapter discarded
|
|
18
|
+
`instrumentType`. Grounding then used the operating-company path and could report the
|
|
19
|
+
predictable SEC Company Facts 404 as a research failure.
|
|
20
|
+
2. Deterministic v3 methods correctly returned `out_of_scope` when their typed facts were
|
|
21
|
+
absent, but the visible handoff did not turn every abstention into a readable per-seat
|
|
22
|
+
statement.
|
|
23
|
+
3. The PM completion path wrote `user_response.md`, then returned only a compact ACK to the
|
|
24
|
+
host. A host could therefore answer with a short recap and hide the selected-seat output
|
|
25
|
+
that existed in artifacts.
|
|
26
|
+
4. `report_quality` required a Master Bench section but did not prove that every selected
|
|
27
|
+
stable method ID and readable final statement appeared in that section.
|
|
28
|
+
|
|
29
|
+
These were runtime and delivery defects, not evidence that twenty-five methods were bearish.
|
|
30
|
+
|
|
31
|
+
## Instrument routing
|
|
32
|
+
|
|
33
|
+
- Quote parsing now preserves Yahoo `instrumentType`, names and exchange timezone.
|
|
34
|
+
- A deterministic classifier distinguishes operating companies, ETFs, mutual funds, cash
|
|
35
|
+
indices, futures, FX and crypto. Yahoo metadata is primary; symbol conventions, quote names
|
|
36
|
+
and SEC ticker/registrant names provide bounded fallbacks.
|
|
37
|
+
- The SEC ticker title and filer profile are resolved before Company Facts is scheduled.
|
|
38
|
+
ETF/fund/index routes explicitly mark operating-company Company Facts and structured issuer
|
|
39
|
+
financials as not applicable instead of recording a false failure.
|
|
40
|
+
- ETF/fund runs use `fund_lookthrough`; cash indices use `index_aggregate`; operating companies
|
|
41
|
+
retain `operating_company`. The type, model and classification source are persisted in
|
|
42
|
+
`status.json`, grounding output and the research dashboard.
|
|
43
|
+
- All eight evidence roles receive a role-specific fund/index assignment. The contract covers
|
|
44
|
+
dated holdings or constituents and weights, concentration, methodology, fees or index rules,
|
|
45
|
+
liquidity, premium/discount or tracking difference, flows, rebalances, lending/derivatives,
|
|
46
|
+
look-through earnings and same-date aggregate valuation with explicit coverage weight.
|
|
47
|
+
- Fund/index prompts forbid fund revenue, company EPS, management guidance and fund-insider
|
|
48
|
+
Form 4 fabrication. A few constituent financial statements may never be added into a
|
|
49
|
+
portfolio financial statement.
|
|
50
|
+
|
|
51
|
+
The classifier does not invent holdings, flows, aggregate EPS or valuation. Those remain
|
|
52
|
+
dated evidence requirements, and missing fields remain report gaps.
|
|
53
|
+
|
|
54
|
+
## Complete selected-seat handoff
|
|
55
|
+
|
|
56
|
+
- Every deterministically completed or declined physical v3 seat now has a readable fallback
|
|
57
|
+
statement in the run language. An ETF/index abstention explains that the method needs dated
|
|
58
|
+
holdings look-through or aggregate-index evidence and that `out_of_scope` is not a bearish
|
|
59
|
+
vote.
|
|
60
|
+
- `plan_visible_run` returns one explanation worker for every non-blocked selected physical
|
|
61
|
+
v3 seat, including a deterministically declined seat. The worker receives the finished
|
|
62
|
+
evidence, acknowledges the frozen stance, and may improve the explanation but cannot vote
|
|
63
|
+
again. PM completion checks `master_status`, not merely the presence of a fallback record.
|
|
64
|
+
- The full chat handoff ends with the exact selected-seat count and one statement for every
|
|
65
|
+
selected stable ID. A full `all` selection therefore ends with 26 lines; quick mode reports
|
|
66
|
+
its actual 1–4 seats rather than claiming 26.
|
|
67
|
+
- Labels state that these are project-derived provisional method-seat outputs, not quotations,
|
|
68
|
+
endorsements or current statements from the named people.
|
|
69
|
+
- Visible PM completion returns `handoff_contract=inline_user_response_v1` and the saved
|
|
70
|
+
`user_response_markdown`. Host instructions require that body to be delivered instead of
|
|
71
|
+
replacing it with a shorter recap. Idempotent PM replays return the same handoff.
|
|
72
|
+
- The final report owns an idempotent fund/index structure section and the recorded Master
|
|
73
|
+
Bench. PM narrative is retained as non-authoritative commentary where it conflicts with a
|
|
74
|
+
system-owned section.
|
|
75
|
+
|
|
76
|
+
## Quality gates and regression coverage
|
|
77
|
+
|
|
78
|
+
- `report_quality.json` records selected/readable/rendered method-statement counts and stable
|
|
79
|
+
IDs. Missing opinions, statements shorter than the readability floor, or an ID absent from
|
|
80
|
+
the published Master Bench force `needs_revision`.
|
|
81
|
+
- Fund/index reports require the structure/look-through section; ordinary-equity reports do
|
|
82
|
+
not.
|
|
83
|
+
- Offline unit and integration coverage includes QQQ/SPY ETF classification, SEC-name fallback,
|
|
84
|
+
cash-index routing, all eight ETF role overrides, fund/index report assembly, a 26-seat final
|
|
85
|
+
handoff, inline visible-PM handoff and replay, and unchanged equity behavior.
|
|
86
|
+
|
|
87
|
+
## Assurance boundary
|
|
88
|
+
|
|
89
|
+
- Build channel: `solo_test`.
|
|
90
|
+
- Runtime/package version: `0.9.5`; unchanged PersonaPack snapshot: `0.9.4`.
|
|
91
|
+
- Physical provisional packs: 26.
|
|
92
|
+
- Persona tools: 52 `provisional_derived_proxy` tools.
|
|
93
|
+
- Operational seats: 0.
|
|
94
|
+
- Validated `method_model` seats: 0.
|
|
95
|
+
- `production_eligible=false`; `method_model_eligible=false`.
|
|
96
|
+
- Formal production GA remains fail-closed.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# AlphaCouncil Agent v1.0.0 — Seats That Can Answer
|
|
2
|
+
|
|
3
|
+
`1.0.0` is the release where the method seats stop abstaining on everything.
|
|
4
|
+
|
|
5
|
+
> **Status: released.** All twenty-seven seats are authored, the trees regenerate from committed
|
|
6
|
+
> sources alone, and `npm test` is green at 961 tests. Measured against live grounding across
|
|
7
|
+
> eight symbols, every one of the twenty-seven seats reaches a stance somewhere, with no
|
|
8
|
+
> contract failures anywhere.
|
|
9
|
+
|
|
10
|
+
## What was actually wrong
|
|
11
|
+
|
|
12
|
+
A council of twenty-six method seats produced one usable opinion, and only on a narrow class
|
|
13
|
+
of symbol. The QQQ run that prompted this release ended with twenty-five `out_of_scope`
|
|
14
|
+
statements and one cautious note about implied volatility. That looked like an ETF problem.
|
|
15
|
+
It was not.
|
|
16
|
+
|
|
17
|
+
Three layers were empty, and each one hid the next:
|
|
18
|
+
|
|
19
|
+
1. **Facts.** `grounding-adapter.mjs` is the only thing in the repo that produces typed facts,
|
|
20
|
+
and it could produce thirteen fact ids. Twenty-five seats required facts that nothing
|
|
21
|
+
generated. The same run against an operating company abstained identically — QQQ was not a
|
|
22
|
+
special case.
|
|
23
|
+
2. **Method.** All twenty-six decision policies were the same generated template: empty
|
|
24
|
+
eligibility, empty vetoes, and two rules scoring an `identity` transform against zero.
|
|
25
|
+
Supplying the missing facts would have bought "owner earnings are positive, therefore
|
|
26
|
+
cautious" — true, and empty.
|
|
27
|
+
3. **Expression.** An abstention rendered as `no_required_fact_types_present`, which reads as
|
|
28
|
+
a broken system rather than as a method declining.
|
|
29
|
+
|
|
30
|
+
## Facts
|
|
31
|
+
|
|
32
|
+
Four feeds, all keyless, each one refusing rather than approximating when a source is absent.
|
|
33
|
+
|
|
34
|
+
**Dated official series.** The macro block already fetched rates, credit and breadth but had
|
|
35
|
+
no publication date of its own, so the adapter skipped the family entirely. A point snapshot
|
|
36
|
+
could not have fixed the seats that needed it: an impulse and a regime are directions, and a
|
|
37
|
+
direction computed from one day of quotes is fabricated precision. FRED's CSV endpoint is
|
|
38
|
+
keyless where its API is not, and every observation publishes its own date — which gives net
|
|
39
|
+
liquidity, its change over a stated window, and the growth/inflation quadrant, each returning
|
|
40
|
+
null rather than a guess when an axis lacks the history to have a direction.
|
|
41
|
+
|
|
42
|
+
**Company fundamentals.** Owner earnings, NCAV, downside asset value and floor, revenue
|
|
43
|
+
growth, incremental return on capital, leverage, share count — derived from XBRL with the
|
|
44
|
+
filing date as `public_at`, never the clock. Owner earnings is labelled `estimated` rather than
|
|
45
|
+
`rederived`: the maintenance/growth capex split is an assumption, and the proxy travels with
|
|
46
|
+
the fact rather than living in a comment.
|
|
47
|
+
|
|
48
|
+
**Fund holdings.** Four issuers' published daily files. Each has a trap that produces wrong
|
|
49
|
+
data rather than an error, so each is checked: the retired iShares path returns HTTP 200 with
|
|
50
|
+
an HTML body for every user agent, so the first line is validated instead of the status; the
|
|
51
|
+
Invesco endpoint truncates to ten holdings under one parameter while still reporting the full
|
|
52
|
+
count, so the count is the checked invariant; a guessed CUSIP resolves to a different fund
|
|
53
|
+
entirely, so only verified identifiers are registered.
|
|
54
|
+
|
|
55
|
+
**Index aggregates.** Valuation, breadth, put/call and volatility. Index P/E is quoted on
|
|
56
|
+
incompatible bases — three sources disagreed by 4.6 turns on the same day — so every valuation
|
|
57
|
+
fact names its basis and sources are never blended for one metric. Constituent lists are
|
|
58
|
+
licensed assets, so constituents come from the tracking fund's published holdings, labelled a
|
|
59
|
+
proxy in the provenance rather than presented as the index.
|
|
60
|
+
|
|
61
|
+
**Look-through.** A basket has no income statement, which is why an operating-company method
|
|
62
|
+
had nothing to read. Buffett defined look-through earnings in the 1990 shareholder letter for
|
|
63
|
+
exactly this situation, so aggregating constituent ratios by weight is the method's own
|
|
64
|
+
answer rather than a workaround. It stays honest by refusing: absolute-currency facts have no
|
|
65
|
+
aggregation path at all — "the fund's owner earnings" is unrepresentable, not discouraged —
|
|
66
|
+
and every aggregate carries the weight it was computed over, because a portfolio ratio
|
|
67
|
+
measured across 8% of a basket is a different claim from one measured across 95%.
|
|
68
|
+
|
|
69
|
+
## Method
|
|
70
|
+
|
|
71
|
+
A seat may now carry its real formula and its real decision policy instead of the generated
|
|
72
|
+
identity proxy. Authored inputs may only reference facts the build spec already declares, so
|
|
73
|
+
the authoring layer cannot quietly widen a seat's contract.
|
|
74
|
+
|
|
75
|
+
One distinction matters more than it looks: `min_coverage` is 1, so a single uncomputable
|
|
76
|
+
*scoring* rule collapses an entire seat to `out_of_scope`. That is the mechanism that produced
|
|
77
|
+
twenty-five abstentions. A "can this method speak at all" test belongs in eligibility, which
|
|
78
|
+
has its own exit and its own explanation, and authored policies are written that way.
|
|
79
|
+
|
|
80
|
+
**Assurance is unchanged and still fail-closed.** These formulas are AI-authored and unreviewed.
|
|
81
|
+
An authored tool records `ai_authored_candidate_formula_not_human_reviewed` in place of the
|
|
82
|
+
`mechanical_identity_proxy` claim, which would otherwise be false. Admission stays
|
|
83
|
+
`operator_lens`, `production_eligible` stays false, and no human has reviewed either kind.
|
|
84
|
+
|
|
85
|
+
## Expression
|
|
86
|
+
|
|
87
|
+
Seats answer five questions in the first person — what I see, how my standard reads it, would
|
|
88
|
+
I act, what changes my mind, where I disagree — and carry a `position_intent`. Intent narrows
|
|
89
|
+
the frozen stance and never reopens it: each stance admits only intents meaning the same thing,
|
|
90
|
+
enforced server-side exactly as a changed stance is, so a worker cannot turn `opposed` into
|
|
91
|
+
`would_buy` by choosing a label.
|
|
92
|
+
|
|
93
|
+
First person is what makes the output readable and is also exactly what could be mistaken for a
|
|
94
|
+
quotation. The prompt requires the method's voice — "this standard asks for X" — never a claim
|
|
95
|
+
about what a living person currently thinks, and the section says so.
|
|
96
|
+
|
|
97
|
+
The bench separates seats that reached a decision from seats that could not. The old layout
|
|
98
|
+
gave both equal weight, so a run where twenty-five seats abstained printed twenty-five
|
|
99
|
+
near-identical rows and buried the one seat with a view. Abstentions now collapse into a single
|
|
100
|
+
paragraph that still names every stable ID — both what the publication gate checks and the
|
|
101
|
+
honest requirement that no seat quietly vanishes.
|
|
102
|
+
|
|
103
|
+
## Fixed
|
|
104
|
+
|
|
105
|
+
- The classifier failed open. With no exchange metadata — the fallback quote path, which
|
|
106
|
+
returns a null instrument type — common fund tickers matched a bare ticker shape and were
|
|
107
|
+
asserted to be operating companies, reproducing the exact defect 0.9.5 set out to fix. A
|
|
108
|
+
filed SIC was documented as evidence of an operating company, but the codes in question are
|
|
109
|
+
what fund registrants file. A fund named after an index matched the bare `index` token and
|
|
110
|
+
was routed as a cash index, which silently disabled its option chain.
|
|
111
|
+
- Reports in Japanese and Korean could never publish. A relabelled commentary section legally
|
|
112
|
+
contains a section alias, heading assignment keeps the richest body, and the per-seat gate
|
|
113
|
+
then failed against PM prose — permanently, since more prose only made the commentary win
|
|
114
|
+
harder. The gate now locates the system section by its content anchor.
|
|
115
|
+
- Worker statements were interpolated raw into a system-owned section, so a statement
|
|
116
|
+
containing a heading captured the section the quality gate validates.
|
|
117
|
+
- The status snapshot and the blocking gates disagreed about a seat with no status entry, so a
|
|
118
|
+
recovered run reported complete while being hard-rejected.
|
|
119
|
+
- Declined seats no longer schedule an explanation worker. The stance is frozen and the
|
|
120
|
+
deterministic record is already readable, so the worker could change nothing while costing
|
|
121
|
+
one sequential model turn per seat on a host with no fan-out.
|
|
122
|
+
- The fundamentals path re-registered filing records under the consuming metric's period,
|
|
123
|
+
which silently dropped every fact sharing a record with the mechanical screen.
|
|
124
|
+
- The look-through aggregator reads one number per ticker and was handed a nested object, so
|
|
125
|
+
every aggregate reported "no constituent supplied this metric" while the constituents sat
|
|
126
|
+
resolved in memory.
|
|
127
|
+
- `not_applicable` strings and the fund/index research contract were English-only inside
|
|
128
|
+
localized reports.
|
|
129
|
+
|
|
130
|
+
- The typed-fact period contract was wrong in three ways at once, and together they were why a
|
|
131
|
+
live run stayed near-silent even after the facts and the methods were in place. The adapter
|
|
132
|
+
stamped an observation date into `period_end` with no start, a shape that satisfies no
|
|
133
|
+
contract basis at all — rejected as an instant because the interval is non-null, and as a
|
|
134
|
+
duration because a window needs both ends — so those facts were unusable by any tool.
|
|
135
|
+
Multi-year aggregates were declared as instants, which the executor rejects against a fact
|
|
136
|
+
that carries a reporting interval. And the one-year window demanded 365 days, while a fiscal
|
|
137
|
+
year measured between two year-end dates is routinely 363. Facts that cover a span now
|
|
138
|
+
declare a duration; coverage set by filing availability rather than by the method declares
|
|
139
|
+
`ANY`; and look-through aggregates carry the interval their constituents reported. Measured
|
|
140
|
+
across eight symbols before and after: from four seats reaching a stance to twenty-six, with
|
|
141
|
+
no contract failures left.
|
|
142
|
+
- Every seat-count and tool-count invariant is derived from the canonical roster instead of
|
|
143
|
+
restated as a literal. Adding the twenty-seventh seat previously meant editing sixty
|
|
144
|
+
assertions across tests, schemas and reports, which is the kind of cost that keeps a bench
|
|
145
|
+
frozen at whatever size it was first written at.
|
|
146
|
+
- The twenty-seventh seat could not speak on this universe at all. `master_jhunjhunwala` puts
|
|
147
|
+
the ownership record first, before any growth arithmetic, and the US has no promoter as a
|
|
148
|
+
filing concept — so the seat was authored to decline by construction, which is honest and
|
|
149
|
+
also useless. Section 16 is the filed analogue: officers, directors and holders of more than
|
|
150
|
+
ten percent file Forms 3, 4 and 5 stating what they hold afterwards.
|
|
151
|
+
`governance.insider_ownership` sums the newest such filing per reporting owner over shares
|
|
152
|
+
outstanding, reading filings newest-first and taking each owner once, so the cost is one
|
|
153
|
+
fetch per insider rather than one per filing. The fact is `estimated`, not `reported` — no
|
|
154
|
+
document states it — and where Section 16 differs from an Indian promoter disclosure is
|
|
155
|
+
written on the seat rather than adjusted away.
|
|
156
|
+
|
|
157
|
+
## Assurance boundary
|
|
158
|
+
|
|
159
|
+
Unchanged from 0.9.5 and deliberately so:
|
|
160
|
+
|
|
161
|
+
- Build channel: `solo_test`; `production_eligible=false`; `method_model_eligible=false`.
|
|
162
|
+
- Admission level: `operator_lens`. Formal production GA remains fail-closed.
|
|
163
|
+
- Method-seat outputs are project-derived provisional lenses. They are not quotations,
|
|
164
|
+
endorsements, or current views of the named people.
|
package/docs/report-contract.md
CHANGED
|
@@ -22,6 +22,13 @@ writes the mode-appropriate versions of:
|
|
|
22
22
|
The report and handoff must call a named master result a recorded method-seat or lens result.
|
|
23
23
|
It is not a quote from, endorsement by, or current statement of the named person.
|
|
24
24
|
|
|
25
|
+
The run classifies its instrument before selecting financial-data routes. Operating-company
|
|
26
|
+
Company Facts and issuer financials are not applicable to ETFs, funds or indices. ETF/fund
|
|
27
|
+
runs use holdings look-through; index runs use aggregate-index evidence. Missing dated
|
|
28
|
+
holdings, constituents, weights, methodology, fees/rules, liquidity/tracking/flows or
|
|
29
|
+
aggregate-valuation coverage remain explicit gaps and are never replaced with invented fund
|
|
30
|
+
revenue, EPS, guidance, insider activity or summed constituent financial statements.
|
|
31
|
+
|
|
25
32
|
System-owned selector, report and handoff labels are localized for `zh-CN`, `en`, `ja` and
|
|
26
33
|
`ko`. Each worker receives the canonical run language, while stable IDs and JSON field names
|
|
27
34
|
remain English. Reader-facing evidence, method, debate and PM fields are checked against the
|
|
@@ -40,6 +47,7 @@ Full remains the default. Its `final_report.md` visibly covers:
|
|
|
40
47
|
- analyst work log for every planned evidence role
|
|
41
48
|
- bull/bear debate record, including three rounds and exact round-3 Q&A
|
|
42
49
|
- recorded Master Bench when methods were selected
|
|
50
|
+
- fund/index structure and look-through when the instrument is an ETF, fund or index
|
|
43
51
|
- long thesis and short thesis
|
|
44
52
|
- market expectations and implied beat/miss thresholds
|
|
45
53
|
- analyst rating and target-price revisions
|
|
@@ -62,10 +70,17 @@ Its `user_response.md` must also visibly carry:
|
|
|
62
70
|
|
|
63
71
|
- a system-owned price snapshot with price, currency, quote timestamp, exchange/feed and
|
|
64
72
|
source when available, or an explicit statement that the quote is unavailable;
|
|
65
|
-
- every selected stable master ID, its frozen deterministic stance, its
|
|
73
|
+
- every selected stable master ID, its frozen deterministic stance, its readable
|
|
66
74
|
explanation/status and a clear `not a quote` attribution boundary;
|
|
67
75
|
- all eight mandatory analyst task IDs, statuses and summaries, including failures or gaps;
|
|
68
76
|
- terminal status, contract, report quality, elapsed time, deadline state and artifact paths.
|
|
77
|
+
- a final section with the exact selected-seat count and one readable statement per selected
|
|
78
|
+
stable ID. Full `all` therefore ends with 26 statements; quick reports its actual 1–4.
|
|
79
|
+
|
|
80
|
+
Visible PM completion returns `handoff_contract=inline_user_response_v1` plus the persisted
|
|
81
|
+
`user_response_markdown`. The host uses that body for the final reply instead of reducing it
|
|
82
|
+
to a compact ACK and hiding the method-seat tail. An idempotent PM replay returns the same
|
|
83
|
+
handoff.
|
|
69
84
|
|
|
70
85
|
All mandatory full evidence roles must be completed. If one still fails after the one bounded
|
|
71
86
|
parse-only repair, full fails closed at the evidence barrier: no master, bull/bear or PM model
|
|
@@ -95,8 +110,11 @@ those subagents and the plugin cannot force-stop them.
|
|
|
95
110
|
Visible full runs use the same six role-by-round audit records and exact Q&A gate. Each
|
|
96
111
|
Bull/Bear call declares round 1, 2 or 3; the server rejects out-of-order calls, altered replay
|
|
97
112
|
content and a PM submitted before both Round-3 records pass. Identical role/round retries are
|
|
98
|
-
idempotent.
|
|
99
|
-
|
|
113
|
+
idempotent. Every non-blocked selected physical v3 seat also returns a visible post-evidence
|
|
114
|
+
explanation worker, including a deterministic `out_of_scope` seat. Its
|
|
115
|
+
`acknowledged_stance` must match the frozen stance, and PM checks the worker's completed
|
|
116
|
+
status rather than accepting the fallback record alone. This preserves workflow completeness
|
|
117
|
+
but does not give host-owned subagents the plugin-managed 30-minute deadline.
|
|
100
118
|
|
|
101
119
|
## quick_v1 Contract
|
|
102
120
|
|
|
@@ -201,7 +219,7 @@ one judgment paragraph, valuation/position, material gaps and file locations.
|
|
|
201
219
|
A full handoff additionally carries the key earnings result, forward setup, news/voice
|
|
202
220
|
signals and top invalidation conditions. It lists every selected method seat and all eight
|
|
203
221
|
mandatory analysts rather than sampling a subset, and includes the system-owned price
|
|
204
|
-
snapshot or an explicit quote-data gap.
|
|
222
|
+
snapshot or an explicit quote-data gap. The method-seat list is the final handoff section.
|
|
205
223
|
|
|
206
224
|
A quick handoff instead names:
|
|
207
225
|
|
|
@@ -227,7 +245,9 @@ Both handoffs list `final_report.md`, `artifact_index.md`, `all_agents.md`, and
|
|
|
227
245
|
| "The source table mentions the news, so the news section can be skipped." | News findings need their own visible section; quick recent news must also pass its date window. |
|
|
228
246
|
| "The final report exists, so chat can hide file locations." | The handoff lists the saved report, index, trace and quality file. |
|
|
229
247
|
| "The master said this." | Call it a recorded method-seat result, never a quote from the named person. |
|
|
230
|
-
| "The full report has a bench table, so the handoff can hide the individual seats." | Full handoff
|
|
248
|
+
| "The full report has a bench table, so the handoff can hide the individual seats." | Full handoff ends with every selected stable ID, stance and readable result/status. |
|
|
249
|
+
| "The PM tool returned success, so its small ACK is enough." | Deliver `user_response_markdown`; success metadata is not the user-facing report. |
|
|
250
|
+
| "QQQ has a ticker and SEC CIK, so run the company screen." | Classify first. ETF/fund/index company financial routes are not applicable; use look-through or aggregate evidence. |
|
|
231
251
|
|
|
232
252
|
## How the Quality Gate Checks Reports
|
|
233
253
|
|
|
@@ -246,4 +266,8 @@ at least 1600 non-space characters, quick reports 700, and dry reports 600.
|
|
|
246
266
|
|
|
247
267
|
The system-owned recorded Master Bench and degraded ledger are checked independently of PM
|
|
248
268
|
prose so a generic, stale or duplicate heading cannot satisfy the contract. The authoritative
|
|
249
|
-
|
|
269
|
+
Master Bench must contain the exact stable ID and a readable statement for every selected
|
|
270
|
+
seat; `report_quality.json.method_statement_coverage` records selected/readable/rendered
|
|
271
|
+
counts and IDs. A missing statement or ID forces `needs_revision`. Fund/index runs also
|
|
272
|
+
require the system-owned instrument-structure section. The authoritative lists are
|
|
273
|
+
`REPORT_SECTIONS` and `QUICK_REPORT_SECTIONS` in `mcp/lib/constants.mjs`.
|