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
@@ -12,7 +12,7 @@ Request: **$ARGUMENTS**
12
12
  | `$ARGUMENTS` looks like | Do this |
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
- | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
15
+ | a ticker alone, or a question | **Full council.** Go to "Full council" below. Plugin-managed headless has a hard 30-minute queue-to-terminal bound; visible-host execution does not. |
16
16
  | ticker + `quick` | The plugin-managed headless `quick_v1` council: 4 fixed analysts, 1-4 selected methods, one parallel bull/bear round and a short PM inside a hard 10-minute ceiling. |
17
17
  | ticker + `screen` | `screen_ticker` only. No language-model judgment, no subagents. |
18
18
  | ticker + `options` | `get_options_chain` only. |
@@ -22,7 +22,7 @@ Request: **$ARGUMENTS**
22
22
  When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
- /alpha <TICKER> full council — shows every master, then asks which to run
25
+ /alpha <TICKER> full council — shows every master; headless run is bounded <=30m
26
26
  /alpha <TICKER> quick quick_v1: 4 analysts incl. news + 1-4 masters + 1 parallel debate round (<=10m)
27
27
  /alpha <TICKER> screen mechanical filings screen only (no model spend)
28
28
  /alpha <TICKER> options IV term structure, skew, positioning (no model spend)
@@ -39,7 +39,9 @@ is and use `market_coverage`, rather than returning nothing.
39
39
 
40
40
  Say plainly that the four marked modes call keyless data tools and spawn no subagents, so
41
41
  they cost nothing beyond this turn. Council modes can launch model workers; selected method
42
- seats may instead complete deterministically or return a recorded `out_of_scope` result.
42
+ seats first complete deterministically (including recorded `out_of_scope`) and, on the
43
+ plugin-managed headless path, each selected v3 seat then gets one isolated voice worker that
44
+ may explain but cannot change the frozen stance. This is not the named person's real speech.
43
45
 
44
46
  ## Council selection gate — mandatory for full and quick
45
47
 
@@ -94,6 +96,23 @@ master-selection contract.
94
96
  6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
97
  fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
98
  or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
99
+ 7. For the hard runtime contract, call plugin-managed headless `analyze_symbol` once with
100
+ `council_mode:"full"`, `wait_for_completion:false`, the full-mode receipt and optionally
101
+ `total_timeout_ms` no greater than `1800000`. Poll the same durable `run_id` to terminal.
102
+ All eight mandatory evidence roles start in one wave; every selected v3 method gets a
103
+ frozen deterministic stance plus its own isolated voice worker; Bull/Bear run in parallel
104
+ within each of three rounds with a barrier between rounds; then the PM runs. Queueing,
105
+ retries and final persistence share the 30-minute clock. At expiry the saved run is
106
+ `incomplete`, never silently shortened or relabeled complete. This guarantees terminal
107
+ persistence, not all-seat success during search/model/data-provider degradation.
108
+ 8. `plan_visible_run` is owned by the external host. The plugin cannot force-stop its Task
109
+ agents, so visible-host full must not be advertised as meeting the 30-minute deadline.
110
+ 9. The terminal full handoff must include the system price snapshot (or explicit unavailable
111
+ gap), every selected stable master ID/stance/voice-worker explanation or failure, and all
112
+ eight analyst statuses and summaries. A method-seat explanation is a recorded provisional
113
+ lens output, never a quotation, endorsement or current statement by the named person.
114
+ System-owned labels support `zh-CN`, `en`, `ja` and `ko`; propagate the request language
115
+ to every worker.
97
116
 
98
117
  ## Quick mode — plugin-managed headless quick_v1
99
118
 
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "AlphaCouncil plugins for public-equity research.",
9
- "version": "0.9.1"
9
+ "version": "0.9.4"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "alphacouncil-agent",
14
14
  "source": "./",
15
15
  "description": "Multi-agent equity research: evidence packets, bull/bear debate, portfolio-manager decision.",
