alphacouncil-agent 1.0.0 → 1.0.2

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.
Files changed (157) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/AGENTS.md +5 -6
  5. package/CHANGELOG.md +86 -0
  6. package/CLAUDE.md +5 -6
  7. package/README.ja.md +13 -12
  8. package/README.md +16 -16
  9. package/README.zh-CN.md +11 -11
  10. package/data/authored/core-seats.mjs +3 -3
  11. package/data/authored/quant-seats.mjs +2 -2
  12. package/data/authored/value-seats.mjs +4 -4
  13. package/data/build-profile.v1.json +1 -1
  14. package/docs/INSTALL.md +6 -10
  15. package/docs/plans/v1.1-basket-native-seats.md +267 -0
  16. package/knowledge/ai-assisted-solo/experiments/runs/a.json +10 -10
  17. package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
  18. package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
  19. package/knowledge/ai-assisted-solo/experiments/runs/d13.json +52 -52
  20. package/knowledge/ai-assisted-solo/experiments/runs/d26.json +68 -68
  21. package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +55 -55
  22. package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +71 -71
  23. package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +72 -72
  24. package/knowledge/ai-assisted-solo/experiments/simulation-input.json +51 -51
  25. package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +19 -19
  26. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/market_capitalisation.ai-review.json +35 -35
  27. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/owner_earnings_yield.ai-review.json +15 -15
  28. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/market_capitalisation.ai-review.json +35 -35
  29. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/price_implied_cash_yield.ai-review.json +15 -15
  30. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/nominal_earnings_yield_gap.ai-review.json +15 -15
  31. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/real_earnings_yield_gap.ai-review.json +15 -15
  32. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/expected_return_over_long_bond.ai-review.json +15 -15
  33. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/fundamental_expected_return.ai-review.json +15 -15
  34. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/market_capitalisation.ai-review.json +35 -35
  35. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/owner_earnings_yield.ai-review.json +15 -15
  36. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/net_current_asset_surplus_per_share.ai-review.json +15 -15
  37. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/net_current_asset_value_per_share.ai-review.json +35 -35
  38. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/current_cash_yield.ai-review.json +15 -15
  39. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/market_capitalisation.ai-review.json +35 -35
  40. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/policy_real_rate.ai-review.json +15 -15
  41. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/real_curve_slope.ai-review.json +15 -15
  42. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/implied_equity_risk_premium.ai-review.json +15 -15
  43. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/premium_versus_long_run_average.ai-review.json +15 -15
  44. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/liquidity_curve_impulse.ai-review.json +15 -15
  45. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/policy_real_rate.ai-review.json +15 -15
  46. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/five_year_opportunity_cost.ai-review.json +35 -35
  47. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/margin_retention.ai-review.json +15 -15
  48. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/margin_retention.ai-review.json +15 -15
  49. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/reinvestment_spread.ai-review.json +15 -15
  50. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/cash_conversion_gap.ai-review.json +15 -15
  51. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/cash_cover_of_leverage.ai-review.json +15 -15
  52. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/defensive_hurdle_base.ai-review.json +35 -35
  53. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/half_normalised_earnings_yield.ai-review.json +15 -15
  54. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/cash_quality_gap.ai-review.json +15 -15
  55. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/real_structural_growth.ai-review.json +15 -15
  56. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/downside_asset_coverage.ai-review.json +15 -15
  57. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/market_capitalisation.ai-review.json +35 -35
  58. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/cash_backed_decade_return.ai-review.json +15 -15
  59. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/decade_return_over_long_bond.ai-review.json +15 -15
  60. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/growth_justified_capitalisation.ai-review.json +15 -15
  61. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/market_capitalisation.ai-review.json +35 -35
  62. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/credit_cycle_position.ai-review.json +15 -15
  63. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/equity_over_corporate_debt.ai-review.json +15 -15
  64. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/debt_service_cushion.ai-review.json +15 -15
  65. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/reported_earnings_cash_gap.ai-review.json +15 -15
  66. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/normalised_skew.ai-review.json +15 -15
  67. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/round_trip_cost.ai-review.json +15 -15
  68. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/downside_floor_coverage.ai-review.json +15 -15
  69. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/market_capitalisation.ai-review.json +35 -35
  70. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/absolute_session_move.ai-review.json +15 -15
  71. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/session_move_over_implied.ai-review.json +15 -15
  72. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/round_trip_cost.ai-review.json +15 -15
  73. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/volatility_per_unit_of_width.ai-review.json +15 -15
  74. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/credit_cycle_position.ai-review.json +15 -15
  75. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/financing_burden.ai-review.json +15 -15
  76. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/debt_service_cushion.ai-review.json +15 -15
  77. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/normalised_skew.ai-review.json +15 -15
  78. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/edge_per_unit_of_volatility.ai-review.json +15 -15
  79. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/net_edge.ai-review.json +15 -15
  80. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/review-manifest.json +164 -164
  81. package/knowledge/solo-test/masters/master_ackman/provisional-index.json +1 -1
  82. package/knowledge/solo-test/masters/master_ackman/tools.json +6 -6
  83. package/knowledge/solo-test/masters/master_aschenbrenner/provisional-index.json +1 -1
  84. package/knowledge/solo-test/masters/master_aschenbrenner/tools.json +6 -6
  85. package/knowledge/solo-test/masters/master_asness/provisional-index.json +1 -1
  86. package/knowledge/solo-test/masters/master_bogle/provisional-index.json +1 -1
  87. package/knowledge/solo-test/masters/master_buffett/provisional-index.json +1 -1
  88. package/knowledge/solo-test/masters/master_buffett/tools.json +6 -6
  89. package/knowledge/solo-test/masters/master_burry/provisional-index.json +1 -1
  90. package/knowledge/solo-test/masters/master_burry/tools.json +6 -6
  91. package/knowledge/solo-test/masters/master_cathie_wood/provisional-index.json +1 -1
  92. package/knowledge/solo-test/masters/master_cathie_wood/tools.json +6 -6
  93. package/knowledge/solo-test/masters/master_dalio/provisional-index.json +1 -1
  94. package/knowledge/solo-test/masters/master_damodaran/provisional-index.json +1 -1
  95. package/knowledge/solo-test/masters/master_druckenmiller/provisional-index.json +1 -1
  96. package/knowledge/solo-test/masters/master_duan_yongping/provisional-index.json +1 -1
  97. package/knowledge/solo-test/masters/master_duan_yongping/tools.json +6 -6
  98. package/knowledge/solo-test/masters/master_fisher/provisional-index.json +1 -1
  99. package/knowledge/solo-test/masters/master_forensic_short/provisional-index.json +1 -1
  100. package/knowledge/solo-test/masters/master_graham/decision_policy.json +1 -1
  101. package/knowledge/solo-test/masters/master_graham/provisional-index.json +1 -1
  102. package/knowledge/solo-test/masters/master_graham/tools.json +6 -6
  103. package/knowledge/solo-test/masters/master_jhunjhunwala/provisional-index.json +1 -1
  104. package/knowledge/solo-test/masters/master_klarman/decision_policy.json +1 -1
  105. package/knowledge/solo-test/masters/master_klarman/provisional-index.json +1 -1
  106. package/knowledge/solo-test/masters/master_klarman/tools.json +6 -6
  107. package/knowledge/solo-test/masters/master_li_lu/provisional-index.json +1 -1
  108. package/knowledge/solo-test/masters/master_lynch/provisional-index.json +1 -1
  109. package/knowledge/solo-test/masters/master_lynch/tools.json +6 -6
  110. package/knowledge/solo-test/masters/master_marks/provisional-index.json +1 -1
  111. package/knowledge/solo-test/masters/master_munger/provisional-index.json +1 -1
  112. package/knowledge/solo-test/masters/master_natenberg/provisional-index.json +1 -1
  113. package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +1 -1
  114. package/knowledge/solo-test/masters/master_pabrai/provisional-index.json +1 -1
  115. package/knowledge/solo-test/masters/master_pabrai/tools.json +6 -6
  116. package/knowledge/solo-test/masters/master_simons/provisional-index.json +1 -1
  117. package/knowledge/solo-test/masters/master_sinclair/provisional-index.json +1 -1
  118. package/knowledge/solo-test/masters/master_soros/provisional-index.json +1 -1
  119. package/knowledge/solo-test/masters/master_taleb/provisional-index.json +1 -1
  120. package/knowledge/solo-test/masters/master_thorp/provisional-index.json +1 -1
  121. package/knowledge/solo-test/persona-v3-solo-test-formulas/compilation-manifest.json +21 -21
  122. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/components/tools.json +6 -6
  123. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  124. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/components/tools.json +6 -6
  125. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  126. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/components/tools.json +6 -6
  127. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  128. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/components/tools.json +6 -6
  129. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_value_per_share.derived-proxy-evidence.json +3 -3
  130. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/components/tools.json +6 -6
  131. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  132. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/components/tools.json +6 -6
  133. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/five_year_opportunity_cost.derived-proxy-evidence.json +3 -3
  134. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/components/tools.json +6 -6
  135. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/defensive_hurdle_base.derived-proxy-evidence.json +3 -3
  136. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/components/tools.json +6 -6
  137. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  138. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/components/tools.json +6 -6
  139. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  140. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/components/tools.json +6 -6
  141. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +3 -3
  142. package/mcp/lib/basket-news.mjs +181 -0
  143. package/mcp/lib/breadth.mjs +29 -1
  144. package/mcp/lib/cross-market.mjs +180 -0
  145. package/mcp/lib/fund-observations.mjs +152 -0
  146. package/mcp/lib/fundamentals.mjs +6 -1
  147. package/mcp/lib/funds.mjs +35 -0
  148. package/mcp/lib/grounding.mjs +55 -2
  149. package/mcp/lib/index-aggregate.mjs +16 -1
  150. package/mcp/lib/industry.mjs +23 -2
  151. package/mcp/lib/instrument-facts.mjs +318 -17
  152. package/mcp/lib/instruments.mjs +25 -0
  153. package/mcp/lib/markdown.mjs +41 -8
  154. package/mcp/lib/personas-v3/grounding-adapter.mjs +139 -0
  155. package/mcp/lib/xbrl-series.mjs +4 -2
  156. package/package.json +2 -2
  157. package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +18 -1
