alphacouncil-agent 0.9.2 → 1.0.0
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/commands/alpha.md +22 -3
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +4 -4
- package/.grok/commands/alpha.md +22 -3
- package/.opencode/command/alpha.md +22 -3
- package/AGENTS.md +42 -4
- package/CHANGELOG.md +164 -0
- package/CLAUDE.md +59 -7
- package/README.ja.md +25 -11
- package/README.md +44 -12
- package/README.zh-CN.md +37 -12
- package/commands/alpha.md +22 -3
- 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 +296 -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 +43 -6
- package/docs/personas.md +2 -1
- package/docs/plans/v1.0-roadmap.md +487 -0
- package/docs/releases/v0.9.3.md +86 -0
- package/docs/releases/v0.9.4.md +79 -0
- package/docs/releases/v0.9.5.md +96 -0
- package/docs/releases/v1.0.0.md +164 -0
- package/docs/report-contract.md +75 -2
- 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/{debt_driver_stress.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{regime_classifier.ai-review.json → real_curve_slope.ai-review.json} +49 -49
- 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/{opportunity_cost.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/{user_value_evidence.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_forensic_short/reviews/{borrow_catalyst.ai-review.json → cash_conversion_gap.ai-review.json} +49 -49
- 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/{incentive_map.ai-review.json → reported_earnings_cash_gap.ai-review.json} +49 -49
- 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/{oos_cost_test.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/{leakage_audit.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/{reversal_monitor.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/{reflexivity_graph.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/{edge_recalculator.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/{fractional_kelly.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 +27 -10
- 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 +26 -8
- 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 +25 -8
- 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 +24 -8
- 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 +26 -10
- 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 +26 -10
- 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 +24 -8
- 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 +23 -8
- 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 +25 -8
- 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 +31 -11
- 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 +27 -10
- 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 +20 -8
- 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 +26 -8
- 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 +25 -10
- 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 +22 -6
- 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 +27 -10
- 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 +28 -10
- 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 +25 -10
- 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 +24 -10
- 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 +23 -10
- 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 +22 -6
- 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 +22 -8
- 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 +22 -10
- 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 +24 -11
- 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 +23 -9
- 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 +25 -10
- 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 +122 -0
- package/mcp/lib/codex.mjs +3 -3
- package/mcp/lib/constants.mjs +76 -25
- package/mcp/lib/council-options.mjs +95 -40
- package/mcp/lib/council-selection.mjs +95 -9
- 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/fundamentals.mjs +801 -0
- package/mcp/lib/funds.mjs +750 -0
- package/mcp/lib/gates.mjs +149 -15
- package/mcp/lib/grounding.mjs +188 -36
- package/mcp/lib/index-aggregate.mjs +718 -0
- package/mcp/lib/insider-ownership.mjs +149 -0
- package/mcp/lib/instrument-facts.mjs +557 -0
- package/mcp/lib/instruments.mjs +191 -0
- package/mcp/lib/lang.mjs +109 -2
- package/mcp/lib/markdown.mjs +620 -138
- package/mcp/lib/master-catalog.mjs +32 -3
- package/mcp/lib/orchestrator.mjs +1121 -290
- package/mcp/lib/packets.mjs +227 -21
- package/mcp/lib/personas/engine.mjs +44 -31
- package/mcp/lib/personas-v3/compiler.mjs +2 -0
- 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/loader.mjs +10 -7
- 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-acquisition.mjs +10 -3
- 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 +119 -2
- package/mcp/lib/quotes.mjs +5 -0
- package/mcp/lib/rpc.mjs +101 -42
- package/mcp/lib/run-store.mjs +28 -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 +339 -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/persona-v3.schema.json +37 -2
- 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 +63 -8
- 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 +182 -16
- package/scripts/lib/persona-v3-solo-test-packs.mjs +143 -16
- package/scripts/package-smoke.mjs +32 -12
- package/scripts/report-persona-corpus-gaps.mjs +4 -1
- package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
- package/scripts/run-tests.mjs +23 -2
- package/scripts/scaffold-persona-v3-staging.mjs +1 -1
- package/skills/agent-skills-governance/SKILL.md +8 -2
- package/skills/alphacouncil-agent/SKILL.md +60 -9
- package/skills/public-equity-investing/SKILL.md +17 -0
- 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,487 @@
|
|
|
1
|
+
# AlphaCouncil 升级方案 v0.9.5 → v1.0(第二版)
|
|
2
|
+
|
|
3
|
+
制定日期:2026-07-28
|
|
4
|
+
基线:`agent/etf-index-master-voices` @ `6ec9ca0`(PR #5,draft,未合并)
|
|
5
|
+
本版推翻第一版的 P2-2「把弃权渲染成太难那一堆」——那个方案回避了真问题。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 0. 真实诊断:三层全空,不是一层
|
|
10
|
+
|
|
11
|
+
用户的质疑是对的:如果巴菲特看 QQQ 的回复是「这不归我管」,产品就没有意义。
|
|
12
|
+
把三层拆开看,问题比"缺数据"严重:
|
|
13
|
+
|
|
14
|
+
### 第一层:事实供给(缺 92%)
|
|
15
|
+
|
|
16
|
+
`mcp/lib/personas-v3/grounding-adapter.mjs` 是全仓库唯一产 typed facts 的地方,只能产 13 个 `fact_id`:
|
|
17
|
+
quote 2 个、options 4 个、SEC screen 7 个。26 席的 `required_fact_types` 大部分不在其中。
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
可在当前适配器下执行的席位: 1 / 26 (只有 master_natenberg)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**换 AAPL 跑结果一样。**这不是 ETF 特例,是全局缺口。
|
|
24
|
+
|
|
25
|
+
### 第二层:方法模型(是空壳,这是更根本的问题)
|
|
26
|
+
|
|
27
|
+
把 26 个 `decision_policy.json` 全量对比,**26/26 完全一致**:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
eligibility=0 条 | hard_vetoes=0 条 | rules=2 条 | score_bands=3 档 | native_output_fields=2
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
巴菲特那一席的"方法"逐字展开是:
|
|
34
|
+
|
|
35
|
+
```jsonc
|
|
36
|
+
// tools.json:两个工具,operation 都是 identity
|
|
37
|
+
{ "id": "master_buffett.owner_earnings_rebuilder",
|
|
38
|
+
"inputs": [{"fact_id": "financial.owner_earnings"}],
|
|
39
|
+
"operation": "identity",
|
|
40
|
+
"output_id": "financial.owner_earnings" } // 自己复制给自己
|
|
41
|
+
{ "id": "master_buffett.incremental_returns",
|
|
42
|
+
"inputs": [{"fact_id": "financial.owner_earnings"}],
|
|
43
|
+
"operation": "identity",
|
|
44
|
+
"output_id": "financial.incremental_return_on_capital" } // 所有者盈余"就是"增量ROIC?
|
|
45
|
+
|
|
46
|
+
// decision_policy.json:两条规则
|
|
47
|
+
owner_earnings > 0 → 1 分
|
|
48
|
+
incremental_roic > 0 → 1 分 (其实是同一个数)
|
|
49
|
+
2/2 → cautious
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
生成器里 `derivation_policy` 字段写得很老实:`"first_declared_input_to_first_declared_output_identity_v1"`。
|
|
53
|
+
|
|
54
|
+
**所以即使把数据全补上,巴菲特也只会输出"所有者盈余大于零 → cautious"。** 这不是巴菲特,
|
|
55
|
+
这是脚手架。用户问"客户用它还有啥意义"——在第二层修好之前,诚实的答案是:没有意义。
|
|
56
|
+
|
|
57
|
+
好消息:**方法设计已经写完了**,在 `data/persona-v3-build-specs.v1.mjs` 里。巴菲特那条有
|
|
58
|
+
6 个 `required_fact_types`、4 个 native states、3 条 `veto_families`(能力圈外 / 杠杆依赖 /
|
|
59
|
+
所有者盈余不可重建)、明确的 `fail_closed_reasons`。生成器
|
|
60
|
+
(`scripts/lib/persona-v3-solo-test-packs.mjs:299-348`)把这些**全部丢掉**,硬编码
|
|
61
|
+
`eligibility: { all: [] }`、`hard_vetoes: []`。缺的是把 spec 变成真策略,不是重新设计方法。
|
|
62
|
+
|
|
63
|
+
### 第三层:表达(机器诊断文案)
|
|
64
|
+
|
|
65
|
+
`巴菲特视角临时操作视角无法评估 QQQ:no_required_fact_types_present`
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 1. 关键洞察:穿透聚合是巴菲特自己的发明,而且必须做在事实层
|
|
70
|
+
|
|
71
|
+
### 1.1 "Look-through earnings" 是巴菲特 1990 年致股东信里的原创概念
|
|
72
|
+
|
|
73
|
+
他持有一堆公司的部分股权,会计利润只体现分红,于是他自己定义了「穿透盈余」:
|
|
74
|
+
按持股比例把被投公司的留存收益加回来看。**用穿透法评估 QQQ 不是把方法硬套在 ETF 上,
|
|
75
|
+
就是他本人处理"我拥有一百家生意的一部分"的标准做法。**这解决了合规和方法论正当性两个问题。
|
|
76
|
+
|
|
77
|
+
### 1.2 聚合只能做在事实层(DSL 层做不了,这反而是好消息)
|
|
78
|
+
|
|
79
|
+
决策 DSL 的算子白名单是
|
|
80
|
+
`eq/neq/gt/gte/lt/lte/date_*` + `exists` + `all/any/not`,操作数只能是
|
|
81
|
+
`{fact_id}` / `{output_id}` / `{literal}`(`literal` 必须是标量,数组直接拒),
|
|
82
|
+
条件层不支持算术。工具层的 `sum/mean` 吃的是固定 arity 的操作数列表,不是集合。
|
|
83
|
+
|
|
84
|
+
**结论:DSL 永远不可能对 N 个持仓做加权聚合。**
|
|
85
|
+
所以聚合必须在 `grounding-adapter` / 新的 `funds.mjs` 里做,产出**一个**
|
|
86
|
+
`financial.owner_earnings` 事实(带 `derivation: "rederived"` + `calculation_hash` + `coverage_weight`)。
|
|
87
|
+
|
|
88
|
+
**而这正是好消息:** 一旦事实层把 QQQ 的穿透 `financial.owner_earnings` 供上,
|
|
89
|
+
**26 个 pack 一个字节都不用改就能在 ETF 上执行。** 不需要 instrument 条件化的 pack 变体,
|
|
90
|
+
不需要动 schema,不需要重签 hash,不需要动选席回执的 pack_hash 审计链。
|
|
91
|
+
|
|
92
|
+
(我评估过四种 instrument 条件化方案:pack 内多份 policy 8-10 天 / `required_fact_types` 改 map
|
|
93
|
+
10-14 天 / 平行包集 15-20 天且撕裂审计链 / `research_model` 做成 typed fact 走 eligibility 3-4 天。
|
|
94
|
+
但做完事实层之后,前三种都不需要了,第四种只在"某方法必须显式拒绝某类标的"时才用。)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 2. 终点长什么样(用今天抓到的真实数字)
|
|
99
|
+
|
|
100
|
+
已验证可取的真实数据(2026-07-27/28 实测):
|
|
101
|
+
|
|
102
|
+
| 数据 | 值 | 来源(已验证可用) |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| QQQ 持仓 | 108 只,AAPL 权重 8.264548% | `dng-api.invesco.com` daily |
|
|
105
|
+
| NDX 滚动 P/E | **33.05** → 盈利收益率 **3.03%** | WSJ `mdc_peAndYields` |
|
|
106
|
+
| NDX 前瞻 P/E | 25.12 → 3.98% | 同上 |
|
|
107
|
+
| NDX 股息率 | 0.58% | 同上 |
|
|
108
|
+
| 10 年期国债 | **4.69%** | FRED `fredgraph.csv?id=DGS10` |
|
|
109
|
+
| QQQ 费率 | 0.20% | Invesco |
|
|
110
|
+
|
|
111
|
+
**巴菲特席位应该输出的东西(Tier A 原生判断):**
|
|
112
|
+
|
|
113
|
+
> **巴菲特方法** — 立场:`opposed` | 置信度:medium | 意向:`would_pass`
|
|
114
|
+
>
|
|
115
|
+
> 我看到的是:这一百零八家公司的穿透盈余收益率是 **3.03%**(滚动口径,覆盖权重 100%),
|
|
116
|
+
> 十年期国债给我 **4.69%**。我还要为持有它每年付 0.20%。
|
|
117
|
+
>
|
|
118
|
+
> 用我的标准来衡量:我在 1999 年那篇文章里说过,股票的价值最终要和利率比。
|
|
119
|
+
> 现在这个篮子的盈利收益率比无风险利率还低 **1.66 个百分点**,而且我承担的是
|
|
120
|
+
> 一个前十大占五成、集中在少数几家公司的波动组合。前瞻口径好一些(3.98%),
|
|
121
|
+
> 但那要靠分析师的预测兑现,那不是我的安全边际。
|
|
122
|
+
>
|
|
123
|
+
> 所以我会不会买:**不会,现在不会。** 这不是说纳斯达克的生意不好——里面确实有几家
|
|
124
|
+
> 我很喜欢的公司。是这个价格不给我任何余地。我推荐给我太太的是更宽的标普 500 篮子,
|
|
125
|
+
> 而且是在任何价格上定投;作为一次性配置决策,我在这个价格上会等。
|
|
126
|
+
>
|
|
127
|
+
> 什么会让我改主意:盈利收益率回到国债之上 200 个基点(对应 NDX 滚动 P/E 约 15),
|
|
128
|
+
> 或者利率降到 3% 以下而盈利没有同步下滑。
|
|
129
|
+
>
|
|
130
|
+
> 我和谁分歧:德鲁肯米勒方法看的是流动性脉冲而不是估值,他可能在我说贵的时候继续持有——
|
|
131
|
+
> 这是方法差不是信息差,我们看的是同一份数据。
|
|
132
|
+
>
|
|
133
|
+
> *(本段为方法模型的第一人称推演,非本人言论或授权观点。数据源 ID:wsj:ndx_pe:2026-07-24、
|
|
134
|
+
> fred:DGS10:2026-07-24、invesco:qqq_holdings:2026-07-27)*
|
|
135
|
+
|
|
136
|
+
**格雷厄姆席位**(同样是 Tier A):盈利收益率 3.03% vs AAA 公司债收益率,
|
|
137
|
+
他的防御型投资者判据要求前者 ≥ 后者的 2 倍 → 明显不通过,`opposed`,理由是一个数。
|
|
138
|
+
|
|
139
|
+
**芒格席位**(Tier B 穿透):不评组合,评前十大占 51% 权重的那几家的激励结构与失败路径,
|
|
140
|
+
按权重汇总"我对其中 X% 的权重有信心"。
|
|
141
|
+
|
|
142
|
+
**这才是产品的意义。**每个数字有 source_id,每个判断可证伪,每一席的分歧是真分歧。
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 3. 三根支柱
|
|
147
|
+
|
|
148
|
+
### 支柱 A — 事实供给层(不碰 pack,零 hash 风险,破 0 个测试)
|
|
149
|
+
|
|
150
|
+
这是唯一"改了立刻见效且不会引发重签风暴"的一层。先做完这层再动任何 pack。
|
|
151
|
+
|
|
152
|
+
#### A1. macro → typed facts(最高 ROI,零新数据源)
|
|
153
|
+
|
|
154
|
+
`macro.mjs` 已经在抓五组市场定价序列,但快照没写 `public_at`,
|
|
155
|
+
适配器整块跳过(`grounding-adapter.mjs:370` 记 `not_converted`)。
|
|
156
|
+
|
|
157
|
+
- `macro.mjs` 每 block 输出 `public_at`(取组内最早 `quote_time`)+ `source_ids`
|
|
158
|
+
- 新增 `macroFacts()`:`macro.liquidity_impulse`、`macro.growth_regime`、
|
|
159
|
+
`macro.real_rate`、`macro.credit_spread`、`macro.term_structure_slope`
|
|
160
|
+
- 补 FRED keyless 通道(**已验证**:`fredgraph.csv?id=` 免密钥,
|
|
161
|
+
`DGS10 DGS2 DGS3MO T10Y2Y T10Y3M DFII10 T5YIE DFF SOFR BAMLH0A0HYM2 VIXCLS` 全部 200;
|
|
162
|
+
`api.stlouisfed.org` 才需要 key。多 series 会返回 ZIP,逐个拉)
|
|
163
|
+
|
|
164
|
+
**解锁**:`master_druckenmiller`、`master_dalio`。约 150 行 + 单测。
|
|
165
|
+
|
|
166
|
+
#### A2. `mcp/lib/funds.mjs` — ETF 持仓与穿透聚合
|
|
167
|
+
|
|
168
|
+
**已验证可用的发行商端点(全部免密钥,四条 URL 都是新路径,网上流传的旧地址已失效):**
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
# iShares(IVV/IWM/EFA/AGG/TLT/HYG…)日度 T-1
|
|
172
|
+
https://www.ishares.com/us/products/239726/x/latest-holdings.csv
|
|
173
|
+
# State Street(SPY/XLK…)日度,必须 -L 跟 301
|
|
174
|
+
https://www.ssga.com/us/en/intermediary/library-content/products/fund-data/etfs/us/holdings-daily-us-en-spy.xlsx
|
|
175
|
+
# Invesco(QQQ/QQQM…)日度
|
|
176
|
+
https://dng-api.invesco.com/cache/v1/accounts/en_US/shareclasses/46090E103/holdings/fund?idType=cusip&interval=daily&productType=ETF
|
|
177
|
+
# Vanguard(VOO/VTI…)仅月末,每页 500 条
|
|
178
|
+
https://investor.vanguard.com/investment-products/etfs/profile/api/VOO/portfolio-holding/stock
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**必须写进代码的反爬陷阱(每条都是实测的,漏一条就静默出错):**
|
|
182
|
+
|
|
183
|
+
1. **iShares 旧 `.ajax` 路径是静默陷阱** —— 仍返回 `HTTP 200` + `Content-Type: text/csv`,
|
|
184
|
+
但 body 是 2.2MB 的 HTML 产品页,换任何 UA 都一样。**必须校验首行内容,不能只看状态码。**
|
|
185
|
+
2. **Invesco 的 UA 逻辑是反的** —— `www.invesco.com` 发 Chrome UA 或空 UA → `HTTP 406` 零字节;
|
|
186
|
+
发默认 `curl/8.x` 或 `node-fetch` → 200。**千万别伪装浏览器。**
|
|
187
|
+
3. **Invesco 参数陷阱** —— 漏 `interval=daily` 拿到 3 天前的旧数据;误加 `loadType=initial`
|
|
188
|
+
静默截断成前 10 条;`idType=ticker` 只对 QQQ 有效,统一用 CUSIP。
|
|
189
|
+
4. Vanguard 响应里的 `next` 指向已废弃的 `api.vanguard.com`,翻页要自己拼
|
|
190
|
+
`?start=501&count=500` 打在 `investor.vanguard.com`。
|
|
191
|
+
5. SEC 任何请求必须带 `User-Agent: app contact@email`,否则 403。
|
|
192
|
+
|
|
193
|
+
**费率 / AUM / NAV / 份额:**
|
|
194
|
+
- iShares product-screener 一次拿 532 只基金的 `fees` / `navAmount` / `totalNetAssets` / `cusip`
|
|
195
|
+
- SSGA fundfinder 一次拿 180 只 SPDR 的 `ter` / `nav` / `aum`(份额 = aum/nav)
|
|
196
|
+
- **Vanguard 和 Invesco 没有 AUM/份额端点**(Invesco 的 `/nav`、`/profile` 全 501)→
|
|
197
|
+
用持仓市值求和,或 SEC N-PORT 的 `netAssets` 兜底
|
|
198
|
+
|
|
199
|
+
**资金流(无免费直接源,必须推导):** `flow = Δshares_outstanding × NAV`。
|
|
200
|
+
实测验证过:IVV 份额 2026-07-24 的 1,167,300,000 → 07-27 的 1,167,700,000,
|
|
201
|
+
Δ+400,000 股 × NAV 741.66 ≈ 净流入 $296.7M。
|
|
202
|
+
**局限**:只有 iShares 和 SSGA 有日度份额,Vanguard/Invesco 没有 → 那两家的 flow 记为 gap,不许估。
|
|
203
|
+
|
|
204
|
+
**SEC N-PORT 兜底(重要更正:是季度不是月度):**
|
|
205
|
+
表单名叫 "Monthly Portfolio Investments Report",但公开披露实际**季度**,滞后 50-59 天。
|
|
206
|
+
另一个坑:`company_tickers.json` 里**查不到 IVV 和 VOO**(它们是信托下的 series),
|
|
207
|
+
必须用 `company_tickers_mf.json`(IVV→CIK 1100663/S000004310,VOO→CIK 36405/S000002839)。
|
|
208
|
+
|
|
209
|
+
**新增 typed facts:**
|
|
210
|
+
```
|
|
211
|
+
fund.holdings_as_of fund.top_ten_weight fund.sector_concentration_hhi
|
|
212
|
+
fund.expense_ratio fund.aum fund.shares_outstanding
|
|
213
|
+
fund.flow_20d fund.premium_discount fund.tracking_difference(nullable)
|
|
214
|
+
fund.lookthrough_coverage_weight
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**穿透聚合(本方案的核心):** 对前 N 大持仓(覆盖权重 ≥60%)批量取基本面,
|
|
218
|
+
按权重聚合成**单个**经营公司事实:`financial.owner_earnings`、
|
|
219
|
+
`financial.return_on_equity_10y`、`valuation.revenue_growth` 等。
|
|
220
|
+
每个聚合事实必带 `lineage.calculation_hash` + `fund.lookthrough_coverage_weight`。
|
|
221
|
+
|
|
222
|
+
**硬规则写进代码,不是写进 prompt:** 覆盖权重 < 50% 时**不生成**任何 look-through 派生事实,
|
|
223
|
+
只记 diagnostics。现在这条只是 prompt 里一句话,模型可以无视。
|
|
224
|
+
|
|
225
|
+
**绝不做的事:** 把成分股财报相加成"ETF 营收/EPS"。加权只允许出现在比率型指标,
|
|
226
|
+
且 `ratio_denominator` 必须写明加权口径。
|
|
227
|
+
|
|
228
|
+
#### A3. `mcp/lib/index-aggregate.mjs` — 指数
|
|
229
|
+
|
|
230
|
+
**成分来源(法务上唯一稳妥的免费路径):用跟踪 ETF 的持仓做代理**,
|
|
231
|
+
^GSPC→IVV/SPY,^NDX→QQQ,^DJI→DIA,并在 fact 的 `derivation` 和报告里**显式声明是 ETF 代理**。
|
|
232
|
+
理由:S&P 500 / DJIA 的成分与权重是 S&P Dow Jones Indices 的授权资产,
|
|
233
|
+
datahub / stockanalysis / Finviz 都是无授权转载;Wikipedia 是唯一有明确开放许可(CC BY-SA)的,
|
|
234
|
+
但产品化仍有风险。发布"基金持仓"而非"指数成分名单"是业界标准规避做法。
|
|
235
|
+
(`api.nasdaq.com/api/quote/list-type/nasdaq100` 实测可用且与 QQQ 持仓完全对上,
|
|
236
|
+
但**必须带非默认 UA**,默认 curl UA 会 HTTP/2 INTERNAL_ERROR。)
|
|
237
|
+
|
|
238
|
+
**估值 / 广度 / 期权(已验证端点):**
|
|
239
|
+
```bash
|
|
240
|
+
# 指数滚动+前瞻 PE(一次拿 SP500/NDX/Russell2000)
|
|
241
|
+
https://www.wsj.com/market-data/stocks/peyields?...&type=mdc_peAndYields
|
|
242
|
+
# 涨跌家数/新高新低/TRIN
|
|
243
|
+
https://www.wsj.com/market-data/stocks/marketsdiary?...&type=mdc_marketsdiary
|
|
244
|
+
# CBOE put/call(日期必须是交易日,非交易日 403,需回退查找)
|
|
245
|
+
https://cdn.cboe.com/data/us/options/market_statistics/daily/YYYY-MM-DD_daily_options
|
|
246
|
+
https://cdn.cboe.com/api/global/us_indices/daily_prices/VIX_History.csv
|
|
247
|
+
```
|
|
248
|
+
WSJ 的 `mdc_*` 是未公开内部 API,**必须加 schema 校验和降级路径,不能当契约用**。
|
|
249
|
+
|
|
250
|
+
**Damodaran 数据集(可机读):**
|
|
251
|
+
`pages.stern.nyu.edu/~adamodar/pc/implprem/ERPbymonth.xlsx`(月度 ERP,注意在 `/pc/implprem/`
|
|
252
|
+
而**不在** `/pc/datasets/`),`/pc/datasets/histimpl.xls`(年度)。
|
|
253
|
+
`.xls` 是老 BIFF 格式要用 `xlsx` 包;xlsx 空单元格会被省略,**必须按列字母对齐,不能按位置取**。
|
|
254
|
+
|
|
255
|
+
**唯一的硬缺口:广度(% above 200dma)。** Finviz 的 screener 组合参数在 robots.txt 里被
|
|
256
|
+
`Disallow: /screener?*` 明确禁止(白名单不含所需参数),自建 dashboard 可以,产品化不建议。
|
|
257
|
+
自己算需要 503 只 × 260 天日线 ≈ 13 万点,而没有验证到免密钥的批量日线源。
|
|
258
|
+
**这块要预算一个行情商,或者用 WSJ marketsdiary 的涨跌家数做低保真代理并标注口径。**
|
|
259
|
+
|
|
260
|
+
**⚠️ 口径警告(必须写进代码注释):** 同一天的 S&P 500 滚动 P/E,
|
|
261
|
+
WSJ 报 25.17、multpl 报 28.53、iShares IVV 报 29.80 —— 三种不同盈利口径
|
|
262
|
+
(WSJ 基准 / GAAP as-reported TTM / 组合调和平均)。**混用会让面板看起来像坏了。**
|
|
263
|
+
一个 fact 只能有一个口径,`ratio_denominator` 必须写死来源。
|
|
264
|
+
|
|
265
|
+
**新增 typed facts:**
|
|
266
|
+
```
|
|
267
|
+
index.constituent_count index.aggregate_pe_ttm index.aggregate_pe_forward
|
|
268
|
+
index.aggregate_earnings_yield index.dividend_yield index.breadth_advance_decline
|
|
269
|
+
cycle.valuation_percentile expectations.consensus_dispersion
|
|
270
|
+
factor.value_exposure positioning.crowding options.put_call_ratio
|
|
271
|
+
macro.aaa_corporate_yield macro.long_bond_yield valuation.implied_erp
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
#### A4. SEC 派生(经营公司侧)
|
|
275
|
+
|
|
276
|
+
从已有 CompanyFacts 机械派生,全部带 `calculation_hash` + 显式假设:
|
|
277
|
+
|
|
278
|
+
| fact_id | 算法 | 解锁 |
|
|
279
|
+
|---|---|---|
|
|
280
|
+
| `financial.owner_earnings` | 净利 + D&A − 维持性资本开支(维持性用 3 年 capex 中位数 × 0.7 代理) | **buffett** |
|
|
281
|
+
| `financial.net_current_asset_value` | 流动资产 − 全部负债 | graham |
|
|
282
|
+
| `valuation.downside_asset_value` | 有形账面 + 现金 − 债务 | klarman |
|
|
283
|
+
| `valuation.downside_floor` | min(NCAV, 有形账面, 5 年最低 EV/EBIT 对应价) | pabrai |
|
|
284
|
+
| `valuation.revenue_growth` | 5 年 CAGR + 最近 4 季 YoY | damodaran |
|
|
285
|
+
| `short.borrow_cost` | 无免费源 → **不做,记为已知缺口** | forensic_short 继续弃权 |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### 支柱 B — 真方法模型("有没有意义"的分水岭)
|
|
290
|
+
|
|
291
|
+
#### B0. 操作纪律(不遵守每次都会红)
|
|
292
|
+
|
|
293
|
+
pack 是 100% 机器生成的,**手改无效**——生成器会在内存里重建全部文件逐字节比对。
|
|
294
|
+
唯一合法路径:改 `data/persona-v3-build-specs.v1.mjs` + `knowledge/solo-test/persona-v3-solo-test-formulas/`
|
|
295
|
+
+ 生成器,然后:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
npm run persona:solo-test:build # 26 个 pack 全量重生成
|
|
299
|
+
npm run persona:ai-simulations:write # 8 个仿真 run 重生成
|
|
300
|
+
npm run check # selfcheck 三道闸 + 全测试
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
另外:动 `runtime.mjs` / `deterministic-executor.mjs` / `typed-facts.mjs` / `registry.mjs`
|
|
304
|
+
这四个文件中的任何一个,都必须重跑机器仿真(它们的字节 hash 被绑进仿真树)。
|
|
305
|
+
|
|
306
|
+
#### B1. 生成器改造:让 spec 里的设计真正落地
|
|
307
|
+
|
|
308
|
+
`scripts/lib/persona-v3-solo-test-packs.mjs:299-348` 现在硬编码
|
|
309
|
+
`eligibility: { all: [] }`、`hard_vetoes: []`,把 build-spec 里已经写好的
|
|
310
|
+
`veto_families` 和 `native_decision_contract.eligibility_facts` 全丢了。改成从 spec 生成。
|
|
311
|
+
|
|
312
|
+
**一个必须绕开的陷阱:** 当前 `scoring.min_coverage = 1`,
|
|
313
|
+
**任何一条规则 uncomputable → 整席直接 `out_of_scope`**。
|
|
314
|
+
所以方法判据要走 `eligibility` / `hard_vetoes`(它们有独立的 uncomputable 出口),
|
|
315
|
+
不要全塞进 scoring rules,否则缺一个字段就整席哑火——这正是现在 25 席弃权的机制。
|
|
316
|
+
|
|
317
|
+
#### B2. 写真公式,替换 identity 桩
|
|
318
|
+
|
|
319
|
+
DSL 条件层不支持算术,所以每个判据要拆成"工具算数 + 条件比数"两步。
|
|
320
|
+
可用算子:`add subtract multiply divide sum mean min max abs negate clamp`(标量,固定 arity)。
|
|
321
|
+
条件层支持 **fact vs fact 直接比较**(实测通过),这是关键——
|
|
322
|
+
"盈利收益率 > 国债收益率" 可以直接写成两个 fact 的 `gt`,不需要先算差值。
|
|
323
|
+
|
|
324
|
+
**首批 8 席(在个股和 ETF/指数上都能出真判断,优先做):**
|
|
325
|
+
|
|
326
|
+
| 席位 | 核心判据(可直接用现有数据实现) |
|
|
327
|
+
|---|---|
|
|
328
|
+
| `master_buffett` | 穿透盈余收益率 vs 10y 国债;集中度;费率拖累;杠杆依赖 veto |
|
|
329
|
+
| `master_graham` | 盈利收益率 ≥ 2 × AAA 债收益率(防御型投资者判据);NCAV |
|
|
330
|
+
| `master_marks` | 估值分位 + 风险偏好读数 → 周期温度计 |
|
|
331
|
+
| `master_damodaran` | implied ERP vs 历史分位(他自己每月发布这个数) |
|
|
332
|
+
| `master_dalio` | 增长/通胀四象限 + 当前 regime → 股票指数暴露建议 |
|
|
333
|
+
| `master_druckenmiller` | 流动性脉冲方向 + 拐点 |
|
|
334
|
+
| `master_asness` | 价值利差分位 + 因子暴露 |
|
|
335
|
+
| **`master_bogle`(新增)** | 期望收益 = 股息率 + 盈利增长 ± 估值变化;成本至上 |
|
|
336
|
+
|
|
337
|
+
**为什么必须新增博格:** 26 席里**没有一个是为指数设计的方法**,而这是 ETF 用户唯一最想要的一席。
|
|
338
|
+
博格的收益分解(投资回报 vs 投机回报)能直接给出 QQQ 的十年期望回报数字,
|
|
339
|
+
所有输入(股息率 0.58%、盈利增长、P/E 33.05 的均值回归)都已经在 A3 里备齐。
|
|
340
|
+
新增一席要改 `CANONICAL_MASTER_COUNT` 26→27 及若干处硬编码 26 的断言
|
|
341
|
+
(`runtime-release-integrity.mjs:288,352-361`、`staging.mjs`、几个 release 测试),
|
|
342
|
+
以及 profile 里的 `physical_solo_packs` / `ai_formula_cross_reviews` 数字。
|
|
343
|
+
**这是全案唯一值得付"改 26 常量"代价的改动。**
|
|
344
|
+
|
|
345
|
+
**第二批 12 席(Tier B,走穿透):** munger / li_lu / fisher / duan_yongping / lynch /
|
|
346
|
+
klarman / pabrai / burry / ackman / cathie_wood / forensic_short / aschenbrenner。
|
|
347
|
+
它们的方法是单公司的,在 ETF 上跑前十大持仓再按权重汇总,输出
|
|
348
|
+
"我对其中 X% 的权重有信心 / 有疑虑"。
|
|
349
|
+
|
|
350
|
+
**第三批 6 席:** simons / soros / thorp / taleb / natenberg / sinclair —— 量化与波动率方法,
|
|
351
|
+
指数是它们最好的场景,需要的是 A3 的分布与期权数据。
|
|
352
|
+
|
|
353
|
+
**诚实弃权保留:** `master_jhunjhunwala`(印度市场方法)在美国科技指数上真的不适用。
|
|
354
|
+
弃权应该是少数且有具体理由的,不是默认状态。
|
|
355
|
+
|
|
356
|
+
#### B3. AI 交叉复核的连锁成本
|
|
357
|
+
|
|
358
|
+
`data/persona-v3-ai-assisted-solo-profile.v1.json` 写死
|
|
359
|
+
`ai_formula_cross_reviews: 52`(26 席 × 2 工具,每份 3 个独立角色)。
|
|
360
|
+
每席从 2 个工具加到 3 个 → 需要 78 份复核,profile 数字和全部 index/manifest hash 要同步更新。
|
|
361
|
+
**排期时把这块算进去,它比写公式本身更花时间。**
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
### 支柱 C — 表达层
|
|
366
|
+
|
|
367
|
+
#### C1. 五段式第一人称(`voice_mode`)
|
|
368
|
+
|
|
369
|
+
`masterVoicePrompt`(`prompts.mjs:249`)的输出契约改成读者视角:
|
|
370
|
+
|
|
371
|
+
```json
|
|
372
|
+
{
|
|
373
|
+
"master": "master_buffett",
|
|
374
|
+
"acknowledged_stance": "<必须等于冻结立场>",
|
|
375
|
+
"position_intent": "would_buy | would_add | would_hold | would_pass | not_in_my_circle",
|
|
376
|
+
"voice": {
|
|
377
|
+
"what_i_see": "…(只引用 evidence 里的事实 + source_id)",
|
|
378
|
+
"how_my_method_reads_it": "…(把 typed facts 映射到自己的判据,给出具体数字)",
|
|
379
|
+
"would_i_buy": "…(明确、可证伪)",
|
|
380
|
+
"what_changes_my_mind": "…(给出触发阈值,不是空话)",
|
|
381
|
+
"where_i_disagree": "…(说明是信息差还是方法差)"
|
|
382
|
+
},
|
|
383
|
+
"source_ids": [...], "confidence": "high|medium|low"
|
|
384
|
+
}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
`position_intent` **由冻结立场机械派生**:建 `stance → allowed intents` 表,
|
|
388
|
+
模型只能在允许集合里选,选错直接拒(复用现有拒绝 stance 不符的机制)。
|
|
389
|
+
冻结立场的安全性不降级。
|
|
390
|
+
|
|
391
|
+
#### C2. 报告结尾三层递进
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
## 大师席位怎么看
|
|
395
|
+
### 有判断的(N 席) ← 每席一个小节,完整五段式,按 intent 强度排序
|
|
396
|
+
### 分歧点 ← 只列真正立场相反的两席对撞 + 是信息差还是方法差
|
|
397
|
+
### 说这不归我管的(M 席) ← 合并成一段散文,不是 25 行表格
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
`method_statement_coverage` 门相应改成"每个 ID 出现在文中"而非"每席独立一行"。
|
|
401
|
+
|
|
402
|
+
#### C3. 相关性警告保留并前置
|
|
403
|
+
|
|
404
|
+
`masterCorrelationNote`("这些席位不是独立样本,立场分布不能当票数")必须留在最前面。
|
|
405
|
+
第一人称化会天然诱导读者把它当 N 个独立意见,**警告比现在更重要,不是更不重要。**
|
|
406
|
+
|
|
407
|
+
#### C4. 命名与合规
|
|
408
|
+
|
|
409
|
+
- 标签从 `巴菲特视角临时操作视角` 简化为 **`巴菲特方法`**
|
|
410
|
+
("临时操作视角"是内部成熟度术语,塞进 metadata 括号,不该出现在读者面前)
|
|
411
|
+
- 章节一次性声明:`以下为方法模型的第一人称推演,非本人言论或授权观点`
|
|
412
|
+
- 文案永远说"这套方法会……",不说"巴菲特现在认为……"
|
|
413
|
+
- **真人第一人称断言不做**——"沃伦·巴菲特认为 QQQ 该买"这句话事实上就是假的。
|
|
414
|
+
第一人称写的是方法的口吻,这个边界可辩护。
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## 4. P0 — 合并前必修(与三根支柱独立,1 天)
|
|
419
|
+
|
|
420
|
+
1. **分类器 fail-open → fail-closed**(`instruments.mjs`)。实测:无 Yahoo 元数据时
|
|
421
|
+
`SPY/QQQ/VOO` 全部 `plain_us_ticker_fallback → equity, secFacts=true`;
|
|
422
|
+
`IVV` 因 `iShares Trust` SIC 6726 走 `sec_filer_sic → equity`;
|
|
423
|
+
`VOO` 因 `Vanguard Index Funds` 走名称启发式 → `index`,期权链被误关。
|
|
424
|
+
改:SIC 6722/6726/6770 前置判基金;`index fund`/`mutual fund` 排在裸 `index` 前;
|
|
425
|
+
`plain_us_ticker_fallback` 返回 `unknown`。
|
|
426
|
+
2. **ja/ko 永久 `needs_revision` 死锁**。用已有的
|
|
427
|
+
`<!-- alphacouncil:recorded-master-bench:v1:sha256... -->` 锚点定位系统段,别靠标题别名匹配。
|
|
428
|
+
3. **陈词能劫持章节**。`normalizeMasterVoice` 出口统一转义行首 `#`。
|
|
429
|
+
4. **`not_applicable` 英文硬编码**渗进多语报告 → 走 `localized()`,
|
|
430
|
+
`instrumentResearchChecklist` 补 ja/ko。
|
|
431
|
+
5. **状态口径不一致**(`status.json` 说 complete、辩论门说缺席)→ 抽共用判定函数。
|
|
432
|
+
6. **性能回退**:`orchestrator.mjs:397` 只对立场可判定的席位起 voice worker。
|
|
433
|
+
0.9.4 里 26 席是零模型调用的确定性完成,0.9.5 每席加一次生成 + 一次 MCP 写入,
|
|
434
|
+
在没有 spawn 能力的 Codex 上全部串行 → 墙钟时间从 15-28 分钟涨到 28-55 分钟。
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 5. 排期与验收
|
|
439
|
+
|
|
440
|
+
**1.0.0 的定义**:26 席在任何标的(含 ETF/指数)上都给出可证伪的真实判断。
|
|
441
|
+
客户端/终端/API 不是 1.0 的门槛,它们是 1.1 之后的分发问题 —— 一个说不出话的委员会,
|
|
442
|
+
包装成桌面应用也还是说不出话。
|
|
443
|
+
|
|
444
|
+
| 里程碑 | 内容 | 工期 | 验收标准 | 状态 |
|
|
445
|
+
|---|---|---|---|---|
|
|
446
|
+
| **1.0.0-a** | P0 六项 | 1 天 | CI 绿 + 四语报告门 + 无元数据分类矩阵 | ✅ 已完成 `6840d38` |
|
|
447
|
+
| **1.0.0-b** | 支柱 A1 macro→typed facts | 1 天 | 可执行席位 1/26 → 3/26 | ✅ 已完成 `229f2e9` |
|
|
448
|
+
| **1.0.0-c** | 支柱 A2 `funds.mjs` 持仓穿透 | 3-4 天 | QQQ 产出穿透 `financial.owner_earnings`,覆盖权重 ≥60% | |
|
|
449
|
+
| **1.0.0-d** | 支柱 A3 指数聚合 + A4 SEC 派生 | 3-4 天 | 适配器 fact id 从 22 → ≥35 | |
|
|
450
|
+
| **1.0.0-e** | 支柱 B 首批 8 席 + 新增博格 | 7-10 天 | QQQ ≥8 席非 out_of_scope 且每条判据有 source_id | |
|
|
451
|
+
| **1.0.0-f** | 支柱 B 第二三批(穿透 + 量化波动率) | 5-7 天 | QQQ ≥20 席有实质输出,弃权 ≤3 席且各有具体理由 | |
|
|
452
|
+
| **1.0.0** | 支柱 C 表达层 + 发布 | 3-5 天 | 巴菲特席位对 QQQ 输出第 2 节那段话的结构,数字全部带 source_id | |
|
|
453
|
+
| 1.1.0 | 引擎抽离 + 终端版 | 5-7 天 | 终端版与 MCP 版报告字节级一致 | |
|
|
454
|
+
| 1.2.0 | HTTP API + Web + OAuth | 10-14 天 | 无 key 落盘/进前端;配额熔断可验证 | |
|
|
455
|
+
|
|
456
|
+
**1.0.0 总计约 4-6 周。**
|
|
457
|
+
|
|
458
|
+
### 已完成部分的实测结果
|
|
459
|
+
|
|
460
|
+
`1.0.0-a`:782 → 792 测试全绿,`npm run check` EXIT=0,Integrity passed,8/8 机器仿真无漂移。
|
|
461
|
+
分类器矩阵实测:无元数据时 SPY/QQQ/VOO 由 `equity, secFacts=true` 改为 `unknown, secFacts=false`;
|
|
462
|
+
IVV(iShares Trust, SIC 6726)由 `equity` 改为 `etf`;VOO(Vanguard Index Funds)由 `index`
|
|
463
|
+
改为 `fund_lookthrough`,期权链恢复。
|
|
464
|
+
|
|
465
|
+
`1.0.0-b`:9 个宏观事实进入 fact pack,零 diagnostics。2026-07-28 实测值 ——
|
|
466
|
+
10y 国债 4.69%、AAA 公司债 5.52%、HY OAS 2.79%(3 年期分位 18.9%)、
|
|
467
|
+
净流动性 $5.92T(91 天 +3.80%)、regime = `rising_growth_falling_inflation`。
|
|
468
|
+
`macro.aaa_corporate_yield` 和 `macro.long_bond_yield` 正是 1.0.0-e 里格雷厄姆和巴菲特判据要用的基准。
|
|
469
|
+
|
|
470
|
+
### 客户端 / 终端版(简述,细节见前一版方案)
|
|
471
|
+
|
|
472
|
+
先抽引擎:`mcp/lib/engine/runCouncil(symbol, opts, onEvent)` 发结构化事件流,
|
|
473
|
+
`adapters/{mcp,http,cli}.mjs` 三个壳共用。终端版用 Ink 渲染 N 席位状态灯 + 进度。
|
|
474
|
+
v1.0 的 OAuth 分两层:用户登录用 GitHub/Google(`openid-client`,httpOnly cookie);
|
|
475
|
+
数据源侧 Tiingo/Polygon 用 API key,券商侧 Schwab/IBKR 走真 OAuth。
|
|
476
|
+
**key 一律服务端环境变量,绝不进前端、绝不进 run artifacts;现有 keyless 路径保留为默认降级。**
|
|
477
|
+
多用户后 run-store 从 `linkSync` 文件锁换 SQLite。token 配额熔断第一天就要有。
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## 6. 一句话
|
|
482
|
+
|
|
483
|
+
当前 26 席里只有 1 席能执行,而那 1 席的"方法"是 `identity(x) > 0`。
|
|
484
|
+
**三层都是空的:事实层缺 92%,方法层是脚手架,表达层是机器诊断。**
|
|
485
|
+
顺序不能反 —— 先补事实(不碰 pack,零风险),再写真方法(这是"有没有意义"的分水岭),
|
|
486
|
+
最后做表达。做完前两层,巴菲特看 QQQ 会说"盈利收益率 3.03%,国债 4.69%,我不会买",
|
|
487
|
+
而不是"这不归我管"。
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# AlphaCouncil Agent v0.9.3 — Bounded Full Council and Complete Handoff (Non-GA)
|
|
2
|
+
|
|
3
|
+
`v0.9.3` is a non-GA runtime and reporting correction released as a GitHub prerelease.
|
|
4
|
+
This acceptance release does not publish npm or mutate dist-tags. It preserves `full_v2`
|
|
5
|
+
and `quick_v1`; it does not promote any PersonaPack
|
|
6
|
+
seat, relax the selection gate or claim production GA.
|
|
7
|
+
|
|
8
|
+
## Why 0.9.3 exists
|
|
9
|
+
|
|
10
|
+
Earlier full headless runs could take substantially longer than the useful user window:
|
|
11
|
+
the eight evidence seats were concurrency-limited, Bull/Bear sides were awaited serially,
|
|
12
|
+
and full had no global queue-to-persistence deadline. The concise handoff could also sample
|
|
13
|
+
analyst groups and omit selected Master Bench results even when their artifacts existed.
|
|
14
|
+
Some v3 seats completed only through the deterministic policy, so users reasonably expected
|
|
15
|
+
an individual method explanation but saw no dedicated model-worker output.
|
|
16
|
+
|
|
17
|
+
Those are product defects, not investment conclusions. `v0.9.3` changes scheduling,
|
|
18
|
+
visibility and terminalization while preserving the evidence and maturity boundaries.
|
|
19
|
+
|
|
20
|
+
## Full headless runtime contract
|
|
21
|
+
|
|
22
|
+
Plugin-managed headless `analyze_symbol(council_mode="full")` now has a hard maximum of
|
|
23
|
+
1,800,000 ms from durable queueing through terminal artifact persistence:
|
|
24
|
+
|
|
25
|
+
- all eight mandatory evidence workers start in one parallel wave;
|
|
26
|
+
- the evidence barrier remains fail-closed after one bounded parse-only repair;
|
|
27
|
+
- each selected physical v3 method first executes its deterministic policy and freezes its
|
|
28
|
+
stance, then launches one isolated voice worker for that stable ID;
|
|
29
|
+
- the voice worker may explain the frozen result in the run language but cannot change the
|
|
30
|
+
stance, invent missing typed facts or speak as the real named person;
|
|
31
|
+
- Bull and Bear launch in parallel within each of the three rounds, with a barrier between
|
|
32
|
+
rounds and exact Round-2-question to Round-3-answer binding;
|
|
33
|
+
- the PM starts only after both Round-3 sides pass, and deterministic final assembly shares
|
|
34
|
+
the same global deadline.
|
|
35
|
+
|
|
36
|
+
A caller or environment can lower the limit, never raise it. At deadline expiry the server
|
|
37
|
+
stops opening downstream work and persists a terminal fail-closed `incomplete` run naming
|
|
38
|
+
every timed-out, failed and skipped role. Thirty minutes therefore guarantees a durable,
|
|
39
|
+
auditable terminal state; it does **not** guarantee that all seats complete when search,
|
|
40
|
+
model transport or external data providers are unavailable or slow.
|
|
41
|
+
|
|
42
|
+
The deadline belongs to plugin-managed headless `analyze_symbol`. A visible-host run created
|
|
43
|
+
through `plan_visible_run` is scheduled by the external host; the plugin cannot force-stop
|
|
44
|
+
those host subagents and makes no 30-minute promise for that path.
|
|
45
|
+
|
|
46
|
+
## Complete user handoff
|
|
47
|
+
|
|
48
|
+
The full `user_response.md` no longer hides the council behind a three-group synopsis. It
|
|
49
|
+
must visibly include:
|
|
50
|
+
|
|
51
|
+
- a system-owned price snapshot with price, currency, quote timestamp, exchange/feed and
|
|
52
|
+
source when available, or an explicit unavailable-data gap;
|
|
53
|
+
- every selected stable master ID, its frozen stance and its isolated voice-worker
|
|
54
|
+
explanation/status;
|
|
55
|
+
- all eight mandatory analyst task IDs, statuses and summaries;
|
|
56
|
+
- key earnings, forward expectations, company/industry news, valuation, position guidance,
|
|
57
|
+
invalidation conditions, terminal/report-quality state, elapsed/deadline state and paths.
|
|
58
|
+
|
|
59
|
+
Master output remains a **recorded provisional method-seat result**. It is not a quotation,
|
|
60
|
+
endorsement, current statement or simulated personal advice from the named person.
|
|
61
|
+
|
|
62
|
+
System-owned catalog/report/handoff labels and failure text support `zh-CN`, English,
|
|
63
|
+
Japanese and Korean. Worker prompts receive the run language. Stable IDs and JSON field
|
|
64
|
+
names remain English for artifact compatibility.
|
|
65
|
+
|
|
66
|
+
## Quick contract
|
|
67
|
+
|
|
68
|
+
`quick_v1` remains explicit, plugin-managed and bounded to 600,000 ms. Its fixed four-seat
|
|
69
|
+
evidence wave, 1-4 method limit, one parallel Bull/Bear statement and short PM are unchanged.
|
|
70
|
+
It still rejects `all`, does not run three-round exact Q&A or adversarial verifiers, and
|
|
71
|
+
cannot be represented as `full_v2`.
|
|
72
|
+
|
|
73
|
+
## Assurance boundary
|
|
74
|
+
|
|
75
|
+
- Build channel: `solo_test`.
|
|
76
|
+
- `production_eligible=false`.
|
|
77
|
+
- `method_model_eligible=false`.
|
|
78
|
+
- Physical provisional packs: 26.
|
|
79
|
+
- Provisional `operator_lens`: 26.
|
|
80
|
+
- Operational seats: 0.
|
|
81
|
+
- Validated `method_model` seats: 0.
|
|
82
|
+
- Human source/formula approvals and approval signatures: 0.
|
|
83
|
+
|
|
84
|
+
One worker per selected method makes each recorded result visible; it does not create 26
|
|
85
|
+
independent base models, prove behavioral differentiation or promote a seat's maturity.
|
|
86
|
+
Formal production GA remains fail-closed.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# AlphaCouncil Agent v0.9.4 — Locale-Consistent Council Output (Non-GA)
|
|
2
|
+
|
|
3
|
+
`v0.9.4` is a non-GA GitHub prerelease that corrects the locale contract exposed by the
|
|
4
|
+
post-release QQQ Stage 0 acceptance. It does not publish to npm or change npm dist-tags.
|
|
5
|
+
|
|
6
|
+
## Why 0.9.4 exists
|
|
7
|
+
|
|
8
|
+
The `v0.9.3` runtime correctly bounded a plugin-managed full council to a thirty-minute
|
|
9
|
+
terminal state and made every selected method-seat statement visible. Its selection layer
|
|
10
|
+
still had a serious observability defect: a `zh-CN` catalog returned English `method` copy,
|
|
11
|
+
Japanese and Korean silently fell back to English, `auto` did not infer the prompt language,
|
|
12
|
+
and confirmation text was always English. A structurally complete English PM report could
|
|
13
|
+
also pass `report_quality` for a Japanese or Korean run.
|
|
14
|
+
|
|
15
|
+
Those are product defects, not investment findings.
|
|
16
|
+
|
|
17
|
+
## Selector and receipt corrections
|
|
18
|
+
|
|
19
|
+
- `zh-CN`, English, Japanese and Korean resolve to one canonical locale before catalog,
|
|
20
|
+
intent and receipt hashes are created.
|
|
21
|
+
- `auto` infers Chinese, Japanese and Korean scripts from the unchanged run prompt.
|
|
22
|
+
- Unsupported explicit selector locales fail with `UNSUPPORTED_SELECTION_LANGUAGE`; the
|
|
23
|
+
runtime no longer labels an English fallback as customer-language output.
|
|
24
|
+
- Every one of the 26 physical solo-test manifests carries four-locale title, identity,
|
|
25
|
+
method and best-for copy. All 26 Chinese method descriptions are now Chinese rather than
|
|
26
|
+
copied English, and reader-facing `best_for` no longer exposes machine snake-case domain
|
|
27
|
+
IDs in Chinese, Japanese or Korean.
|
|
28
|
+
- Human-facing maturity has `maturity_label`; the stable machine enum remains unchanged.
|
|
29
|
+
- Selection and confirmation text is localized, while stable IDs, receipt tokens, hashes,
|
|
30
|
+
JSON keys and maturity enums remain machine-stable.
|
|
31
|
+
- Receipt consumption revalidates the complete selection-record binding and recomputes
|
|
32
|
+
`selection_hash`; a tampered hash or crossed record fails before a run is created or the
|
|
33
|
+
one-time receipt is consumed.
|
|
34
|
+
|
|
35
|
+
## Worker and report language integrity
|
|
36
|
+
|
|
37
|
+
- Plugin-managed Evidence, dedicated method voice, Bull/Bear and PM packets are checked for
|
|
38
|
+
the requested reader language. A wrong-language response receives one bounded parse-only,
|
|
39
|
+
no-search repair opportunity and otherwise fails closed. Visible-host record tools reject
|
|
40
|
+
wrong-language packets before writing or marking a seat complete so the host can retry it.
|
|
41
|
+
- The language audit treats Han-only fragments as shared script instead of claiming that
|
|
42
|
+
every Kanji sentence is Chinese. Kana and Hangul take precedence, and English must contain
|
|
43
|
+
dominant English prose rather than a few company names or finance acronyms.
|
|
44
|
+
- Quick PM now uses the same parse/language/repair path as Bull and Bear. A real debate
|
|
45
|
+
timeout or transport failure produces a localized failure packet, never a fictitious
|
|
46
|
+
`DRY_RUN`, and reader-language mismatch remains distinct from malformed JSON.
|
|
47
|
+
- Japanese and Korean timeout, malformed-output, deterministic method-decline and PM
|
|
48
|
+
fallback text is localized. Failure diagnostics remain separate from investment evidence.
|
|
49
|
+
- `report_quality.json` records `requested_locale`, `observed_locale`, `language_status`,
|
|
50
|
+
target-script counts and mismatched sections. A complete English report cannot pass a
|
|
51
|
+
Japanese or Korean run.
|
|
52
|
+
- The system-owned Master Bench heading no longer appends English to non-English headings,
|
|
53
|
+
and delayed-price labeling no longer leaks provider English notes into localized handoff.
|
|
54
|
+
- Full visible-host recording requires all six Bull/Bear round artifacts, ordered round
|
|
55
|
+
barriers and the exact Round-2-question to Round-3-answer binding before the PM can finish.
|
|
56
|
+
Same-content retries are idempotent; conflicting round replays are rejected.
|
|
57
|
+
|
|
58
|
+
## Package acceptance
|
|
59
|
+
|
|
60
|
+
The release package check creates a physical npm tarball with lifecycle scripts disabled,
|
|
61
|
+
installs it offline into a temporary prefix, starts that installed MCP server, and checks all
|
|
62
|
+
four selector locales, exactly 31 MCP tools, exactly 26 catalog seats, one stable-ID
|
|
63
|
+
selection, one receipt consumption and replay rejection. Full source, generated-pack and
|
|
64
|
+
installed-tarball checks remain mandatory.
|
|
65
|
+
|
|
66
|
+
## Runtime boundary
|
|
67
|
+
|
|
68
|
+
- `full_v2` remains bounded queue-to-terminal at 1,800,000 ms for plugin-managed headless
|
|
69
|
+
execution. A deadline failure is persisted as incomplete; it is not a completeness promise.
|
|
70
|
+
- Each selected physical v3 method still receives an isolated explanation worker only after
|
|
71
|
+
its deterministic stance is frozen. These are provisional project-derived method seats,
|
|
72
|
+
not the named people's statements, endorsements or current views.
|
|
73
|
+
- Build channel: `solo_test`.
|
|
74
|
+
- `production_eligible=false`.
|
|
75
|
+
- `method_model_eligible=false`.
|
|
76
|
+
- Physical provisional packs: 26.
|
|
77
|
+
- Operational seats: 0.
|
|
78
|
+
- Validated `method_model` seats: 0.
|
|
79
|
+
- Formal GA remains fail-closed.
|