alphacouncil-agent 0.9.0-solo-test.3 → 0.9.1

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 (78) hide show
  1. package/.claude/commands/alpha.md +57 -22
  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 +57 -22
  6. package/.opencode/command/alpha.md +57 -22
  7. package/AGENTS.md +47 -7
  8. package/CHANGELOG.md +52 -0
  9. package/CLAUDE.md +73 -26
  10. package/README.ja.md +49 -17
  11. package/README.md +57 -21
  12. package/README.zh-CN.md +47 -15
  13. package/commands/alpha.md +57 -22
  14. package/data/build-profile.v1.json +1 -1
  15. package/docs/INSTALL.md +50 -5
  16. package/docs/releases/v0.9.1.md +108 -0
  17. package/docs/report-contract.md +166 -76
  18. package/knowledge/ai-assisted-solo/experiments/runs/a.json +4 -4
  19. package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
  20. package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
  21. package/knowledge/ai-assisted-solo/experiments/runs/d13.json +16 -16
  22. package/knowledge/ai-assisted-solo/experiments/runs/d26.json +29 -29
  23. package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +19 -19
  24. package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +32 -32
  25. package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +33 -33
  26. package/knowledge/ai-assisted-solo/experiments/simulation-input.json +79 -79
  27. package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +19 -19
  28. package/knowledge/solo-test/masters/master_ackman/manifest.json +1 -1
  29. package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +1 -1
  30. package/knowledge/solo-test/masters/master_asness/manifest.json +1 -1
  31. package/knowledge/solo-test/masters/master_buffett/manifest.json +1 -1
  32. package/knowledge/solo-test/masters/master_burry/manifest.json +1 -1
  33. package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +1 -1
  34. package/knowledge/solo-test/masters/master_dalio/manifest.json +1 -1
  35. package/knowledge/solo-test/masters/master_damodaran/manifest.json +1 -1
  36. package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +1 -1
  37. package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +1 -1
  38. package/knowledge/solo-test/masters/master_fisher/manifest.json +1 -1
  39. package/knowledge/solo-test/masters/master_forensic_short/manifest.json +1 -1
  40. package/knowledge/solo-test/masters/master_graham/manifest.json +1 -1
  41. package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +1 -1
  42. package/knowledge/solo-test/masters/master_klarman/manifest.json +1 -1
  43. package/knowledge/solo-test/masters/master_li_lu/manifest.json +1 -1
  44. package/knowledge/solo-test/masters/master_lynch/manifest.json +1 -1
  45. package/knowledge/solo-test/masters/master_marks/manifest.json +1 -1
  46. package/knowledge/solo-test/masters/master_munger/manifest.json +1 -1
  47. package/knowledge/solo-test/masters/master_natenberg/manifest.json +1 -1
  48. package/knowledge/solo-test/masters/master_pabrai/manifest.json +1 -1
  49. package/knowledge/solo-test/masters/master_simons/manifest.json +1 -1
  50. package/knowledge/solo-test/masters/master_sinclair/manifest.json +1 -1
  51. package/knowledge/solo-test/masters/master_soros/manifest.json +1 -1
  52. package/knowledge/solo-test/masters/master_taleb/manifest.json +1 -1
  53. package/knowledge/solo-test/masters/master_thorp/manifest.json +1 -1
  54. package/mcp/lib/abort.mjs +18 -0
  55. package/mcp/lib/background-recovery.mjs +1 -0
  56. package/mcp/lib/codex.mjs +34 -7
  57. package/mcp/lib/constants.mjs +62 -0
  58. package/mcp/lib/council-options.mjs +14 -6
  59. package/mcp/lib/council-selection.mjs +39 -6
  60. package/mcp/lib/gates.mjs +61 -6
  61. package/mcp/lib/grounding.mjs +8 -7
  62. package/mcp/lib/macro.mjs +1 -1
  63. package/mcp/lib/markdown.mjs +187 -14
  64. package/mcp/lib/markets.mjs +9 -9
  65. package/mcp/lib/options.mjs +2 -2
  66. package/mcp/lib/orchestrator.mjs +447 -45
  67. package/mcp/lib/packets.mjs +107 -2
  68. package/mcp/lib/personas-v3/ga-package-evidence.mjs +14 -2
  69. package/mcp/lib/prompts.mjs +18 -7
  70. package/mcp/lib/quotes.mjs +8 -8
  71. package/mcp/lib/rpc.mjs +74 -12
  72. package/mcp/lib/run-store.mjs +14 -0
  73. package/mcp/lib/screen.mjs +3 -3
  74. package/mcp/lib/sec.mjs +11 -11
  75. package/package.json +4 -3
  76. package/scripts/lib/packaged-host-parity.mjs +8 -1
  77. package/skills/agent-skills-governance/SKILL.md +51 -19
  78. package/skills/alphacouncil-agent/SKILL.md +96 -35