@@ -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.
@@ -18,29 +18,29 @@
18
18
  "formal_h_satisfied": false,
19
19
  "human_reference": false,
20
20
  "input_binding": {
21
- "input_hash": "sha256:9127909a333bb31bf3bda341b3f975c47b99dc709ae602fd643cb8aca4373882",
21
+ "input_hash": "sha256:db8f31c70e4b4589561a53127b16985a8b9d09000ba536df3467eacf857d2d0c",
22
22
  "path": "simulation-input.json"
23
23
  },
24
24
  "network_allowed": false,
25
25
  "production_effect": "none",
26
- "result_hash": "sha256:b6de9683451d9b4063cbab22561e335d6436637d20fb77baa4f5ad930e043994",
26
+ "result_hash": "sha256:8270eac9fbb11487a91b7c33a3b1557f92d7342020302f326195e7ac0b9e4019",
27
27
  "results": {
28
28
  "blocked_fail_closed_count": 0,
29
29
  "completion_status": "completed_machine_simulation",
30
30
  "decisions": [
31
31
  {
32
- "anonymous_method_hash": "sha256:ab1138811cd18a46315a4c7f840962dfe643e724c62e1343f35450e4826aac52",
33
- "deterministic_core_hash": "sha256:1138841001cf2bf5b3f3faee980b23f36ac693b79cc7832fe90433948600464f",
34
- "fact_pack_hash": "sha256:2887ff3b609b4d2d32b25ec1f81b7a46bea1b1cc1506d31582e6f8517591f907",
35
- "frozen_decision_hash": "sha256:f758e6c2c6166fcd40ef2cb68dc80402f14c8d8097f90cce629ae7df3e652fde",
32
+ "anonymous_method_hash": "sha256:357500e8737d25deebdbc69a9603fc9f014e76aab2a125e0d86fda3423f09794",
33
+ "deterministic_core_hash": "sha256:8a78f0bd49be30a84fe42757c86ce729e5473734c9c65ba9d5effd3738990ed9",
34
+ "fact_pack_hash": "sha256:0f2654d4be091acd616b680ea9e3a5c0d9487b20336d2365954c160b05cc3652",
35
+ "frozen_decision_hash": "sha256:fed53cb66f9feaf23300dbf4df06d8d138f730cf3774663de9cb4d75a7b098d3",
36
36
  "native_state": "provisional_reject",
37
- "pack_hash": "sha256:ddc7163f4e87ab93755fe95371029d811cedc273c14bdc273422eaa4dc370181",
37
+ "pack_hash": "sha256:6d5bb5075b04a3daf7e465e5c9d23c425b5de4bdb770f5ae83c67c3de9c5fb36",
38
38
  "persona_id": "master_buffett",
39
- "policy_execution_hash": "sha256:e9f632cee5f5527bcfd7af58bfe34a4c085d48e5fe7efce6286b47483c25fd9b",
39
+ "policy_execution_hash": "sha256:63a783a6971d798f8e57c797376bd780bb6dd7a23ddac0a03983e3660842125d",
40
40
  "score_ratio": 0.3333333333333333,
41
41
  "stance": "opposed",
42
42
  "status": "executed",
43
- "structured_decision_hash": "sha256:57a0f42891d0004baf89a7009aff6e17b504ebf8b8152ab288b54fe08438a4a7"
43
+ "structured_decision_hash": "sha256:1f311deaad734cbe73028eeefe08e2a967ad680a182cc415469bde700f01b490"
44
44
  }
45
45
  ],
46
46
  "deterministic_execution_count": 1,
@@ -54,7 +54,7 @@
54
54
  "verifier_checks": []
55
55
  },
