alphacouncil-agent 0.9.1 → 0.9.4

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 (83) hide show
  1. package/.claude/commands/alpha.md +22 -3
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/.grok/commands/alpha.md +22 -3
  6. package/.opencode/command/alpha.md +22 -3
  7. package/AGENTS.md +27 -4
  8. package/CHANGELOG.md +90 -0
  9. package/CLAUDE.md +41 -7
  10. package/README.ja.md +21 -11
  11. package/README.md +35 -11
  12. package/README.zh-CN.md +31 -11
  13. package/commands/alpha.md +22 -3
  14. package/data/build-profile.v1.json +1 -1
  15. package/data/master-selector-method-locales.v1.mjs +286 -0
  16. package/docs/INSTALL.md +43 -6
  17. package/docs/evaluation/persona-v3-release-evidence.md +2 -2
  18. package/docs/plans/0.9.0-personapack-v3.md +3 -3
  19. package/docs/releases/v0.9.2.md +62 -0
  20. package/docs/releases/v0.9.3.md +86 -0
  21. package/docs/releases/v0.9.4.md +79 -0
  22. package/docs/report-contract.md +50 -1
  23. package/knowledge/ai-assisted-solo/experiments/runs/a.json +4 -4
  24. package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
  25. package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
  26. package/knowledge/ai-assisted-solo/experiments/runs/d13.json +16 -16
  27. package/knowledge/ai-assisted-solo/experiments/runs/d26.json +29 -29
  28. package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +19 -19
  29. package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +32 -32
  30. package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +33 -33
  31. package/knowledge/ai-assisted-solo/experiments/simulation-input.json +79 -79
  32. package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +19 -19
  33. package/knowledge/solo-test/masters/master_ackman/manifest.json +14 -4
  34. package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +14 -4
  35. package/knowledge/solo-test/masters/master_asness/manifest.json +14 -4
  36. package/knowledge/solo-test/masters/master_buffett/manifest.json +14 -4
  37. package/knowledge/solo-test/masters/master_burry/manifest.json +14 -4
  38. package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +14 -4
  39. package/knowledge/solo-test/masters/master_dalio/manifest.json +14 -4
  40. package/knowledge/solo-test/masters/master_damodaran/manifest.json +14 -4
  41. package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +14 -4
  42. package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +14 -4
  43. package/knowledge/solo-test/masters/master_fisher/manifest.json +14 -4
  44. package/knowledge/solo-test/masters/master_forensic_short/manifest.json +14 -4
  45. package/knowledge/solo-test/masters/master_graham/manifest.json +14 -4
  46. package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +14 -4
  47. package/knowledge/solo-test/masters/master_klarman/manifest.json +14 -4
  48. package/knowledge/solo-test/masters/master_li_lu/manifest.json +14 -4
  49. package/knowledge/solo-test/masters/master_lynch/manifest.json +14 -4
  50. package/knowledge/solo-test/masters/master_marks/manifest.json +14 -4
  51. package/knowledge/solo-test/masters/master_munger/manifest.json +14 -4
  52. package/knowledge/solo-test/masters/master_natenberg/manifest.json +14 -4
  53. package/knowledge/solo-test/masters/master_pabrai/manifest.json +14 -4
  54. package/knowledge/solo-test/masters/master_simons/manifest.json +14 -4
  55. package/knowledge/solo-test/masters/master_sinclair/manifest.json +14 -4
  56. package/knowledge/solo-test/masters/master_soros/manifest.json +14 -4
  57. package/knowledge/solo-test/masters/master_taleb/manifest.json +14 -4
  58. package/knowledge/solo-test/masters/master_thorp/manifest.json +14 -4
  59. package/mcp/lib/abort.mjs +0 -1
  60. package/mcp/lib/codex.mjs +3 -3
  61. package/mcp/lib/constants.mjs +61 -25
  62. package/mcp/lib/council-options.mjs +95 -40
  63. package/mcp/lib/council-selection.mjs +95 -9
  64. package/mcp/lib/gates.mjs +78 -11
  65. package/mcp/lib/lang.mjs +109 -2
  66. package/mcp/lib/markdown.mjs +444 -135
  67. package/mcp/lib/master-catalog.mjs +28 -3
  68. package/mcp/lib/orchestrator.mjs +952 -266
  69. package/mcp/lib/packets.mjs +173 -20
  70. package/mcp/lib/personas/engine.mjs +30 -30
  71. package/mcp/lib/personas-v3/compiler.mjs +2 -0
  72. package/mcp/lib/personas-v3/loader.mjs +10 -7
  73. package/mcp/lib/personas-v3/source-acquisition.mjs +10 -3
  74. package/mcp/lib/prompts.mjs +33 -0
  75. package/mcp/lib/rpc.mjs +75 -33
  76. package/mcp/lib/run-store.mjs +23 -0
  77. package/package.json +2 -2
  78. package/schemas/persona-v3.schema.json +37 -2
  79. package/scripts/lib/packaged-host-parity.mjs +54 -5
  80. package/scripts/lib/persona-v3-solo-test-packs.mjs +31 -5
  81. package/scripts/package-smoke.mjs +31 -12
  82. package/scripts/run-tests.mjs +23 -2
  83. package/skills/alphacouncil-agent/SKILL.md +50 -7
package/docs/INSTALL.md CHANGED
@@ -10,14 +10,24 @@ plain MCP server in the Claude desktop app.
10
10
  ---
11
11
 
12
12
 
13
- ## npm
13
+ ## GitHub v0.9.4 prerelease
14
+
15
+ This acceptance release is GitHub-only:
16
+
17
+ ```bash
18
+ npm install -g github:Zhao73/alphacouncil-agent#v0.9.4
19
+ ```
20
+
21
+ ## npm channel
14
22
 
15
23
  ```bash
16
24
  npm install -g alphacouncil-agent@next
17
25
  ```
18
26
 
19
- `0.9.1` is intentionally on `next`; unqualified `alphacouncil-agent` follows the stable
20
- `latest` tag and does not install this non-GA preview.
27
+ The GitHub-only 0.9.4 acceptance does not run `npm publish` or change npm dist-tags.
28
+ `alphacouncil-agent@next` installs whichever preview npm currently serves; verify it with
29
+ `npm view alphacouncil-agent dist-tags --json` rather than assuming it is 0.9.4. The
30
+ unqualified package follows the stable `latest` tag.
21
31
 
