pantheon-opencode 1.6.0-beta.10 → 1.6.0-beta.12

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 (71) hide show
  1. package/AGENTS.global.md +42 -18
  2. package/AGENTS.md +1 -1
  3. package/CHANGELOG.md +46 -0
  4. package/README.md +122 -38
  5. package/README.pt-BR.md +5 -4
  6. package/bin/pantheon-init.mjs +322 -101
  7. package/package.json +7 -6
  8. package/plugin.json +1 -1
  9. package/pyproject.toml +1 -1
  10. package/scripts/build-agents-md.mjs +128 -10
  11. package/scripts/check-plugin-v2-coverage.mjs +7 -7
  12. package/scripts/doctor.mjs +242 -19
  13. package/scripts/install/backup.mjs +648 -0
  14. package/scripts/install/cli-ui.mjs +79 -1
  15. package/scripts/install/exit-codes.mjs +26 -0
  16. package/scripts/install/file-inventory.mjs +555 -0
  17. package/scripts/install/interactive.mjs +15 -1
  18. package/scripts/install/migrate.mjs +32 -6
  19. package/scripts/install/model-picker.mjs +63 -22
  20. package/scripts/install/opencode-version.mjs +9 -1
  21. package/scripts/install/opencode.mjs +761 -63
  22. package/scripts/install/plan-artifact.mjs +517 -0
  23. package/scripts/install/plan.mjs +449 -0
  24. package/scripts/install/plugin.mjs +136 -18
  25. package/scripts/install/shared.mjs +249 -94
  26. package/scripts/install/state.mjs +63 -8
  27. package/scripts/install/strings.mjs +20 -0
  28. package/scripts/install/venv.mjs +25 -6
  29. package/scripts/install/verify.mjs +128 -0
  30. package/scripts/install/vision-prompt.mjs +13 -1
  31. package/scripts/install-mcp.mjs +1 -1
  32. package/scripts/manifest-inventory.mjs +49 -3
  33. package/scripts/mcp_persistence.py +50 -15
  34. package/scripts/node-engine-policy.mjs +74 -0
  35. package/scripts/package-evidence.mjs +6 -0
  36. package/scripts/postinstall.mjs +3 -4
  37. package/scripts/prune.mjs +9 -3
  38. package/scripts/reconcile.mjs +325 -0
  39. package/scripts/restore.mjs +222 -0
  40. package/scripts/uninstall.mjs +258 -34
  41. package/scripts/update.mjs +164 -0
  42. package/scripts/validate-node-engine-policy.mjs +13 -0
  43. package/scripts/version-check.mjs +34 -1
  44. package/scripts/versioning.mjs +9 -1
  45. package/skills-lock.json +4 -4
  46. package/src/agents/iris.md +6 -0
  47. package/src/agents/mnemosyne.md +7 -2
  48. package/src/agents/zeus.md +19 -62
  49. package/src/instructions/agent-return-format.instructions.md +17 -15
  50. package/src/instructions/memory-protocol.instructions.md +3 -2
  51. package/src/instructions/test-economy.instructions.md +21 -0
  52. package/src/instructions/zeus-anti-stall.instructions.md +6 -6
  53. package/src/instructions/zeus-council-synthesis.instructions.md +10 -11
  54. package/src/instructions/zeus-memory-operations.instructions.md +11 -6
  55. package/src/instructions/zeus-timeout-retry.instructions.md +28 -9
  56. package/src/mcp/mcp_persistence.py +50 -15
  57. package/src/pantheon/cost-command.ts +5 -2
  58. package/src/pantheon/model-agents.ts +19 -0
  59. package/src/pantheon/model-command.ts +218 -56
  60. package/src/pantheon/v2-model-overrides.ts +275 -0
  61. package/src/pantheon/v2-tools.ts +18 -29
  62. package/src/pantheon/v2-unsupported.mjs +2 -3
  63. package/src/plugin-v2.ts +13 -0
  64. package/src/plugins/tui/dist/tui-v2.js +2 -2
  65. package/src/plugins/tui/dist/tui.js +1 -1
  66. package/src/plugins/tui/package-lock.json +3 -3
  67. package/src/plugins/tui/package.json +2 -2
  68. package/src/skills/artifact-management/SKILL.md +5 -1
  69. package/src/skills/auto-continue/SKILL.md +14 -6
  70. package/src/skills/memory-bank/SKILL.md +5 -1
  71. package/src/skills/worktrees/SKILL.md +30 -11