56
56
  "reviewer_kind": "ai",
57
- "run_artifact_hash": "sha256:351606eac119186416b5d598c162b19151a89820c5abd0445b7413e66d77816d",
57
+ "run_artifact_hash": "sha256:a0161522586f9a9b2ee80b68081279ec2b9399692e8e9e1ec56aef00379d27db",
58
58
  "run_id": "A",
59
59
  "schema_version": 1,
60
60
  "simulation_scope": "single deterministic seat surrogate; formal single-model answer is not simulated"
@@ -16,7 +16,7 @@
16
16
  "formal_h_satisfied": false,
17
17
  "human_reference": false,
18
18
  "input_binding": {
19
- "input_hash": "sha256:9127909a333bb31bf3bda341b3f975c47b99dc709ae602fd643cb8aca4373882",
19
+ "input_hash": "sha256:db8f31c70e4b4589561a53127b16985a8b9d09000ba536df3467eacf857d2d0c",
20
20
  "path": "simulation-input.json"
21
21
  },
22
22
  "network_allowed": false,
@@ -37,7 +37,7 @@
37
37
  "verifier_checks": []
38
38
  },
39
39
  "reviewer_kind": "ai",
40
- "run_artifact_hash": "sha256:40b99e59216b8689cb696f62f33562545c686d890a637fd2daeba9339f0d3674",
40
+ "run_artifact_hash": "sha256:133ca81d8703085824a374f545ca30f83e90e4af45b8bdab17ed5aaa0e39adb1",
41
41
  "run_id": "B",