22
32
  Then point any MCP host at the `alphacouncil-agent` binary. For Claude Code:
23
33
 
@@ -57,7 +67,7 @@ persona set loads, and what the data directory holds.
57
67
  One command, `/alpha`. Modes are arguments.
58
68
 
59
69
  ```text
60
- /alpha <ticker> full council — displays all methods and confirms this run's selection
70
+ /alpha <ticker> full council — displays all methods; headless run is bounded <=30m
61
71
  /alpha <ticker> quick quick_v1 — 4 analysts incl. news + 1-4 methods + one parallel debate round (<=10m)
62
72
  /alpha <ticker> screen mechanical filings screen only (no model spend)
63
73
  /alpha <ticker> options IV term structure, skew, positioning (no model spend)
@@ -69,8 +79,35 @@ One command, `/alpha`. Modes are arguments.
69
79
  The four marked *no model spend* call keyless data tools and spawn no subagents. **Start
70
80
  there** — they show real data at no cost, so you can see the shape of the thing before
71
81
  committing a fan-out. Full and quick both require a fresh method selection receipt. Model
72
- spend is not a fixed seat count: selected method seats may execute deterministically or be
73
- recorded `out_of_scope`, while evidence and debate workers are model calls.
82
+ spend is not a fixed seat count. In plugin-managed headless mode every selected v3 seat runs
83
+ its deterministic policy (which may return `out_of_scope`) and then one isolated voice
84
+ worker explains that frozen result; evidence and debate seats are also model workers. The
85
+ voice is a recorded provisional method result, not the named person's words.
86
+
87
+ ### What full headless means
88
+
89
+ Full remains `full_v2`. When launched through plugin-managed headless
90
+ `analyze_symbol(council_mode="full")`, it has a hard maximum of 1800000 ms from durable
91
+ queueing through terminal artifact persistence:
92
+
93
+ - all eight mandatory evidence workers start in one parallel wave;
94
+ - after the fail-closed evidence barrier, each selected physical v3 method freezes its
95
+ deterministic stance and gets one isolated voice worker that cannot alter it;
96
+ - Bull and Bear start in parallel within each of three rounds, with a barrier between rounds
97
+ and exact Round-2-question to Round-3-answer binding;
98
+ - the PM and deterministic report persistence use the same global clock.
99
+
100
+ Callers and `ALPHACOUNCIL_FULL_TOTAL_MS` may lower the deadline, never raise it. At expiry
101
+ the server saves a terminal `incomplete` run naming failed/timed-out/skipped seats. The
102
+ 30-minute bound guarantees terminal persistence, not complete results when search, model
103
+ transport or data providers are unavailable. `plan_visible_run` has no such enforceable
104
+ deadline because the external host owns and schedules its subagents.
105
+
106
+ A full `user_response.md` lists all eight analyst statuses and summaries, every selected
107
+ stable master ID with its stance and isolated-worker output/status, and a system-owned price
108
+ snapshot with currency/time/source or an explicit quote-data gap. System-owned labels are
109
+ localized for Chinese (`zh-CN`), English, Japanese and Korean, and worker prompts carry the
110
+ run language.
74
111
 
75
112
  ### What `quick` means
76
113
 
@@ -1,6 +1,6 @@
1
1
  # PersonaPack v3 GA release evidence
2
2
 
3
- Status: package/plugin version `0.9.0-solo-test.3`, channel `solo_test`; verifier contracts implemented,
3
+ Status: package/plugin version `0.9.2`, channel `solo_test`; verifier contracts implemented,
4
4
  but no production pass, approval artifact or signature claim is included in this repository.
5
5
 
6
6
  ## Solo-test boundary
@@ -119,5 +119,5 @@ node scripts/check-persona-v3-ga.mjs \
119
119
  ```
120
120
 
121
121
  `--release-manifest` remains only as a migration diagnostic and always blocks GA. The
122
- current worktree is version 0.9.0-solo-test.3 and has no approved physical production release
122
+ current worktree is version 0.9.2 and has no approved physical production release
123
123
  or signed GA evidence set, so the default production-GA command must fail.
@@ -1,6 +1,6 @@
1
1
  # AlphaCouncil 0.9.0 - PersonaPack v3 execution tracker
2
2
 
3
- Status: `0.9.0-solo-test.3` **solo-test prerelease**; not formal production GA. Bare
3
+ Snapshot status on 2026-07-27: `0.9.0-solo-test.3` **solo-test prerelease**; not formal production GA. Bare
4
4
  `0.9.0` remains the future GA target, and the production release gates at the end of this
5
5
  document remain fail-closed.
6
6
 
@@ -8,7 +8,7 @@ Revision: **1** (2026-07-27). Revision 1 adds corpus-baseline and human-adjudica
8
8
  a real-grounding refusal contract for Taleb, and a preregistered historical/shadow protocol
9
9
  for any future `N_eff` estimate. It does not claim that those gates have already passed.
10
10
 
11
- ## Current solo-test snapshot
11
+ ## 2026-07-27 solo-test snapshot
12
12
 
13
13
  - Package/plugin/build-profile version: `0.9.0-solo-test.3`; channel: `solo_test`.
14
14
  - Physical v3 packs: **26/26**; explicit solo-test loader/compiler: **26/26**.
@@ -31,7 +31,7 @@ research, compute, reject and remember, not by imitating a famous person's tone.
31
31
  and executed through the same catalog/runtime shape. It does not prove attributed methods,
32
32
  operational admission or production eligibility.
33
33
 
34
- The release does not describe 26 opinions as 26 independent samples. It records shared-model,
34
+ The planned release does not describe 26 opinions as 26 independent samples. It records shared-model,
35
35
  shared-evidence and shared-source correlation, preserves minority reports, and reports
36
36
  effective diversity only after measured ablations.
37
37
 