@@ -13,7 +13,7 @@ Request: **$ARGUMENTS**
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
15
  | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
16
- | ticker + `quick` | The `quick` evidence preset: 4 analysts + the selected master methods + debate. No verification. |
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. |
19
19
  | ticker + `news` | `get_news` on the symbol, and on its CIK when it is a US filer. |
@@ -23,7 +23,7 @@ When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
25
  /alpha <TICKER> full council — shows every master, then asks which to run
26
- /alpha <TICKER> quick 4 analysts + selected masters + debate, no verification
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)
29
29
  /alpha <TICKER> news dated filings and headlines (no model spend)
@@ -38,34 +38,40 @@ Any listed equity. Filings-based modes need a US filer; for other markets say wh
38
38
  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
- they cost nothing beyond this turn. The council modes spawn one subagent per seat, and that
42
- is where the spend is.
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.
43
43
 
44
44
  ## Council selection gate — mandatory for full and quick
45
45
 
46
46
  This gate happens before any research tool, run envelope, network fetch or subagent. It is
47
47
  the same in Claude Code, Codex, OpenCode and Grok Build.
48
48
 
49
- 1. Call `begin_council_selection` with the symbol, original request, language and host. If
49
+ 1. Call `begin_council_selection` with the symbol, original request, language, host and the
50
+ intended `council_mode` (`full` by default; exactly `quick` for quick mode). If
50
51
  the request explicitly names masters, also pass those stable IDs as
51
52
  `preselected_master_ids`; this highlights them but does not confirm them.
52
53
  2. Show **every returned master individually, in the returned order and with its stable
53
54
  number**. Each row must include `identity`, `method`, `best_for` and `maturity`; a school
54
55
  name or a count is not a substitute for the individual catalog.
55
- 3. Ask for one submission. Accept one number from `1..N`, any comma/space-separated
56
- combination, ranges such as `1-4` or `1..4`, stable IDs/names, or `all`. A host-native
57
- multi-select is a convenience only. If it is unavailable or cannot show the full catalog,
58
- use the numbered text table and plain reply on every host.
59
- 4. If the original request already named masters or said `all`, prefill that choice but
56
+ 3. Ask for one submission. In full mode accept one number from `1..N`, combinations,
57
+ ranges, stable IDs/names, or `all`. In quick mode the same complete 26-seat catalog is
58
+ displayed, but the submission must contain **1..4 seats** and `all` / `select_all` is
59
+ forbidden. A host-native multi-select is a convenience only. If it is unavailable or
60
+ cannot show the full catalog, use the numbered text table and plain reply on every host.
61
+ 4. If the original full-mode request already named masters or said `all`, prefill that choice but
60
62
  **still show the full catalog and require this run's submission**. Do not silently reuse a
61
- prior choice. The submitted choice is the confirmation; do not ask a second confirmation.
63
+ prior choice. For quick, prefill at most four named methods and ask the user to reduce an
64
+ oversized/`all` request to 1-4. The submitted choice is the confirmation; do not ask a
65
+ second confirmation.
62
66
  5. Call `confirm_master_selection` with the returned `selection_id`, `catalog_hash`,
63
67
  `display_ack: true`, and exactly one of `selected_master_ids`, `select_all: true`, or
64
68
  `selection`. Retain the returned one-use `selection_receipt`.
65
- 6. Only now call `plan_visible_run`, `collect_evidence` or `analyze_symbol`, passing that
66
- `selection_receipt`. Do not also pass `masters` or `masters_roster`; the receipt is the
67
- authoritative selection. If the receipt is missing, expired, stale or consumed, restart
68
- from `begin_council_selection`.
69
+ 6. Only now call `plan_visible_run` (full only), `collect_evidence` (full only), or
70
+ `analyze_symbol`, passing that `selection_receipt` and the same symbol, prompt, language
71
+ and `council_mode`. Quick must use `analyze_symbol`. Do not also pass `masters` or
72
+ `masters_roster`; the receipt is authoritative and mode-bound. A full receipt cannot start
73
+ quick and a quick receipt cannot start full. For missing, expired, stale or consumed
74
+ receipts, or for a mode mismatch, restart from `begin_council_selection`.
69
75
 
70
76
  `screen`, `options`, `news` and `market` are data-only modes and skip this gate. `quick` is
71
77
  still a council judgment, so it never skips the gate; it changes the analyst fan-out, not the
@@ -85,13 +91,42 @@ master-selection contract.
85
91
  conclusion, not an abstention.
86
92
  5. Give price bands with the condition attached to each. "The cycle position is undetermined"
87
93
  changes what the bands depend on; it does not excuse leaving them out.