42
42
  "schema_version": 1,
43
43
  "simulation_scope": "frozen-input control digest only; eight LLM analyst outputs are not simulated"
@@ -16,7 +16,7 @@
16
16
  "formal_h_satisfied": false,
17
17
  "human_reference": false,
18
18
  "input_binding": {
19
- "input_hash": "sha256:9127909a333bb31bf3bda341b3f975c47b99dc709ae602fd643cb8aca4373882",
19
+ "input_hash": "sha256:db8f31c70e4b4589561a53127b16985a8b9d09000ba536df3467eacf857d2d0c",
20
20
  "path": "simulation-input.json"
21
21
  },
22
22
  "network_allowed": false,
@@ -37,7 +37,7 @@
37
37
  "verifier_checks": []
38
38
  },
39
39
  "reviewer_kind": "ai",
40
- "run_artifact_hash": "sha256:5158ac7a004d8a39a013ffed82ce15b851d4a7fbe921d8c0400c76e2a95f4756",
40
+ "run_artifact_hash": "sha256:0760f289508bcbed0222e48531f3b0f8c394243fca4d7f6ad0a8de0b53fbb1b9",
41
41
  "run_id": "C",
42
42
  "schema_version": 1,
43
43
  "simulation_scope": "prompt-catalog binding only; prompt-only LLM outputs are not simulated"
@@ -30,12 +30,12 @@
30
30
  "formal_h_satisfied": false,
31
31
  "human_reference": false,
32
32
  "input_binding": {
33
- "input_hash": "sha256:9127909a333bb31bf3bda341b3f975c47b99dc709ae602fd643cb8aca4373882",
33
+ "input_hash": "sha256:db8f31c70e4b4589561a53127b16985a8b9d09000ba536df3467eacf857d2d0c",
34
34
  "path": "simulation-input.json"
35
35
  },
36
36
  "network_allowed": false,
37
37
  "production_effect": "none",
38
- "result_hash": "sha256:89ff4c8d82db36d70b688f0b9f9cb120e8a448068e75a039867c0bb852f3c28d",
38
+ "result_hash": "sha256:fcaf68ab4c58ea790b7bdac6dbdd43bb69fde74450df0cb90fe9baab72723e78",
39
39
  "results": {
40
40
  "blocked_fail_closed_count": 0,
41
41
  "completion_status": "completed_machine_simulation",
@@ -55,46 +55,46 @@
55
55
  "structured_decision_hash": "sha256:3c8bc0bab2865cf2f92e3cbcb1dce6d5bc6c4219004bae09a88f3a010057eb85"
56
56
  },