@@ -0,0 +1,62 @@
1
+ # AlphaCouncil Agent v0.9.2 — Quick Deadline Hotfix (Non-GA)
2
+
3
+ `v0.9.2` supersedes `v0.9.1` on npm's `next` dist-tag. It preserves the same bounded
4
+ quick-council feature and assurance scope, while fixing a clean-CI failure in the timeout
5
+ implementation. It is a GitHub prerelease and is not a PersonaPack production-GA release.
6
+
7
+ ## Why 0.9.2 exists
8
+
9
+ After `0.9.1` was accepted by npm, the first clean GitHub Actions matrix showed the quick
10
+ grounding timeout being cancelled with `Promise resolution is still pending but the event
11
+ loop has already resolved` on Linux, macOS and Windows. The deadline timers had been
12
+ `unref()`'d. In a short-lived process with no other referenced handles, Node could exit
13
+ before the timer fired, so the claimed hard deadline was not self-sustaining.
14
+
15
+ npm versions are immutable. The published `0.9.1` bytes were therefore not replaced or
16
+ hidden; `0.9.2` carries the correction and `0.9.1` is marked as superseded.
17
+
18
+ ## Fix
19
+
20
+ - Grounding and linked-operation deadline timers remain referenced until they abort or are
21
+ cleared.
22
+ - The existing abort propagation remains intact: a timeout cancels the underlying quote,
23
+ options, macro, filing, screen and non-US market requests.
24
+ - The global quick deadline still includes grounding, retries, queueing, evidence, method
25
+ seats, Bull/Bear, PM synthesis and deterministic finalization.
26
+ - An isolated child-process regression proves the linked deadline fires when it is the only
27
+ remaining event-loop handle. The Windows quick-analysis fixture now launches its fake
28
+ worker through an explicit Node `.cmd` wrapper, matching the production invocation shape.
29
+
30
+ ## Unchanged quick contract
31
+
32
+ - Complete 26-seat catalog display before research; quick accepts one to four explicit
33
+ stable IDs and rejects `all`.
34
+ - Four parallel evidence seats: `market_data`, `earnings_deep_dive`,
35
+ `valuation_long_short`, `news_industry_management`.
36
+ - One wave of selected method seats, one parallel Bull/Bear statement round and one short
37
+ PM synthesis.
38
+ - Hard end-to-end ceiling of 600,000ms, which may only be lowered.
39
+ - Recent-news display includes only dated sources in the 120 days up to `as_of`.
40
+ - Explicit `degraded` terminal state and system-owned failure ledger.
41
+ - `quick_v1` is not equivalent to `full_v2`; it does not run three-round exact Q&A or the
42
+ adversarial source/numeric/counterevidence verifier stage.
43
+ - Method-seat output is a provisional recorded lens result, not a quotation from the named
44
+ person.
45
+
46
+ ## Assurance boundary
47
+
48
+ - Build channel: `solo_test`.
49
+ - `production_eligible=false`.
50
+ - `method_model_eligible=false`.
51
+ - Physical provisional packs: 26.
52
+ - Provisional `operator_lens`: 26.
53
+ - Operational seats: 0.
54
+ - Validated `method_model` seats: 0.
55
+ - Live external host E2E evidence: 0/4.
56
+
57
+ Changing `pack_version` to `0.9.2` mechanically changes all 26 pack hashes and the ten
58
+ simulation binding artifacts. That administrative hash churn does not change method logic,
59
+ evidence approval, experiment status or maturity.
60
+
61
+ The formal GA gate remains fail-closed. This hotfix does not promote method maturity or
62
+ claim production readiness.
@@ -0,0 +1,86 @@
1
+ # AlphaCouncil Agent v0.9.3 — Bounded Full Council and Complete Handoff (Non-GA)
2
+
3
+ `v0.9.3` is a non-GA runtime and reporting correction released as a GitHub prerelease.
4
+ This acceptance release does not publish npm or mutate dist-tags. It preserves `full_v2`
5
+ and `quick_v1`; it does not promote any PersonaPack
6
+ seat, relax the selection gate or claim production GA.
7
+
8
+ ## Why 0.9.3 exists
9
+
10
+ Earlier full headless runs could take substantially longer than the useful user window:
11
+ the eight evidence seats were concurrency-limited, Bull/Bear sides were awaited serially,
12
+ and full had no global queue-to-persistence deadline. The concise handoff could also sample
13
+ analyst groups and omit selected Master Bench results even when their artifacts existed.
14
+ Some v3 seats completed only through the deterministic policy, so users reasonably expected
15
+ an individual method explanation but saw no dedicated model-worker output.
16
+
17
+ Those are product defects, not investment conclusions. `v0.9.3` changes scheduling,
18
+ visibility and terminalization while preserving the evidence and maturity boundaries.
19
+
20
+ ## Full headless runtime contract
21
+
22
+ Plugin-managed headless `analyze_symbol(council_mode="full")` now has a hard maximum of
23
+ 1,800,000 ms from durable queueing through terminal artifact persistence:
24
+
25
+ - all eight mandatory evidence workers start in one parallel wave;
26
+ - the evidence barrier remains fail-closed after one bounded parse-only repair;
27
+ - each selected physical v3 method first executes its deterministic policy and freezes its
28
+ stance, then launches one isolated voice worker for that stable ID;
29
+ - the voice worker may explain the frozen result in the run language but cannot change the
30
+ stance, invent missing typed facts or speak as the real named person;
31
+ - Bull and Bear launch in parallel within each of the three rounds, with a barrier between
32
+ rounds and exact Round-2-question to Round-3-answer binding;
33
+ - the PM starts only after both Round-3 sides pass, and deterministic final assembly shares
34
+ the same global deadline.
35
+
36
+ A caller or environment can lower the limit, never raise it. At deadline expiry the server
37
+ stops opening downstream work and persists a terminal fail-closed `incomplete` run naming
38
+ every timed-out, failed and skipped role. Thirty minutes therefore guarantees a durable,
39
+ auditable terminal state; it does **not** guarantee that all seats complete when search,
40
+ model transport or external data providers are unavailable or slow.
41
+
42
+ The deadline belongs to plugin-managed headless `analyze_symbol`. A visible-host run created
43
+ through `plan_visible_run` is scheduled by the external host; the plugin cannot force-stop
44
+ those host subagents and makes no 30-minute promise for that path.
45
+
46
+ ## Complete user handoff
47
+
48
+ The full `user_response.md` no longer hides the council behind a three-group synopsis. It
49
+ must visibly include:
50
+
51
+ - a system-owned price snapshot with price, currency, quote timestamp, exchange/feed and
52
+ source when available, or an explicit unavailable-data gap;
53
+ - every selected stable master ID, its frozen stance and its isolated voice-worker
54
+ explanation/status;
55
+ - all eight mandatory analyst task IDs, statuses and summaries;
56
+ - key earnings, forward expectations, company/industry news, valuation, position guidance,
57
+ invalidation conditions, terminal/report-quality state, elapsed/deadline state and paths.
58
+
59
+ Master output remains a **recorded provisional method-seat result**. It is not a quotation,
60
+ endorsement, current statement or simulated personal advice from the named person.
61
+
62
+ System-owned catalog/report/handoff labels and failure text support `zh-CN`, English,
63
+ Japanese and Korean. Worker prompts receive the run language. Stable IDs and JSON field
64
+ names remain English for artifact compatibility.
65
+
66
+ ## Quick contract
67
+
68
+ `quick_v1` remains explicit, plugin-managed and bounded to 600,000 ms. Its fixed four-seat
69
+ evidence wave, 1-4 method limit, one parallel Bull/Bear statement and short PM are unchanged.
70
+ It still rejects `all`, does not run three-round exact Q&A or adversarial verifiers, and
71
+ cannot be represented as `full_v2`.
72
+
73
+ ## Assurance boundary
74
+
75
+ - Build channel: `solo_test`.
76
+ - `production_eligible=false`.
77
+ - `method_model_eligible=false`.
78
+ - Physical provisional packs: 26.
79
+ - Provisional `operator_lens`: 26.
80
+ - Operational seats: 0.
81
+ - Validated `method_model` seats: 0.
82
+ - Human source/formula approvals and approval signatures: 0.
83
+
84
+ One worker per selected method makes each recorded result visible; it does not create 26
85
+ independent base models, prove behavioral differentiation or promote a seat's maturity.
86
+ Formal production GA remains fail-closed.
@@ -0,0 +1,79 @@
1
+ # AlphaCouncil Agent v0.9.4 — Locale-Consistent Council Output (Non-GA)
2
+
3
+ `v0.9.4` is a non-GA GitHub prerelease that corrects the locale contract exposed by the
4
+ post-release QQQ Stage 0 acceptance. It does not publish to npm or change npm dist-tags.
5
+
6
+ ## Why 0.9.4 exists
7
+
8
+ The `v0.9.3` runtime correctly bounded a plugin-managed full council to a thirty-minute
9
+ terminal state and made every selected method-seat statement visible. Its selection layer
10
+ still had a serious observability defect: a `zh-CN` catalog returned English `method` copy,
11
+ Japanese and Korean silently fell back to English, `auto` did not infer the prompt language,
12
+ and confirmation text was always English. A structurally complete English PM report could
13
+ also pass `report_quality` for a Japanese or Korean run.
14
+
15
+ Those are product defects, not investment findings.
16
+
17
+ ## Selector and receipt corrections
18
+
19
+ - `zh-CN`, English, Japanese and Korean resolve to one canonical locale before catalog,
20
+ intent and receipt hashes are created.
21
+ - `auto` infers Chinese, Japanese and Korean scripts from the unchanged run prompt.
22
+ - Unsupported explicit selector locales fail with `UNSUPPORTED_SELECTION_LANGUAGE`; the
23
+ runtime no longer labels an English fallback as customer-language output.
24
+ - Every one of the 26 physical solo-test manifests carries four-locale title, identity,
25
+ method and best-for copy. All 26 Chinese method descriptions are now Chinese rather than
26
+ copied English, and reader-facing `best_for` no longer exposes machine snake-case domain
27
+ IDs in Chinese, Japanese or Korean.
28
+ - Human-facing maturity has `maturity_label`; the stable machine enum remains unchanged.
29
+ - Selection and confirmation text is localized, while stable IDs, receipt tokens, hashes,
30
+ JSON keys and maturity enums remain machine-stable.
31
+ - Receipt consumption revalidates the complete selection-record binding and recomputes
32
+ `selection_hash`; a tampered hash or crossed record fails before a run is created or the
33
+ one-time receipt is consumed.
34
+
35
+ ## Worker and report language integrity
36
+
37
+ - Plugin-managed Evidence, dedicated method voice, Bull/Bear and PM packets are checked for
38
+ the requested reader language. A wrong-language response receives one bounded parse-only,
39
+ no-search repair opportunity and otherwise fails closed. Visible-host record tools reject
40
+ wrong-language packets before writing or marking a seat complete so the host can retry it.
41
+ - The language audit treats Han-only fragments as shared script instead of claiming that
42
+ every Kanji sentence is Chinese. Kana and Hangul take precedence, and English must contain
43
+ dominant English prose rather than a few company names or finance acronyms.
44
+ - Quick PM now uses the same parse/language/repair path as Bull and Bear. A real debate
45
+ timeout or transport failure produces a localized failure packet, never a fictitious
46
+ `DRY_RUN`, and reader-language mismatch remains distinct from malformed JSON.
47
+ - Japanese and Korean timeout, malformed-output, deterministic method-decline and PM
48
+ fallback text is localized. Failure diagnostics remain separate from investment evidence.
49
+ - `report_quality.json` records `requested_locale`, `observed_locale`, `language_status`,
50
+ target-script counts and mismatched sections. A complete English report cannot pass a
51
+ Japanese or Korean run.
52
+ - The system-owned Master Bench heading no longer appends English to non-English headings,
53
+ and delayed-price labeling no longer leaks provider English notes into localized handoff.
54
+ - Full visible-host recording requires all six Bull/Bear round artifacts, ordered round
55
+ barriers and the exact Round-2-question to Round-3-answer binding before the PM can finish.
56
+ Same-content retries are idempotent; conflicting round replays are rejected.
57
+
58
+ ## Package acceptance
59
+
60
+ The release package check creates a physical npm tarball with lifecycle scripts disabled,
61
+ installs it offline into a temporary prefix, starts that installed MCP server, and checks all
62
+ four selector locales, exactly 31 MCP tools, exactly 26 catalog seats, one stable-ID
63
+ selection, one receipt consumption and replay rejection. Full source, generated-pack and
64
+ installed-tarball checks remain mandatory.
65
+
66
+ ## Runtime boundary
67
+
68
+ - `full_v2` remains bounded queue-to-terminal at 1,800,000 ms for plugin-managed headless
69
+ execution. A deadline failure is persisted as incomplete; it is not a completeness promise.
70
+ - Each selected physical v3 method still receives an isolated explanation worker only after
71
+ its deterministic stance is frozen. These are provisional project-derived method seats,
72
+ not the named people's statements, endorsements or current views.
73
+ - Build channel: `solo_test`.
74
+ - `production_eligible=false`.
75
+ - `method_model_eligible=false`.
76
+ - Physical provisional packs: 26.
77
+ - Operational seats: 0.
78
+ - Validated `method_model` seats: 0.
79
+ - Formal GA remains fail-closed.
@@ -22,6 +22,16 @@ writes the mode-appropriate versions of:
22
22
  The report and handoff must call a named master result a recorded method-seat or lens result.
