alphacouncil-agent 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +82 -0
- package/README.md +24 -15
- package/README.zh-CN.md +18 -10
- package/data/authored/core-seats.mjs +11 -7
- package/data/authored/quant-seats.mjs +2 -2
- package/data/authored/value-seats.mjs +4 -4
- package/data/build-profile.v1.json +1 -1
- package/data/persona-v3-build-specs.v1.mjs +1 -1
- package/docs/plans/v1.1-say-something-worth-reading.md +116 -0
- package/knowledge/ai-assisted-solo/experiments/runs/a.json +2 -2
- 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 +15 -15
- package/knowledge/ai-assisted-solo/experiments/runs/d26.json +27 -27
- package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +18 -18
- package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +30 -30
- package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +31 -31
- package/knowledge/ai-assisted-solo/experiments/simulation-input.json +9 -9
- package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +19 -19
- package/knowledge/solo-test/masters/master_bogle/decision_policy.json +4 -3
- package/knowledge/solo-test/masters/master_bogle/provisional-index.json +3 -0
- package/knowledge/solo-test/masters/master_bogle/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_graham/decision_policy.json +1 -1
- package/knowledge/solo-test/masters/master_klarman/decision_policy.json +1 -1
- package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +1 -1
- package/mcp/lib/basket-news.mjs +181 -0
- package/mcp/lib/breadth.mjs +24 -0
- package/mcp/lib/constants.mjs +3 -0
- package/mcp/lib/cross-market.mjs +180 -0
- package/mcp/lib/fundamentals.mjs +11 -0
- package/mcp/lib/grounding.mjs +101 -3
- package/mcp/lib/industry.mjs +23 -2
- package/mcp/lib/insider-ownership.mjs +23 -12
- package/mcp/lib/instrument-facts.mjs +3 -0
- package/mcp/lib/markdown.mjs +41 -8
- package/mcp/lib/orchestrator.mjs +10 -2
- package/mcp/lib/personas/engine.mjs +66 -9
- package/mcp/lib/personas-v3/deterministic-executor.mjs +39 -2
- package/mcp/lib/personas-v3/grounding-adapter.mjs +143 -0
- package/mcp/lib/personas-v3/runtime.mjs +9 -2
- package/mcp/lib/screen.mjs +27 -1
- package/mcp/lib/sec.mjs +80 -17
- package/mcp/lib/voice-from-decision.mjs +211 -0
- package/package.json +1 -1
- package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +11 -0
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "AlphaCouncil plugins for public-equity research.",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.3"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "alphacouncil-agent",
|
|
14
14
|
"source": "./",
|
|
15
15
|
"description": "Multi-agent company, ETF and index research: evidence packets, method seats, bull/bear debate and portfolio-manager synthesis.",
|
|
16
|
-
"version": "1.0.
|
|
16
|
+
"version": "1.0.3",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Zhao73"
|
|
19
19
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alphacouncil-agent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Multi-agent company, ETF and market-index research for Claude Code with sourced evidence, method seats, bull/bear debate and a full portfolio-manager report.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Zhao73"
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,88 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes per release. Dates are UTC.
|
|
4
4
|
|
|
5
|
+
## [1.0.3] — 2026-07-29
|
|
6
|
+
|
|
7
|
+
Three real runs are the specification: a GLW run put all eight selected seats at `out_of_scope`
|
|
8
|
+
with weight zero, an INTC run sent six to the deterministic fallback, and a LITE run reported
|
|
9
|
+
"no ticker was provided" for a ticker that had been provided. The filings contained the data
|
|
10
|
+
every one of them said was missing.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **The missing facts were mostly missing tag aliases.** `grossProfit` resolved for five of
|
|
15
|
+
fifteen large caps, because most filers publish revenue and cost of revenue separately rather
|
|
16
|
+
than tagging it; it is now derived from those two, matched by period end, with a tagged value
|
|
17
|
+
always winning. `capex` missed Corning entirely, which files `PaymentsForCapitalImprovements`
|
|
18
|
+
— that one absent alias removed owner earnings, and with it Buffett and Ackman, for every
|
|
19
|
+
issuer tagging it that way. Gross margin now resolves for all fourteen testable filers.
|
|
20
|
+
- **Market facts were fetched only for baskets.** Asness, Marks and Damodaran require
|
|
21
|
+
`index.aggregate_earnings_yield` and reported it missing on every single-company run. The
|
|
22
|
+
market's aggregate earnings yield is not a property of the subject; it is the yardstick the
|
|
23
|
+
subject is measured against.
|
|
24
|
+
- **A seat could not reach its own answer about an absent fact.** Pabrai is authored with a veto
|
|
25
|
+
that says no downside floor means pass. That fact is also a tool input, and a tool declaring
|
|
26
|
+
`on_missing: "fail"` aborted the policy before any veto ran. A veto that reads only facts
|
|
27
|
+
needs nothing a tool produces, so when one has already decided the seat, the tools it would
|
|
28
|
+
have fed no longer abort the run.
|
|
29
|
+
- **A grounding timeout discarded everything.** The caller threw away a completed quote, screen
|
|
30
|
+
and filing set because one feed was slow, and the analysts described the empty result as a
|
|
31
|
+
missing ticker. Grounding settles at its own budget and returns what arrived. Section 16
|
|
32
|
+
ownership was reading filings one at a time — up to sixty throttled round trips on the
|
|
33
|
+
critical path — and is now batched: LITE completes in seven seconds.
|
|
34
|
+
- **SEC rate limiting collapsed a run.** A 429 is now retried with a bounded backoff instead of
|
|
35
|
+
being indistinguishable in the report from the data not existing.
|
|
36
|
+
- **A registrant with no filings is one diagnosis, not eight.** `XOM` resolves through SEC's own
|
|
37
|
+
ticker file to a newly formed holding company with zero us-gaap tags.
|
|
38
|
+
- **The maturity suffix stopped leaking into sentences.** Statements read "using the X
|
|
39
|
+
provisional operator lens method".
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- **Seats say what they looked at.** The five-field voice — what I see, how my method reads it,
|
|
44
|
+
would I act, what changes my mind, where I disagree — is composed from the frozen decision:
|
|
45
|
+
the facts read and their values, what the tools produced, which scoring conditions held and
|
|
46
|
+
which did not, and what would move the verdict. Because it is derived from the decision it
|
|
47
|
+
cannot drift from it, and anonymous rule ids are mapped back to the seat's readable names.
|
|
48
|
+
Abstentions get the same structure.
|
|
49
|
+
|
|
50
|
+
## [1.0.2] — 2026-07-29
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- **A basket now has a news identity.** `SOX` has no press office and files nothing, so a
|
|
55
|
+
basket run carried market-wide headlines and no industry at all. The industry is derived from
|
|
56
|
+
the SIC groups of the largest holdings, weighted — SOXX resolves to semiconductors because
|
|
57
|
+
its holdings are semiconductor registrants, and it survives a rebalance because nothing is
|
|
58
|
+
hand-maintained. Where no group dominates, the basket is queried as the several industries it
|
|
59
|
+
actually is: an industrial fund gets aerospace, machinery and electronics rather than one
|
|
60
|
+
misleading label. Constituent news and 8-K filings come with the weight of the holding they
|
|
61
|
+
belong to.
|
|
62
|
+
- **The SIC group table covers every code a US registrant can file.** It had real holes —
|
|
63
|
+
aerospace and autos, brokers, media and entertainment, commercial research — and a holding in
|
|
64
|
+
one of them resolved to no industry and therefore to no industry news. 22 groups to 43, with
|
|
65
|
+
a test that walks every SIC from 0100 to 8999.
|
|
66
|
+
- **News as counts, never as content.** `news.covered_weight` and `news.filing_event_weight`
|
|
67
|
+
are dated quantities an event-driven method may read. Headlines themselves stay out of the
|
|
68
|
+
arithmetic: a stance that changed with the morning's press would not be reproducible, which
|
|
69
|
+
is the property this runtime exists to protect.
|
|
70
|
+
- **Cross-market correlation and sector dispersion.** Correlation to the broad market, to
|
|
71
|
+
KOSPI, to KOSDAQ and to the semiconductor cycle, plus dispersion across the eleven sector
|
|
72
|
+
SPDRs. Dalio's authored policy already limited position size by correlation and had none to
|
|
73
|
+
read. Sessions pair by DATE: Korea and the United States keep different holidays, and zipping
|
|
74
|
+
two close arrays by index compares a Tuesday with a Wednesday.
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
|
|
78
|
+
- **A fired veto is a verdict, not silence.** Graham finding no asset floor has answered —
|
|
79
|
+
his construction is a price below a computed floor, and without one there is no margin of
|
|
80
|
+
safety, which is his own definition of speculation. He passes. Klarman and Pabrai likewise.
|
|
81
|
+
Left alone: li_lu, forensic_short and asness refuse on circle-of-competence grounds, and a
|
|
82
|
+
forensic short with no allegation is not bearish.
|
|
83
|
+
- **The report separates a judgment from a data gap**, in four languages. A seat whose method
|
|
84
|
+
ran to completion and returned "not this one" no longer reads as a seat that was starved of
|
|
85
|
+
inputs.
|
|
86
|
+
|
|
5
87
|
## [1.0.1] — 2026-07-29
|
|
6
88
|
|
|
7
89
|
A SOX run ended with 25 of 27 seats abstaining. The seats were not the problem.
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
<a href="docs/INSTALL.md"><b>Install</b></a> ·
|
|
33
33
|
<a href="#-usage"><b>Usage</b></a> ·
|
|
34
34
|
<a href="#-tools--27-all-keyless"><b>Tools</b></a> ·
|
|
35
|
-
<a href="#-the-bench--
|
|
35
|
+
<a href="#-the-bench--27-investor-method-lenses"><b>The bench</b></a> ·
|
|
36
36
|
<a href="#-architecture"><b>Architecture</b></a> ·
|
|
37
37
|
<a href="CHANGELOG.md"><b>Changelog</b></a> ·
|
|
38
38
|
<a href="#-disclaimer"><b>Disclaimer</b></a>
|
|
@@ -57,7 +57,11 @@ AlphaCouncil Agent is a Codex and Claude Code plugin for public-equity research
|
|
|
57
57
|
| | |
|
|
58
58
|
|---|---|
|
|
59
59
|
| 🏛️ **A council, not one opinion** | Eight specialist analysts by default, eleven available — market data, earnings, forward expectations, quant, valuation, news and supply chain, insider/SEC, IB events, macro, narrative, crowding. |
|
|
60
|
-
| 🎭 **
|
|
60
|
+
| 🎭 **27 selectable investor lenses** | Buffett, Munger, Graham, Lynch, Marks, Damodaran, Ackman, Cathie Wood, Pabrai, Bogle and more read the **same facts** through different stated research priorities. Every council run shows all 27 with actual maturity before research. Full accepts any non-empty selection or `all`; quick requires 1-4 and rejects `all`. |
|
|
61
|
+
| 🧺 **A basket is not a company, and the bench knows it** | An ETF or index is priced by look-through: a fund owning 1% of a business has a claim on 1% of its owner earnings, so a company method reads a basket **without changing its method**. Ratios aggregate by weight; absolute figures become the fund's own dollar claim; a share count is refused because it has no portfolio meaning. |
|
|
62
|
+
| 📰 **A basket gets its own industry news** | `SOX` has no press office. Its industry is derived from the weighted SIC groups of its holdings, so SOXX resolves to semiconductors and survives a rebalance. Where no group dominates, the basket is queried as the several industries it actually is. |
|
|
63
|
+
| 🌏 **What else you are betting on** | Correlation to the broad market, to KOSPI, to KOSDAQ and to the semiconductor cycle, plus dispersion across the eleven sector SPDRs. Sessions pair by date, because Korea and the United States keep different holidays. |
|
|
64
|
+
| 💵 **Fund flow that refuses to be faked** | Creations minus redemptions, priced. Only a filed share count or the issuer's own assets-over-NAV identity may price a flow; a count reconstructed from positions is refused, because a difference cancels the number and keeps the error. |
|
|
61
65
|
| 🐂🐻 **Adversarial by design** | Full runs a three-round bull/bear cross-exam and the visible/deep path can add three adversarial verifiers. Quick runs one parallel bull/bear statement round and a short PM; it checks scoped source IDs but explicitly does not claim adversarial verification. |
|
|
62
66
|
| ⏱️ **Bounded full headless run** | Plugin-managed full starts all eight analysts together, runs Bull/Bear together inside each round, and persists a terminal run within 30 minutes. Provider failures produce an explicit `incomplete` result, never silently missing seats. |
|
|
63
67
|
| 🔍 **Auditable, never hallucinated** | Every claim maps to a source ID. A screen rule with missing inputs is `skipped`, never a pass. An undated headline is excluded, not shown as recent. Gaps are a section, not an omission. |
|
|
@@ -68,14 +72,19 @@ AlphaCouncil Agent is a Codex and Claude Code plugin for public-equity research
|
|
|
68
72
|
|
|
69
73
|
This repository is the uploadable source copy. Runtime outputs are written outside the repo under `~/.alphacouncil-agent/runs/<run_id>/`.
|
|
70
74
|
|
|
71
|
-
## What
|
|
75
|
+
## What this ships
|
|
72
76
|
|
|
73
|
-
`npm install -g alphacouncil-agent` installs
|
|
77
|
+
`npm install -g alphacouncil-agent` installs the current release.
|
|
74
78
|
|
|
75
79
|
Twenty-seven method seats, each running its own formulas and its own thresholds against typed
|
|
76
|
-
facts built from SEC filings, FRED series, issuer holdings disclosures
|
|
77
|
-
aggregates
|
|
78
|
-
|
|
80
|
+
facts built from SEC filings, FRED series, issuer holdings disclosures, published index
|
|
81
|
+
aggregates, Section 16 ownership, cross-market price history and dated industry news.
|
|
82
|
+
Fifty-four executable tools.
|
|
83
|
+
|
|
84
|
+
Measured against live grounding, with no fixtures: every one of the 27 seats reaches a stance
|
|
85
|
+
somewhere across a mixed set of symbols, with no contract failures. A basket that had **no data
|
|
86
|
+
path at all** — `SOX` was in neither registry — now produces 40-plus typed facts, and the seats
|
|
87
|
+
that read them are running the same methods they run on a company.
|
|
79
88
|
|
|
80
89
|
Seats carry the `operator_lens` admission level. Their formulas and thresholds are
|
|
81
90
|
AI-authored and trace to named published work, but have not been through human review, and the
|
|
@@ -145,7 +154,7 @@ with analyst Markdown files and `artifact_index.md` in the same run directory. F
|
|
|
145
154
|
shows the system quote (or an explicit quote-data gap), all eight analyst statuses/summaries,
|
|
146
155
|
and every selected method seat's frozen stance plus readable explanation/status. Its final
|
|
147
156
|
section contains the exact selected-seat count and one statement per stable ID; `all` ends
|
|
148
|
-
with all
|
|
157
|
+
with all 27 statements. These are provisional method-seat outputs, never quotes from the
|
|
149
158
|
named people.
|
|
150
159
|
|
|
151
160
|
### Slash commands
|
|
@@ -156,7 +165,7 @@ rather than four in a menu of a hundred.
|
|
|
156
165
|
| Invocation | What runs | Model spend |
|
|
157
166
|
|---|---|---|
|
|
158
167
|
| `/alpha <ticker>` | Shows every master, confirms `1..N`/ranges/`all`, then full; plugin-managed headless is ≤30m | deterministic stance + one isolated voice worker per selected v3 seat |
|
|
159
|
-
| `/alpha <ticker> quick` | Shows all
|
|
168
|
+
| `/alpha <ticker> quick` | Shows all 27, confirms 1-4 (no `all`), then plugin-managed `quick_v1` (≤10m) | varies with selection |
|
|
160
169
|
| `/alpha <ticker> screen` | Mechanical filings screen only | **none** |
|
|
161
170
|
| `/alpha <ticker> options` | IV term structure, skew, positioning | **none** |
|
|
162
171
|
| `/alpha <ticker> news` | Dated filings and headlines | **none** |
|
|
@@ -197,7 +206,7 @@ Japanese and Korean; each worker receives the run language.
|
|
|
197
206
|
|
|
198
207
|
Quick is never inferred from impatience or a full-run failure. It runs only through the
|
|
199
208
|
plugin-managed headless `analyze_symbol(council_mode="quick")`; `plan_visible_run` rejects
|
|
200
|
-
quick. After the complete
|
|
209
|
+
quick. After the complete 27-seat display and a 1-4-seat confirmation, it executes:
|
|
201
210
|
|
|
202
211
|
1. `market_data`, `earnings_deep_dive`, `valuation_long_short` and
|
|
203
212
|
`news_industry_management` in one parallel wave;
|
|
@@ -234,7 +243,7 @@ Default stock-analysis runs are full runs, not lite summaries:
|
|
|
234
243
|
- News, industry context, supply chain, and management's words checked against their actions
|
|
235
244
|
- SEC filings, Form 4 insider transactions, buybacks, dilution, debt and capital allocation
|
|
236
245
|
- Investment-banking event analysis for M&A, ECM, debt, buybacks and strategic transactions
|
|
237
|
-
- A selectable bench of
|
|
246
|
+
- A selectable bench of 27 investor method lenses reading the same facts
|
|
238
247
|
- Bull researcher, bear researcher and portfolio-manager synthesis
|
|
239
248
|
|
|
240
249
|
Full is fail-fast at its mandatory evidence barrier. If a required evidence role still
|
|
@@ -275,7 +284,7 @@ not only in the docs, because the payload is what gets quoted downstream:
|
|
|
275
284
|
contracts — is dropped rather than averaged in, because a zero does not look like a gap,
|
|
276
285
|
it looks like a calm stock.
|
|
277
286
|
|
|
278
|
-
## 🏛️ The bench —
|
|
287
|
+
## 🏛️ The bench — 27 investor method lenses
|
|
279
288
|
|
|
280
289
|
Reconstructions of publicly documented methods, not anything the named people said. Each
|
|
281
290
|
states how it thinks, what it notices first, its characteristic challenge, and **its own
|
|
@@ -291,8 +300,8 @@ failure mode** — a seat that cannot name how it goes wrong will not flag it wh
|
|
|
291
300
|
| Modern | Aschenbrenner |
|
|
292
301
|
| v3 expansion | Damodaran · Ackman · Cathie Wood · Pabrai · Jhunjhunwala |
|
|
293
302
|
|
|
294
|
-
The
|
|
295
|
-
not
|
|
303
|
+
The `solo_test` catalog has 27 selectable physical v3 packs, but **27 physical packs is
|
|
304
|
+
not 27 approved method models**. Every seat is a provisional `operator_lens` backed by
|
|
296
305
|
project-derived proxy material; the 52 tools are executable test proxies, not human-approved
|
|
297
306
|
formula attribution. Operational and `method_model` counts are both zero, and production GA
|
|
298
307
|
remains fail-closed.
|
|
@@ -312,7 +321,7 @@ the verifier node shown here.
|
|
|
312
321
|
flowchart TD
|
|
313
322
|
U["@alphacouncil-agent<br/>ticker / question"] --> G[("Established facts<br/>filings · quotes · macro · options")]
|
|
314
323
|
G --> AG{{"Analyst council"}}
|
|
315
|
-
G --> MS{{"Master bench<br/>
|
|
324
|
+
G --> MS{{"Master bench<br/>27 lenses"}}
|
|
316
325
|
AG --> A1["📈 Market data"]
|
|
317
326
|
AG --> A2["💰 Earnings"]
|
|
318
327
|
AG --> A3["⚖️ Valuation"]
|
package/README.zh-CN.md
CHANGED
|
@@ -47,7 +47,7 @@ AlphaCouncil Agent 是一个面向**上市股票研究**的 Codex / Claude Code
|
|
|
47
47
|
|
|
48
48
|
| | |
|
|
49
49
|
|---|---|
|
|
50
|
-
| 🏛️ **是委员会,不是一家之言** | 完整模式默认 8 个证据席、最多 11 个;quick 固定 4 个并行证据席。两者都在研究前完整展示
|
|
50
|
+
| 🏛️ **是委员会,不是一家之言** | 完整模式默认 8 个证据席、最多 11 个;quick 固定 4 个并行证据席。两者都在研究前完整展示 27 个方法席。 |
|
|
51
51
|
| 🐂🐻 **天生对抗式** | 完整模式跑三轮多空交叉质询;quick 只跑一轮并行 Bull/Bear 陈述和短 PM,且明确不声称完成对抗 verifier。 |
|
|
52
52
|
| ⏱️ **完整 headless 有硬时限** | 插件托管 full 将 8 个分析师同波启动、每轮 Bull/Bear 同时启动,并在 30 分钟内保存终态;外部服务故障会明确 `incomplete`,不会静默漏席。 |
|
|
53
53
|
| 🔍 **可审计,不瞎编** | 每条结论都映射到 source ID;缺失数据写进「数据缺口」章节,绝不隐藏。 |
|
|
@@ -61,11 +61,15 @@ AlphaCouncil Agent 是一个面向**上市股票研究**的 Codex / Claude Code
|
|
|
61
61
|
|
|
62
62
|
## 1.0.0 交付了什么
|
|
63
63
|
|
|
64
|
-
`npm install -g alphacouncil-agent`
|
|
64
|
+
`npm install -g alphacouncil-agent` 装到的就是最新正式版。
|
|
65
65
|
|
|
66
|
-
27 个方法席,每一席跑自己的公式和自己的阈值,读的是从 SEC 申报、FRED
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
27 个方法席,每一席跑自己的公式和自己的阈值,读的是从 SEC 申报、FRED 序列、发行商持仓披露、
|
|
67
|
+
公开指数聚合值、Section 16 持股、跨市场价格历史和带日期的行业新闻构建的类型化事实。
|
|
68
|
+
54 个可执行工具。
|
|
69
|
+
|
|
70
|
+
活体行情实测、不用任何 fixture:27 席全部能在混合标的集合中的某个标的上给出立场,零契约失败。
|
|
71
|
+
一个此前**根本没有数据路径**的篮子(`SOX` 两个注册表里都没有)现在能产出 40 多个类型化事实,
|
|
72
|
+
而读它们的席位跑的是和分析个股时**同一套方法**。
|
|
69
73
|
|
|
70
74
|
席位的 admission 级别是 `operator_lens`。公式与阈值由 AI 撰写、可追溯到具名公开著作,但**尚未
|
|
71
75
|
经过人工评审**,真机四宿主端到端也**尚未执行** —— 所以语料报告的已验证 `method_model` 为
|
|
@@ -126,7 +130,7 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
126
130
|
同一目录还会写入每个分析师的 Markdown 文件和 `artifact_index.md` 文件索引。完整模式的摘要
|
|
127
131
|
会显示系统价格(或明确的行情缺口)、8 个分析师的状态/摘要,以及每个所选方法席冻结的立场
|
|
128
132
|
和可读解释/状态。摘要最后一节给出准确的所选席位数,并逐席输出一个陈词;选择 `all` 时
|
|
129
|
-
结尾就是完整
|
|
133
|
+
结尾就是完整 27 席。它们是项目派生的临时方法席输出,不是本人引语。
|
|
130
134
|
|
|
131
135
|
### 斜杠命令
|
|
132
136
|
|
|
@@ -135,7 +139,7 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
|
|
|
135
139
|
| 输入 | 跑什么 | 额度消耗 |
|
|
136
140
|
|---|---|---|
|
|
137
141
|
| `/alpha <ticker>` | 逐人展示全部大师,确认后运行 full;插件托管 headless ≤30 分钟 | 每个所选 v3 席为确定性立场 + 一个独立 voice worker |
|
|
138
|
-
| `/alpha <ticker> quick` | 展示全部
|
|
142
|
+
| `/alpha <ticker> quick` | 展示全部 27 席,确认 1-4 席(禁用 `all`),再跑插件托管 `quick_v1`(≤10 分钟) | 随选择数量变化 |
|
|
139
143
|
| `/alpha <ticker> screen` | 只跑机械筛选 | **零** |
|
|
140
144
|
| `/alpha <ticker> options` | 隐含波动率期限结构、偏斜、持仓分布 | **零** |
|
|
141
145
|
| `/alpha <ticker> news` | 带日期的申报与新闻 | **零** |
|
|
@@ -166,7 +170,7 @@ full 的交付摘要必须列出全部所选 stable master ID、全部 8 个分
|
|
|
166
170
|
### Quick v1 —— 有界,但不等于完整议会
|
|
167
171
|
|
|
168
172
|
不会因为用户着急或完整运行失败就自动切换 quick。Quick 只能通过插件托管的 headless
|
|
169
|
-
`analyze_symbol(council_mode="quick")` 运行;`plan_visible_run` 会拒绝 quick。完整展示
|
|
173
|
+
`analyze_symbol(council_mode="quick")` 运行;`plan_visible_run` 会拒绝 quick。完整展示 27 席并
|
|
170
174
|
确认 1-4 席后,执行图固定为:
|
|
171
175
|
|
|
172
176
|
1. `market_data`、`earnings_deep_dive`、`valuation_long_short`、
|
|
@@ -203,7 +207,7 @@ Claude Code、OpenCode、Grok Build 装完即可用。Codex 的 prompts 是用
|
|
|
203
207
|
- 新闻、行业背景、产业链,以及管理层言行核对
|
|
204
208
|
- SEC 申报、Form 4 内部人交易、回购、稀释、债务与资本配置
|
|
205
209
|
- 并购、股权与债务融资、回购等事件分析
|
|
206
|
-
- 可逐席选择的
|
|
210
|
+
- 可逐席选择的 27 个投资方法视角读取同一批事实
|
|
207
211
|
- 多头、空头与 PM 裁决
|
|
208
212
|
|
|
209
213
|
完整模式在 mandatory evidence barrier 上 fail-fast。任何必需证据席在一次有界 parse-only
|
|
@@ -250,7 +254,7 @@ Claude Code、OpenCode、Grok Build 装完即可用。Codex 的 prompts 是用
|
|
|
250
254
|
| v3 扩展 | 达莫达兰 · 阿克曼 · 凯茜·伍德 · Pabrai · 琼琼瓦拉 |
|
|
251
255
|
|
|
252
256
|
1.0.0 `solo_test` 目录已有 27 个可选的物理 v3 包,但 **27 个物理包不等于 27 个已获批的
|
|
253
|
-
方法模型**。所有
|
|
257
|
+
方法模型**。所有 27 席都只是 provisional `operator_lens`;52 个工具是可执行的
|
|
254
258
|
`provisional_derived_proxy` 测试代理,不是经过人工审批的公式归因。`operational` 与
|
|
255
259
|
`method_model` 数量均为 0,正式生产 GA 继续 fail-closed。
|
|
256
260
|
|
|
@@ -377,3 +381,7 @@ npm run check
|
|
|
377
381
|
<a href="#readme-top">↑ 回到顶部</a>
|
|
378
382
|
|
|
379
383
|
</div>
|
|
384
|
+
| 🧺 **一篮子不是一家公司,而且这套系统知道** | ETF 和指数走穿透定价:持有某公司 1% 的基金,对它 1% 的所有者收益有真实索取权 —— 所以公司方法**不改一个字**就能读一篮子。比率按权重聚合,绝对量变成基金自己的美元索取权,股本被拒绝因为它在组合层面没有意义。 |
|
|
385
|
+
| 📰 **一篮子有自己的行业新闻** | `SOX` 没有新闻发言人。它的行业由持仓的加权 SIC 组推出,所以 SOXX 自动解析成半导体,而且指数调仓后依然成立。没有单一行业占优时,按它**实际横跨的几个行业**分别查。 |
|
|
386
|
+
| 🌏 **你到底在赌什么** | 对大盘、对 KOSPI、对 KOSDAQ、对费城半导体的相关性,以及 11 个板块 SPDR 的离散度。交易日**按日期配对** —— 韩美假期不同,按数组位置压缩会拿周二比周三。 |
|
|
387
|
+
| 💵 **不允许被做假的资金流** | 申购减赎回、按 NAV 计价。只有申报份额或发行商自己的 AUM÷NAV 恒等式可以参与计算;由持仓反推的份额被拒绝,因为相减会把数字消掉、把误差留下。 |
|
|
@@ -187,9 +187,9 @@ export const coreSeats = Object.freeze({
|
|
|
187
187
|
{
|
|
188
188
|
veto_id: "master_graham.no_asset_floor",
|
|
189
189
|
rationale:
|
|
190
|
-
"Graham's floor is what the owners would have left once the current liabilities are paid. When net current assets are zero or negative there is no asset floor at all, and the defensive method has nothing to say about the security at any price (The Intelligent Investor ch. 15; Security Analysis on net current asset value).",
|
|
190
|
+
"Graham's floor is what the owners would have left once the current liabilities are paid. When net current assets are zero or negative there is no asset floor at all, and the defensive method has nothing to say about the security at any price (The Intelligent Investor ch. 15; Security Analysis on net current asset value). An absent floor is not an absent opinion. Graham's whole construction is a price below a computed floor, and where no floor can be computed there is no margin of safety -- which is his own definition of speculation rather than investment. He passes. Reporting that as out-of-scope hid a decision behind a word that reads as a broken system.",
|
|
191
191
|
condition: { op: "lte", left: { fact_id: "financial.net_current_asset_value" }, right: { literal: 0 } },
|
|
192
|
-
on_trigger: { common_stance: "
|
|
192
|
+
on_trigger: { common_stance: "opposed", native_state: "insufficient_floor" },
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
veto_id: "master_graham.fixed_charge_coverage_failure",
|
|
@@ -238,7 +238,7 @@ export const coreSeats = Object.freeze({
|
|
|
238
238
|
proposed_native_decision_contract: {
|
|
239
239
|
schema_id: "expected_market_return_v1",
|
|
240
240
|
eligibility_facts: ["basket dividend yield", "basket earnings growth", "long bond yield", "holdings concentration"],
|
|
241
|
-
states: ["insufficient_return_inputs", "overpriced_market", "fair_expected_return", "low_cost_index_candidate"],
|
|
241
|
+
states: ["not_a_basket", "insufficient_return_inputs", "overpriced_market", "fair_expected_return", "low_cost_index_candidate"],
|
|
242
242
|
required_outputs: ["fundamental expected return", "expected return over the long bond", "valuation component", "breadth of the holding"],
|
|
243
243
|
fail_closed_reasons: ["no basket-level yield", "no earnings growth input", "no holdings breakdown"],
|
|
244
244
|
},
|
|
@@ -269,10 +269,14 @@ export const coreSeats = Object.freeze({
|
|
|
269
269
|
// The method is about owning the whole market. Without a holdings breakdown you cannot
|
|
270
270
|
// tell whether the fund is the market or a concentrated bet dressed as an index.
|
|
271
271
|
{
|
|
272
|
-
condition_id: "master_bogle.
|
|
272
|
+
condition_id: "master_bogle.subject_is_a_basket",
|
|
273
273
|
condition: { op: "exists", value: { fact_id: "fund.top_ten_weight" } },
|
|
274
|
-
|
|
275
|
-
|
|
274
|
+
// A holdings breakdown exists for a basket and cannot exist for a single company, so
|
|
275
|
+
// this is the seat's scope test rather than a data check. Bogle's method prices what
|
|
276
|
+
// a whole market earns; asked about one business it declines by construction, and the
|
|
277
|
+
// state says that rather than naming a fact the subject was never going to have.
|
|
278
|
+
on_false: { native_state: "not_a_basket", common_stance: "out_of_scope" },
|
|
279
|
+
on_uncomputable: { native_state: "not_a_basket", common_stance: "out_of_scope" },
|
|
276
280
|
},
|
|
277
281
|
],
|
|
278
282
|
},
|
|
@@ -604,7 +608,7 @@ export const coreSeats = Object.freeze({
|
|
|
604
608
|
{
|
|
605
609
|
veto_id: "master_druckenmiller.liquidity_draining_into_inversion",
|
|
606
610
|
rationale:
|
|
607
|
-
"Liquidity contracting while the curve is inverted is the configuration in which he says there is nothing to do on the long side. The method exists to find an asymmetric setup, and when both primary drivers point the same way against risk there is no inflection to probe.",
|
|
611
|
+
"Liquidity contracting while the curve is inverted is the configuration in which he says there is nothing to do on the long side. The method exists to find an asymmetric setup, and when both primary drivers point the same way against risk there is no inflection to probe. No inflection is a reason not to have a position, which is itself his most repeated instruction: he sizes hard when he sees the turn and stays out otherwise. Standing aside is the output, not the absence of one.",
|
|
608
612
|
condition: {
|
|
609
613
|
op: "all",
|
|
610
614
|
conditions: [
|
|
@@ -279,7 +279,7 @@ export const quantSeats = Object.freeze({
|
|
|
279
279
|
{
|
|
280
280
|
veto_id: "master_simons.no_observation_to_test",
|
|
281
281
|
rationale:
|
|
282
|
-
"A session that did not move is not an observation of anything, and scoring it would be manufacturing a result out of an empty sample. This is the only refusal the available facts can express, which is itself the finding: his real vetoes are leakage, an absent holdout and cost erasure, and not one of the three has a fact in this pack to be tested against.",
|
|
282
|
+
"A session that did not move is not an observation of anything, and scoring it would be manufacturing a result out of an empty sample. This is the only refusal the available facts can express, which is itself the finding: his real vetoes are leakage, an absent holdout and cost erasure, and not one of the three has a fact in this pack to be tested against. A signal that cannot be tested does not get traded. That is a decision his method reaches, not a subject it fails to recognise, and the honest rendering is standing aside rather than silence.",
|
|
283
283
|
condition: { op: "lte", left: { output_id: "market.session_move_over_implied" }, right: { literal: 0 } },
|
|
284
284
|
on_trigger: { common_stance: "out_of_scope", native_state: "invalid_test" },
|
|
285
285
|
},
|
|
@@ -351,7 +351,7 @@ export const quantSeats = Object.freeze({
|
|
|
351
351
|
{
|
|
352
352
|
veto_id: "master_soros.no_reflexive_link",
|
|
353
353
|
rationale:
|
|
354
|
-
"The build spec's first veto family and Alchemy's own standard: a reflexivity thesis has to show feedback that reaches the fundamentals, not merely a price that moved. Where leverage is zero the financing burden is zero, credit conditions cannot touch this borrower's economics, and there is no loop to be right or wrong about - a question outside the method rather than a verdict on the security.",
|
|
354
|
+
"The build spec's first veto family and Alchemy's own standard: a reflexivity thesis has to show feedback that reaches the fundamentals, not merely a price that moved. Where leverage is zero the financing burden is zero, credit conditions cannot touch this borrower's economics, and there is no loop to be right or wrong about - a question outside the method rather than a verdict on the security. No feedback loop means there is nothing here for reflexivity to act on, so he is not in it. That is a stated position on the security rather than a failure to have one.",
|
|
355
355
|
condition: { op: "lte", left: { output_id: "reflexivity.financing_burden" }, right: { literal: 0 } },
|
|
356
356
|
on_trigger: { common_stance: "out_of_scope", native_state: "no_loop" },
|
|
357
357
|
},
|
|
@@ -211,9 +211,9 @@ export const valueSeats = Object.freeze({
|
|
|
211
211
|
{
|
|
212
212
|
veto_id: "master_klarman.no_reconstructable_downside",
|
|
213
213
|
rationale:
|
|
214
|
-
"Margin of Safety begins from what an asset is worth on conservative assumptions, and the whole method is the distance between that figure and the price. When tangible book plus cash less debt is zero or negative there is no conservatively assessed value to be safe below, and the correct answer is that the downside cannot be reconstructed -- not that the security is expensive.",
|
|
214
|
+
"Margin of Safety begins from what an asset is worth on conservative assumptions, and the whole method is the distance between that figure and the price. When tangible book plus cash less debt is zero or negative there is no conservatively assessed value to be safe below, and the correct answer is that the downside cannot be reconstructed -- not that the security is expensive. The first rule Klarman states is not losing money, and it is not satisfiable by an asset whose downside cannot be reconstructed. Declining to own something is a position on it; the seat says so instead of falling silent.",
|
|
215
215
|
condition: { op: "lte", left: { fact_id: "valuation.downside_asset_value" }, right: { literal: 0 } },
|
|
216
|
-
on_trigger: { common_stance: "
|
|
216
|
+
on_trigger: { common_stance: "opposed", native_state: "downside_unknown" },
|
|
217
217
|
},
|
|
218
218
|
{
|
|
219
219
|
veto_id: "master_klarman.senior_claims_consume_the_assets",
|
|
@@ -307,9 +307,9 @@ export const valueSeats = Object.freeze({
|
|
|
307
307
|
{
|
|
308
308
|
veto_id: "master_pabrai.no_downside_floor",
|
|
309
309
|
rationale:
|
|
310
|
-
"The first Dhandho question is what the downside is, and the method has no second question until that one is answered. A floor of zero or below means neither net current assets nor tangible book leaves anything recoverable, so \"tails, I don't lose much\" is not a claim the facts support at any price.",
|
|
310
|
+
"The first Dhandho question is what the downside is, and the method has no second question until that one is answered. A floor of zero or below means neither net current assets nor tangible book leaves anything recoverable, so \"tails, I don't lose much\" is not a claim the facts support at any price. Heads I win, tails I don't lose much presupposes knowing how much tails costs. Without a floor the second half is unevaluated, and the Dhandho answer to that is to pass rather than to abstain.",
|
|
311
311
|
condition: { op: "lte", left: { fact_id: "valuation.downside_floor" }, right: { literal: 0 } },
|
|
312
|
-
on_trigger: { common_stance: "
|
|
312
|
+
on_trigger: { common_stance: "opposed", native_state: "no_floor" },
|
|
313
313
|
},
|
|
314
314
|
{
|
|
315
315
|
veto_id: "master_pabrai.financing_fails_before_resolution",
|
|
@@ -1072,7 +1072,7 @@ const seats = [
|
|
|
1072
1072
|
decision: {
|
|
1073
1073
|
schemaId: "expected_market_return_v1",
|
|
1074
1074
|
eligibility: ["basket dividend yield", "basket earnings growth", "long bond yield", "holdings concentration"],
|
|
1075
|
-
states: ["insufficient_return_inputs", "overpriced_market", "fair_expected_return", "low_cost_index_candidate"],
|
|
1075
|
+
states: ["not_a_basket", "insufficient_return_inputs", "overpriced_market", "fair_expected_return", "low_cost_index_candidate"],
|
|
1076
1076
|
outputs: ["fundamental expected return", "expected return over the long bond", "valuation component", "breadth of the holding"],
|
|
1077
1077
|
failClosed: ["no basket-level yield", "no earnings growth input", "no holdings breakdown"],
|
|
1078
1078
|
},
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# v1.1 — Every seat reaches a verdict, and says something worth reading
|
|
2
|
+
|
|
3
|
+
Two real runs are the specification for this plan. An INTC run put six seats into the
|
|
4
|
+
deterministic fallback and a GLW run put **all eight** selected seats at `out_of_scope` with
|
|
5
|
+
weight zero — and the filings contained the data every one of them said was missing.
|
|
6
|
+
|
|
7
|
+
Everything below is either a defect those runs exposed or the reason a seat that did speak said
|
|
8
|
+
one sentence.
|
|
9
|
+
|
|
10
|
+
## What is already fixed
|
|
11
|
+
|
|
12
|
+
Landed on `main` before this plan, and the measurements below are after it:
|
|
13
|
+
|
|
14
|
+
- **Tag aliases.** `grossProfit` resolved for five of fifteen large caps, because most filers
|
|
15
|
+
never tag it and publish revenue and cost of revenue separately. It is now derived from those.
|
|
16
|
+
`capex` missed Corning entirely, which files `PaymentsForCapitalImprovements` — that single
|
|
17
|
+
absent alias removed owner earnings, and with it Buffett and Ackman, for every issuer tagging
|
|
18
|
+
it that way. `interestExpense` and `operatingIncome` gained the aliases four more filers use.
|
|
19
|
+
Gross margin now resolves for all fourteen testable filers; GLW went from missing owner
|
|
20
|
+
earnings to 7/7 screen rules and 7/8 derived facts.
|
|
21
|
+
- **The maturity suffix stopped leaking into sentences.** Statements read "using the X
|
|
22
|
+
provisional operator lens method". The stripper existed and was not applied on that path.
|
|
23
|
+
|
|
24
|
+
## The five defects that remain
|
|
25
|
+
|
|
26
|
+
### 1. A seat cannot reach its own answer about an absent fact
|
|
27
|
+
|
|
28
|
+
`master_pabrai` is authored with a veto that says: no reconstructable downside floor means
|
|
29
|
+
pass. On INTC the floor was absent, so the **eligibility gate failed first** and the seat
|
|
30
|
+
reported "missing `valuation.downside_floor`". The veto the author wrote for exactly this case
|
|
31
|
+
never ran. Same shape for `graham.no_asset_floor`, `klarman.no_reconstructable_downside`,
|
|
32
|
+
`burry.cannot_survive_the_wait`, `fisher.no_worthwhile_margin`.
|
|
33
|
+
|
|
34
|
+
The cause is mechanical: those facts are **tool inputs**, so `authoredFactUse` marks them
|
|
35
|
+
required, and a missing required fact ends the run before any veto is evaluated.
|
|
36
|
+
|
|
37
|
+
**Fix.** A hard veto whose condition references a fact is the seat's declared handling of that
|
|
38
|
+
fact. Before failing a seat for a missing required fact, evaluate the vetoes that reference it;
|
|
39
|
+
if one fires on absence, that veto's `on_trigger` is the decision. This is not a new policy — it
|
|
40
|
+
is running the policy the author already wrote, in the case it was written for.
|
|
41
|
+
|
|
42
|
+
### 2. Market-level facts are fetched only for baskets
|
|
43
|
+
|
|
44
|
+
`master_asness`, `master_marks` and `master_damodaran` require
|
|
45
|
+
`index.aggregate_earnings_yield`. On INTC — a company — the pipeline never fetched it, so three
|
|
46
|
+
seats reported a missing fact on every single-company run in the product's history.
|
|
47
|
+
|
|
48
|
+
This is a category error in the plumbing, not in the seats. The market's aggregate earnings
|
|
49
|
+
yield is not a property of the subject; it is the yardstick the subject is measured against.
|
|
50
|
+
Damodaran's implied-ERP method needs it, Asness's Fed-model critique **is about it**, and Marks
|
|
51
|
+
reads it as where the cycle stands. All three are asking about the market, correctly.
|
|
52
|
+
|
|
53
|
+
**Fix.** Fetch the broad-market index aggregate for every US subject, company or basket. The
|
|
54
|
+
subject decides whose *holdings* are read; it does not decide whether the market has a P/E.
|
|
55
|
+
|
|
56
|
+
### 3. Bogle has no way to decline a company
|
|
57
|
+
|
|
58
|
+
`master_bogle` prices a basket. Asked about INTC it reported "missing `index.dividend_yield`",
|
|
59
|
+
which reads as a data gap and is really a scope statement. Its build spec plans a
|
|
60
|
+
`single_business` veto that was never authored.
|
|
61
|
+
|
|
62
|
+
**Fix.** Author it. The seat declines a single operating company by construction and says so in
|
|
63
|
+
its own words, the way `li_lu` and `forensic_short` already do.
|
|
64
|
+
|
|
65
|
+
### 4. A subject can resolve to a registrant with no filings
|
|
66
|
+
|
|
67
|
+
`XOM` resolves through SEC's own ticker file to **ExxonMobil Holdings Corp**, CIK 0002115436, a
|
|
68
|
+
newly formed entity with **zero** us-gaap tags. The operating history — 438 tags — sits under
|
|
69
|
+
CIK 0000034088. Every fact then reports as missing, individually, with no line saying the
|
|
70
|
+
registrant itself is empty.
|
|
71
|
+
|
|
72
|
+
**Fix.** Detect an empty Company Facts document and say so as one diagnosis rather than eight.
|
|
73
|
+
Then attempt recovery: the submissions record carries former names, and a former name that
|
|
74
|
+
resolves to a registrant with facts is the predecessor. Where recovery fails, the run states
|
|
75
|
+
which registrant it read and that it has no XBRL history — actionable, rather than a mystery.
|
|
76
|
+
|
|
77
|
+
### 5. Seats say one sentence
|
|
78
|
+
|
|
79
|
+
The five-field voice contract exists — `what_i_see`, `how_my_method_reads_it`, `would_i_act`,
|
|
80
|
+
`what_changes_my_mind`, `where_i_disagree` — and the paths that actually run fill a single
|
|
81
|
+
`voice_statement` instead. So a seat that computed a real verdict from real facts reports it in
|
|
82
|
+
one line, and the reader cannot see what it looked at.
|
|
83
|
+
|
|
84
|
+
**Fix.** The deterministic record already contains everything the fields need: which facts were
|
|
85
|
+
read and their values, which scoring rules hit and missed, which vetoes fired, the band the
|
|
86
|
+
score landed in, and the conditions that would change it. Compose the five fields **from the
|
|
87
|
+
frozen decision** rather than asking a model to restate a sentence. This is the honest version:
|
|
88
|
+
the seat's explanation becomes a rendering of what it actually computed, and it cannot drift
|
|
89
|
+
from the verdict because it is derived from it.
|
|
90
|
+
|
|
91
|
+
Declined seats get the same structure: what was looked for, why the method needs it, what would
|
|
92
|
+
change the answer.
|
|
93
|
+
|
|
94
|
+
## Order of work
|
|
95
|
+
|
|
96
|
+
Each step is independently verifiable, and the measurement after each is the same one: how many
|
|
97
|
+
seats reach a stance on a mixed symbol set, with contract failures counted separately.
|
|
98
|
+
|
|
99
|
+
| step | defect | expected effect |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| 1 | market-level facts for companies (#2) | 3 seats on every company run |
|
|
102
|
+
| 2 | absence-handling vetoes reachable (#1) | 4–5 seats, converted from "missing" to a verdict |
|
|
103
|
+
| 3 | bogle declines a company (#3) | 1 seat, and it stops reading as a data gap |
|
|
104
|
+
| 4 | empty registrant (#4) | whole-run failures become one named diagnosis |
|
|
105
|
+
| 5 | five-field voice from the frozen decision (#5) | every speaking seat, which is the point |
|
|
106
|
+
|
|
107
|
+
Steps 1–3 are what turn "缺少数据" into an answer. Step 5 is what makes the answer worth
|
|
108
|
+
reading. Step 4 is small and prevents the worst failure mode, which is a run where everything is
|
|
109
|
+
missing and nothing says why.
|
|
110
|
+
|
|
111
|
+
## What this plan does not do
|
|
112
|
+
|
|
113
|
+
It does not make a seat speak by lowering a threshold or by substituting a proxy for a fact the
|
|
114
|
+
method actually needs. A seat that declines after reading the evidence is a result; the defect
|
|
115
|
+
was never that seats declined, it was that they could not tell the reader whether they had
|
|
116
|
+
declined or had simply not been given anything to read.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"formal_h_satisfied": false,
|
|
19
19
|
"human_reference": false,
|
|
20
20
|
"input_binding": {
|
|
21
|
-
"input_hash": "sha256:
|
|
21
|
+
"input_hash": "sha256:cc4ffaa54c9477000383adc82ba43800c3725c331638f2f8f63cad15582a128f",
|
|
22
22
|
"path": "simulation-input.json"
|
|
23
23
|
},
|
|
24
24
|
"network_allowed": false,
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"verifier_checks": []
|
|
55
55
|
},
|
|
56
56
|
"reviewer_kind": "ai",
|
|
57
|
-
"run_artifact_hash": "sha256:
|
|
57
|
+
"run_artifact_hash": "sha256:699e79ff212ba32d287d8847828b46e6bd46076519c6dc8dca5e9ac09f6d769f",
|
|
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:
|
|
19
|
+
"input_hash": "sha256:cc4ffaa54c9477000383adc82ba43800c3725c331638f2f8f63cad15582a128f",
|
|
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:
|
|
40
|
+
"run_artifact_hash": "sha256:423ac48286f88cd5e95942dce855507559d54fe7fd3a5481327424c4e6966f85",
|
|
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:
|
|
19
|
+
"input_hash": "sha256:cc4ffaa54c9477000383adc82ba43800c3725c331638f2f8f63cad15582a128f",
|
|
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:
|
|
40
|
+
"run_artifact_hash": "sha256:9a10ff578582c9476676ac454577d40e71aeb83dea128275e76d1d7e1d566f6c",
|
|
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"
|