package/AGENTS.global.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <!-- pantheon:generated:begin — Pantheon-managed region; regenerated on install/upgrade, never edit inside -->
2
2
  <!-- Generated by scripts/build-agents-md.mjs — do not edit directly. -->
3
3
  <!-- Source of truth: src/instructions/*.instructions.md + the static sections in this script. -->
4
- <!-- pantheon:agents-md v2 artifact=global generated-at=2026-10-14T15:44:12-03:00 sha=a305942 -->
4
+ <!-- pantheon:agents-md v2 artifact=global generated-at=2026-10-16T15:32:02-03:00 sha=2cda37c -->
5
5
 
6
6
  # Pantheon Agent System — OpenCode
7
7
 
@@ -76,7 +76,7 @@ the complete plan in the current conversation before requesting approval.
76
76
 
77
77
  ## Council Specialist Response Format
78
78
 
79
- When responding to a `/pantheon` council synthesis invocation, specialists MUST return this structured format:
79
+ When responding to a `/pantheon` council synthesis invocation, specialists MUST return this structured format. First-round specialists receive independent prompts without peer responses, whether dispatch is parallel or synchronous/sequential; they therefore cannot know actual peer positions. Do not guess them, claim agreement/disagreement with unseen peers, or self-reference in agreement signals. Omit `agreement_signals` or write `none` in the first round. In a rebuttal round, signals may reference only peer responses included in that round's prompt. Zeus derives agreement and disagreement during synthesis by comparing actual responses.
80
80
 
81
81
  ```
82
82
  ## specialist_response
@@ -85,8 +85,8 @@ When responding to a `/pantheon` council synthesis invocation, specialists MUST
85
85
  **trade_offs:** <what's gained vs lost, specific>
86
86
  **risks:** <what could go wrong, max 3 items>
87
87
  **confidence:** High | Medium | Low
88
- **agreement_signals:** agree:@agent1 on <issue>, agree:@agent2 on <issue> | disagree:@agent3 on <issue>
89
- **specific_claims:** <count of specific factual claims in response>
88
+ **agreement_signals:** <omit or `none` in first round; rebuttal may cite only visible peer responses>
89
+ **specific_claims:** <optional self-reported count; advisory only, not evidence>
90
90
  ```
91
91
 
92
92
  ### Field Rules
@@ -98,29 +98,31 @@ When responding to a `/pantheon` council synthesis invocation, specialists MUST
98
98
  | trade_offs | ✅ | At least one gain and one loss, specific to context |
99
99
  | risks | ✅ | Max 3 bullet points |
100
100
  | confidence | ✅ | One of: High, Medium, Low |
101
- | agreement_signals | Optional | Format: `agree:@agent on issue \| disagree:@agent on issue`. Use only when you can reference other specialists expected positions. |
102
- | specific_claims | ✅ | Integer count of verifiable factual statements in the response |
101
+ | agreement_signals | Optional | Omit or use `none` in the first round. In rebuttal, reference only peer responses visible in the prompt; never speculate or self-reference. Zeus derives synthesis positions from actual responses, not these signals. |
102
+ | specific_claims | Optional | Self-reported integer count only; advisory and not independently validated. Do not treat the count alone as evidence or proof of confidence. |
103
103
 
104
104
  ### Confidence Guidelines
105
105
 
106
- - **High**: Position backed by 3+ specific claims with evidence or direct experience
107
- - **Medium**: Position backed by 1-2 specific claims
106
+ - **High**: Position backed by at least 3 verifiable claims supported by evidence in the response; a self-reported count alone does not qualify
107
+ - **Medium**: Position backed by at least 1 verifiable claim supported by evidence in the response
108
108
  - **Low**: Position is opinion-based or speculative
109
109
 
110
+ Equal self-reported counts (for example, several specialists each reporting 7) do not by themselves prove fabrication; assess whether the actual response contains verifiable, supported claims.
111
+
110
112
  ### Example
111
113
  ```
112
114
  ## specialist_response
113
- **position:** The BackgroundJobBoard should be used for council crash recovery
114
- **reasoning:** The board already supports running→completed→reconciled state machine with persistence. Registering council dispatches there adds ~50ms overhead but prevents total session loss on context crash. The WAL pattern ensures no data loss on restart.
115
- **trade_offs:** Gain: crash recovery for multi-minute council sessions. Lose: ~50ms registration overhead per council.
116
- **risks:** Board persistence failure could block council start — implement with fire-and-forget error handling
117
- **confidence:** High
118
- **agreement_signals:** agree:@themis on persist-before-notify
119
- **specific_claims:** 3
115
+ **position:** Use a bounded local cache for the read-heavy endpoint.
116
+ **reasoning:** The endpoint repeatedly reads the same reference data. A bounded cache reduces repeated lookups, while a short TTL limits staleness.
117
+ **trade_offs:** Gain: fewer repeated reads. Lose: results may remain stale until the TTL expires.
118
+ **risks:** Cache invalidation may lag after updates.
119
+ **confidence:** Medium
120
+ **agreement_signals:** none
121
+ **specific_claims:** 2 (self-reported; advisory)
120
122
  ```
121
123
 
122
124
  ## Memory Context
123
- If memory affected the result, state the takeaway briefly; do not repeat the entry or task context.
125
+ If memory affected the result, state the takeaway briefly; do not repeat the entry or task context. If persistence was expected but no write tool was exposed or a write failed, state that it was not persisted; never imply a successful store without confirmation.
124
126
 
125
127
  <!-- Source: src/instructions/memory-protocol.instructions.md -->
126
128
  ## Memory Protocol
@@ -138,12 +140,34 @@ These rules apply to all agents; each agent file may add domain-specific rules.
138
140
  - Use a targeted query (`top_k=2`); do not search the whole prompt by default. Missing or irrelevant results never block current work.
139
141
 
140
142
  ### Persistence
141
- - `memory_store()` is manual, not automatic. Store at most one concise, reusable top-level result; never persist routine child summaries, phase updates, test logs, or temporary state.
142
- - Confirm the store succeeded before claiming persistence. There is no automatic memory WAL or recovery. Add ADRs to the memory bank only when explicitly requested.
143
+ - Tool grants vary by agent/runtime. Zeus's installed allowlist has `memory_search` and temporary `context_save`/`context_get` checkpoints, but no durable writes; Mnemosyne's includes `memory_store` and other durable-memory tools. Use only tools exposed and permitted in the active session.
144
+ - Store at most one concise, reusable top-level result; never persist routine child summaries, phase updates, test logs, or temporary state. Confirm a successful write before claiming persistence. Never store secrets, credentials, or tokens. `memory_store` stores submitted values and metadata without guaranteed redaction; omit sensitive content or redact it before storage.
145
+ - If no write tool is available or the write did not succeed, say that the information was not persisted. Do not imply automatic memory storage or recovery. Add ADRs to the memory bank only when explicitly requested.
143
146
 
144
147
  ### Relevance and permanent records
145
148
  Ignore weak matches; routine summaries do not belong in durable memory.
146
149
 
150
+ <!-- Source: src/instructions/test-economy.instructions.md -->
151
+ ## Test Economy
152
+
153
+
154
+ Write the smallest test that proves the behavior: one behavior → one focused
155
+ test, never the same coverage duplicated across suites or files.
156
+
157
+ - Do NOT add E2E, full-install, or network-dependent tests unless the change
158
+ actually alters that end-to-end path. Prefer unit or integration tests.
159
+ - Do not assert on copy/format strings redundantly, and do not write
160
+ assertions that only restate the implementation ("test the test").
161
+ - Heavy or slow suites (e.g. real install/E2E) MUST be opt-in via a separate
162
+ script/tier. Never run them per edit or per phase; run only the affected
163
+ subset.
164
+ - Respect a per-phase validation time budget: if a suite takes minutes,
165
+ justify running it and prefer the targeted subset. Reserve the full heavy
166
+ suites for release gates.
167
+ - Fixing a bug: add one targeted regression test, not a broad new suite.
168
+ - This economy rule does NOT weaken stronger gates: auth, security,
169
+ data-integrity, and required coverage thresholds stay mandatory.
170
+
147
171
  <!-- Source: src/instructions/yagni.instructions.md -->
148
172
  ## YAGNI Anti-overengineering
149
173
 
package/AGENTS.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <!-- pantheon:generated:begin — Pantheon-managed region; regenerated on install/upgrade, never edit inside -->
2
2
  <!-- Generated by scripts/build-agents-md.mjs — do not edit directly. -->
3
3
  <!-- Source of truth: the static project sections in scripts/build-agents-md.mjs. -->
4
- <!-- pantheon:agents-md v2 artifact=project generated-at=2026-10-14T15:44:12-03:00 sha=a305942 -->
4
+ <!-- pantheon:agents-md v2 artifact=project generated-at=2026-10-16T15:32:02-03:00 sha=2cda37c -->
5
5
 
6
6
  # Pantheon — Repository Setup
7
7
 
package/CHANGELOG.md CHANGED
@@ -18,6 +18,52 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
18
18
 
19
19
  ## ✅ Closed Issues
20
20
 
21
+ ## [v1.6.0-beta.12] - 2026-10-17
22
+
23
+ ## 🆕 What's New
24
+
25
+ - **Raise the Node.js support floor to 26.4.0** for the package, CLI, installer,
26
+ and Node-based tooling. This release drops Node 22, Node 24, and Node
27
+ 26.0–26.3; the npm `beta` dist-tag remains the intended publication channel.
28
+ - **Clarify runtime boundaries:** this package requirement is not a universal
29
+ OpenCode host-runtime claim. Official OpenCode V2.0.31 has a Bun runtime path
30
+ and a separate Node build pinned to 26.4.0; no Bun minimum is asserted.
31
+ - **Keep `node:sqlite` as a separate capability threshold:** Node >=22.5 may
32
+ provide the optional `pantheon_cost` backend, but does not imply package
33
+ support on that Node version.
34
+ - **Recommend a persistent external Git worktree location** in interactive TTY
35
+ setup summaries and the shipped worktrees skill. This is guidance only;
36
+ Pantheon does not create worktrees or directories automatically.
37
+
38
+ ## 🐞 Fixed
39
+
40
+ - **Synchronize Beta 12 version metadata and Node engine policy** across package
41
+ manifests, locks, citation/release metadata, CLI guards, doctor, and CI.
42
+
43
+ ## [v1.6.0-beta.11] - 2026-10-15
44
+
45
+ ## 🆕 What's New
46
+
47
+ - **record final Beta 11 scope decisions**
48
+ - **record Setup delivery and final-gate lessons in roadmap**
49
+ - **forbid hook bypass in Iris commit contract**
50
+ - **add installer failure reporting and secret-safe output audit**
51
+ - **detect drift between installer plan and apply**
52
+ - **require explicit --yes authorization before installer apply**
53
+ - **exact installer backup set with restore**
54
+ - **add Beta 11 test-economy requirement to shared instructions**
55
+ - **preview per-file change set in installer dry-run**
56
+ - **reconcile Beta 11 roadmap status with completed phases**
57
+ - **describe pantheon_cost window and aggregation limits**
58
+ - **align lean-flow guidance and cost wording**
59
+ - **add project-scoped V2 model overrides**
60
+ - **align host tool and background contracts**
61
+
62
+ ## 🐞 Fixed
63
+
64
+ - **restore explicit "both" in zeus memory operations instruction**
65
+ - **correct council protocol and persistence bounds**
66
+
21
67
  ## [v1.6.0-beta.10] - 2026-10-12
22
68
 
23
69
  ## 🆕 What's New
package/README.md CHANGED
@@ -31,16 +31,17 @@ way to plan work, make progress, check results, and keep useful project context.
31
31
  ## Start in 2 minutes
32
32
 
33
33
  Requirements: [OpenCode 1.18.4+](https://opencode.ai/docs/) and Node.js
34
- 22.22.2+ (or 24.15.0+ / 26+). For which OpenCode generation each Pantheon
35
- release line supports, see
34
+ 26.4.0+ for the Pantheon CLI, installer, and Node-based tooling. For which
35
+ OpenCode generation each Pantheon release line supports, see
36
36
  [Compatibility and support policy](#compatibility-and-support-policy).
37
37
 
38
- Pantheon declares `engines.node` as `^22.22.2 || ^24.15.0 || >=26.0.0`. The
39
- floor reflects what the dependency tree actually needs — the transitive
40
- `ini@7` rejects earlier 22.x/24.x builds with `EBADENGINE` — and odd-numbered
41
- Node releases (23, 25) are out of range. The `pantheon_cost` tool also needs
42
- `node:sqlite`, which requires Node >= 22.5; `doctor` warns when the running
43
- runtime cannot load it.
38
+ Pantheon declares `engines.node` as `>=26.4.0`; Node 22, Node 24, and Node
39
+ 26.0–26.3 are not supported by this release. This package floor does not imply
40
+ that every OpenCode host runs on Node: official OpenCode V2.0.31 has a Bun
41
+ runtime path and a separate Node build pinned to Node 26.4.0. No Bun minimum is
42
+ asserted here. The optional `pantheon_cost` SQLite backend has its own capability
43
+ threshold, `node:sqlite` on Node >= 22.5; that feature threshold does not lower
44
+ Pantheon's package or CLI support floor.
44
45
 
45
46
  From the project where you want to use Pantheon:
46
47
 
@@ -52,6 +53,64 @@ opencode
52
53
  The installer guides you through the available setup. For optional MCP servers,
53
54
  project-local installation, or non-interactive setup, see the
54
55
  [installation guide](docs/INSTALLATION.md).
56
+
57
+ In an interactive TTY setup summary, Pantheon recommends the persistent
58
+ external worktree location
59
+ `<project-parent>/.pantheon-worktrees/<exact-repository-directory-basename>/<task>`
60
+ (for example, `/home/user/.pantheon-worktrees/My Project/feature-name`). Use the
61
+ project directory's exact basename, including spaces; do not normalize it into
62
+ a slug. This is guidance for future agent work only; Pantheon does not create
63
+ Git worktrees or directories automatically. See the shipped
64
+ [worktrees skill](src/skills/worktrees/SKILL.md) for the agent workflow.
65
+
66
+ A non-interactive apply requires `--yes` (alias `-y`): without a TTY and
67
+ without `--yes`, `init` prints the change plan and applies nothing. Exit codes:
68
+ `0` success or plan/no-apply, `1` failure, `2` apply requested without
69
+ authorization, `3` drift (a planned target changed before apply), `130` canceled.
70
+
71
+ Preview with `init --dry-run`. To review and apply across separate invocations,
72
+ save a versioned plan and then explicitly authorize it:
73
+
74
+ ```bash
75
+ npx pantheon-opencode init --dry-run --project --no-mcp --components agents \
76
+ --save-plan .pantheon-install-plan.json
77
+ npx pantheon-opencode init --apply-plan .pantheon-install-plan.json --yes
78
+ npx pantheon-opencode init --dry-run --json # machine-readable preview on stdout
79
+ ```
80
+
81
+ Saved plans use mode `0600`, contain operation metadata and fingerprints rather
82
+ than generated file contents, and are bound to their original target and plan
83
+ file path. Applying rechecks the package source and destination snapshots; drift
84
+ aborts before writes. Saved plans do not support `--force`/`--clean`, and
85
+ machine-readable previews reject those options because clean performs bulk removal.
86
+ A dry-run skips probing the OpenCode host to avoid host-side writes; when no version hint
87
+ is configured, it assumes V1 and reports that advisory. Pass
88
+ `--opencode-version v1|v2` to preview a specific generation.
89
+ Saving an artifact is supported on Linux, Darwin, FreeBSD, OpenBSD, and NetBSD
90
+ when the required descriptor paths and filesystem flags are usable. Cross-platform
91
+ behavior has not been fully tested; unsupported platforms fail closed rather
92
+ than risk writing through a replaced parent directory.
93
+ Previews describe managed-file operations, not every bulk or external effect
94
+ (such as Python environment setup). The `postinstall`/`sync-tui` step also only
95
+ refreshes TUI artifacts and is outside this approval flow.
96
+
97
+ Before the first managed-file write, `init` saves an exact backup set under
98
+ `.pantheon/backups/<timestamp>/` (directory `0700`, files `0600`, the 5 most
99
+ recent kept); it is a byte-for-byte copy and therefore also contains any API
100
+ keys or tokens already present in your files — it is never printed. Recover with
101
+ `pantheon-opencode restore [--project] [--yes]`. There is no automatic rollback;
102
+ an interrupted apply is recoverable from the backup in the same way.
103
+ To remove Pantheon-managed files, review with
104
+ `pantheon-opencode uninstall --project --dry-run` (or `--global`) before applying
105
+ with `--force`. The opt-in `--purge-data` removes only a verified install-state
106
+ file and never removes recovery backups; see the installation guide for details.
107
+ New installs also record a versioned per-file ownership inventory. Review stale,
108
+ unchanged installer-owned files with `pantheon-opencode reconcile --project --dry-run`
109
+ (or `--global --dry-run`); preview is read-only, and apply requires `--apply --yes` or a
110
+ saved reviewed plan. Legacy files without inventory, modified files, and
111
+ symlinks are preserved for manual review. An explicit `--target PATH` uses project
112
+ layout; combine it with `--global` to select the flat global layout. See the
113
+ [installation guide](docs/INSTALLATION.md).
55
114
  The bundled Python MCP servers use the pinned MCP SDK 2.2.0 and standalone
56
115
  FastMCP 4.0.10 runtime; see the [MCP guide](docs/MCP.md).
57
116
  The installer also turns each agent's `mcp_tools` allowlist into native
@@ -182,12 +241,17 @@ session/compaction hooks, so the 1.6 line is not full V2 feature parity.
182
241
  | V2 native subagent admission | OpenCode v2.0.29 | `tests/canary/run-v2-permission-proof.sh`; identity, root/child checks and permission-before-child ordering are recorded in [`bench/results/f4a-v229-admission-identity-2026-10-14.md`](bench/results/f4a-v229-admission-identity-2026-10-14.md) |
183
242
  | Exact 1.X host version the 1.6 line is exercised against end-to-end | **Unverified.** No V1 host leg exists: the sandbox runner is V2-only and `--run v1` is rejected | — |
184
243
 
185
- ## Delegation (native `task()`)
186
-
187
- Pantheon delegates exclusively through OpenCode's native `task()` child-session
188
- engine. The former custom `pantheon_delegate` tool and the V1 delegation engine
189
- (`delegation.ts`, `delegate-manager.ts` and supporting modules) were removed;
190
- there is no Pantheon-specific delegation tool surface to configure. See
244
+ ## Delegation (root `subagent`; host/API `task()`)
245
+
246
+ The host's child-session engine is referred to as native `task()` in API and
247
+ implementation documentation. In the user-reported Beta 10 Zeus-root runtime,
248
+ the callable dispatch tool was `subagent`; `task()` was not exposed as a root
249
+ tool. Treat the API name and examples below as host/API terminology, not a
250
+ guaranteed root-tool name or signature. The active runtime determines the
251
+ `subagent` schema, background options, and completion observability. The former
252
+ custom `pantheon_delegate` tool and the V1 delegation engine (`delegation.ts`,
253
+ `delegate-manager.ts` and supporting modules) were removed; there is no
254
+ Pantheon-specific delegation tool surface to configure. See
191
255
  [ADR-0011](.pantheon/memory-bank/adr/0011-delegation-engine-contract.md) for the
192
256
  historical engine contract.
193
257
 
@@ -210,8 +274,12 @@ global database. Both OpenCode services were running, so the 404 in the global
210
274
  log may come from the other instance; this remains an end-to-end verification
211
275
  item.
212
276
 
213
- Delegated tasks get at most one retry after an initial timeout or failure. If
214
- that retry fails, the configured fallback or escalation chain applies.
277
+ Delegated work gets at most one retry after an initial transient failure. If no
278
+ completion/status tool is exposed, prefer synchronous `subagent` dispatch or
279
+ wait for a host-provided completion notification; do not assume polling,
280
+ cancellation, job tracking, or board-based recovery. If the runtime does not
281
+ make completion observable, report that limitation. The configured fallback or
282
+ escalation chain still applies.
215
283
 
216
284
  ## Cost tool backend
217
285
 
@@ -228,7 +296,9 @@ available.
228
296
 
229
297
  | Variable | Default | Purpose |
230
298
  |----------|---------|---------|
231
- | `PANTHEON_NODE` | `node` from `PATH` | Path to a Node.js >= 22.5 binary used by the CLI fallback; an explicit path must exist and be executable, otherwise the tool fails fast instead of ignoring the override |
299
+ | `PANTHEON_NODE` | `node` from `PATH` | Path to a Node.js >= 22.5 binary used only for the `node:sqlite` capability in the CLI fallback; this is not the Pantheon package support floor. An explicit path must exist and be executable, otherwise the tool fails fast instead of ignoring the override |
300
+
301
+ Tool interpretation matters: `pantheon_model status` reports configuration, not the model serving a completion. V2 manual model overrides are project-only; global override files are neither read nor applied, and global mutation is unsupported until a future surface can obtain separate explicit human authorization. V2 ignores static presets and applies only explicit per-agent project model/variant overrides, leaving the host default unchanged otherwise; V1 preset behavior remains legacy pending compatibility decisions. `pantheon_cost` is a rolling token aggregate, not a session-level or monetary cost report. See the [OpenCode plugin tool notes](docs/mcp-tools.md#opencode-plugin-tools) for details and measurement limits.
232
302
 
233
303
 
234
304
  ## Code-mode execution (explicit opt-in)
@@ -515,13 +585,10 @@ Key order does not matter.
515
585
  One command keeps an existing installation current:
516
586
 
517
587
  ```bash
518
- # Without a global install, ALWAYS pin the dist-tag — plain `npx
519
- # pantheon-opencode` resolves `latest`, which is the stable release (1.4.3):
520
- npx pantheon-opencode@beta update # npm beta channel + config refresh
521
- npx pantheon-opencode@beta update --stable # stable channel instead
522
-
523
- # With a global install, use the global bin (defaults to the beta channel):
524
- pantheon-opencode update
588
+ # Install globally first; update refuses local, workspace, and npx copies.
589
+ npm install -g pantheon-opencode@beta
590
+ pantheon-opencode update # npm beta channel + config refresh
591
+ pantheon-opencode update --stable # stable channel instead
525
592
  ```
526
593
 
527
594
  `update` compares your installed version with the npm dist-tag, runs
@@ -550,23 +617,35 @@ Two freshness guarantees back it up:
550
617
  current package.
551
618
 
552
619
  `init` also gained `--components agents,skills,...` (narrow install),
553
- `--clean` (alias of `--force`), `--opencode-version auto`, atomic config
554
- writes with an `opencode.json.bak` backup, preflight checks for python3/npm
555
- before any file is written, and a non-fatal Python runtime: if the venv fails,
556
- the install completes but MCP entries are omitted (with a warning) instead of
557
- pointing at a broken interpreter. Installer messages auto-detect pt-BR via
558
- `LANG`/`LC_ALL`.
620
+ `--clean` (alias of `--force`), `--opencode-version auto`, preflight checks for
621
+ python3/npm before any file is written, and a non-fatal Python runtime: if the
622
+ venv fails, the install completes but MCP entries are omitted (with a warning)
623
+ instead of pointing at a broken interpreter. Before the first modifying write,
624
+ `init` preserves, byte-for-byte, every regular file it can modify or remove
625
+ inside the config dir (including files a `--clean` run deletes) under
626
+ `.pantheon/backups/<timestamp>/` (directory `0700`, files `0600`, kept 5 deep);
627
+ bulk directories
628
+ (`.venv`, the plugin's `node_modules`) and out-of-target global files
629
+ (`tui.json` copies elsewhere, the global `opencode-vision.json`) are listed in
630
+ the manifest as `notRevertible` rather than silently omitted. The exact-set
631
+ warning is printed once and never echoes file contents. Restore with
632
+ `pantheon-opencode restore [--project] [--yes]` (the old `opencode.json.bak`
633
+ sidecar is gone; the global vision config keeps its own `.bak`). Installer
634
+ messages auto-detect pt-BR via `LANG`/`LC_ALL`.
559
635
 
560
636
  ## Migrating to 1.5.x (from 1.4.x)
561
637
 
562
638
  1.5.0 removed the custom `pantheon_delegate` tool (and the V1 delegation
563
- engine) in favor of OpenCode's native `task()`; see
564
- [Delegation (native `task()`)](#delegation-native-task). Two things change on
639
+ engine) in favor of the host child-session engine; see
640
+ [Delegation (`subagent` / host API `task()`)](#delegation-root-subagent-hostapi-task). In the
641
+ reported Beta 10 runtime Zeus dispatches through `subagent`; `task()` remains
642
+ host/API terminology, not a guaranteed root tool. Two things change on
565
643
  an existing install:
566
644
 
567
645
  1. **The tool disappears from the plugin surface.** `pantheon_delegate` is no
568
646
  longer registered by `src/plugin.ts` or `src/plugin-v2.ts`. Agents now
569
- delegate through `task()` only — no configuration is needed.
647
+ delegate through the dispatch tool actually exposed by the active runtime —
648
+ no Pantheon-specific delegation tool configuration is needed.
570
649
  2. **A lockfile-pinned copy can keep the old tool alive.** `npm install` is
571
650
  lockfile-authoritative: a `package-lock.json` pinned to `1.4.1` (which
572
651
  satisfies `^1.4.1`) is never re-resolved, so a project's
@@ -811,7 +890,7 @@ or whole-file binary classification. The host-backed evidence is in
811
890
 
812
891
  `npm run coverage:plugin-v2` runs the `tests/pantheon/*.test.ts` suite with
813
892
  Node's source-mapped native coverage and enforces an 80% line-coverage minimum
814
- for `src/plugin-v2.ts` only. It requires Node `v24.15.0`; branch and function
893
+ for `src/plugin-v2.ts` only. It requires Node `>=26.4.0`; branch and function
815
894
  coverage are reported but are not gates. This is not a repository-wide coverage
816
895
  claim.
817
896
 
@@ -839,13 +918,18 @@ with the other.
839
918
 
840
919
  ### Task-result guard
841
920
 
842
- A `task-result-guard` intercepts calls to the native `task()` tool where the
843
- child session returns an empty or missing result. Instead of surfacing a silent
921
+ A `task-result-guard` intercepts host/API child-session dispatch calls where the
922
+ child session returns an empty or missing result. In the reported Beta 10 Zeus
923
+ root, dispatch is exposed as `subagent`; host/API `task()` terminology does not
924
+ guarantee a root tool by that name. Instead of surfacing a silent
844
925
  `completed` with no payload (which confuses the orchestrator), the guard now
845
926
  raises an explicit error. This catches the common free-tier failure mode where a
846
927
  child session exceeds the uncached-prefill token budget (`BackendAdmissionRejected`)
847
- and returns nothing. Prefer `background=true` dispatches with an explicit
848
- `task_status(wait=true)` fan-in so large payloads are collected deterministically.
928
+ and returns nothing. Background dispatch and status/fan-in facilities are
929
+ runtime-dependent. The reported Beta 10 Zeus root did not expose `task_status`;
930
+ use synchronous `subagent` dispatch or wait for a host-provided completion
931
+ notification when no status tool is visible. Do not claim deterministic fan-in
932
+ or job recovery without an exposed, verified mechanism.
849
933
 
850
934
 
851
935
  ## Configuration (environment variables)
package/README.pt-BR.md CHANGED
@@ -31,7 +31,9 @@ de planejar o trabalho, avançar, conferir resultados e preservar o contexto
31
31
 
32
32
  ## Comece em 2 minutos
33
33
 
34
- Requisitos: [OpenCode 1.18.4+](https://opencode.ai/docs/) e Node.js `^22.22.2 || ^24.15.0 || >=26.0.0`.
34
+ Requisitos: [OpenCode 1.18.4+](https://opencode.ai/docs/) e Node.js `>=26.4.0` para a CLI, o instalador e as ferramentas Node do Pantheon. Node 22, Node 24 e Node 26.0–26.3 não são compatíveis com esta versão.
35
+
36
+ Esse requisito do pacote não significa que todo host OpenCode execute Node: o OpenCode V2.0.31 oficial oferece um caminho de runtime Bun e um build Node separado fixado em Node 26.4.0. Não há aqui um requisito mínimo para Bun. O backend SQLite opcional de `pantheon_cost` tem um limite de capacidade distinto (`node:sqlite` requer Node >=22.5), que não reduz o requisito de suporte do pacote.
35
37
 
36
38
  No projeto em que você quer usar o Pantheon:
37
39
 
@@ -75,8 +77,7 @@ verificações repetíveis e passagens claras entre etapas do trabalho.
75
77
 
76
78
  ## Status
77
79
 
78
- Versão operacional neste checkout: **v1.6.0-beta.1** (primeira beta compatível
79
- com OpenCode 2; esta página não afirma publicação). O Pantheon foi feito para OpenCode e depende da
80
+ Versão operacional neste checkout: **v1.6.0-beta.12** (esta página não afirma publicação). O Pantheon foi feito para OpenCode e depende da
80
81
  disponibilidade e da configuração do OpenCode e dos serviços opcionais que você
81
82
  escolher. Veja as [releases](https://github.com/ils15/pantheon-opencode/releases)
82
83
  e o [changelog](CHANGELOG.md) para acompanhar as mudanças publicadas.
@@ -536,7 +537,7 @@ anteriores foram preservadas separadamente em
536
537
 
537
538
  `npm run coverage:plugin-v2` executa a suíte `tests/pantheon/*.test.ts` com a
538
539
  cobertura nativa do Node habilitada para source maps e exige pelo menos 80% de
539
- cobertura de linhas somente para `src/plugin-v2.ts`. Requer Node `v24.15.0`;
540
+ cobertura de linhas somente para `src/plugin-v2.ts`. Requer Node `>=26.4.0`;
540
541
  coberturas de branches e funções são informativas, não gates. Isso não é uma
541
542
  alegação de cobertura do repositório inteiro.
542
543