23
23
  It is not a quote from, endorsement by, or current statement of the named person.
24
24
 
25
+ System-owned selector, report and handoff labels are localized for `zh-CN`, `en`, `ja` and
26
+ `ko`. Each worker receives the canonical run language, while stable IDs and JSON field names
27
+ remain English. Reader-facing evidence, method, debate and PM fields are checked against the
28
+ requested locale. Plugin-managed workers receive one bounded no-search language/JSON repair,
29
+ then fail closed; visible-host record tools reject the wrong-language packet before writing
30
+ it so the host may retry. `report_quality.json` records requested/observed locale, keeps
31
+ Han-only fragments explicitly inconclusive, and cannot pass a Japanese or Korean run whose
32
+ report body is English. Unsupported explicit selector locales are rejected instead of being
33
+ silently mislabeled as localized English.
34
+
25
35
  ## full_v2 Contract
26
36
 
27
37
  Full remains the default. Its `final_report.md` visibly covers:
@@ -48,11 +58,46 @@ Full remains the default. Its `final_report.md` visibly covers:
48
58
  - confidence
49
59
  - source table
50
60
 
61
+ Its `user_response.md` must also visibly carry:
62
+
63
+ - a system-owned price snapshot with price, currency, quote timestamp, exchange/feed and
64
+ source when available, or an explicit statement that the quote is unavailable;
65
+ - every selected stable master ID, its frozen deterministic stance, its isolated voice-worker
66
+ explanation/status and a clear `not a quote` attribution boundary;
67
+ - all eight mandatory analyst task IDs, statuses and summaries, including failures or gaps;
68
+ - terminal status, contract, report quality, elapsed time, deadline state and artifact paths.
69
+
51
70
  All mandatory full evidence roles must be completed. If one still fails after the one bounded