88
-
89
- ## Quick mode owes the reader one sentence
90
-
91
- Complete the same mandatory council selection gate, then use four analysts, the selected
92
- masters and the debate without verifier fan-out. State that evidence coverage and
93
- cross-verification are thinner than a standard run; list the selected masters so the quick
94
- result cannot be mistaken for the full bench.
94
+ 6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
+ fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
+ or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
97
+
98
+ ## Quick mode plugin-managed headless quick_v1
99
+
100
+ Quick is an explicit, bounded council contract, not an automatic downgrade of full and not a
101
+ visible-host orchestration. `plan_visible_run` rejects `council_mode=quick`; run it through
102
+ plugin-managed headless `analyze_symbol` so the server can enforce the deadline.
103
+
104
+ 1. Complete Stage 0 with `council_mode: "quick"`; display all 26 methods and confirm 1-4.
105
+ 2. Call `analyze_symbol` once with the exact same prompt/language/mode and one-use receipt,
106
+ `dry_run:false`, `wait_for_completion:false`, and optionally `total_timeout_ms` no greater
107
+ than `600000`. Do not pass `tasks`: quick fixes and starts these four roles in parallel:
108
+ `market_data`, `earnings_deep_dive`, `valuation_long_short`,
109
+ `news_industry_management`.
110
+ 3. The news role covers the highest-impact company and industry developments from the 120
111
+ days ending at `as_of`; future, undated and older items are excluded from recent news.
112
+ 4. The hard end-to-end budget starts with the durable queued run and includes a 20-second
113
+ grounding wait, evidence workers capped at 210 seconds each, up to four master workers in
114
+ parallel capped at 90 seconds each, one bull/bear statement round in parallel capped at
115
+ 90 seconds per side, one short PM capped at 90 seconds, retries and a 20-second
116
+ finalization reserve. Callers may lower the total but never raise it above 600000 ms.
117
+ 5. No round-2 rebuttal, round-3 exact Q&A or adversarial verifier fan-out runs. Scoped source
118
+ IDs are still checked. The report uses `quick_v1`, not `full_v2`, and
119
+ `full_council_equivalent` is false.
120
+ 6. Poll the same run with `read_run`; never create a replacement run. Terminal statuses are
121
+ `complete`, `degraded`, `incomplete`, `needs_verification`, `needs_revision`, and `failed`.
122
+ 7. `degraded` is a real quick terminal state, not success renamed: at least 2 of 4 evidence
123
+ roles completed, every failed role has a sanitized recorded packet/diagnostic, at least
124
+ one bull/bear side completed, the PM completed and all selected methods were recorded.
125
+ The system-owned degraded ledger and handoff must name every degraded task/side and cause.
126
+ 8. The concise handoff must include rating/winner/confidence, every selected stable master ID
127
+ and stance, all four analyst statuses and summaries, dated recent news, valuation/position,
128
+ data gaps and artifact paths. Method-seat output is a recorded lens result, never a quote
129
+ from the named person. State explicitly that quick is not equivalent to full council.
95
130
 
96
131
  ## Screen mode