57
57
  {
58
- "anonymous_method_hash": "sha256:b203d82883911049cf407f7e2705e6776172980ffc5958410f29f7f65250e25a",
59
- "deterministic_core_hash": "sha256:2bf1d6b890dbe7645570f61e395e4b5f0d8bd5ba70e2ff6b3b3a6c3c4a646719",
60
- "fact_pack_hash": "sha256:3933ca1fff73fef89719b9c0630b2b986a08afcaa23b7844d93afbda4004f2fc",
61
- "frozen_decision_hash": "sha256:198803de99975d90c21beae87d7267739403c6358916b1abe6362b084c00b621",
58
+ "anonymous_method_hash": "sha256:9f75bea5d4df5ca9568a1f23bb8d85664f07f752b69235b101929e064135f75f",
59
+ "deterministic_core_hash": "sha256:a20f6d80d48d021a5c7b72fef1a74e42f528027710015c962d4d556ac1e6c4da",
60
+ "fact_pack_hash": "sha256:f69c424fb4ab9bb147ca933702857366ea492f8e988bfb2aeeb4e64df2c32706",
61
+ "frozen_decision_hash": "sha256:234e552565bac7e446160dcf086dfde730ede400f03238d57d50d6e231de2ab8",
62
62
  "native_state": "provisional_reject",
63
- "pack_hash": "sha256:c4b01b9c61c04b4232194f51818ed63409f1da4b0fd61e8f5472b1fa52e0863c",
63
+ "pack_hash": "sha256:f960a6c7061ae791935590e8d045478a65ea451335aceaed5c275894a9b8c9d7",
64
64
  "persona_id": "master_graham",
65
- "policy_execution_hash": "sha256:6861540dd255f5ebd78cdaca15ffa18095ace1ab2ca9f5ad786c18a88414e563",
65
+ "policy_execution_hash": "sha256:d3412e038f48794eaf1822ffbe7492c1756877ba6f9e9a735ae84631c5f0a3be",
66
66
  "score_ratio": 0.6666666666666666,
67
67
  "stance": "opposed",
68
68
  "status": "executed",
69
- "structured_decision_hash": "sha256:045bd448ff765515ddb49f0b8bbbe35943fe62399ed2fe0d606eb521aba01844"
69
+ "structured_decision_hash": "sha256:50c4dc6b37d568f3ef9fb44d5e6df96934647dc64830e8b76b3751039e962908"
70
70
  },
71
71
  {
72
- "anonymous_method_hash": "sha256:73b59f0207396ebce092355421e97b2e4fcf7fc3541b10e316be041e03152c9a",
73
- "deterministic_core_hash": "sha256:416e9c05b915244f3bbcb894d8a44d0b4debef8a33d18199ab87f34ba23a0a7c",
74
- "fact_pack_hash": "sha256:3253c293a1bdac8885b6b583f280090fcf6e4a9384ecc6b33389d111d98b2db6",
75
- "frozen_decision_hash": "sha256:abb9409ef348cf1a28aa67730389e244f3db4c5dec6ac65c0613e3d07d323adb",
72
+ "anonymous_method_hash": "sha256:897de3a4d8083b8a41f2203cc3e6b22c19ba01418d957d8c7272d39f41e1b9ba",
73
+ "deterministic_core_hash": "sha256:fd446a362e6e692c40e0444a36fbce48641204d5c3033eb87712ca2db3871aae",
74
+ "fact_pack_hash": "sha256:1180729cdf02ce708d5f878fbad58fb20f95fe65e85ec418ce7ce67eca1f041f",
75
+ "frozen_decision_hash": "sha256:3f1779d081b7e3395464cc0edf6cc0a46f97a0eb0e865ba830b5c3ccdd191572",
76
76
  "native_state": "provisional_infeasible",
77
- "pack_hash": "sha256:e235ce383ece69987f20a09771e6a562afd23e64ef8e7fc15762f0e47b1e1d90",
77
+ "pack_hash": "sha256:75e8e620d38baabbceb41dd0625b28011a69deb85ef69470b449f30961eb8fd1",
78
78
  "persona_id": "master_ackman",
79
- "policy_execution_hash": "sha256:4beea2f06cc4a4891895a291ff19a57fbf78856c7d6d8258ebcdf19defcda4e5",
79
+ "policy_execution_hash": "sha256:c6b5f62a690e0dfad7b222a3459a8bc2f7e575116a4a55b71c56f86637844259",
80
80
  "score_ratio": 0.3333333333333333,
81
81
  "stance": "opposed",
82
82
  "status": "executed",
83
- "structured_decision_hash": "sha256:3f6bc3c849fed7377fdfb8e1b4e1fb76669854f1f0ccd6d06c0eb243b6067e1c"
83
+ "structured_decision_hash": "sha256:a67fd360c8421f51c1f15bd61864f3d5b222bf1bf26c71a44fc12db0640733bb"
84
84
  },