52
71
  parse-only repair, full fails closed at the evidence barrier: no master, bull/bear or PM model
53
72
  call is started. The run is persisted as `incomplete` with the failed evidence and skipped
54
73
  downstream roles named. A partial PM opinion never converts that run to complete.
55
74
 
75
+ ## Full Runtime Budget
76
+
77
+ Plugin-managed headless `analyze_symbol(council_mode="full")` has a non-overridable maximum
78
+ of 1800000 ms from durable queueing through terminal artifact persistence. A caller or
79
+ environment may lower it, never raise it. The execution topology is:
80
+
81
+ 1. the eight mandatory evidence workers start in one parallel wave;
82
+ 2. after the evidence barrier, every selected physical v3 method runs its deterministic
83
+ policy and freezes a stance, then receives one isolated voice worker that can explain but
84
+ cannot change that stance;
85
+ 3. Bull and Bear start together within each of three rounds, with a barrier before the next
86
+ round; the PM starts only after both Round-3 outputs pass exact Q&A validation;
87
+ 4. deterministic assembly and persistence consume the same global clock.
88
+
89
+ At deadline expiry the run stops opening downstream work and persists fail-closed as
90
+ `incomplete`, naming timed-out, failed and skipped roles. This is a terminal-persistence
91
+ guarantee, not a promise of full-seat success when search, model transport or data sources
92
+ are unavailable. The deadline does not apply to `plan_visible_run`: an external host owns
93
+ those subagents and the plugin cannot force-stop them.
94
+
95
+ Visible full runs use the same six role-by-round audit records and exact Q&A gate. Each
96
+ Bull/Bear call declares round 1, 2 or 3; the server rejects out-of-order calls, altered replay
97
+ content and a PM submitted before both Round-3 records pass. Identical role/round retries are
98
+ idempotent. This preserves workflow completeness but does not give host-owned subagents the
99
+ plugin-managed 30-minute deadline.
100
+
56
101
  ## quick_v1 Contract
57
102
 
58
103
  Quick is explicit and plugin-managed through headless `analyze_symbol`. It is not available
@@ -154,7 +199,9 @@ Every handoff includes status, report contract, report quality, rating, winner,
154
199
  one judgment paragraph, valuation/position, material gaps and file locations.
155
200
 
156
201
  A full handoff additionally carries the key earnings result, forward setup, news/voice
157
- signals and top invalidation conditions.
202
+ signals and top invalidation conditions. It lists every selected method seat and all eight
203
+ mandatory analysts rather than sampling a subset, and includes the system-owned price
204
+ snapshot or an explicit quote-data gap.
158
205
 
159
206
  A quick handoff instead names:
160
207
 
@@ -175,10 +222,12 @@ Both handoffs list `final_report.md`, `artifact_index.md`, `all_agents.md`, and
175
222
  | "The user only asked if they can enter, so four bullets are enough." | Keep chat concise, but write the mode-appropriate report and artifact index. |
176
223
  | "Quick passed report quality, so it passed full." | `quick_v1` can only pass `quick_v1`; retain `full_council_equivalent=false`. |
177
224
  | "Ten minutes expired, so silently omit a seat." | Record the exact degraded/incomplete ledger; never manufacture evidence or extend the ceiling. |