97
132
 
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "AlphaCouncil plugins for public-equity research.",
9
- "version": "0.9.0-solo-test.3"
9
+ "version": "0.9.1"
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.0-solo-test.3",
16
+ "version": "0.9.1",
17
17
  "author": {
18
18
  "name": "Zhao73"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alphacouncil-agent",
3
- "version": "0.9.0-solo-test.3",
3
+ "version": "0.9.1",
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.0-solo-test.3",
3
+ "version": "0.9.1",
4
4
  "description": "Host-visible or background public-equity research workflow with shared evidence packets.",
5
5
  "author": {
6
6
  "name": "Zhao73"
@@ -13,7 +13,7 @@ Request: **$ARGUMENTS**
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
15
  | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
16
- | ticker + `quick` | The `quick` evidence preset: 4 analysts + the selected master methods + debate. No verification. |
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. |
19
19
  | ticker + `news` | `get_news` on the symbol, and on its CIK when it is a US filer. |
@@ -23,7 +23,7 @@ When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
25
  /alpha <TICKER> full council — shows every master, then asks which to run
26
- /alpha <TICKER> quick 4 analysts + selected masters + debate, no verification
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)
29
29
  /alpha <TICKER> news dated filings and headlines (no model spend)
@@ -38,34 +38,40 @@ Any listed equity. Filings-based modes need a US filer; for other markets say wh
38
38
  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
- they cost nothing beyond this turn. The council modes spawn one subagent per seat, and that
42
- is where the spend is.
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.
43
43
 
44
44
  ## Council selection gate — mandatory for full and quick
45
45
 
46
46
  This gate happens before any research tool, run envelope, network fetch or subagent. It is
47
47
  the same in Claude Code, Codex, OpenCode and Grok Build.
48
48
 
49
- 1. Call `begin_council_selection` with the symbol, original request, language and host. If
49
+ 1. Call `begin_council_selection` with the symbol, original request, language, host and the
50
+ intended `council_mode` (`full` by default; exactly `quick` for quick mode). If
50
51
  the request explicitly names masters, also pass those stable IDs as
51
52
  `preselected_master_ids`; this highlights them but does not confirm them.
52
53
  2. Show **every returned master individually, in the returned order and with its stable
53
54
  number**. Each row must include `identity`, `method`, `best_for` and `maturity`; a school
54
55
  name or a count is not a substitute for the individual catalog.
55
- 3. Ask for one submission. Accept one number from `1..N`, any comma/space-separated
56
- combination, ranges such as `1-4` or `1..4`, stable IDs/names, or `all`. A host-native
57
- multi-select is a convenience only. If it is unavailable or cannot show the full catalog,
58
- use the numbered text table and plain reply on every host.
59
- 4. If the original request already named masters or said `all`, prefill that choice but
56
+ 3. Ask for one submission. In full mode accept one number from `1..N`, combinations,
57
+ ranges, stable IDs/names, or `all`. In quick mode the same complete 26-seat catalog is
58
+ displayed, but the submission must contain **1..4 seats** and `all` / `select_all` is
59
+ forbidden. A host-native multi-select is a convenience only. If it is unavailable or
60
+ cannot show the full catalog, use the numbered text table and plain reply on every host.
61
+ 4. If the original full-mode request already named masters or said `all`, prefill that choice but
60
62
  **still show the full catalog and require this run's submission**. Do not silently reuse a
61
- prior choice. The submitted choice is the confirmation; do not ask a second confirmation.
63
+ prior choice. For quick, prefill at most four named methods and ask the user to reduce an
64
+ oversized/`all` request to 1-4. The submitted choice is the confirmation; do not ask a
65
+ second confirmation.
62
66
  5. Call `confirm_master_selection` with the returned `selection_id`, `catalog_hash`,
63
67
  `display_ack: true`, and exactly one of `selected_master_ids`, `select_all: true`, or
64
68
  `selection`. Retain the returned one-use `selection_receipt`.
65
- 6. Only now call `plan_visible_run`, `collect_evidence` or `analyze_symbol`, passing that
66
- `selection_receipt`. Do not also pass `masters` or `masters_roster`; the receipt is the
67
- authoritative selection. If the receipt is missing, expired, stale or consumed, restart
68
- from `begin_council_selection`.
69
+ 6. Only now call `plan_visible_run` (full only), `collect_evidence` (full only), or
70
+ `analyze_symbol`, passing that `selection_receipt` and the same symbol, prompt, language
71
+ and `council_mode`. Quick must use `analyze_symbol`. Do not also pass `masters` or
72
+ `masters_roster`; the receipt is authoritative and mode-bound. A full receipt cannot start
73
+ quick and a quick receipt cannot start full. For missing, expired, stale or consumed
74
+ receipts, or for a mode mismatch, restart from `begin_council_selection`.
69
75
 
70
76
  `screen`, `options`, `news` and `market` are data-only modes and skip this gate. `quick` is
71
77
  still a council judgment, so it never skips the gate; it changes the analyst fan-out, not the
@@ -85,13 +91,42 @@ master-selection contract.
85
91
  conclusion, not an abstention.
86
92
  5. Give price bands with the condition attached to each. "The cycle position is undetermined"
87
93
  changes what the bands depend on; it does not excuse leaving them out.
88
-
89
- ## Quick mode owes the reader one sentence
90
-
91
- Complete the same mandatory council selection gate, then use four analysts, the selected
92
- masters and the debate without verifier fan-out. State that evidence coverage and
93
- cross-verification are thinner than a standard run; list the selected masters so the quick
94
- result cannot be mistaken for the full bench.
94
+ 6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
+ fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
+ or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
97
+
98
+ ## Quick mode plugin-managed headless quick_v1
99
+
100
+ Quick is an explicit, bounded council contract, not an automatic downgrade of full and not a
101
+ visible-host orchestration. `plan_visible_run` rejects `council_mode=quick`; run it through
102
+ plugin-managed headless `analyze_symbol` so the server can enforce the deadline.
103
+
104
+ 1. Complete Stage 0 with `council_mode: "quick"`; display all 26 methods and confirm 1-4.
105
+ 2. Call `analyze_symbol` once with the exact same prompt/language/mode and one-use receipt,
106
+ `dry_run:false`, `wait_for_completion:false`, and optionally `total_timeout_ms` no greater
107
+ than `600000`. Do not pass `tasks`: quick fixes and starts these four roles in parallel:
108
+ `market_data`, `earnings_deep_dive`, `valuation_long_short`,
109
+ `news_industry_management`.
110
+ 3. The news role covers the highest-impact company and industry developments from the 120
111
+ days ending at `as_of`; future, undated and older items are excluded from recent news.
112
+ 4. The hard end-to-end budget starts with the durable queued run and includes a 20-second
113
+ grounding wait, evidence workers capped at 210 seconds each, up to four master workers in
114
+ parallel capped at 90 seconds each, one bull/bear statement round in parallel capped at
115
+ 90 seconds per side, one short PM capped at 90 seconds, retries and a 20-second
116
+ finalization reserve. Callers may lower the total but never raise it above 600000 ms.
117
+ 5. No round-2 rebuttal, round-3 exact Q&A or adversarial verifier fan-out runs. Scoped source
118
+ IDs are still checked. The report uses `quick_v1`, not `full_v2`, and
119
+ `full_council_equivalent` is false.
120
+ 6. Poll the same run with `read_run`; never create a replacement run. Terminal statuses are
121
+ `complete`, `degraded`, `incomplete`, `needs_verification`, `needs_revision`, and `failed`.
122
+ 7. `degraded` is a real quick terminal state, not success renamed: at least 2 of 4 evidence
123
+ roles completed, every failed role has a sanitized recorded packet/diagnostic, at least
124
+ one bull/bear side completed, the PM completed and all selected methods were recorded.
125
+ The system-owned degraded ledger and handoff must name every degraded task/side and cause.
126
+ 8. The concise handoff must include rating/winner/confidence, every selected stable master ID
127
+ and stance, all four analyst statuses and summaries, dated recent news, valuation/position,
128
+ data gaps and artifact paths. Method-seat output is a recorded lens result, never a quote
129
+ from the named person. State explicitly that quick is not equivalent to full council.
95
130
 
96
131
  ## Screen mode
97
132
 
@@ -13,7 +13,7 @@ Request: **$ARGUMENTS**
13
13
  |---|---|
14
14
  | *(empty)* | Print the mode table below and stop. Do not start a run. |
15
15
  | a ticker alone, or a question | **Full council.** Go to "Full council" below. |
16
- | ticker + `quick` | The `quick` evidence preset: 4 analysts + the selected master methods + debate. No verification. |
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. |
19
19
  | ticker + `news` | `get_news` on the symbol, and on its CIK when it is a US filer. |
@@ -23,7 +23,7 @@ When `$ARGUMENTS` is empty, print exactly this and stop:
23
23
 
24
24
  ```
25
25
  /alpha <TICKER> full council — shows every master, then asks which to run
26
- /alpha <TICKER> quick 4 analysts + selected masters + debate, no verification
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)
29
29
  /alpha <TICKER> news dated filings and headlines (no model spend)
@@ -38,34 +38,40 @@ Any listed equity. Filings-based modes need a US filer; for other markets say wh
38
38
  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
- they cost nothing beyond this turn. The council modes spawn one subagent per seat, and that
42
- is where the spend is.
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.
43
43
 
44
44
  ## Council selection gate — mandatory for full and quick
45
45
 
46
46
  This gate happens before any research tool, run envelope, network fetch or subagent. It is
47
47
  the same in Claude Code, Codex, OpenCode and Grok Build.
48
48
 
49
- 1. Call `begin_council_selection` with the symbol, original request, language and host. If
49
+ 1. Call `begin_council_selection` with the symbol, original request, language, host and the
50
+ intended `council_mode` (`full` by default; exactly `quick` for quick mode). If
50
51
  the request explicitly names masters, also pass those stable IDs as
51
52
  `preselected_master_ids`; this highlights them but does not confirm them.
52
53
  2. Show **every returned master individually, in the returned order and with its stable
53
54
  number**. Each row must include `identity`, `method`, `best_for` and `maturity`; a school
54
55
  name or a count is not a substitute for the individual catalog.
55
- 3. Ask for one submission. Accept one number from `1..N`, any comma/space-separated
56
- combination, ranges such as `1-4` or `1..4`, stable IDs/names, or `all`. A host-native
57
- multi-select is a convenience only. If it is unavailable or cannot show the full catalog,
58
- use the numbered text table and plain reply on every host.
59
- 4. If the original request already named masters or said `all`, prefill that choice but
56
+ 3. Ask for one submission. In full mode accept one number from `1..N`, combinations,
57
+ ranges, stable IDs/names, or `all`. In quick mode the same complete 26-seat catalog is
58
+ displayed, but the submission must contain **1..4 seats** and `all` / `select_all` is
59
+ forbidden. A host-native multi-select is a convenience only. If it is unavailable or
60
+ cannot show the full catalog, use the numbered text table and plain reply on every host.
61
+ 4. If the original full-mode request already named masters or said `all`, prefill that choice but
60
62
  **still show the full catalog and require this run's submission**. Do not silently reuse a
61
- prior choice. The submitted choice is the confirmation; do not ask a second confirmation.
63
+ prior choice. For quick, prefill at most four named methods and ask the user to reduce an
64
+ oversized/`all` request to 1-4. The submitted choice is the confirmation; do not ask a
65
+ second confirmation.
62
66
  5. Call `confirm_master_selection` with the returned `selection_id`, `catalog_hash`,
63
67
  `display_ack: true`, and exactly one of `selected_master_ids`, `select_all: true`, or
64
68
  `selection`. Retain the returned one-use `selection_receipt`.
65
- 6. Only now call `plan_visible_run`, `collect_evidence` or `analyze_symbol`, passing that
66
- `selection_receipt`. Do not also pass `masters` or `masters_roster`; the receipt is the
67
- authoritative selection. If the receipt is missing, expired, stale or consumed, restart
68
- from `begin_council_selection`.
69
+ 6. Only now call `plan_visible_run` (full only), `collect_evidence` (full only), or
70
+ `analyze_symbol`, passing that `selection_receipt` and the same symbol, prompt, language
71
+ and `council_mode`. Quick must use `analyze_symbol`. Do not also pass `masters` or
72
+ `masters_roster`; the receipt is authoritative and mode-bound. A full receipt cannot start
73
+ quick and a quick receipt cannot start full. For missing, expired, stale or consumed
74
+ receipts, or for a mode mismatch, restart from `begin_council_selection`.
69
75
 
70
76
  `screen`, `options`, `news` and `market` are data-only modes and skip this gate. `quick` is
71
77
  still a council judgment, so it never skips the gate; it changes the analyst fan-out, not the
@@ -85,13 +91,42 @@ master-selection contract.
85
91
  conclusion, not an abstention.
86
92
  5. Give price bands with the condition attached to each. "The cycle position is undetermined"
87
93
  changes what the bands depend on; it does not excuse leaving them out.
88
-
89
- ## Quick mode owes the reader one sentence
90
-
91
- Complete the same mandatory council selection gate, then use four analysts, the selected
92
- masters and the debate without verifier fan-out. State that evidence coverage and
93
- cross-verification are thinner than a standard run; list the selected masters so the quick
94
- result cannot be mistaken for the full bench.
94
+ 6. Full mode fails closed at the evidence barrier. If any mandatory evidence role still
95
+ fails after its bounded parse repair, do not spend more model calls on masters, bull/bear
96
+ or PM. Persist an `incomplete` run naming the failed evidence and skipped downstream roles.
97
+
98
+ ## Quick mode plugin-managed headless quick_v1
99
+
100
+ Quick is an explicit, bounded council contract, not an automatic downgrade of full and not a
101
+ visible-host orchestration. `plan_visible_run` rejects `council_mode=quick`; run it through
102
+ plugin-managed headless `analyze_symbol` so the server can enforce the deadline.
103
+
104
+ 1. Complete Stage 0 with `council_mode: "quick"`; display all 26 methods and confirm 1-4.
105
+ 2. Call `analyze_symbol` once with the exact same prompt/language/mode and one-use receipt,
106
+ `dry_run:false`, `wait_for_completion:false`, and optionally `total_timeout_ms` no greater
107
+ than `600000`. Do not pass `tasks`: quick fixes and starts these four roles in parallel:
108
+ `market_data`, `earnings_deep_dive`, `valuation_long_short`,
109
+ `news_industry_management`.
110
+ 3. The news role covers the highest-impact company and industry developments from the 120
111
+ days ending at `as_of`; future, undated and older items are excluded from recent news.
112
+ 4. The hard end-to-end budget starts with the durable queued run and includes a 20-second
113
+ grounding wait, evidence workers capped at 210 seconds each, up to four master workers in
114
+ parallel capped at 90 seconds each, one bull/bear statement round in parallel capped at
115
+ 90 seconds per side, one short PM capped at 90 seconds, retries and a 20-second
116
+ finalization reserve. Callers may lower the total but never raise it above 600000 ms.
117
+ 5. No round-2 rebuttal, round-3 exact Q&A or adversarial verifier fan-out runs. Scoped source
118
+ IDs are still checked. The report uses `quick_v1`, not `full_v2`, and
119
+ `full_council_equivalent` is false.
120
+ 6. Poll the same run with `read_run`; never create a replacement run. Terminal statuses are
121
+ `complete`, `degraded`, `incomplete`, `needs_verification`, `needs_revision`, and `failed`.
122
+ 7. `degraded` is a real quick terminal state, not success renamed: at least 2 of 4 evidence
123
+ roles completed, every failed role has a sanitized recorded packet/diagnostic, at least
124
+ one bull/bear side completed, the PM completed and all selected methods were recorded.
125
+ The system-owned degraded ledger and handoff must name every degraded task/side and cause.
126
+ 8. The concise handoff must include rating/winner/confidence, every selected stable master ID
127
+ and stance, all four analyst statuses and summaries, dated recent news, valuation/position,
128
+ data gaps and artifact paths. Method-seat output is a recorded lens result, never a quote
129
+ from the named person. State explicitly that quick is not equivalent to full council.
95
130
 
96
131
  ## Screen mode
97
132
 
package/AGENTS.md CHANGED
@@ -8,17 +8,55 @@ For anti-laziness governance, also follow `skills/agent-skills-governance/SKILL.
8
8
 
9
9
  Run `npm run check` after any code or prompt change.
10
10
 
11
+ ## Current Release Boundary
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
15
+ PersonaPack v3 packs, 26 `operator_lens` seats, 52 `provisional_derived_proxy` tools,
16
+ 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
+
19
+ ## Council Modes
20
+
21
+ `full` is the default and uses the `full_v2` contract. It requires all eight mandatory
22
+ evidence roles, every selected method, the three-round Bull/Bear cross-exam and PM. If any
23
+ mandatory evidence role still fails after its one bounded parse-only repair, persist the
24
+ failure/diagnostic artifacts, skip method/debate/PM model calls and terminate `incomplete`
25
+ before downstream synthesis. Never auto-downgrade that run to quick.
26
+
27
+ `quick` is explicit and uses `quick_v1`. It can run only through plugin-managed headless
28
+ `analyze_symbol`; `plan_visible_run` rejects it. Quick launches the fixed four evidence roles
29
+ `market_data`, `earnings_deep_dive`, `valuation_long_short`, and
30
+ `news_industry_management` in parallel; 1-4 selected methods in parallel; one Bull and one
31
+ Bear statement in parallel; then one short PM. It has no rebuttal/Q&A rounds and no
32
+ adversarial `source_fidelity`/`rederivation`/`refuter` fan-out.
33
+
34
+ Quick company/industry news must be dated within the 120 days ending at `as_of`. Future,
35
+ undated and older items are gaps, not recent news. Its hard queue-to-persistence ceiling is
36
+ 600000 ms: grounding wait 20s; each evidence worker 210s; each selected-method worker 90s;
37
+ Bull and Bear 90s per side; PM 90s; final assembly/persistence reserve 20s. Retry time is
38
+ inside the same caps. The ceiling may be lowered, never raised.
39
+
40
+ Quick may terminate `degraded` only under its documented minimum-coverage rule and one
41
+ system-owned idempotent degraded ledger. `report_quality=passed` validates `quick_v1`
42
+ structure only; it does not turn degraded into complete or imply full-council equivalence.
43
+ Method-seat output is a recorded provisional lens result, never a quotation from the named
44
+ person.
45
+
11
46
  ## Hosts
12
47
 
13
48
  The MCP server is the load-bearing integration on every host: it reads `personas/` directly,
14
49
  so a host that ignores the generated agent files still gets correct prompts.
15
50
 
16
51
  Every host also follows the same mandatory master-selection protocol for a full or quick
17
- council. Call `begin_council_selection`, display every returned entry with its number,
18
- identity, method and `best_for`, collect a numbered/range/ID/`all` submission, then call
19
- `confirm_master_selection` with `display_ack: true`. Existing names in the request are only
20
- a prefill; the full catalog is still shown. Only the returned one-use `selection_receipt`
21
- may authorize `plan_visible_run`, `collect_evidence` or `analyze_symbol`. A host-native
52
+ council. Call `begin_council_selection` with the intended `council_mode`, display all 26
53
+ returned entries with number, identity, method and `best_for`, collect one submission, then
54
+ call `confirm_master_selection` with `display_ack: true`. Full accepts numbers, ranges,
55
+ stable IDs or `all`; quick accepts exactly 1-4 distinct methods and rejects `all` and
56
+ `select_all`. Existing names in the request are only a prefill; the full catalog is still
57
+ shown. Only the returned one-use, mode-bound `selection_receipt`, reused with the same
58
+ symbol, prompt, language and mode, may authorize the applicable execution tool. A full
59
+ receipt cannot launch quick and a quick receipt cannot launch full. A host-native
22
60
  multi-select is optional UI sugar; the numbered text fallback is mandatory on Claude Code,
23
61
  Codex, OpenCode and Grok Build. Data-only `screen`, `options`, `news` and `market` modes are
24
62
  the only `/alpha` routes that skip this gate.
@@ -89,7 +127,7 @@ rather than four in a menu of a hundred.
89
127
  | Invocation | What runs | Model spend |
90
128
  |---|---|---|
91
129
  | `/alpha <ticker>` | Shows every master, confirms `1..N`/ranges/`all`, then runs the full council | one subagent per selected seat |
92
- | `/alpha <ticker> quick` | Same mandatory master selection, then 4 analysts + selected masters + debate; no verification | varies with selection |
130
+ | `/alpha <ticker> quick` | Shows all 26, confirms 1-4 (no `all`), then plugin-managed `quick_v1` (≤10m) | varies with selection |
93
131
  | `/alpha <ticker> screen` | Mechanical filings screen only | **none** |
94
132
  | `/alpha <ticker> options` | IV term structure, skew, positioning | **none** |
95
133
  | `/alpha <ticker> news` | Dated filings and headlines | **none** |
@@ -98,7 +136,9 @@ rather than four in a menu of a hundred.
98
136
 
99
137
  The four marked **none** call keyless data tools and spawn no subagents, so they cost
100
138
  nothing beyond the turn you type them in. Full and quick are council modes: both require a
101
- fresh selection receipt, and their cost varies with the selected master count.
139
+ fresh mode-bound selection receipt. Quick must poll the single durable `run_id` returned by
140
+ `analyze_symbol(wait_for_completion=false)` through `read_run`; never emulate quick with
141
+ visible agents or create a replacement run when it is slow.
102
142
 
103
143
  | Host | Where it reads them |
104
144
  |---|---|
package/CHANGELOG.md CHANGED
@@ -2,6 +2,58 @@
2
2
 
3
3
  Notable changes per release. Dates are UTC.
4
4
 
5
+ ## [0.9.1] — 2026-07-28
6
+
7
+ This is a **non-GA quick-council preview** published on npm's `next` dist-tag and as a
8
+ GitHub prerelease. The bare SemVer does not promote the PersonaPack assurance level: the
9
+ build profile remains `solo_test`, `production_eligible=false` and
10
+ `method_model_eligible=false`; all 26 named-investor packs remain provisional
11
+ `operator_lens`, not validated simulations of those people.
12
+
13
+ ### Added
14
+
15
+ - A first-class `council_mode=quick` with a non-overridable ten-minute end-to-end ceiling.
16
+ It runs four fixed evidence seats in parallel (`market_data`, `earnings_deep_dive`,
17
+ `valuation_long_short`, `news_industry_management`), one to four selected method seats,
18
+ one parallel Bull/Bear statement, and one short PM synthesis.
19
+ - `quick_v1`, a separate 13-section report contract. It records
20
+ `full_council_equivalent=false`, one expected debate round and
21
+ `adversarial_verification=not_run`; a passing quick report is never represented as a
22
+ passing full council.
23
+ - A mode-bound selection receipt. Quick still displays the complete 26-seat catalog, but
24
+ accepts at most four explicit seats and rejects `all`; a quick receipt cannot start full.
25
+ - An explicit terminal `degraded` state. A quick run may deliver when at least two evidence
26
+ seats and at least one debate side succeeded and the PM plus all selected methods were
27
+ recorded. A system-owned ledger names every failed/degraded seat and reason even when the
28
+ report-structure check passes.
29
+ - A 120-day, `as_of`-bounded recent-news handoff. Undated, future and stale sources are
30
+ excluded and counted as gaps instead of being mislabeled as recent news.
31
+
32
+ ### Fixed
33
+
34
+ - Full analysis now fails fast before method, debate and PM model calls when mandatory
35
+ evidence remains missing. The older RKLB runs spent another 16–43 minutes after the
36
+ result was already guaranteed to be incomplete.
37
+ - Cross-seat prompts no longer resend raw transcripts or full report Markdown. Quick
38
+ evidence keeps a bounded claim/source projection with referential integrity; full PM
39
+ context retains bounded three-round summaries and exact Q&A while dropping artifact-only
40
+ raw text.
41
+ - Worker and synthesis budgets share one quick deadline: grounding wait 20 seconds,
42
+ evidence up to 210 seconds in one four-seat wave, up to four method seats in one 90-second
43
+ wave, Bull/Bear in one parallel 90-second wave, PM up to 90 seconds, and 20 seconds
44
+ reserved for deterministic finalization. These are ceilings, not a success guarantee.
45
+ - Failure fallback no longer emits a synthetic `Hold`; it records
46
+ `NEEDS_MANAGER_REVIEW`, `decision_available=false` and no rating.
47
+ - `degraded` is recognized as terminal during polling and startup recovery. Evidence
48
+ telemetry uses `evidence_degraded` rather than the misleading `evidence_complete` event.
49
+ - `npm publish --dry-run` no longer leaks `npm_config_dry_run` into the nested package-parity
50
+ `npm pack`, which previously returned metadata without creating the tarball and caused a
51
+ false release failure.
52
+
53
+ The production GA gate remains intentionally failing and is not bypassed by this release.
54
+ Formal GA requires a later monotonic version such as `0.10.0` or `1.0.0`, plus the existing
55
+ source, method-model, experiment, physical-host and signed-release evidence.
56
+
5
57
  ## [0.9.0-solo-test.3] — 2026-07-27
6
58
 
7
59
  This is a post-acceptance hotfix for the **0.9.0 solo-test prerelease** channel. An