85
85
  {
86
- "anonymous_method_hash": "sha256:7a342446a1b28551f0409c3421ad8587912d61f40b49fbab88af02d109dfd159",
87
- "deterministic_core_hash": "sha256:48239f6bd8975dcb569c876c87d5a5e928e2d5561847e3e3bdb63f41ab36f936",
88
- "fact_pack_hash": "sha256:d757c4db706169da878abefd3f34c48a64868cb744fd5a3fd57b1ee397275f1a",
89
- "frozen_decision_hash": "sha256:05a691139e3620f2d9215e9b545a6fc2161ebe4ee764d13d794152589750305e",
86
+ "anonymous_method_hash": "sha256:c417dbfd3897434af849da0c2813359c87b79010905abec75944db2d5bfd4369",
87
+ "deterministic_core_hash": "sha256:8d05fa95f540005da65293a4043a6062e92a93b75e49ebde36b0fa5ee6b80cfb",
88
+ "fact_pack_hash": "sha256:d4687d42bceafe774ed3a420db1e669e071ff54f2ca75850d78c22d23fcb8f95",
89
+ "frozen_decision_hash": "sha256:272da73417d4ea91b4c58b8dd4bb4defa5a1f04be8892e732f0f67b46ab7ae82",
90
90
  "native_state": "provisional_watch",
91
- "pack_hash": "sha256:405941cb7b1b238148ac9e440fe6d58944bbb04e33ea87fdc38afb6e7ba5b64a",
91
+ "pack_hash": "sha256:8b03ac3bd46b01cfcc40e34e13abc2c7db54674ebb776b9bb59e4c3feafca5e2",
92
92
  "persona_id": "master_cathie_wood",
93
- "policy_execution_hash": "sha256:a03818c1d40cbbfc4511bfe094e78fe945b2a519daf5d0930ef9b93392690a43",
93
+ "policy_execution_hash": "sha256:2de40220ca39b960492ac336102a38194b8a2d926ca27cf9fb18d2ecb7abebd4",
94
94
  "score_ratio": 0.5,
95
95
  "stance": "cautious",
96
96
  "status": "executed",
97
- "structured_decision_hash": "sha256:80c200ae336b197c544f06500a493c608eef4bcaf960f65fb964a868d23870fb"
97
+ "structured_decision_hash": "sha256:84d3a269539a0f902298744241cb917ac8b6cd76bb938924724cac1b1bf1f37c"
98
98
  },
99
99
  {
100
100
  "anonymous_method_hash": "sha256:0bc2d56123fd2af585cc291f04a8cf1deb6ba9b805b516f8bc084009f12ea06a",
@@ -111,32 +111,32 @@
111
111
  "structured_decision_hash": "sha256:c3cb94709032e2b4dc1cb839b44010324e711890021c4d6208c8cb7b88c6c17e"
112
112
  },
113
113
  {
114
- "anonymous_method_hash": "sha256:e2f800a06d8b50c5326251e2480183b1bc0d2f4434c98af24b050658d4206787",
115
- "deterministic_core_hash": "sha256:70f277796ea4d63017054266017f351b8b98c19ac1ca2583dab7b397ac01e3cc",
116
- "fact_pack_hash": "sha256:1e0eca353b065d207796002726ad59ede1b445b64997d584c2a7e795ddb40738",
117
- "frozen_decision_hash": "sha256:2e437ccfb412f54091e0b564608420310172b01c40a1a538f05b8aa9c5a2365c",
114
+ "anonymous_method_hash": "sha256:0edefe158d4270dede0dfa22718a3fbd9d1a72a8427ba890476e607ddbce6da3",
115
+ "deterministic_core_hash": "sha256:8560330be7370853e0901af5712e9a538e928438b940993a2cd76d6ed99e207e",
116
+ "fact_pack_hash": "sha256:fbd346b509ccd69eb16a1302d93d9ee7f8fae8c28bfb25b594b4898543ea1536",
117
+ "frozen_decision_hash": "sha256:d6a04a3cb73dc189c282c9485ba091dd23338c84aa8bf0f3c0cb740b4b661ecb",
118
118
  "native_state": "provisional_opinion_only",
119
- "pack_hash": "sha256:b4c456b0dfd6540f667feab1a19c6e22e07764952701684f9ae0187b815bf624",
119
+ "pack_hash": "sha256:880c2d8f293a69541ddd080a2d6cad53488996eb6514cfd565ba0dc4039047ae",
120
120
  "persona_id": "master_burry",
121
- "policy_execution_hash": "sha256:160c95db7161d5ff3a0ae41b60975b7fce2ab803e79d3bc4b6569019821b7b0a",
121
+ "policy_execution_hash": "sha256:83d3070fabb07322c666d306be420f5173630adaf55286dc5f4cfa3336235346",
122
122
  "score_ratio": 0.3333333333333333,
123
123
  "stance": "opposed",
124
124
  "status": "executed",
125
- "structured_decision_hash": "sha256:eb514b40fdcc1c631b294d8337f09ec35b1f990ab038e59167ef56c7021b4796"
125
+ "structured_decision_hash": "sha256:681107df21fe8be65cc2e1ed044625466f9d0ac900b28f8eaaa79614d87d37f7"
126
126
  },