225
+ | "Thirty minutes expired, so finish full with the seats that returned." | Persist full as `incomplete`, name every missing/skipped role and keep the saved partial evidence; never synthesize a complete verdict. |
178
226
  | "One evidence task failed, but the PM has an opinion." | Apply the mode-specific evidence gate; full fails before downstream calls, quick may only use its explicit degraded rules. |
179
227
  | "The source table mentions the news, so the news section can be skipped." | News findings need their own visible section; quick recent news must also pass its date window. |
180
228
  | "The final report exists, so chat can hide file locations." | The handoff lists the saved report, index, trace and quality file. |
181
229
  | "The master said this." | Call it a recorded method-seat result, never a quote from the named person. |
230
+ | "The full report has a bench table, so the handoff can hide the individual seats." | Full handoff lists every selected stable ID, stance and isolated-worker result/status. |
182
231
 
183
232
  ## How the Quality Gate Checks Reports
184
233
 
@@ -18,12 +18,12 @@
18
18
  "formal_h_satisfied": false,
19
19
  "human_reference": false,
20
20
  "input_binding": {
21
- "input_hash": "sha256:633cc82231d542dbc55c41a65fb234104735180d4bea554c42b7ef2db8c7db44",
21
+ "input_hash": "sha256:3e3ba26efc5e2b26c1f7549c845af116b7a07b9b8814cb16bd0bbf633289d3eb",
22
22
  "path": "simulation-input.json"
23
23
  },
24
24
  "network_allowed": false,
25
25
  "production_effect": "none",
26
- "result_hash": "sha256:25e121198a6cbb96554df3c005349e98e7d47a5f948bb0b3cf437d1375541f1b",
26
+ "result_hash": "sha256:00da168490d6f96bd98e05a69427686ed2b19b9a6e1c23033e004de3798df762",
27
27
  "results": {
28
28
  "blocked_fail_closed_count": 0,
29
29
  "completion_status": "completed_machine_simulation",
@@ -34,7 +34,7 @@
34
34
  "fact_pack_hash": "sha256:0adab0b69b1e8ba756deaeac3c457e044dd5a7195b1847893db0953772220e41",
35
35
  "frozen_decision_hash": "sha256:ddfd120be4926ef3b400a07f8af44c277d170f4c8f48364579b5b21ae48fa661",
36
36
  "native_state": "provisional_own_at_price",
37
- "pack_hash": "sha256:9d8260b5256a67c74be7d2d25545c13efd2fcae8cd95cf247c8f48cc36fc8ee5",
37
+ "pack_hash": "sha256:acd69a6e493f5b1faa050d3266d12ed6d97a7e698daeba073727c085ff5c63dd",
38
38
  "persona_id": "master_buffett",
39
39
  "policy_execution_hash": "sha256:5e853405b4dd96e4760f842c0726e26bf7f87e9e3cc79a6b90e3ceb58a2211a5",
40
40
  "score_ratio": 1,
@@ -54,7 +54,7 @@
54
54
  "verifier_checks": []
55
55
  },
56
56
  "reviewer_kind": "ai",
57
- "run_artifact_hash": "sha256:dfd795cbdab47b35a82f5c97d132c15c12ca83cc1d2a63fbf5be58823059c3ea",
57
+ "run_artifact_hash": "sha256:01f7b32aea7e26f216d62f3d1123770e39defa026bb83f65dbb4475d572a7280",
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:633cc82231d542dbc55c41a65fb234104735180d4bea554c42b7ef2db8c7db44",
19
+ "input_hash": "sha256:3e3ba26efc5e2b26c1f7549c845af116b7a07b9b8814cb16bd0bbf633289d3eb",
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:43f0e68bacb64753bff985b7a1c6e726490fec70c4250a376a6cf9e0fea48372",
40
+ "run_artifact_hash": "sha256:8e089c92d91ec2e790a3d253a539376c706c3d7a99a71dad249d41f213ac6de0",
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:633cc82231d542dbc55c41a65fb234104735180d4bea554c42b7ef2db8c7db44",
19
+ "input_hash": "sha256:3e3ba26efc5e2b26c1f7549c845af116b7a07b9b8814cb16bd0bbf633289d3eb",
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:2db7b9fad7e7a7f1056640431d6c6af56e7182683e5fdb51b4040b88a9a48676",
40
+ "run_artifact_hash": "sha256:cd7b259120c835df126e2e445e131a5d595e4efbd059c27d20a9f596390744d3",
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:633cc82231d542dbc55c41a65fb234104735180d4bea554c42b7ef2db8c7db44",
33
+ "input_hash": "sha256:3e3ba26efc5e2b26c1f7549c845af116b7a07b9b8814cb16bd0bbf633289d3eb",
34
34
  "path": "simulation-input.json"
35
35
  },
36
36
  "network_allowed": false,
37
37
  "production_effect": "none",