16
- "version": "0.9.1",
16
+ "version": "0.9.4",
17
17
  "author": {
18
18
  "name": "Zhao73"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alphacouncil-agent",
3
- "version": "0.9.1",
3
+ "version": "0.9.4",
4
4
  "description": "Multi-agent public-equity research workflow for Claude Code: spawns analyst workers, gathers sourced JSON evidence packets, runs bull/bear debate, and produces a portfolio-manager Buy/Overweight/Hold/Underweight/Sell decision with a full report.",
5
5
  "author": {
6
6
  "name": "Zhao73"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alphacouncil-agent",
3
- "version": "0.9.1",
3
+ "version": "0.9.4",
4
4
  "description": "Host-visible or background public-equity research workflow with shared evidence packets.",
5
5
  "author": {
6
6
  "name": "Zhao73"
@@ -12,7 +12,7 @@ Request: **$ARGUMENTS**
12
12
  | `$ARGUMENTS` looks like | Do this |
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
- | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
15
+ | a ticker alone, or a question | **Full council.** Go to "Full council" below. Plugin-managed headless has a hard 30-minute queue-to-terminal bound; visible-host execution does not. |
16
16
  | ticker + `quick` | The plugin-managed headless `quick_v1` council: 4 fixed analysts, 1-4 selected methods, one parallel bull/bear round and a short PM inside a hard 10-minute ceiling. |
17
17
  | ticker + `screen` | `screen_ticker` only. No language-model judgment, no subagents. |
18
18
  | ticker + `options` | `get_options_chain` only. |
@@ -22,7 +22,7 @@ Request: **$ARGUMENTS**
22
22
  When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
- /alpha <TICKER> full council — shows every master, then asks which to run
25
+ /alpha <TICKER> full council — shows every master; headless run is bounded <=30m
26
26
  /alpha <TICKER> quick quick_v1: 4 analysts incl. news + 1-4 masters + 1 parallel debate round (<=10m)
27
27
  /alpha <TICKER> screen mechanical filings screen only (no model spend)
28
28
  /alpha <TICKER> options IV term structure, skew, positioning (no model spend)
@@ -39,7 +39,9 @@ is and use `market_coverage`, rather than returning nothing.
39
39
 
40
40
  Say plainly that the four marked modes call keyless data tools and spawn no subagents, so
41
41
  they cost nothing beyond this turn. Council modes can launch model workers; selected method
42
- seats may instead complete deterministically or return a recorded `out_of_scope` result.
42
+ seats first complete deterministically (including recorded `out_of_scope`) and, on the
43
+ plugin-managed headless path, each selected v3 seat then gets one isolated voice worker that
44
+ may explain but cannot change the frozen stance. This is not the named person's real speech.
43
45
 
44
46
  ## Council selection gate — mandatory for full and quick
45
47
 
@@ -94,6 +96,23 @@ master-selection contract.
94
96
  6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
97
  fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
98
  or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
99
+ 7. For the hard runtime contract, call plugin-managed headless `analyze_symbol` once with
100
+ `council_mode:"full"`, `wait_for_completion:false`, the full-mode receipt and optionally
101
+ `total_timeout_ms` no greater than `1800000`. Poll the same durable `run_id` to terminal.
102
+ All eight mandatory evidence roles start in one wave; every selected v3 method gets a
103
+ frozen deterministic stance plus its own isolated voice worker; Bull/Bear run in parallel
104
+ within each of three rounds with a barrier between rounds; then the PM runs. Queueing,
105
+ retries and final persistence share the 30-minute clock. At expiry the saved run is
106
+ `incomplete`, never silently shortened or relabeled complete. This guarantees terminal
107
+ persistence, not all-seat success during search/model/data-provider degradation.
108
+ 8. `plan_visible_run` is owned by the external host. The plugin cannot force-stop its Task
109
+ agents, so visible-host full must not be advertised as meeting the 30-minute deadline.
110
+ 9. The terminal full handoff must include the system price snapshot (or explicit unavailable
111
+ gap), every selected stable master ID/stance/voice-worker explanation or failure, and all
112
+ eight analyst statuses and summaries. A method-seat explanation is a recorded provisional
113
+ lens output, never a quotation, endorsement or current statement by the named person.
114
+ System-owned labels support `zh-CN`, `en`, `ja` and `ko`; propagate the request language
115
+ to every worker.
97
116
 
98
117
  ## Quick mode — plugin-managed headless quick_v1
99
118
 
@@ -12,7 +12,7 @@ Request: **$ARGUMENTS**
12
12
  | `$ARGUMENTS` looks like | Do this |
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
- | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
15
+ | a ticker alone, or a question | **Full council.** Go to "Full council" below. Plugin-managed headless has a hard 30-minute queue-to-terminal bound; visible-host execution does not. |
16
16
  | ticker + `quick` | The plugin-managed headless `quick_v1` council: 4 fixed analysts, 1-4 selected methods, one parallel bull/bear round and a short PM inside a hard 10-minute ceiling. |
17
17
  | ticker + `screen` | `screen_ticker` only. No language-model judgment, no subagents. |
18
18
  | ticker + `options` | `get_options_chain` only. |
@@ -22,7 +22,7 @@ Request: **$ARGUMENTS**
22
22
  When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
- /alpha <TICKER> full council — shows every master, then asks which to run
25
+ /alpha <TICKER> full council — shows every master; headless run is bounded <=30m
26
26
  /alpha <TICKER> quick quick_v1: 4 analysts incl. news + 1-4 masters + 1 parallel debate round (<=10m)
27
27
  /alpha <TICKER> screen mechanical filings screen only (no model spend)
28
28
  /alpha <TICKER> options IV term structure, skew, positioning (no model spend)
@@ -39,7 +39,9 @@ is and use `market_coverage`, rather than returning nothing.
39
39
 
40
40
  Say plainly that the four marked modes call keyless data tools and spawn no subagents, so
41
41
  they cost nothing beyond this turn. Council modes can launch model workers; selected method
42
- seats may instead complete deterministically or return a recorded `out_of_scope` result.
42
+ seats first complete deterministically (including recorded `out_of_scope`) and, on the
43
+ plugin-managed headless path, each selected v3 seat then gets one isolated voice worker that
44
+ may explain but cannot change the frozen stance. This is not the named person's real speech.
43
45
 
44
46
  ## Council selection gate — mandatory for full and quick
45
47
 
@@ -94,6 +96,23 @@ master-selection contract.
94
96
  6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
97
  fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
98
  or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
99
+ 7. For the hard runtime contract, call plugin-managed headless `analyze_symbol` once with
100
+ `council_mode:"full"`, `wait_for_completion:false`, the full-mode receipt and optionally
101
+ `total_timeout_ms` no greater than `1800000`. Poll the same durable `run_id` to terminal.
102
+ All eight mandatory evidence roles start in one wave; every selected v3 method gets a
103
+ frozen deterministic stance plus its own isolated voice worker; Bull/Bear run in parallel
104
+ within each of three rounds with a barrier between rounds; then the PM runs. Queueing,
105
+ retries and final persistence share the 30-minute clock. At expiry the saved run is
106
+ `incomplete`, never silently shortened or relabeled complete. This guarantees terminal
107
+ persistence, not all-seat success during search/model/data-provider degradation.
108
+ 8. `plan_visible_run` is owned by the external host. The plugin cannot force-stop its Task
109
+ agents, so visible-host full must not be advertised as meeting the 30-minute deadline.
110
+ 9. The terminal full handoff must include the system price snapshot (or explicit unavailable
111
+ gap), every selected stable master ID/stance/voice-worker explanation or failure, and all
112
+ eight analyst statuses and summaries. A method-seat explanation is a recorded provisional
113
+ lens output, never a quotation, endorsement or current statement by the named person.
114
+ System-owned labels support `zh-CN`, `en`, `ja` and `ko`; propagate the request language
115
+ to every worker.
97
116
 
98
117
  ## Quick mode — plugin-managed headless quick_v1
99
118
 
package/AGENTS.md CHANGED
@@ -10,11 +10,12 @@ Run `npm run check` after any code or prompt change.
10
10
 
11
11
  ## Current Release Boundary
12
12
 
13
- Package/plugin version `0.9.1` is a non-GA preview published to npm's `next` dist-tag and
14
- marked as a GitHub prerelease. Its build channel remains `solo_test`: 26 physical provisional
13
+ Package/plugin version `0.9.4` is a non-GA GitHub prerelease. This acceptance release does
14
+ not mutate npm dist-tags; verify npm independently before claiming `next` serves 0.9.4. Its
15
+ build channel remains `solo_test`: 26 physical provisional
15
16
  PersonaPack v3 packs, 26 `operator_lens` seats, 52 `provisional_derived_proxy` tools,
16
17
  0 operational seats and 0 validated `method_model` seats. Do not present this feature
17
- release, a passing quick report or a packaged smoke as PersonaPack production GA.
18
+ release, a passing full/quick report or a packaged smoke as PersonaPack production GA.
18
19
 
19
20
  ## Council Modes
20
21
 
@@ -24,6 +25,21 @@ mandatory evidence role still fails after its one bounded parse-only repair, per
24
25
  failure/diagnostic artifacts, skip method/debate/PM model calls and terminate `incomplete`
25
26
  before downstream synthesis. Never auto-downgrade that run to quick.
26
27
 
28
+ Plugin-managed headless full runs launched with `analyze_symbol` have a hard
29
+ queue-to-terminal-persistence ceiling of 1800000 ms. The eight mandatory evidence workers
30
+ start in one parallel wave. Each selected v3 method first produces a deterministic, frozen
31
+ stance and then gets one isolated voice worker that may explain, but never change, that
32
+ stance. Bull and Bear run in parallel within each of the three rounds, with a hard barrier
33
+ between rounds, followed by the PM. Retries, queueing and persistence consume the same
34
+ deadline; callers and environment variables may lower it, never raise it. At expiry, persist
35
+ a terminal fail-closed `incomplete` run and name every missing/skipped seat. The clock
36
+ guarantees terminal persistence, not successful completion when data providers, search or
37
+ model transport deteriorates.
38
+
39
+ This 30-minute enforcement belongs only to plugin-managed headless `analyze_symbol`. A
40
+ visible-host full run is scheduled by the external host, so the plugin cannot force-stop its
41
+ subagents or promise the same deadline. Do not advertise a visible run as SLA-bound.
42
+
27
43
  `quick` is explicit and uses `quick_v1`. It can run only through plugin-managed headless
28
44
  `analyze_symbol`; `plan_visible_run` rejects it. Quick launches the fixed four evidence roles
29
45
  `market_data`, `earnings_deep_dive`, `valuation_long_short`, and
@@ -43,6 +59,13 @@ structure only; it does not turn degraded into complete or imply full-council eq
43
59
  Method-seat output is a recorded provisional lens result, never a quotation from the named
44
60
  person.
45
61
 
62
+ Every terminal full handoff must show a system-owned price snapshot (price, currency,
63
+ timestamp and source when available, otherwise an explicit unavailable-data record), every
64
+ selected stable master ID with its frozen stance and isolated-worker explanation/status, and
65
+ all eight mandatory analyst statuses and summaries. System-owned report/handoff prose is
66
+ localized for `zh-CN`, `en`, `ja` and `ko`; workers receive the run language. Never present a
67
+ method-seat explanation as the real person's current words, quote or endorsement.
68
+
46
69
  ## Hosts
47
70
 
48
71
  The MCP server is the load-bearing integration on every host: it reads `personas/` directly,
@@ -126,7 +149,7 @@ rather than four in a menu of a hundred.
126
149
 
127
150
  | Invocation | What runs | Model spend |
128
151
  |---|---|---|
129
- | `/alpha <ticker>` | Shows every master, confirms `1..N`/ranges/`all`, then runs the full council | one subagent per selected seat |
152
+ | `/alpha <ticker>` | Shows every master, confirms `1..N`/ranges/`all`, then runs full; plugin-managed headless is ≤30m | deterministic stance + one isolated voice worker per selected v3 seat |
130
153
  | `/alpha <ticker> quick` | Shows all 26, confirms 1-4 (no `all`), then plugin-managed `quick_v1` (≤10m) | varies with selection |
131
154
  | `/alpha <ticker> screen` | Mechanical filings screen only | **none** |
132
155
  | `/alpha <ticker> options` | IV term structure, skew, positioning | **none** |
package/CHANGELOG.md CHANGED
@@ -2,6 +2,96 @@
2
2
 
3
3
  Notable changes per release. Dates are UTC.
4
4
 
5
+ ## [0.9.4] — 2026-07-28
6
+
7
+ ### Fixed
8
+
9
+ - Canonicalized `zh-CN`/English/Japanese/Korean selection language before catalog, intent
10
+ and receipt binding; `auto` now infers CJK prompts and unsupported explicit locales fail
11
+ instead of silently presenting English as localized output.
12
+ - Rebuilt all 26 provisional physical v3 packs with four-locale selector copy. Chinese
13
+ `method` fields are no longer copied English, and Japanese/Korean selection plus
14
+ confirmation text is localized.
15
+ - Added reader-language enforcement for evidence, isolated method voice, Bull/Bear and PM
16
+ packets. Plugin-managed workers use one bounded no-search repair before failing closed;
17
+ visible-host recording rejects wrong-language packets before persistence.
18
+ - Added Japanese/Korean execution-failure, deterministic method and manager fallback copy;
19
+ removed mixed-English system Master Bench and delayed-quote labels.
20
+ - Added report-language status to `report_quality` so an English report cannot pass a
21
+ Japanese or Korean run.
22
+ - Revalidated the complete selection-record/receipt binding and recomputed `selection_hash`
23
+ before consumption, so tampering cannot be persisted as audit evidence or burn a receipt.
24
+ - Replaced reader-facing snake-case best-for domains with reviewed four-language copy while
25
+ preserving stable machine domain IDs outside the display fields.
26
+ - Required six ordered Bull/Bear round records and exact Round-3 Q&A before a visible full
27
+ PM can complete; identical retries are idempotent and conflicting replays fail closed.
28
+ - Routed quick PM through the shared language/parse repair path and separated real
29
+ timeout/transport/language failures from `DRY_RUN` and malformed-JSON failures.
30
+
31
+ ### Acceptance boundary
32
+
33
+ - The package check now packs and offline-installs the physical tarball, starts the installed
34
+ server, and proves 31 tools, 26 seats, all four selector locales, stable-ID confirmation,
35
+ one-time receipt consumption and replay rejection.
36
+ - Still `solo_test`, non-GA, `production_eligible=false`, `method_model_eligible=false`,
37
+ with 26 provisional `operator_lens` packs and zero approved method models.
38
+
39
+ ## [0.9.3] — 2026-07-28
40
+
41
+ This is a **non-GA full-council runtime and reporting correction** on the `solo_test`
42
+ channel. It retains the `full_v2`/`quick_v1` contracts and all PersonaPack maturity gates.
43
+
44
+ ### Added
45
+
46
+ - Plugin-managed headless full now has a hard 1,800,000 ms queue-to-terminal-persistence
47
+ ceiling. Deadline expiry persists a fail-closed `incomplete` run with every affected role;
48
+ it does not claim all-seat success under external provider degradation.
49
+ - Every selected physical v3 method now freezes its deterministic stance and then launches
50
+ one isolated voice worker for that stable ID. The worker can explain but cannot alter the
51
+ stance or manufacture missing typed facts. Output is explicitly a provisional method-seat
52
+ result, not the named person's words or endorsement.
53
+ - Full handoff now lists all selected master IDs/stances/worker statuses, all eight mandatory
54
+ analyst statuses/summaries, and a system-owned price snapshot or explicit quote-data gap.
55
+ - System-owned labels and failure text support Chinese (`zh-CN`), English, Japanese and
56
+ Korean, while stable IDs and JSON keys stay unchanged.
57
+
58
+ ### Changed
59
+
60
+ - The eight mandatory full evidence workers start in one parallel wave.
61
+ - Bull and Bear start in parallel inside each full debate round, while inter-round barriers
62
+ and exact Round-2-to-Round-3 Q&A binding remain mandatory.
63
+ - Parse-only repair receives a separate bounded conversion budget and does not repeat the
64
+ original evidence web research.
65
+ - Documentation now separates the enforceable plugin-managed headless deadline from visible
66
+ host orchestration, whose external subagents the plugin cannot force-stop.
67
+
68
+ The ten-minute `quick_v1` contract is unchanged. Build channel remains `solo_test`;
69
+ `production_eligible=false`, `method_model_eligible=false`, operational seats = 0 and
70
+ validated `method_model` seats = 0. Formal production GA remains fail-closed.
71
+
72
+ ## [0.9.2] — 2026-07-28
73
+
74
+ This is a **non-GA hotfix** for the bounded quick-council preview. `0.9.1` passed the
75
+ source, package and public-install smoke checks, but the first clean GitHub Actions matrix
76
+ exposed a cross-platform event-loop failure in the new hard-deadline path. Because npm
77
+ versions are immutable, `0.9.2` supersedes `0.9.1` on the `next` dist-tag.
78
+
79
+ ### Fixed
80
+
81
+ - Grounding and linked-operation deadline timers now remain referenced until they abort or
82
+ are explicitly cleared. The previous `unref()` calls allowed Node to exit while a timeout
83
+ Promise was still pending when no other event-loop handle remained. That could cancel the
84
+ grounding test on Linux, macOS and Windows and weakened the claimed hard deadline in
85
+ short-lived hosts.
86
+ - A new isolated-process regression proves the linked abort deadline fires even when it is
87
+ the only event-loop handle.
88
+ - The quick-analysis fixture now uses a Node `.cmd` wrapper on Windows, so the five-job CI
89
+ matrix exercises the same fake worker behavior instead of silently producing empty output.
90
+
91
+ Quick/full scope, the 600,000ms ceiling, fixed evidence topology and all PersonaPack
92
+ assurance boundaries are otherwise unchanged from `0.9.1`. The production GA gate remains
93
+ intentionally failing.
94
+
5
95
  ## [0.9.1] — 2026-07-28
6
96
 
7
97
  This is a **non-GA quick-council preview** published on npm's `next` dist-tag and as a
package/CLAUDE.md CHANGED
@@ -8,7 +8,10 @@ The plugin turns `@alphacouncil-agent <ticker/request>` into one of two explicit
8
8
 
9
9
  - `full_v2` is the default: display and confirm the method catalog, run all eight mandatory
10
10
  evidence roles, run every selected method, complete the three-round Bull/Bear cross-exam,
11
- run the PM, and write the complete report. If mandatory evidence still fails after its one
11
+ run the PM, and write the complete report. Plugin-managed headless full starts all eight
12
+ evidence workers in one parallel wave, gives every selected v3 method one isolated voice
13
+ worker after its deterministic stance is frozen, and runs Bull/Bear in parallel within
14
+ each round with barriers between rounds. If mandatory evidence still fails after its one
12
15
  bounded parse-only repair, persist the failure package, skip method/debate/PM model calls,
13
16
  and terminate `incomplete` before downstream synthesis.
14
17
  - `quick_v1` runs only when explicitly requested and only through plugin-managed headless
@@ -22,14 +25,14 @@ non-investment test output.
22
25
 
23
26
  ## Current Build Profile
24
27
 
25
- The declared package/plugin version is `0.9.1`. It is published to npm's `next` dist-tag and
26
- as a GitHub prerelease: a non-GA quick-council preview. The build channel remains
28
+ The declared package/plugin version is `0.9.4`. It is a non-GA GitHub prerelease; this
29
+ acceptance release does not publish npm or change its dist-tags. The build channel remains
27
30
  `solo_test`. The isolated packaged tree contains 26 physical v3 packs and 52 executable
28
31
  `provisional_derived_proxy` tools.
29
32
  Every seat is still a provisional `operator_lens`: operational = 0, `method_model` = 0,
30
33
  human source approvals = 0, human formula approvals = 0, human approval signatures = 0.
31
34
  The production loader rejects these packs and formal production GA remains fail-closed.
32
- See `docs/releases/v0.9.1.md` and `docs/report-contract.md`.
35
+ See `docs/releases/v0.9.4.md` and `docs/report-contract.md`.
33
36
 
34
37
  ## Agent-Skills Governance
35
38
 
@@ -54,6 +57,29 @@ one-use, mode-bound `selection_receipt` with the same symbol, prompt, language a
54
57
  No research, run directory or worker may start before that receipt exists. Data-only
55
58
  `screen`, `options`, `news` and `market` modes skip the selection gate.
56
59
 
60
+ ## Full v2 Runtime Contract
61
+
62
+ - Plugin-managed headless `analyze_symbol(council_mode="full")` has a hard 1800000 ms
63
+ queue-to-terminal-persistence ceiling. Queueing, grounding, bounded repair, all workers,
64
+ synthesis and artifact persistence share that clock. A caller or environment may lower
65
+ the limit, never raise it.
66
+ - Start the eight mandatory evidence workers in one parallel wave. A failed mandatory role
67
+ after its single bounded parse-only repair closes the evidence barrier and terminates
68
+ `incomplete`; never refill the result from memory.
69
+ - For each selected physical v3 seat, execute the deterministic policy first and freeze its
70
+ stance. Then run exactly one isolated explanation worker for that stable ID. The worker
71
+ may make the method-seat result readable but cannot alter the stance or invent missing
72
+ typed facts. Its text is a recorded provisional lens explanation, not the named person's
73
+ words, endorsement or current opinion.
74
+ - Run Bull and Bear in parallel within Round 1, wait for both, then repeat for Round 2 and
75
+ Round 3. Preserve the exact Round-2-question to Round-3-answer binding. Start the PM only
76
+ after both Round-3 sides pass.
77
+ - On global expiry, stop new downstream work and persist a terminal fail-closed `incomplete`
78
+ run naming every timed-out, failed and skipped role. The ceiling guarantees a terminal
79
+ artifact, not that external search/model/data services will let all seats succeed.
80
+ - The plugin cannot enforce this deadline on `plan_visible_run` host subagents. Visible full
81
+ runs retain the same evidence/report gates but must not be described as 30-minute bounded.
82
+
57
83
  ## Quick v1 Fixed Contract
58
84
 
59
85
  - Fixed parallel evidence wave: `market_data`, `earnings_deep_dive`,
@@ -98,7 +124,10 @@ parallel wave.
98
124
 
99
125
  Master Bench: the complete generated catalog has 26 selectable lenses. Both modes display
100
126
  all 26. Full accepts any non-empty selection or `all`; quick accepts only 1-4. Selected
101
- methods run between evidence and debate; quick runs them in one parallel wave. Full/deep
127
+ methods run between evidence and debate. In plugin-managed headless mode, each selected v3
128
+ seat is a frozen deterministic stance plus its own isolated voice worker; this is a
129
+ process-isolated worker, not a persistent sidebar agent and not the real person. Quick runs
130
+ its 1-4 seats in one parallel wave. Full/deep
102
131
  verifiers are `source_fidelity`, `rederivation`, and `refuter`; quick does not run this
103
132
  adversarial fan-out. See `skills/alphacouncil-agent/SKILL.md` and `docs/personas.md`.
104
133
 
@@ -155,8 +184,13 @@ report, and a passing quick report must never be presented as full-equivalent.
155
184
  The final chat handoff may be concise, but it must not replace the saved report. Terminal runs
156
185
  must write mode-appropriate `final_report.md`, `user_response.md`, `artifact_index.md`,
157
186
  `report_quality.json`, per-seat Markdown, and Bull/Bear/PM output or explicit failure records.
158
- Tell the user the terminal status, report contract and file locations. `degraded` is a real
159
- quick-only terminal state, never a synonym for complete.
187
+ A full handoff must list all eight mandatory analyst statuses and summaries, every selected
188
+ stable master ID with frozen stance and isolated-worker explanation/status, and one
189
+ system-owned price snapshot with currency/time/source or an explicit unavailable-data gap.
190
+ Tell the user the terminal status, report contract, elapsed/deadline state and file locations.
191
+ System-owned labels and failure text support `zh-CN`, `en`, `ja` and `ko`; propagate the
192
+ request language to every worker. `degraded` is a real quick-only terminal state, never a
193
+ synonym for complete.
160
194
 
161
195
  Never hide missing data. If a source is unavailable, say so in `open_questions` and in the final report's data-gap section. If no critical data is missing, explicitly state that no critical data gaps were found.
162
196
 
package/README.ja.md CHANGED
@@ -49,6 +49,7 @@ AlphaCouncil Agent は、**上場株式のリサーチ委員会**向けの Codex
49
49
  |---|---|
50
50
  | 🏛️ **一人の意見ではなく、委員会** | フルは既定 8 根拠席(最大 11)、quick は固定 4 根拠席を並列実行。どちらも調査前に 26 メソッド席をすべて表示。 |
51
51
  | 🐂🐻 **設計からして対立的** | フルは 3 ラウンドの強気/弱気クロス審問。quick は強気・弱気を 1 回だけ並列実行して短い PM に渡し、敵対的 verifier を実行したとは主張しません。 |
52
+ | ⏱️ **フル headless にハード上限** | プラグイン管理の full は 8 アナリストを同時に開始し、各ラウンドの Bull/Bear も並列実行して、30 分以内に終端状態を保存。外部障害は明示的な `incomplete` となり、席を黙って省略しません。 |
52
53
  | 🔍 **監査可能、幻覚なし** | すべての主張が source ID に紐づく。欠落データは「データ欠落」セクションに明示し、決して隠さない。 |
53
54
  | ⏱️ **マルチ期間の判定** | 買い/中立/売りに加え、1〜4週・3〜6か月・12か月の見通しを個別に提示。 |
54
55
  | 🔑 **データベンダー不要・APIキー不要** | 金融データ API・マーケットデータフィード・証券口座ログインは一切不要。アナリストはエージェント自身のウェブ検索(**Codex のウェブ検索** / **Claude Code の WebSearch + WebFetch**)で根拠をリアルタイムに収集 —— 課金は既存の Codex / Claude Code サブスクのみ。MIT ライセンス。 |
@@ -57,16 +58,17 @@ AlphaCouncil Agent は、**上場株式のリサーチ委員会**向けの Codex
57
58
 
58
59
  このリポジトリはアップロード用のソースコピーです。実行成果物はリポジトリの外、`~/.alphacouncil-agent/runs/<run_id>/` に書き出されます。
59
60
 
60
- ## 現在の 0.9.1 プレビュー:non-GA solo-test
61
+ ## 現在の 0.9.4 プレビュー:non-GA solo-test
61
62
 
62
- `0.9.1` は npm `next` dist-tag で公開され、GitHub では prerelease として扱われます。
63
- これは時間制限付き `quick_v1` の機能プレビューであり、正式な production GA ではありません。
63
+ `0.9.4` は GitHub prerelease です。この受け入れリリースでは npm publish
64
+ dist-tag の変更を行いません。独立に確認せず `@next` 0.9.4 を指すと説明してはいけません。
65
+ これは時間制限付き council runtime のプレビューであり、正式な production GA ではありません。
64
66
  build channel は引き続き `solo_test` です。物理 PersonaPack v3 は 26、実行可能な
65
67
  `provisional_derived_proxy` ツールは 52、provisional `operator_lens` は 26。
66
68
  `operational`:**0**、検証済み `method_model`:**0**、人間によるソース/数式承認と承認署名:**0**です。
67
69
 
68
70
  production loader はこのツリーを引き続き拒否し、production assembly、cutover、GA は
69
- fail-closed のままです。quick の正確な境界は [v0.9.1 リリース契約](docs/releases/v0.9.1.md)、
71
+ fail-closed のままです。full/quick の正確な境界は [v0.9.4 リリース契約](docs/releases/v0.9.4.md)、
70
72
  `quick_v1` と `full_v2` の違いは [レポート契約](docs/report-contract.md) を参照してください。
71
73
 
72
74
  ## 📜 免責事項
@@ -117,7 +119,7 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
117
119
 
118
120
  簡潔なユーザー向け要約は `~/.alphacouncil-agent/runs/<run_id>/user_response.md` に書き出されます。
119
121
  完全なレポートは `~/.alphacouncil-agent/runs/<run_id>/final_report.md` に書き出され、
120
- 同じディレクトリに各アナリストの Markdown ファイルと `artifact_index.md` も保存されます。
122
+ 同じディレクトリに各アナリストの Markdown ファイルと `artifact_index.md` も保存されます。フルの要約には、システム価格(または明示的な価格データ欠落)、8 アナリスト全員の状態/要約、選択した各メソッド席の凍結 stance と独立 worker の説明/状態が表示されます。
121
123
 
122
124
  ### スラッシュコマンド
123
125
 
@@ -125,7 +127,7 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
125
127
 
126
128
  | 入力 | 実行内容 | モデル消費 |
127
129
  |---|---|---|
128
- | `/alpha <ticker>` | 全マスターを個別表示し、`1..N`/範囲/`all` を確認してフル委員会を実行 | 選択した席ごとに 1 サブエージェント |
130
+ | `/alpha <ticker>` | 全マスターを個別表示して full を実行;プラグイン管理 headless は ≤30分 | 選択した v3 席ごとに決定論的 stance + 独立 voice worker 1 |
129
131
  | `/alpha <ticker> quick` | 全 26 席を表示し、1-4 席を確認(`all` 禁止)後、プラグイン管理の `quick_v1`(≤10分)を実行 | 選択数により変動 |
130
132
  | `/alpha <ticker> screen` | 機械的スクリーニングのみ | **なし** |
131
133
  | `/alpha <ticker> options` | IV ターム構造、スキュー、建玉分布 | **なし** |
@@ -138,6 +140,14 @@ codex plugin marketplace add Zhao73/alphacouncil-agent
138
140
  上場銘柄なら何でも:`/alpha AAPL` · `/alpha 0700.HK quick` · `/alpha 7203.T news` · `/alpha market rates`。
139
141
  提出書類ベースのモードは米国登録企業が必要です。他市場は黙って空を返すのではなく `market_coverage` で対応状況を示します。
140
142
 
143
+ ### Full v2 — プラグイン管理の 30 分ハード上限
144
+
145
+ プラグイン管理 headless `analyze_symbol(council_mode="full")` は、durable queue から終端成果物の永続化まで **1800000 ms** が上限です。必須 8 根拠席を 1 波で並列開始します。根拠 barrier 通過後、選択した各物理 v3 メソッドは決定論的 policy で stance を凍結し、その stable ID 専用の独立 voice worker を 1 つ起動します。この worker は説明だけを行い、stance の変更や typed fact の捏造はできません。3 ラウンドの各ラウンドで Bull/Bear を並列開始し、両方が終了してから次へ進み、最後に PM を実行します。
146
+
147
+ 期限に達した場合は `incomplete` の終端状態を保存し、timeout・失敗・skip の全席を明示します。30 分が保証するのは監査可能な終端保存であり、検索・モデル transport・データ提供元の悪化時にも全席成功するという意味ではありません。visible-host の `plan_visible_run` は外部ホストが管理するため、プラグインはそのサブエージェントを強制停止できず、この上限を保証しません。
148
+
149
+ full の引き渡しは、選択した stable master ID 全件、必須 8 アナリスト全件、システム価格スナップショットまたは明示的な取得不能を列挙します。メソッド席の voice は provisional lens の記録された説明であり、**本人の発言・支持・現在の見解ではありません**。システム文言は中国語 (`zh-CN`)・英語・日本語・韓国語に対応し、各 worker に実行言語を渡します。
150
+
141
151
  ### Quick v1 — 時間制限付きであり、フルではない
142
152
 
143
153
  ユーザーが急いでいることやフル実行の失敗を理由に、quick へ自動切替はしません。Quick は
@@ -226,7 +236,7 @@ parse-only 修復後も失敗した場合、失敗と診断の成果物を保存
226
236
  | 現代 | アッシェンブレナー |
227
237
  | v3 拡張 | ダモダラン · アックマン · キャシー・ウッド · パブライ · ジュンジュンワラ |
228
238
 
229
- 0.9.1 `solo_test` カタログには 26 個の選択可能な物理 v3 パックがありますが、
239
+ 0.9.4 `solo_test` カタログには 26 個の選択可能な物理 v3 パックがありますが、
230
240
  **26 パックは 26 個の承認済みメソッドモデルを意味しません**。全 26 席は provisional
231
241
  `operator_lens` のままです。52 個のツールは実行可能な
232
242
  `provisional_derived_proxy` テスト代理であり、人間が承認した数式帰属ではありません。
@@ -286,15 +296,15 @@ flowchart TD
286
296
 
287
297
  | | Codex 版 | Claude Code 版 |
288
298
  |---|---|---|
289
- | 委員会の実行 | `codex exec` ワーカー、同時実行に上限 | 11 アナリストを並列 `Task` サブエージェントとして一括起動 |
299
+ | 委員会の実行 | プラグイン管理 `codex exec` worker;full headless ≤30分 | ホスト管理 `Task` サブエージェント;プラグインの強制期限なし |
290
300
  | アナリストごとの文脈 | 別プロセス | 別サブエージェント、それぞれ独立した完全な文脈ウィンドウ |
291
301
  | 取証 | `codex exec --search` | 各アナリスト自身の文脈で `WebSearch` + `WebFetch` |
292
- | 根拠 → ディベート | 逐次 | 実行フェーズマシンによるハードバリア |
293
- | ディベートの深さ | 3 ラウンド(主張/反論/Q&A)、server 実行 | 3 ラウンド、各ラウンドで強気・弱気を並列 |
302
+ | 根拠 → ディベート | 8 席を同時開始し、その後ハードバリア | 実行フェーズマシンによるハードバリア |
303
+ | ディベートの深さ | 3 ラウンド(主張/反論/Q&A)、各ラウンドで強気・弱気を並列 | 3 ラウンド、各ラウンドで強気・弱気を並列 |
294
304
  | 主張の検証 | 欠落ソースゲート(実行にフラグ + レポートにバナー) | + 主張ごとの敵対的検証:引用 URL の再取得・再導出・反証 *(ホスト駆動)* |
295
305
  | 完全実行の強制 | 不完全な実行を `incomplete` とマーク(server ゲート) | 同ゲート + ディベート前のハードバリア |
296
306
  | モデルとコスト | 単一モデル | **役割ごとに選択** — 取証は Sonnet、ディベート/判定は Opus 4.8(全 Opus / 全 Sonnet も可) |
297
- | 言語 | ユーザーの言語 | 全サブエージェント + ライブ workflow を通じてユーザーの言語 |
307
+ | 言語 | 中/英/日/韓のシステム文言;worker は実行言語 | 全サブエージェント + ライブ workflow を通じてユーザーの言語 |
298
308
 
299
309
  **正直なスコープ:** 同じモデルファミリー・同じプロンプト・同じ監査契約 —— 強みは文脈の分離、常時並列ファンアウト、決定的ゲートであり、より賢いモデルではありません。**v0.3.0** 以降、共有 server は 3 ラウンドのディベート、「欠落ソース / 完全実行 / レポート品質」のゲート、簡潔な引き渡し要約、完全レポート、ファイル索引、Windows ネイティブ Codex CLI 起動を提供します。**v0.3.1** 以降、`addyosmani/agent-skills` スタイルの停止ゲートと完了基準を持つ `agent-skills-governance` skill も同梱します。Claude Code 版はさらにラウンドごとの並列実行とホスト駆動の主張ごと検証を追加します。ライブ Web の鮮度とペイウォールは両版に等しく当てはまります。
300
310