127
127
  {
128
- "anonymous_method_hash": "sha256:ec69ba9e9e392e64dfa3ffc4edba0b117312943931ff1bb52ef5a1d01397791b",
129
- "deterministic_core_hash": "sha256:0e178e3bf0fc9113dd766876a7049e42b003dfc4ec75298193ef8b88bd92b4d4",
130
- "fact_pack_hash": "sha256:4069f11b3a0887487af2c3f2d67eb7652d30fff1418f4532f446e83efc2fb020",
131
- "frozen_decision_hash": "sha256:b088edad92a352a15ea315ca85e3ea3e504e6a2c6b9126446d7aa7b98060ae0f",
128
+ "anonymous_method_hash": "sha256:992b5268a4549c4e5723c6dceb0b65a0aa1f03dbe906dca95da34e5b0469e344",
129
+ "deterministic_core_hash": "sha256:8c2b1adcaab9d55ff5bab83b7ed62fa4250dd65acd3988b21571c4b6d71c1d8a",
130
+ "fact_pack_hash": "sha256:6735e9705be48f6b9c19db94360b13ad6727db15e288c4e1225664ddd1d1a5a1",
131
+ "frozen_decision_hash": "sha256:779b9a62a801452bc1b48e809692f25d10348c43978a44d9e860b2706d84dbfe",
132
132
  "native_state": "provisional_watch",
133
- "pack_hash": "sha256:6f4ae445ef1eca67f7b3c7658506d3f85fc1b9265c27fc659d400cd499e25794",
133
+ "pack_hash": "sha256:8ee9e13deaadaeef3065feb7bb5b39382181338cf1055b769b153cad4c308ce4",
134
134
  "persona_id": "master_pabrai",
135
- "policy_execution_hash": "sha256:23dfb7ff5fb42e8aabfa021222d7f6b3341e2bfb93fb3a378ec9e60b75128bd3",
135
+ "policy_execution_hash": "sha256:87a2a8034242271ddea852302c001d0e0ef35de1b75cd01c5041d436693da2b0",
136
136
  "score_ratio": 0.6666666666666666,
137
137
  "stance": "cautious",
138
138
  "status": "executed",
139
- "structured_decision_hash": "sha256:7dfbd10cb8eb1ab9e62d8477eb7128e9f5a08b3d0dd0aa27a2fc4ecf3b85f2f3"
139
+ "structured_decision_hash": "sha256:200220879e34db72003a0570b0408c74da25aaa505bb72f015efed0cf974fc97"
140
140
  },
141
141
  {
142
142
  "anonymous_method_hash": "sha256:40e8c2fc7e7e7379c93fb65429cc35cd559b98873aae505ebdaf85aaf8e977bb",
@@ -153,18 +153,18 @@
153
153
  "structured_decision_hash": "sha256:5bd03ac086a21a13f1f4fbef0233d5a9353414ccf2de776415b7585fff505caa"
154
154
  },
155
155
  {
156
- "anonymous_method_hash": "sha256:2273c338bfdcdf7ec5e4c895a6a8d6f120e87452dd3c8300f288c84fcc287092",
157
- "deterministic_core_hash": "sha256:70ba8d88de5ddbf6080224674d5b31e81b6fcbb98f193b7e48395a00749f3152",
158
- "fact_pack_hash": "sha256:c4d47dc5f65a84c9b799f37241e1742054c705af8f23ee5dab4db7e94ae49336",
159
- "frozen_decision_hash": "sha256:abcf4e744a91d695c71d6429bc7d90cf7826688fcb96690314c147b556bb784a",
156
+ "anonymous_method_hash": "sha256:629a8267e6a28e25a922d6679774255be176ef0b4a7f88fa9f851cc49533b8cc",
157
+ "deterministic_core_hash": "sha256:8ba2547f9733f77c3493670dd5b0139c9ee07fed15c2b88cd99ab03a2eaa06ed",
158
+ "fact_pack_hash": "sha256:e7dc8ac4090650fae587cdb5095e75b5d90b5fea3b961c7394cce42ce70ce27a",
159
+ "frozen_decision_hash": "sha256:a6827bae19091db87a530543335d7bd7cbbf7a2d8702b0671ff463e1c9b9bd4c",
160
160
  "native_state": "provisional_watch",
161
- "pack_hash": "sha256:ad67afa412a06398f7a8215f51e3257fa71aa11d12a6b849cef7a1fd3e49b5bb",
161
+ "pack_hash": "sha256:9a49c8a1c37ea4e8653f27d829d1ba75142e15e822159bf8290463ae3edfa581",
162
162
  "persona_id": "master_lynch",
163
- "policy_execution_hash": "sha256:2c6090559d28e32fa4c3e13e171c94cf34d6ecd0455e3545515111a72f3a37b3",
163
+ "policy_execution_hash": "sha256:501e4b2de3568740ed0e809536beff6a4219a6b8beb4cd5aa297d2e1975b0545",
164
164
  "score_ratio": 0.6666666666666666,
165
165
  "stance": "cautious",
166
166
  "status": "executed",
167
- "structured_decision_hash": "sha256:528bbc9e17bc29d081b7170d70e78053c6a803909bf240e0a0120f3c252a13ee"
167
+ "structured_decision_hash": "sha256:d2a94dafc7057920c5fdcf6d52fd984f3190316d2276f6910f3f8ceb30b57d25"
168
168
  },