38
- "result_hash": "sha256:03e60cc07be3ea141b5cec29e1ecc09413181be84abf2c90483ec41a7d7b7c15",
38
+ "result_hash": "sha256:37d5a3ce7d7beaddebfb7dfa41404027478b16179735a077a071a789e886df90",
39
39
  "results": {
40
40
  "blocked_fail_closed_count": 0,
41
41
  "completion_status": "completed_machine_simulation",
@@ -46,7 +46,7 @@
46
46
  "fact_pack_hash": "sha256:702d4dbd2513e429997e9e77b69f8f5dd924bf4c01d8c7accf11645f2a39664c",
47
47
  "frozen_decision_hash": "sha256:1d568408ad261a4899b0faca1b8506d2c088408587bf370cb163e15b4f975e3b",
48
48
  "native_state": "provisional_undervalued",
49
- "pack_hash": "sha256:e2860158ecf8ae9ae91f0276f3585579f3a90c166062cc0d88500eec518447f9",
49
+ "pack_hash": "sha256:31a3466e5ad820f398e87bf81c7e04d94d66442029993d519333d817c01f9100",
50
50
  "persona_id": "master_damodaran",
51
51
  "policy_execution_hash": "sha256:be74915d6f24c7a7223bf449b805bbb419bdf724f482ccf7df48efb87afc3e41",
52
52
  "score_ratio": 1,
@@ -60,7 +60,7 @@
60
60
  "fact_pack_hash": "sha256:76cca34c2e39ea5898330406a49612004eb5ac6f5a9fc3bac57c06f72bce028f",
61
61
  "frozen_decision_hash": "sha256:84dd5be279cf1ee37990d2cdc58a16ee00d99995df6dc48ea86525626764f97f",
62
62
  "native_state": "provisional_margin_of_safety",
63
- "pack_hash": "sha256:c401a14385bb67d5f4135718972ba10c670e549e4fa3c3836f3f11c493577436",
63
+ "pack_hash": "sha256:4f8bb4a076bccf522315beac6725dcbb34c8a96cc5911e6a0ac4ae915a9e893b",
64
64
  "persona_id": "master_graham",
65
65
  "policy_execution_hash": "sha256:5cd51dcd115c45d1b2c7afdba56d2db078869825eb0958afade69beed7421b43",
66
66
  "score_ratio": 1,
@@ -74,7 +74,7 @@
74
74
  "fact_pack_hash": "sha256:301b59fe11ccf10706684f270e8b7185260545dc68b13c39438f39b53e93efab",
75
75
  "frozen_decision_hash": "sha256:a2d28669d1d782d84f8af0f45ecc18609b23d32cb0ff29fc4777bc3585a6e349",
76
76
  "native_state": "provisional_engagement_candidate",
77
- "pack_hash": "sha256:6cc2aa3e5cf2698de3e42321531ae77f11e0b32cc40c5f303cfae3f5b638560f",
77
+ "pack_hash": "sha256:34150f8e64223a6ca752cd8e96f8da7fdbd5556d50db8abc8232cf8c7e73943d",
78
78
  "persona_id": "master_ackman",
79
79
  "policy_execution_hash": "sha256:f6f80cef0c69e2f755e2f1c20dc5886cba2a5e6e0dd675fb1b6eb56330ada427",
80
80
  "score_ratio": 1,
@@ -88,7 +88,7 @@
88
88
  "fact_pack_hash": "sha256:46c6f2d5014a20e4f96254cb363b71eedf66beb33204a12a4579e08116afb249",
89
89
  "frozen_decision_hash": "sha256:6a8785ec84078c6f8daad9c6a18a71779196795ccdb6d3a6ac34b58da7c90b07",
90
90
  "native_state": "provisional_asymmetric_innovation",
91
- "pack_hash": "sha256:2d5e3101a82b4097b8a6b75085f4ff13fb0fbaa347f262cd8d3bed94808ce672",
91
+ "pack_hash": "sha256:a002878b7c572ff70c231c339beccb9ab690652759261d94fe113096a319f5d7",
92
92
  "persona_id": "master_cathie_wood",
93
93
  "policy_execution_hash": "sha256:66b39b370506643e72ede933211accd910945072cdeaf4f9785d2316324a4cae",
94
94
  "score_ratio": 1,
@@ -102,7 +102,7 @@
102
102
  "fact_pack_hash": "sha256:c249a152df048b50d725d1454faf6081b1bf2ef7b02dd8352275bee559f3fa13",
103
103
  "frozen_decision_hash": "sha256:c184bca80fca0d0ab573789c97539dfdd0d1cb63e567829c0d500b15c660b796",
104
104
  "native_state": "provisional_monitor",
105
- "pack_hash": "sha256:8259649c35488d58f4912c29f4f73285995c598700c460692b07e2ee8a479a97",
105
+ "pack_hash": "sha256:144ee322b64d24a46232588b9fd8bed5c0140e49ba7db891a3dfe43c28d6c07c",
106
106
  "persona_id": "master_munger",
107
107
  "policy_execution_hash": "sha256:1bfbc42a862cab4e876e0f98991a8cce7b1bd0dc08a239ce0897d97fc02411b2",
108
108
  "score_ratio": 1,
@@ -116,7 +116,7 @@
116
116
  "fact_pack_hash": "sha256:a5b193f40fec598fb159fbe5e37dd9782e2660cee697c20e9a59b7f7f7bfa959",
117
117
  "frozen_decision_hash": "sha256:40be9e02a61ec476335d0a5c0f36dee44de7e03cb6f3d34bb0ac658b792b06af",
118
118
  "native_state": "provisional_structural_mispricing",
119
- "pack_hash": "sha256:76eb044893c547e58ecf6e4c8731c91f58568640232c0c1c4a7e4b06580d44c2",
119
+ "pack_hash": "sha256:5d0d0a8123487f1f8c129624524f2fbc2f532b99874ba8f9aee4dc14ac3ceb2f",
120
120
  "persona_id": "master_burry",
121
121
  "policy_execution_hash": "sha256:3dc3d19e4a61dd494d3072695f5c829e0e60fd7891720cd9dcf6769a531f6995",
122
122
  "score_ratio": 1,
@@ -130,7 +130,7 @@
130
130
  "fact_pack_hash": "sha256:5b1b600295eeee302313ddf47dc1eb639a469e2c9b5c4aa33a63eba9ec1e6ce5",
131
131
  "frozen_decision_hash": "sha256:f4c16ec558bb51672b53b675ec8a8a6b50453537a32897602c4bae5a2ef2be40",
132
132
  "native_state": "provisional_asymmetric_candidate",
133
- "pack_hash": "sha256:408a7b0965e2fb4fb984ac9490d5959c225fbf9c0b384fb2d719b0fbad22a38a",
133
+ "pack_hash": "sha256:8bacb4b8e388f709d478299bd2d81bb8f79571d96b9c1881e24f6d9b8567f85c",
134
134
  "persona_id": "master_pabrai",
135
135
  "policy_execution_hash": "sha256:38edf349b7d5b42136634cca7b5544932692fee42ff26ebfe03c46e339c2d66e",
136
136
  "score_ratio": 1,
@@ -144,7 +144,7 @@
144
144
  "fact_pack_hash": "sha256:ce643fb45ddef2af2f9d06c2f01853fa0f8c9ce4c8599abcb1d912f7fef3d95d",
145
145
  "frozen_decision_hash": "sha256:c0bd26b8ee5b9fa7ac7f35038917b74d7c9173f127e62fab2b4b2bd17e441617",
146
146
  "native_state": "provisional_convex_opportunity",
147
- "pack_hash": "sha256:84486c7f0877153383e577714243572fdbe88d8e022f68fbbe6a583082457802",
147
+ "pack_hash": "sha256:e04b2f08dbda8b786afa09544ca9c9b71e6a06d0488511799f0eb0ac43cef25b",
148
148
  "persona_id": "master_taleb",
149
149
  "policy_execution_hash": "sha256:685910a55811876df60c9890f083d93b1a95f11ac6799d06ecb97f11be106491",
150
150
  "score_ratio": 1,
@@ -158,7 +158,7 @@
158
158
  "fact_pack_hash": "sha256:36e4568b935d73e4bf27285ac7c2e26f4a3c4cb63ae84569accfef36af1633ee",
159
159
  "frozen_decision_hash": "sha256:11a2d8045d0f225a14985f2b48b55f203a84edaf773928d27535f36def9a4537",
160
160
  "native_state": "provisional_category_opportunity",
161
- "pack_hash": "sha256:81bda7495aac1aeef35e99c74171ff77c1d0eef57225f89ac84a4985b3f885c1",
161
+ "pack_hash": "sha256:dc628a6b2d69be1cce786e38dd50342193216d10dcd7839cf8cf0dc5d8941820",
162
162
  "persona_id": "master_lynch",
163
163
  "policy_execution_hash": "sha256:25a035ba9912aa3e362927fa8eb14e376657e5e758a79d366ed4f4776cbe99a2",
164
164
  "score_ratio": 1,
@@ -172,7 +172,7 @@
172
172
  "fact_pack_hash": "sha256:91c21c62a5508f53773b13714956008301a96f35455421f0a029aca9f6d96846",
173
173
  "frozen_decision_hash": "sha256:7e2d1fda2363ad67e46aea321bfca662d5273788a0b0c05c4e31238c4d69c117",
174
174
  "native_state": "provisional_long_duration_quality",
175
- "pack_hash": "sha256:b6ba9d263137936227500c17af79d04daf481f38b934022ae046b2344ee8dda2",
175
+ "pack_hash": "sha256:042a406c1b77414b7a77fc5d8a06b575efbeabf0a51f97f429f33884f190f822",
176
176
  "persona_id": "master_fisher",
177
177
  "policy_execution_hash": "sha256:9e620b5bb630cd42e5b482c6a01a18b210d615669a5100e6856cfcb3b095bc90",
178
178
  "score_ratio": 1,
@@ -186,7 +186,7 @@
186
186
  "fact_pack_hash": "sha256:3c00b9082899e1bc040b4e6e967e094a1c24d53f603b0996d508bda4d3278fb8",
187
187
  "frozen_decision_hash": "sha256:b0130956191645565781d0c23c7e42e772cff80efeb00d4b3ff169c24bb1e308",
188
188
  "native_state": "provisional_concentrated_growth_candidate",
189
- "pack_hash": "sha256:adcc2e4633f7ab3e7a9e4c018cb97a41ba69cb30c2abf09bc06c2c78dc83d26c",
189
+ "pack_hash": "sha256:b7a062137a3537cea59864fe82165db67bc0d45a35d005577cdf7e04fa3f07e7",
190
190
  "persona_id": "master_jhunjhunwala",
191
191
  "policy_execution_hash": "sha256:b8f06017f86e3c59ed3fec0311772bcbf13230e08275c5686280f8a360380bc6",
192
192
  "score_ratio": 1,
@@ -200,7 +200,7 @@
200
200
  "fact_pack_hash": "sha256:6110836b4444c3976467c4ab707a8f6e38c6cc19a1c5dc41a53884a03066fb6d",
201
201
  "frozen_decision_hash": "sha256:1953083b763be405572008a7e8b639f745f60fadb8cdf29b68c7951e84858335",
202
202
  "native_state": "provisional_asymmetric_setup",
203
- "pack_hash": "sha256:14c122f22b9f6d0c4ac09bebd9783ad663e6c7b966a65d47e3c1915ea81598cf",
203
+ "pack_hash": "sha256:aca213dba751fa47c4ecf572690981190ca78bd28a83d1fd8d5c0f3648253050",
204
204
  "persona_id": "master_druckenmiller",
205
205
  "policy_execution_hash": "sha256:05524438b4cb011ed69794efc854510b34cbe2df73a05340f5844a6d500dd774",
206
206
  "score_ratio": 1,
@@ -214,7 +214,7 @@
214
214
  "fact_pack_hash": "sha256:0adab0b69b1e8ba756deaeac3c457e044dd5a7195b1847893db0953772220e41",
215
215
  "frozen_decision_hash": "sha256:ddfd120be4926ef3b400a07f8af44c277d170f4c8f48364579b5b21ae48fa661",
216
216
  "native_state": "provisional_own_at_price",
217
- "pack_hash": "sha256:9d8260b5256a67c74be7d2d25545c13efd2fcae8cd95cf247c8f48cc36fc8ee5",
217
+ "pack_hash": "sha256:acd69a6e493f5b1faa050d3266d12ed6d97a7e698daeba073727c085ff5c63dd",
218
218
  "persona_id": "master_buffett",
219
219
  "policy_execution_hash": "sha256:5e853405b4dd96e4760f842c0726e26bf7f87e9e3cc79a6b90e3ceb58a2211a5",
220
220
  "score_ratio": 1,
@@ -234,7 +234,7 @@
234
234
  "verifier_checks": []
235
235
  },
236
236
  "reviewer_kind": "ai",
237
- "run_artifact_hash": "sha256:b1a29e61f61e7059e515b5933cc3c52b920cb68b4ee4912a30801f45d59952ca",
237
+ "run_artifact_hash": "sha256:d5e59ee75e51b7c4297b19bd790a9f32cc61eb34f43ca89d1c9788dc99e959bc",
238
238
  "run_id": "D13",
239
239
  "schema_version": 1,
240
240
  "simulation_scope": "13 physical provisional deterministic seats on frozen synthetic typed facts"