169
169
  {
170
170
  "anonymous_method_hash": "sha256:e7fbc9600169cda864cb7fea43f938194ed8f84e77a96c7df72f131a0d67113a",
@@ -209,18 +209,18 @@
209
209
  "structured_decision_hash": "sha256:8d2734b72de1c1679f54dcce76cb200cf00fc20eae3a54751614dfd65ee7d3a8"
210
210
  },
211
211
  {
212
- "anonymous_method_hash": "sha256:ab1138811cd18a46315a4c7f840962dfe643e724c62e1343f35450e4826aac52",
213
- "deterministic_core_hash": "sha256:1138841001cf2bf5b3f3faee980b23f36ac693b79cc7832fe90433948600464f",
214
- "fact_pack_hash": "sha256:2887ff3b609b4d2d32b25ec1f81b7a46bea1b1cc1506d31582e6f8517591f907",
215
- "frozen_decision_hash": "sha256:f758e6c2c6166fcd40ef2cb68dc80402f14c8d8097f90cce629ae7df3e652fde",
212
+ "anonymous_method_hash": "sha256:357500e8737d25deebdbc69a9603fc9f014e76aab2a125e0d86fda3423f09794",
213
+ "deterministic_core_hash": "sha256:8a78f0bd49be30a84fe42757c86ce729e5473734c9c65ba9d5effd3738990ed9",
214
+ "fact_pack_hash": "sha256:0f2654d4be091acd616b680ea9e3a5c0d9487b20336d2365954c160b05cc3652",
215
+ "frozen_decision_hash": "sha256:fed53cb66f9feaf23300dbf4df06d8d138f730cf3774663de9cb4d75a7b098d3",
216
216
  "native_state": "provisional_reject",
217
- "pack_hash": "sha256:ddc7163f4e87ab93755fe95371029d811cedc273c14bdc273422eaa4dc370181",
217
+ "pack_hash": "sha256:6d5bb5075b04a3daf7e465e5c9d23c425b5de4bdb770f5ae83c67c3de9c5fb36",
218
218
  "persona_id": "master_buffett",
219
- "policy_execution_hash": "sha256:e9f632cee5f5527bcfd7af58bfe34a4c085d48e5fe7efce6286b47483c25fd9b",
219
+ "policy_execution_hash": "sha256:63a783a6971d798f8e57c797376bd780bb6dd7a23ddac0a03983e3660842125d",
220
220
  "score_ratio": 0.3333333333333333,
221
221
  "stance": "opposed",
222
222
  "status": "executed",
223
- "structured_decision_hash": "sha256:57a0f42891d0004baf89a7009aff6e17b504ebf8b8152ab288b54fe08438a4a7"
223
+ "structured_decision_hash": "sha256:1f311deaad734cbe73028eeefe08e2a967ad680a182cc415469bde700f01b490"
224
224
  }
225
225
  ],
226
226
  "deterministic_execution_count": 13,
@@ -234,7 +234,7 @@
234
234
  "verifier_checks": []
235
235
  },
236
236
  "reviewer_kind": "ai",
237
- "run_artifact_hash": "sha256:6a1dc3da8edf2b2d406cb1d4ae96aad6bfd8da8d0bfd49044b8d8a3dffd288b0",
237
+ "run_artifact_hash": "sha256:6e5ae1711c012a4a7bb670090485ed071f5fdb66f33145e3adf9fb394c2231df",
238
238
  "run_id": "D13",
239
239
  "schema_version": 1,
240
240
  "simulation_scope": "13 physical provisional deterministic seats on frozen synthetic typed facts"