pantheon-opencode 1.5.0-beta.3 → 1.5.0-beta.5

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 (44) hide show
  1. package/.pantheon/code-mode/manifest.json +21 -0
  2. package/CHANGELOG.md +871 -0
  3. package/README.md +101 -1
  4. package/README.pt-BR.md +55 -1
  5. package/bin/pantheon-init.mjs +178 -21
  6. package/package.json +14 -10
  7. package/plugin.json +1 -1
  8. package/pyproject.toml +1 -1
  9. package/scripts/code_mode_server.py +339 -28
  10. package/scripts/doctor.mjs +178 -9
  11. package/scripts/install/cli-ui.mjs +17 -11
  12. package/scripts/install/config-migration.mjs +4 -6
  13. package/scripts/install/opencode.mjs +116 -35
  14. package/scripts/install/shared.mjs +43 -2
  15. package/scripts/install/strings.mjs +129 -0
  16. package/scripts/install-mcp.mjs +1 -0
  17. package/scripts/probe-pantheon-cost.mjs +10 -1
  18. package/scripts/release-beta-version.mjs +2 -7
  19. package/scripts/sync-artifacts.mjs +169 -0
  20. package/scripts/sync-tui.mjs +124 -34
  21. package/src/agents/zeus.md +2 -2
  22. package/src/mcp/code_mode_server.py +339 -28
  23. package/src/pantheon/auto-wake.ts +1 -5
  24. package/src/pantheon/background-job-board.ts +14 -0
  25. package/src/pantheon/cost-command.ts +62 -42
  26. package/src/pantheon/delegate-manager.ts +109 -12
  27. package/src/pantheon/native-probe.ts +234 -0
  28. package/src/pantheon/native-task-status.ts +139 -0
  29. package/src/pantheon/shared-board.ts +37 -0
  30. package/src/pantheon/task-result-guard.ts +107 -0
  31. package/src/pantheon/token-opt.ts +18 -110
  32. package/src/pantheon/tool-ceiling.ts +159 -0
  33. package/src/pantheon/v2-events.ts +10 -1
  34. package/src/plugin.ts +25 -9
  35. package/src/plugins/pantheon-hooks.ts +51 -0
  36. package/src/plugins/tui/dist/server.d.ts +1 -1
  37. package/src/plugins/tui/dist/server.d.ts.map +1 -1
  38. package/src/plugins/tui/dist/server.js +1 -1
  39. package/src/plugins/tui/dist/server.js.map +1 -1
  40. package/src/plugins/tui/dist/tui.d.ts +1 -1
  41. package/src/plugins/tui/dist/tui.js +1 -1
  42. package/src/plugins/tui/dist/tui.js.map +1 -1
  43. package/src/plugins/tui/package-lock.json +2 -2
  44. package/src/plugins/tui/package.json +1 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,871 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
+
7
+
8
+ ## [Unreleased]
9
+
10
+ <!-- Add new changes here. Running `node scripts/versioning.mjs apply` will
11
+ move this section to a versioned entry and reset the template below. -->
12
+
13
+ ## 🆕 What's New
14
+
15
+ ## 🐞 Fixed
16
+
17
+ ## ⚠️ Known Issues
18
+
19
+ ## ✅ Closed Issues
20
+
21
+ ## [v1.5.0-beta.5] - 2026-09-12
22
+
23
+ &lt;!-- Add new changes here. Running `node scripts/versioning.mjs apply` will
24
+ move this section to a versioned entry and reset the template below. --&gt;
25
+
26
+ ## 🆕 What's New
27
+
28
+ - **Native background tasks in the delegation panel:** tasks dispatched via
29
+ the native `task(background=true)` tool are now mirrored onto the shared
30
+ BackgroundJobBoard, so the TUI delegation panel tracks them while running
31
+ and the existing finalize path writes their terminal report.
32
+ - **`pantheon-opencode update`:** one command updates the global package
33
+ (beta or stable channel) and re-runs init to refresh config, venv and MCP
34
+ entries. The installer stamps the installed version and `doctor` warns when
35
+ the package is newer than the last sync.
36
+ - **Always-fresh artifacts:** the package postinstall now refreshes all
37
+ copy-only artifacts (agents, skills, AGENTS.md, commands, MCP scripts,
38
+ code-mode payload) into existing installations on every `npm install`; a CI
39
+ gate rebuilds the TUI bundle and fails if the committed `dist/` is stale.
40
+ - **More resilient installer:** preflight checks for python3/npm before any
41
+ file is written, atomic `opencode.json` writes with a `.bak` backup,
42
+ non-fatal Python runtime setup (a venv failure now omits MCP entries with a
43
+ warning instead of pointing at a broken interpreter), `--components` /
44
+ `--clean` / `--opencode-version auto` flags, unknown-flag warnings and
45
+ pt-BR/EN message auto-detection via `LANG`.
46
+ - **Roadmap zerado:** o plano ativo não tem mais itens pendentes. Sprints
47
+ nunca implementados dos planos v1.0/v1.0+ foram removidos; o contrato atual
48
+ passou a documentar o code-mode (manifest SHA-256, resolução project-first).
49
+
50
+ ## 🐞 Fixed
51
+
52
+ - **Code-mode project resolution (#112):** the MCP now resolves project code-mode
53
+ scripts before global scripts, honors `PANTHEON_PROJECT`, and fails closed on
54
+ project manifest errors; the installer sets `cwd: "."`.
55
+ - **Code-mode manifest doctor check (#113):** `doctor` validates manifest shape,
56
+ script membership, and SHA-256 hashes without regenerating the manifest.
57
+ ## [v1.5.0-beta.4] - 2026-09-11
58
+
59
+ &lt;!-- Add new changes here. Running `node scripts/versioning.mjs apply` will
60
+ move this section to a versioned entry and reset the template below. --&gt;
61
+
62
+ ## 🆕 What's New
63
+
64
+ - **Native delegation contract (B3-05):** adds the nine-code `NativeTaskStatus` contract, a session-lazy cached capability probe, atomic board registration for native children, strict `PANTHEON_DELEGATE_MODE=native` without fallback/failover/retry, and status in delegation receipts.
65
+
66
+ - **Cost backend (B3-06):** `pantheon_cost` now uses a single read-only `node:sqlite` backend; the CLI fallback was removed. The common contract reports `UNSUPPORTED` when `node:sqlite` is unavailable and `CORRUPT_DATA`/`UNAVAILABLE` with diagnostic details on stderr; includes a sandbox probe.
67
+
68
+ - **Tool ceiling (B3-07):** C9/tool ceiling is fed only by real host data from `message.updated` plus `config.providers()`; lexical fallback is removed. Hosts without the capability report `UNSUPPORTED`, malformed data reports `CORRUPT_DATA`, and malformed events are guarded defensively.
69
+
70
+ - **Code-mode explicit installation (B3-08):** `pantheon-code-mode` no longer executes scripts implicitly. A script runs only when listed in `.pantheon/code-mode/manifest.json` with a matching SHA-256; the installer seeds the manifest for bundled scripts and a new `approve_code_script` tool opts in or refreshes a script. Missing manifest reports `INVALID_STATE`, unlisted scripts `CONFLICT`, and hash mismatches `CORRUPT_DATA`.
71
+
72
+ ## 🐞 Fixed
73
+
74
+ - **ECIGLOBAL fix (sync-tui):** `npm install -g` no longer fails with ECIGLOBAL — `scripts/sync-tui.mjs` now sanitizes `npm_config_*` global-context vars (case-insensitive) from the nested `npm ci` environment.
75
+ - **npm tarball inclusion:** CHANGELOG.md is now included in the npm tarball
76
+ (added to the `files` allowlist in `package.json`).
77
+
78
+ - **Task Result Guard**: native `task()` empty results are now detected and
79
+ converted to explicit errors in the `tool.execute.after` hook. Previously,
80
+ when a provider rejected a child session (e.g. `BackendAdmissionRejected`
81
+ from free-tier admission control), the error was silently swallowed — the
82
+ child completed with empty output and the parent LLM proceeded as if the
83
+ task succeeded. The guard replaces empty `task()` output with an error
84
+ message so the parent sees a failure. (`task-result-guard.ts`)
85
+ ## [v1.5.0-beta.3] - 2026-09-10
86
+
87
+ &lt;!-- Add new changes here. Running `node scripts/versioning.mjs apply` will
88
+ move this section to a versioned entry and reset the template below. --&gt;
89
+
90
+ ### Changed
91
+
92
+ - **CI fail-closed:** `ci.yml` no longer falls back from `npm ci` to
93
+ `npm install`, and pytest/audit failures are no longer swallowed. The
94
+ workflow now runs lint, typecheck, `test:ts`, Python tests, Node tests and
95
+ `npm audit`/`pip-audit` as blocking gates.
96
+ - **Release authorization is dispatch-only:** `release.yml` no longer triggers
97
+ on PR labels or any `pull_request` event. Publication is
98
+ authorized only by an explicit `workflow_dispatch`; the `release_channel`
99
+ input (`stable` default, `beta`) selects the channel. Beta versions are
100
+ committed sequential `X.Y.Z-beta.N` (bumped via
101
+ `node scripts/versioning.mjs apply --beta`); no runtime version computation.
102
+ - **Sandbox gate is PASS-only:** `test-opencode-v1-v2-sandbox.sh` no longer
103
+ classifies failures as `AMBIENTAL`/`NOT_TESTED`, has no prompt retry, and
104
+ treats missing binaries/projects/probes, timeouts and auth/network/provider
105
+ failures as blocking. Exit 0 now requires an explicit PASS on every check.
106
+ - **Validation policy is PASS-only:** `doctor` exit != 0 (including legacy
107
+ exit 1 warnings), unknown or non-numeric statuses block validation;
108
+ WARN/SKIP/AMBIENTAL/NOT_TESTED never produce exit 0.
109
+ - **No npm install fallback in TUI/install paths:** `sync-tui.mjs` and the
110
+ plugin installer propagate `npm ci` failures instead of falling back to
111
+ `npm install`; `PANTHEON_ALLOW_NPM_INSTALL_FALLBACK` is not supported.
112
+ - **Lockfile-backed installs:** the root (`package.json` + `package-lock.json`)
113
+ and TUI (`src/plugins/tui/package.json` + `src/plugins/tui/package-lock.json`)
114
+ are validated independently with `npm ci --ignore-scripts`. A failure blocks
115
+ the run; there is no `npm install` fallback.
116
+ - **Release artifact identity:** each release carries one `.tgz` tarball and
117
+ the SHA-256 of that same file from validation through publication. The
118
+ tarball and release metadata are bound to the full `TARGET_SHA`; repacking is
119
+ not an equivalent artifact.
120
+ - **Intentional MCP divergence:** `scripts/memory_mcp_server.py` keeps the
121
+ lightweight `memory_*` contract while `src/mcp/memory_mcp_server.py` also
122
+ exposes the optional codemap tools. The other shared MCP copies remain
123
+ identical; this pair is not to be overwritten by synchronization.
124
+ - **Sandbox scope:** a PASS from the prepared isolated sandbox is not proof of
125
+ support for every real host or untested host configuration.
126
+
127
+ ### Breaking Changes
128
+
129
+ - Release automation requires a manual `workflow_dispatch`; labeling a PR no
130
+ longer publishes anything.
131
+ - The sandbox validator exits non-zero when environmental checks cannot run
132
+ (missing binaries, provider auth, timeouts) instead of reporting them as
133
+ non-blocking.
134
+ - `PANTHEON_ALLOW_NPM_INSTALL_FALLBACK` has no effect; `npm ci` failures now
135
+ fail the install/sync step.
136
+ ## [1.5.0] - 2026-09-01 (candidate)
137
+
138
+ ### Changed
139
+
140
+ - **MCP flat map:** the installer and config migration keep MCP servers as the
141
+ named top-level map — the `mcp.servers` wrapper is rejected by OpenCode
142
+ 1.18.18 (`Missing key mcp.servers.enabled`). Legacy wrapped entries are
143
+ unwrapped and `disabled` flags are normalized back to `enabled`.
144
+ - **Deterministic plugin installs:** the TUI plugin ships its lockfile and
145
+ installs with `npm ci --omit=dev`; failures are propagated without an
146
+ `npm install` fallback.
147
+ - **Uninstall CLI:** new `node scripts/uninstall.mjs --project|--global` with
148
+ ownership checks, `--dry-run` and `--force`.
149
+ - **OpenCode-only:** platform guides consolidated into a single OpenCode
150
+ guide; Pantheon 1.5.0 targets OpenCode exclusively.
151
+ - **OpenCode V2 plugin:** the V2 contract registers 9 orchestration tools
152
+ (`pantheon_delegate`, `pantheon_delegation_read`, `pantheon_delegation_list`,
153
+ `hashline_edit`, `pantheon_goal_create`, `pantheon_goal_get`,
154
+ `pantheon_goal_update`, `pantheon_cost`, `pantheon_model`), 4 event
155
+ subscriptions, session hooks (`prompt`, `context`) and tool hooks
156
+ (`execute.before`, `execute.after`).
157
+
158
+ ## [v1.4.3] - 2026-09-03
159
+
160
+ ### Changed
161
+
162
+ - Synchronized the 1.4.3 release version across `package.json`,
163
+ `package-lock.json`, `plugin.json`, `pyproject.toml`, and the TUI package.
164
+
165
+ ## [v1.4.2] - 2026-08-27
166
+
167
+ ### Changed
168
+ - Synchronized release metadata across project manifests.
169
+ ## [1.4.1] - 2026-08-26 (candidate)
170
+
171
+ ### Changed
172
+
173
+ - **Delegation output:** removed the legacy delegate echo path. Terminal visibility now uses the board, list/read tools, file-only audit logs, and TUI toasts; chat transcript delivery remains disabled.
174
+ - **Model inheritance:** child sessions no longer receive a hardcoded `model` or `small_model`. Only an explicitly active routing profile (or an explicit delegate model) supplies an override; otherwise OpenCode inherits the parent model.
175
+ - **Compaction carry-forward:** context is written through `output.context` during `experimental.session.compacting`, before `session.compacted` runs, preserving the correct lifecycle order without chat injection.
176
+
177
+ ### Fixed
178
+
179
+ - **Empty child output:** a child marked completed without assistant or tool output now becomes an explicit error: `Child session produced no assistant or tool output`.
180
+ - **Terminal toast delivery:** toast delivery is resilient to missing or failing TUI clients, is gated by `PANTHEON_TOASTS`, and deduplicates repeated terminal events for the same delegation.
181
+ - **Chat noise:** removed the remaining transcript/reminder delivery paths for delegation completion and compaction state.
182
+
183
+ ### Tests
184
+
185
+ - Added regression coverage for delegate output validation, terminal-toast gating/deduplication, native model inheritance, and compaction context ordering.
186
+ - Updated the relevant Node/TypeScript tests and installation/model-routing checks; global-install behavior remains validated through the isolated sandbox when run.
187
+ - Release verification caveat: `npm test` reported 240 passing tests and 1 environmental failure (`fork: Resource temporarily unavailable`); rerun on a host with sufficient process resources before treating the candidate as fully verified.
188
+
189
+ ## [1.4.0] - 2026-08-25
190
+
191
+ ### Added
192
+
193
+ - **Codebase knowledge graph:** added the `pantheon-memory` codemap module with code entities, relations, file hashes, FTS5 search, and `code_index`, `code_query`, and `code_neighbors` tools for Python and TypeScript codebases.
194
+ - **Context-window optimization:** added `tool.execute.after` output sandboxing for `read`, `grep`, `glob`, and `webfetch`, with truncation markers and lower per-session output volume.
195
+
196
+ ### Fixed
197
+
198
+ - **Installed TUI version display:** version detection now checks the installed TUI package before the development-tree package, fixing null versions in global installs and the sandbox.
199
+ - **Bash command portability:** normalized `python` commands to `python3` where the host does not provide a `python` executable.
200
+
201
+ ### Tests
202
+
203
+ - The release entry records the implementation and coverage reported by the session; no additional release-level test result is asserted here.
204
+
205
+ ## [1.3.7] - 2026-08-24
206
+
207
+ ### Added
208
+
209
+ - **Stale-running detector:** the job board warns about entries running for more than 30 minutes without activity, and the Markdown parser rejects synthetic `running` states.
210
+ - **TUI auto-update:** postinstall synchronization and a runtime version check keep the installed TUI files current.
211
+
212
+ ### Fixed
213
+
214
+ - **Stale delegate display:** corrected stale-running entries in the TUI delegation view.
215
+ - **Orphan cleanup:** connected `finalizeIdleChildrenWithoutMd` to the periodic 30-second scan at plugin initialization.
216
+
217
+ ### Tests
218
+
219
+ - Closed issue #68 covering the TUI stale-state and auto-update fixes.
220
+
221
+ [v1.4.3]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.4.3
222
+ [1.4.0]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.4.0
223
+ [1.3.7]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.3.7
224
+ [1.3.6]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.3.6
225
+
226
+
227
+ ## [1.3.6] - 2026-08-22
228
+
229
+ ### Added
230
+
231
+ - **Recency decay in `memory_search` (src/mcp/memory_mcp_server.py)** — new `decay_days` param (default `None`, backward compatible) applies a freshness half-life `2^(-days_since_created/decay_days)` to RRF-fused scores, so older memories rank lower when enabled. `_rrf_fuse` accepts an optional `created_at_map`; tool description and docs updated (docs/MEMORY.md, docs/MCP.md, docs/mcp-tools.md).
232
+ - **Themis Comment Checker (src/agents/themis.md)** — Layer 1 review now flags generated code that is indistinguishable from human-written: excessive/obvious comments (`// increment i`, `# set x to 5`), commented-out dead code, and boilerplate headers.
233
+ - **Doc drift fixes** — MEMORY.md/MCP.md/mcp-tools.md now describe the real sqlite-vec + fastembed implementation (6 tools) instead of the stale ChromaDB 14-tool design; freshness decay documented as opt-in via `decay_days`.
234
+ - **scripts/ resynced with src/mcp/** — `mcp_resources_server.py` (routing project fallback), `code_mode_server.py` (comment drift), `memory_mcp_server.py`, `mcp_persistence_server.py`, `_pantheon_paths.py` regenerated from canonical source; tests now point at `src.mcp.*` so they exercise canonical code.
235
+ - **mcp-registry.yml synced** — real tool names (`memory_store/search/recall/forget/list/stats`, `kv_*`, `execute_code_script`, `vision_*`) + `pantheon-vision` server added.
236
+ - **Persistence MCP server test suite (tests/test_mcp_persistence_server.py)** — 32 tests covering kv_store/kv_get (incl. TTL expiry), kv_list, kv_search (FTS5), kv_delete, kv_delete_namespace, purge_expired (dry_run + deletelog), context_save/get/list/stats (latest pointer, session isolation) and namespace/scope isolation — the only previously untested MCP server now has full coverage.
237
+ - **CRITICAL TTL expiry fix (src/mcp/mcp_persistence_server.py)** — ISO `expires_at` timestamps (with `T` separator) compared lexicographically against SQLite's space-separated `datetime('now')` were ALWAYS greater on the same date, so TTL entries never expired (kv_get never returned None, purge_expired never purged, the 4h checkpoint TTL never fired). All 9 comparison sites now normalize via `datetime(expires_at)` — restoring the crash-recovery checkpoint path.
238
+ - **`_resolve_db_path` fix (src/mcp/mcp_persistence_server.py)** — with an explicit `--project-db`, deletelog writes and db_size stats pointed at the repo's real project.db instead of the actual DB path; the resolved path is now tracked at init.
239
+ - **Code-mode script metadata (src/mcp/code_mode_server.py)** — optional comment-style YAML frontmatter (`# ---` delimiters) on scripts: `description`, `timeout` (per-script override, seconds), `allowed_args` (arg allowlist). Exposed via `pantheon://code-mode/scripts/{name}` and the new `json_output=true` structured result (stdout/stderr/exit_code/duration_ms/timed_out/metadata). Malformed/missing frontmatter fails open. Documented in `.pantheon/code-mode/README.md`.
240
+ - **Per-script timeout override (src/mcp/code_mode_server.py)** — frontmatter `timeout` overrides the 30s default in the subprocess `wait_for`; kill-on-timeout preserved (tested: `timeout: 2` script killed at ~2s).
241
+ - **`_parse_iso_ts` UTC fix (src/mcp/memory_mcp_server.py)** — legacy naive timestamps from `DEFAULT (datetime('now'))` (`YYYY-MM-DD HH:MM:SS`, no TZ) are now assumed UTC instead of local timezone before `.timestamp()`, keeping freshness decay correct.
242
+ - **StepCapTracker permanent-per-process documented (src/pantheon/step-cap.ts)** — counters accumulate for the process lifetime and are intentionally not reset on success/session end; `reset()` remains a tested utility. Documented in routing.yml + README.
243
+ - **High-level R1 integration tests (tests/pantheon/zeus-delegate-with-retry.test.ts)** — `zeusDelegateWithRetry` with retryPolicy/cooldown: policy-driven retry-then-success (empty → 1 retry → recovered content), 0-retry escalate, and cooldown skip.
244
+ - **R4 per-agent step caps (src/pantheon/step-cap.ts + src/routing.yml)** — every routed agent gets a `max_steps` budget (explore 25, reviewer 25, oracle 15, hermes 40, zeus 60, …); at the cap the delegation is forced to summarize-and-stop via `buildStopInstruction`/`cappedSummary`; counters are permanent-per-process by design.
245
+ - **O5 permission.task globs (src/pantheon/permission-globs.ts)** — allow/deny glob rules controlling which subagents may be delegated; deny rules remove the target from Zeus's task tool entirely (`delegation-enforce`), with matching filtering in finalize and the agent-list description.
246
+ - **plugin-eval certification suite (.pantheon/code-mode/)** — `eval-static.py` (structural checks: frontmatter/secrets/file refs), `eval-llm-judge.py` (LLM quality layer), `eval-monte-carlo.py` (simulated-run reliability, exits 1 below 75%), `eval-run.py` (orchestrator emitting one report JSON; below-threshold layers still score), plus `eval_store` persistence and `pantheon://eval` resources exposing latest certification scores.
247
+
248
+ ### Fixed
249
+
250
+ - memory_search doc drift: freshness decay was documented but not implemented — now real via `decay_days`.
251
+ - scripts/ copies stale vs src/mcp/ canonical sources (missing routing project fallback, stale comments).
252
+ - .pantheon/mcp-registry.yml listed non-existent tools (memory_compress, memory_expand, list_agents) and missed pantheon-vision.
253
+
254
+
255
+ ### Tests
256
+
257
+ - The entry records the persistence, integration, and certification test coverage explicitly listed above; no aggregate release-level result was available in the source notes.
258
+
259
+
260
+ ## [1.3.6-beta] - 2026-08-21
261
+
262
+ ## 🆕 What's New
263
+
264
+ - **Recency decay in `memory_search` (src/mcp/memory_mcp_server.py)** — new `decay_days` param (default `None`, backward compatible) applies a freshness half-life `2^(-days_since_created/decay_days)` to RRF-fused scores, so older memories rank lower when enabled. `_rrf_fuse` accepts an optional `created_at_map`; tool description and docs updated (docs/MEMORY.md, docs/MCP.md, docs/mcp-tools.md).
265
+ - **Themis Comment Checker (src/agents/themis.md)** — Layer 1 review now flags generated code that is indistinguishable from human-written: excessive/obvious comments (`// increment i`, `# set x to 5`), commented-out dead code, and boilerplate headers.
266
+ - **Doc drift fixes** — MEMORY.md/MCP.md/mcp-tools.md now describe the real sqlite-vec + fastembed implementation (6 tools) instead of the stale ChromaDB 14-tool design; freshness decay documented as opt-in via `decay_days`.
267
+ - **scripts/ resynced with src/mcp/** — `mcp_resources_server.py` (routing project fallback), `code_mode_server.py` (comment drift), `memory_mcp_server.py`, `mcp_persistence_server.py`, `_pantheon_paths.py` regenerated from canonical source; tests now point at `src.mcp.*` so they exercise canonical code.
268
+ - **mcp-registry.yml synced** — real tool names (`memory_store/search/recall/forget/list/stats`, `kv_*`, `execute_code_script`, `vision_*`) + `pantheon-vision` server added.
269
+ - **Persistence MCP server test suite (tests/test_mcp_persistence_server.py)** — 32 tests covering kv_store/kv_get (incl. TTL expiry), kv_list, kv_search (FTS5), kv_delete, kv_delete_namespace, purge_expired (dry_run + deletelog), context_save/get/list/stats (latest pointer, session isolation) and namespace/scope isolation — the only previously untested MCP server now has full coverage.
270
+ - **CRITICAL TTL expiry fix (src/mcp/mcp_persistence_server.py)** — ISO `expires_at` timestamps (with `T` separator) compared lexicographically against SQLite's space-separated `datetime('now')` were ALWAYS greater on the same date, so TTL entries never expired (kv_get never returned None, purge_expired never purged, the 4h checkpoint TTL never fired). All 9 comparison sites now normalize via `datetime(expires_at)` — restoring the crash-recovery checkpoint path.
271
+ - **`_resolve_db_path` fix (src/mcp/mcp_persistence_server.py)** — with an explicit `--project-db`, deletelog writes and db_size stats pointed at the repo's real project.db instead of the actual DB path; the resolved path is now tracked at init.
272
+ - **Code-mode script metadata (src/mcp/code_mode_server.py)** — optional comment-style YAML frontmatter (`# ---` delimiters) on scripts: `description`, `timeout` (per-script override, seconds), `allowed_args` (arg allowlist). Exposed via `pantheon://code-mode/scripts/{name}` and the new `json_output=true` structured result (stdout/stderr/exit_code/duration_ms/timed_out/metadata). Malformed/missing frontmatter fails open. Documented in `.pantheon/code-mode/README.md`.
273
+ - **Per-script timeout override (src/mcp/code_mode_server.py)** — frontmatter `timeout` overrides the 30s default in the subprocess `wait_for`; kill-on-timeout preserved (tested: `timeout: 2` script killed at ~2s).
274
+ - **`_parse_iso_ts` UTC fix (src/mcp/memory_mcp_server.py)** — legacy naive timestamps from `DEFAULT (datetime('now'))` (`YYYY-MM-DD HH:MM:SS`, no TZ) are now assumed UTC instead of local timezone before `.timestamp()`, keeping freshness decay correct.
275
+ - **StepCapTracker permanent-per-process documented (src/pantheon/step-cap.ts)** — counters accumulate for the process lifetime and are intentionally not reset on success/session end; `reset()` remains a tested utility. Documented in routing.yml + README.
276
+ - **High-level R1 integration tests (tests/pantheon/zeus-delegate-with-retry.test.ts)** — `zeusDelegateWithRetry` with retryPolicy/cooldown: policy-driven retry-then-success (empty → 1 retry → recovered content), 0-retry escalate, and cooldown skip.
277
+ - **R4 per-agent step caps (src/pantheon/step-cap.ts + src/routing.yml)** — every routed agent gets a `max_steps` budget (explore 25, reviewer 25, oracle 15, hermes 40, zeus 60, …); at the cap the delegation is forced to summarize-and-stop via `buildStopInstruction`/`cappedSummary`; counters are permanent-per-process by design.
278
+ - **O5 permission.task globs (src/pantheon/permission-globs.ts)** — allow/deny glob rules controlling which subagents may be delegated; deny rules remove the target from Zeus's task tool entirely (`delegation-enforce`), with matching filtering in finalize and the agent-list description.
279
+ - **plugin-eval certification suite (.pantheon/code-mode/)** — `eval-static.py` (structural checks: frontmatter/secrets/file refs), `eval-llm-judge.py` (LLM quality layer), `eval-monte-carlo.py` (simulated-run reliability, exits 1 below 75%), `eval-run.py` (orchestrator emitting one report JSON; below-threshold layers still score), plus `eval_store` persistence and `pantheon://eval` resources exposing latest certification scores.
280
+
281
+ ## 🐞 Fixed
282
+
283
+ - memory_search doc drift: freshness decay was documented but not implemented — now real via `decay_days`.
284
+ - scripts/ copies stale vs src/mcp/ canonical sources (missing routing project fallback, stale comments).
285
+ - .pantheon/mcp-registry.yml listed non-existent tools (memory_compress, memory_expand, list_agents) and missed pantheon-vision.
286
+
287
+ ## [1.3.5] - 2026-08-21
288
+
289
+ ## 🆕 What's New
290
+
291
+ - **PT patterns para delegação (routing.yml)** — adiciona 5 padrões PT (`procure`/`busque`/`encontre`/`localize`/`pesquise`) ao `intent_gate` research → apollo, corrigindo detecção de intenção para prompts em português (PR #61).
292
+ - **Zeus read guard (delegation-enforce.ts + plugin.ts)** — `ZEUS_READ_DENY_PATTERNS` bloqueia `src`/`tests`/`scripts`/`glob`/`grep` por Zeus via `tool.execute.before` (primeiro guard da cadeia); `ALLOWED_PATHS` libera `.md` e `.pantheon/memories`; 10 casos de teste em `tests/pantheon/delegation-enforce.test.ts`; `apollo.md`/`gaia.md` com `visible:false` e `tools.task:false` para depth-1 (PR #61).
293
+
294
+ ## 🐞 Fixed
295
+
296
+ - **session-guard + retry helper (session-guard.ts + zeus-delegate-with-retry.ts)** — guard de `session_id` e helper `zeusDelegateWithRetry` com retry/backoff para delegações; `goal-loop.ts`/`todo-enforcer.ts`/`todo-preserve.ts`/`delegation.ts` ajustados (PR #61).
297
+ - **validate doctor filter (scripts/doctor.mjs)** — `isValidAgentFile` verifica frontmatter YAML (`name`/`description`/`mode`) para filtrar `README.md` e docs não-agente de `getCanonicalAgentNames`/`deriveInstalledAgentFiles`; evita contagem espúria no `doctor` (PR #61).
298
+ - **README move (src/agents → docs/agents)** — move `README.md` para fora de `src/agents` para evitar agente espúrio; `docs/agents/README.md` criado (PR #61).
299
+ - **TUI GC aliasless (src/plugins/tui)** — GC de delegações live sem alias para evitar estado `delegating` preso; `src/plugins/tui/src/index.tsx` + `dist/` atualizados (PR #61).
300
+ - **routing fallback opencode-go (src/pantheon/presets.mjs + routing.yml)** — fallback do preset default para `opencode-go` quando API key do provider ausente; `resolveChildModel` com fallback para `opencode/deepseek-v4-flash-free` (PR #61).
301
+ - **install README guard (scripts/install/*)** — `shared.mjs`/`opencode.mjs`/`agents-md.mjs` impedem cópia de `README.md` para diretório de agentes; `package.json` ajustado (PR #61).
302
+
303
+ ## [v1.3.4] - 2026-08-11
304
+
305
+ ## 🆕 What's New
306
+
307
+ - **Compaction summary V2** (preservation directive + mission/todo/delegation sections): `buildCompactionContext` is now async and accepts goal/todo sources — `PANTHEON_COMPACTION_DIRECTIVE` prefix section (emitted before any other section, skipped on totally-empty state), `<mission_context>` with active goals (id/objective/status), `<todo_context>` with pending (not completed/cancelled) todos; delegation blocks byte-for-byte unchanged; failing/disabled sources are skipped fail-open (logged to hooks.log)
308
+ - **Post-compaction todo preservation**: TodoPreserver captures the session's todo list on `experimental.session.compacting`, activates the snapshot on `session.compacted`, and rewrites the first post-compaction `todowrite` with the exact pre-compaction list — additive + fail-open (every step degrades to a logged warn, never throws in a hook)
309
+ - **Post-compaction state re-assertion**: re-asserts session state after compaction so the rebuilt context reflects the live board
310
+ - **Historical (superseded) agentModels wiring from routing.yml**: the old release wired `options.agentModels` from the first preset. Current behavior requires an explicitly active profile and omits child models otherwise.
311
+ - **Preemptive compaction threshold logic** (dormant/experimental): threshold-based preemptive compaction — not active by default
312
+ - **File-first logging**: `createPantheonLogger` — console echo opt-in via `PANTHEON_HOOKS_LOG=1`, everything routed to `.pantheon/logs/hooks.log` (silences TUI console pollution)
313
+ - **Historical (superseded by 1.5.0):** the 1.3.4 TUI delegation panel described every report-less child as native `task()` work with a `[task]` tag. Current behavior keeps child origin unclassified unless explicit provenance is available.
314
+ - **README docs**: 1.3.4 compaction + delegation features documented
315
+ - **Zero chat-notification policy**: removed the `chat.message` injection channel for delegation signals — completion visibility lives in the board `[unread]` marker, `pantheon_delegation_read`, TUI toasts and compaction carry-forward, never in the chat transcript
316
+
317
+ ## 🐞 Fixed
318
+
319
+ - **Delegate dispatch with missing provider API key** (P1): `resolveChildModel` never checked whether the resolved model's provider had a configured API key — a child dispatched to a keyless provider (e.g. gpt-5.6-luna/opencode-go) died instantly with `AI_LoadAPIKeyError`. Auto-resolved models (agentModels/preset) whose provider key is missing now fall back to `opencode/deepseek-v4-flash-free`; explicit caller models are respected (warned); when nothing is usable the tool returns a clear error TEXT and registers NO job on the board
320
+ - **delegations.log typing**: `task_id` was always `""` (now omitted when empty) and `duration_ms` was logged as a STRING (now parsed to a number, null when unset), breaking downstream aggregation
321
+ - **Idle-flush log duplication**: `flushIdleReminders` echoed the reminder body joined with `" | "` while chat.message delivery echoed the same body with `"\n"` — the identical line appeared twice; idle-flush is now an audit summary (count + aggregated line count), content logged exactly once at chat-reminder delivery
322
+ - **TUI console log pollution**: console output in the plugin/hooks rendered directly into the opencode TUI; now env-gated, log-file only by default
323
+
324
+ ### Tests
325
+
326
+ - No aggregate test result was recorded in the original 1.3.4 release notes; the factual test counts that were documented remain attached to their individual changes above.
327
+
328
+
329
+ ## [v1.3.3] - 2026-08-11
330
+
331
+ ## 🆕 What's New
332
+
333
+ - **Todo continuation enforcer**: auto-continues sessions with incomplete todos on `session.idle` (4 guards: board-running, in-flight, exponential cooldown, max-failures cap) + kill-switch `PANTHEON_TODO_ENFORCER=off`
334
+ - **Hashline hash-anchored edits**: `hashline_edit` tool with sha256-truncated line tags, additive read enhancer, validate-before-write with `>>>` mismatch hints + Did-you-mean suggestions; blocked in read-only sessions
335
+ - **Full-auto goal loop** (opt-in `full_auto.enabled: false`): `pantheon_goal_create/update/get` tools, atomic GoalStore, priority idle dispatcher (goal suppresses enforcer), max 25 continuations
336
+ - **Dispatch retry-on-empty**: classifies empty results (mode 1: 0 tokens; mode 2: reasoning without text) with cap-1 automatic retry
337
+ - **Cost tracking**: JSONL ledger + `pantheon_cost` command reading opencode.db (zero-dep, node:sqlite → scripts/cost.mjs fallback)
338
+ - **Themis phase reviews** route to deepseek-v4-flash (pro reserved for final release gate); Athena stays premium (council red-line)
339
+ - **Routing config**: `background_delegation`, `todo_enforcer`, `hashline`, `full_auto` sections
340
+
341
+ ## 🐞 Fixed
342
+
343
+ - **Delegation killer**: chat.message hook injected reminders with empty messageID on the subagent promptAsync path — opencode schema rejected it, killing every background delegation in ~20ms (found by live E2E smoke)
344
+ - **Delegation child model routing**: child sessions now inherit the routed model (explicit arg → routing.yml agent entry → active preset) instead of falling back to the key-gated default (E2E: AI_LoadAPIKeyError without an active preset)
345
+ - **Installer `resolveInstalledPlugin`** mapped only `src/plugins/*` — `src/plugin.ts` resolved to the dev path, breaking global installs on non-dev machines and leaking the dev path (release-blocking)
346
+ - **Todo enforcer invasiveness**: skips injection when native background children are active (`session.children`) and within 30s of user activity
347
+ - **Hashline**: atomic write (tmp+rename), path containment guard, documented seed separator
348
+
349
+ ## [v1.3.2] - 2026-08-09
350
+
351
+ ## 🆕 What's New
352
+
353
+ - **Sandbox validation**: added the `sandbox` doctor profile and regression coverage for npm tarball contents, installed hook resolution, doctor status handling, MCP runtime smoke checks, and related CLI/install contracts.
354
+ - **Package portability**: distributed configuration no longer retains checkout-specific machine paths; managed hooks are resolved from the installed package during install/sync.
355
+ - **Doctor contract**: exit statuses now distinguish success (`0`), advisory warnings (`1`), and blocking errors (`>=2`).
356
+
357
+ ## 🐞 Fixed
358
+
359
+ - **Global installation diagnostics**: clarified the distinction between advisory doctor warnings and blocking failures.
360
+
361
+ [v1.3.2]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.3.2
362
+
363
+ ## [v1.3.1] - 2026-08-08
364
+
365
+ ## 🆕 What's New
366
+
367
+ - **Release validation coverage**: hook-runner spawn/timeout/SIGKILL handling with process-group cleanup; scanner fixtures that avoid accidental false positives; doctor `global`, `lite`, and `sandbox` profiles with explicit PASS/WARN/ERROR/SKIP statuses; `run-test.sh` exit semantics; and sandbox validation coverage.
368
+ - Local validation logs are ignored via `logs/` because they are generated diagnostics, not release artifacts or source files.
369
+
370
+ ## [v1.3.0] - 2026-08-06
371
+
372
+ ## 🆕 What's New
373
+
374
+ - **Non-invasive TUI notifications**: hook failures no longer write to `console.error` (TUI pollution) — non-zero exits route to three non-TUI channels: deduped TUI toast (`client.tui.showToast`), structured `client.app.log` entry (service `pantheon-hooks`), and `.pantheon/logs/hooks.log` file append; `PANTHEON_HOOKS_LOG=1` opt-in preserved, routed to log channels only
375
+ - **Delegation lifecycle toasts**: 🚀 `<agent> em execução` / ✅ `<agent> concluiu` with anti-spam (2000ms rate limiter + 3-agents-in-6s aggregation into a single summary toast)
376
+ - **PANTHEON_TOASTS gate**: `off|errors|delegations|all` (default `delegations`), read once at plugin load; gates TUI display only, log channels always write; council toasts included in the default set
377
+ - **Olympians groups**: wave→Olympians naming, 10s detection window, group completion
378
+ - **Hybrid secret blocking**: high-confidence tokens blocked (throw), low-confidence advisory-only; `maskSecret()` redaction applied across hook outputs
379
+ - **Honest delegation telemetry**: `delegation_id`/`task_id`/`duration_ms` fields, `dispatched` status for background agents, JSON round-trip stop hook (no TSV corruption)
380
+ - **Bash exit-code monitoring**: `metadata.exit` → individual error notifications
381
+ - **Talos scope enforcement**: session→agent map, native permission denies, content guard
382
+ - `PANTHEON_HOOKS_LOG` opt-in with ISO timestamps per line
383
+ - Routing disambiguation (project vs system docs), refusal taxonomy, delegation cache telemetry
384
+ - Secret-scan hygiene: wildcard notation for credential references (no literal keys in versioned docs/comments)
385
+ - README: hooks testing docs + `PANTHEON_TOASTS` table with council; AGENTS.md adds "PRs always update the README" convention
386
+
387
+ ## 🐞 Fixed
388
+
389
+ - Council toast idle-flush race condition
390
+
391
+ ## [v1.2.2] - 2026-08-05
392
+
393
+ ## 🆕 What's New
394
+
395
+ - **`pantheon prune`** (#22): legacy cleanup command — XDG-aware config resolution, `--dry-run` default (list only), `--apply` removes stale `opencode.json.bak*` backups (age threshold), `--apply --remove-dirs` for legacy dirs with dead configs; old global `pantheon` installs are suggested for manual `npm uninstall -g pantheon`, never removed (npm-managed)
396
+ - **Release pipeline standardization** (PR #28): single source of truth for version in `scripts/versioning.mjs` (sem-tag aware); CHANGELOG repair (normalized broken `[5.0.0]` heading → `[1.0.0]`, stripped `[v` prefixes across 3.x history, added `[Unreleased]`); `release.yml` redesigned with idempotent gates (skips publish when version already exists); new `scripts/changelog-extract.mjs` and `scripts/version-check.mjs` (+ test suites) so release bodies use real changelog sections; commitlint extended to cover pushes; pre-commit gate added; `cliff.toml` (git-cliff) removed; `docs/RELEASING.md` added; ADR-0007
397
+ - **Test wiring + install docs** (PR #31): `test:security` extended with `test_doctor_layers`; Node test suite wired via `npm run test:node` (`node --test tests/*.mjs` — prune, hook-runner, plugin-log-policy, install/vision contracts, changelog/version checks) into CI; global-install sandbox documented in AGENTS.md / INSTALLATION.md
398
+ - Dead `src/mcp/requirements-mcp-core.txt` catalog duplicate (YAGNI — the installer uses `requirements-mcp.txt`)
399
+
400
+ ## 🐞 Fixed
401
+
402
+ - **Reliable global install** (PR #26): hooks plugin recreated (`pantheon-hooks.ts` + `hook-runner.ts` with stdin JSON protocol, version-proof); MCP install made hermetic (absolute paths); packaging fix (`files[]` += `src/plugins/**`, `scripts/hooks/**`, self-reference removed, pinned `@opencode-ai/plugin` 1.18.11); `import uuid` hotfix in `scripts/mcp_persistence_server.py`
403
+ - **Installer/plugin packaging paths** (PR #31): hooks plugin registered via `resolveInstalledPlugin` so the config points at the INSTALLED package path, never the developer's absolute path (#30); TUI registered with absolute dist path in `tui.json` (#32 — relative path caused NpmInstallFailedError); TUI reads its installed package version via `import.meta.url` (works from any cwd)
404
+ - **Idempotent init** (#19): `subagent_depth` merged into the always-run config merge — run #1 already produces the final config (previously only the SECOND init added it); honest re-run stats (`routing.yml` no longer counted as created every run)
405
+ - **Layered doctor** (#18): B.6 smoke JSON-RPC `initialize` + F venv/deps check with pinned requirements
406
+ - **Pinned MCP dependencies** (#21): exact pins in `src/mcp/requirements-*.txt` (`mcp==1.29.0`, `fastmcp==3.4.6`, `pyyaml==6.0.3`, `sqlite-vec==0.1.9`, `fastembed==0.8.0`, `httpx==0.28.1`) — reproducible venv installs
407
+ - **Silent hooks by default**: audit hooks no longer echo to the console on success (`PANTHEON_HOOKS_LOG=1` re-enables the debug echo; log FILES `sessions.log`/`delegations.log` continue to be written)
408
+
409
+ ## [v1.2.1] - 2026-08-03
410
+
411
+ ## 🆕 What's New
412
+
413
+ - **Model routing presets + interactive picker**: 4 presets (go-deepseek, go-premium, go-fast, go-free), zero-mutation default (injects only when `active-preset.json` exists), `set-tier` CLI in `bin/pantheon-init.mjs` with API-key fail-fast, interactive picker in `scripts/install/model-picker.mjs` (atomic write + .bak), `validate-routing.mjs` preset validation, packaging fix so `src/pantheon/**` ships in the tarball
414
+ - 4 new provider families — go-claude (Anthropic), go-openai, go-olympus, go-muses presets + `CAPABILITY_TABLE` (+11 entries: glm-5.1/5.2, kimi-k2.6, qwen3.7-max/plus, minimax-m2.7/m2.5, bare deepseek-v4-pro/flash, big-pickle, nemotron-3-ultra-free, north-mini-code-free)
415
+ - **Vision routing**: per-turn multimodal fallback for image turns (`vision:` key per preset, `chat.message` hook), later evolved to native gateway vision (mimo-v2.5) with MCP-tool fallback, image-history normalization, description cache (sha256, TTL 30min) + intent-calibrated prompts, temp-image dedup/LRU
416
+ - Canonical `pantheon-vision` MCP stdio server (`src/mcp/pantheon_vision_server.py`)
417
+ - TUI: vendored todo-progress + usage-bar (v1.1.0, MIT attribution), active model preset shown in sidebar (30s refresh), OpenCode Go/Zen usage quota tracking (5h/7d/1m dollar windows, `[opencodego]` toml config)
418
+ - **Unified `release.yml`**: single workflow handles beta (PR label) + stable (main push) with version-exists check
419
+ - Secret scanning: fail-closed CI gates (gitleaks + custom scan), pre-commit hooks, secret-scan regression tests
420
+ - docs: model routing presets documented (presets, commands, env vars)
421
+ - Preset lineup refactored 8 → 6: go-deepseek routed via OpenCode Zen, go-fast via OpenCode Go, olympus/muses renamed go-premium/go-free — all presets now via OpenCode/Anthropic/OpenAI providers, `PANTHEON_DEEPSEEK_API_KEY` removed
422
+ - Vision routing consolidated and legacy duplicates removed
423
+ - commitlint: CodeQL auto-fix ignore pattern, body-max-line-length disabled, `security` type allowed, plugin/vision/presets/hooks scopes added; tsconfig dropped path aliases (+ `opencode.d.ts` ambient types)
424
+ - install: pantheon-vision registered, `doctor.mjs` hardened
425
+ - PR template added in English; coverage artifacts gitignored
426
+ - CI workflow triggers synced with base develop; `release.yml` gained `workflow_dispatch` with `pr_number` input
427
+ - Stale release workflows (release-beta.yml / release-stable.yml leftovers) brought back by merge
428
+ - TUI todo-progress bar (redundant with native TODO + sidebar), v1.1.1
429
+ - Duplicate `scripts/scrub_secrets.py` (canonical is `scrub-secrets.py`)
430
+
431
+ ## 🐞 Fixed
432
+
433
+ - Plugin export as function for opencode 1.18.11 API (object export failed to load; hooks.config mutates config in place)
434
+ - Vision pipeline: plugin boot failure (legacy loader), MCP tool ID (`pantheon_vision_vision_describe`), gateway 401 (provider prefix stripped from model ID), temp-file race (age-guarded cleanup, dir never removed), image stripping at source (deepseek-v4-flash declared image-capable), gateway-aware qwen interception, MCP availability verified, refcounted shared temp images, file URLs decoded via `fileURLToPath`, temp image permissions restricted
435
+ - Default vision fallbacks: mimo-v2.5 (multimodal, cheaper) then minimax-m3 (qwen3.7-plus 500 on Go gateway); silent hook logs
436
+ - `import uuid` in `mcp_persistence_server.py` (context_save NameError)
437
+ - commitlint failures + typecheck narrowing; active preset applied in config hook
438
+ - CI: `workflow_dispatch` treated as stable release; empty env block removed; `NODE_AUTH_TOKEN` restored (OIDC Trusted Publisher not configured on npm); `github_pat_` self-match in secret scan; fast-uri upgraded to patched version
439
+ - Security: hardcoded provider credentials removed, preset error logging sanitized (CodeQL), dist artifacts untracked
440
+ - install: project MCP commands point at real venv
441
+
442
+ [v1.2.1]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.2.1
443
+
444
+ ## [v1.2.0] - 2026-07-30
445
+
446
+ ## 🆕 What's New
447
+
448
+ - **Fallback chains + auto CI retry**: per-agent fallback chains (hermes→talos→athena, apollo→athena→hermes, etc.), CI retry 1 → 2 with exponential backoff + fallback agent, token tracking in `subtask_summary`, `fallback_chains` section in routing.yml
449
+ - Zeus Fusion-style delegation enforced — `edit:deny`, `bash:deny`, never touches files
450
+ - Persistence performance: index on (namespace, expires_at) — O(n)→O(log n) TTL queries, `kv_stats` tool, opportunistic auto-purge (>500 entries), FTS soft-delete trigger (fixes phantom results), `re.escape()` query safety, `kv_delete_namespace` bulk cleanup
451
+ - **Context checkpoint tools**: `context_save`, `context_get`, `context_list`, `context_stats` — session-scoped state in `checkpoint:{slug}` namespace, auto-TTL 4h, replaces file-based `checkpoint_session.py`
452
+ - New release system: beta from PR label (release-beta.yml), stable from main push (release-stable.yml)
453
+ - docs: `RELEASE.md` — beta from PR label, stable from main push
454
+ - **Slash commands consolidated 16 → 5** — kept `/pantheon`, `/audit`, `/deepwork`, `/optimize`, `/consolidate`; deleted 11 (cancel, focus, forget, install, reflect, remember, search, sketch, status, update, verify) with Apollo audit verifying alternative coverage (ADR-006)
455
+ - Removed redundant model configs — agents inherit default deepseek-v4-flash
456
+ - Persistence docs updated for new tools and auto-purge behavior
457
+ - commitlint scopes completed; auto-release skipped when version already exists
458
+
459
+ ## 🐞 Fixed
460
+
461
+ - Council fixes: UUID session isolation in context checkpoints, pre-compaction state save trigger, flash summary quality floor (<10 chars → fallback to Zeus), agents recall `context_get(slug, 'latest')` on startup
462
+ - CI: push triggers removed — validation workflows (CI, commitlint, CodeQL, hotfix, docs) now run on `pull_request` only, eliminating perma-pending duplicate checks
463
+
464
+ [v1.2.0]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.2.0
465
+
466
+ ## [v1.0.0] - 2026-07-24
467
+
468
+ ## 🆕 What's New
469
+
470
+ - **OpenCode-only**: Removed all multi-platform support (Claude Code, Cursor, Windsurf, Cline, Continue.dev, VS Code Copilot). Pantheon v1.0 is exclusively for OpenCode.
471
+ - **Global installation**: `npx pantheon-opencode init` installs agents globally to `~/.config/opencode/agents/`. Optional `--project` flag for project-local install.
472
+ - **Background subagents**: Native OpenCode `task(background=true)` + `task_status()` delegation. Max 5 concurrent subagents. Requires `OPENCODE_EXPERIMENTAL_BACKGROUND_SUBAGENTS=true`.
473
+ - **Shared instructions**: Behavioral rules moved to `.instructions.md` files loaded via `instructions/*.instructions.md`. Eliminated duplicate rules between agents and instructions.
474
+ - **TUI sidebar plugin**: Custom sidebar showing Pantheon version, sessions, commands, agents, config, and memory stats.
475
+ - **Agent routing optimized**: Zeus routing decision tree prohibits `general`/`explore` subagent types. Each domain maps to a specialist.
476
+ - Instructions tokens reduced 10.3k → 7.5k (-18%)
477
+ - Zeus.md reduced 431 → 144 lines
478
+ - Skills reduced to 14 (from 40), with merged content
479
+ - `skills-lock.json` regenerated (40 → 14 entries)
480
+ - 6 platform-specific installers (claude, cline, continue, copilot, cursor, windsurf)
481
+ - 6 platform-specific docs files
482
+ - Legacy scripts: `pantheon-install.mjs`, `pantheon-update.mjs`
483
+ - `platform/opencode/agents/` (agents now in `src/agents/`)
484
+ - `auto-continue-template.md`
485
+ - `checkpoint-standards.instructions.md`
486
+ - Updated command list: 14 → 11 commands
487
+ - Added: `/pantheon-bg`, `/pantheon-doc`
488
+ - Removed: install, update, cancel, sketch, consolidate
489
+
490
+ [v1.0.0]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.0
491
+
492
+ ## [v1.1.1] - 2026-07-30
493
+
494
+ ## 🆕 What's New
495
+
496
+ - New release system — beta releases from PR labels, stable from main push (auto-release and beta-release workflows unified)
497
+ - Interactive TUI mode for installer (Fases 1+2) — redesigned sidebar with context progress bar, live session data via events + API
498
+ - Session-scoped context checkpoints in persistence (index, stats, auto-purge, `delete_namespace`); fallback chains, auto CI retry (2x), token tracking
499
+ - Slash commands consolidated from 16 to 5; redundant model configs removed (agents inherit the default model)
500
+
501
+ ## 🐞 Fixed
502
+
503
+ - Council: UUID session isolation in context checkpoints, pre-compaction state save, flash summary quality floor, agents recall `context_get(slug, 'latest')` on startup
504
+ - TUI plugin/CI: OpenCode crash from missing plugin deps, version detection with git fallback, commitlint scopes, workflow YAML/MCP path repairs; `datetime.UTC` → `timezone.utc` for Python < 3.11
505
+
506
+ [v1.1.1]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.1.1
507
+
508
+ ## [v1.1.0] - 2026-07-26
509
+
510
+ ## 🆕 What's New
511
+
512
+ - Council synthesis Fase 1+2 — Modo Desempate com Evidência + BackgroundJobBoard (#2)
513
+ - Beta release workflow added (from develop)
514
+
515
+ [v1.1.0]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.1.0
516
+
517
+ ## [v1.0.7] - 2026-07-26
518
+
519
+ ## 🐞 Fixed
520
+
521
+ - Installer: fixed `writeFileSync` not defined error
522
+
523
+ [v1.0.7]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.7
524
+
525
+ ## [v1.0.6] - 2026-07-26
526
+
527
+ ## 🆕 What's New
528
+
529
+ - 7 new skills (codemap, simplify, reflect, worktrees, verification-planning, loop-engineering, clonedeps) + 7 matching commands; `background_subagents` enabled by default in canonical config
530
+ - Release pipeline: quality gates, tag creation, pre-release, hotfix support
531
+ - CI simplified from 10 to 6 workflows; agent/skill restructuring — 12 redundant instructions removed, unused commands dropped, gaia archived then restored
532
+
533
+ ## 🐞 Fixed
534
+
535
+ - CI/commitlint config (YAML syntax, header-max-length, ignores function, scopes); 45 stale references cleaned across 18 files; invalid `opencode.json` fields removed; installer copies `routing.yml`; YAML frontmatter regenerated for 9 agents
536
+
537
+ [v1.0.6]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.6
538
+
539
+ ## [v1.0.5] - 2026-07-26
540
+
541
+ ## 🐞 Fixed
542
+
543
+ - CI auto-release with OIDC trusted publisher + npm v12 (Node 22 upgrade, clean publish)
544
+ - `doctor.mjs` paths + simplified `prepublishOnly`
545
+
546
+ [v1.0.5]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.5
547
+
548
+ ## [v1.0.2] - 2026-07-25
549
+
550
+ ## 🆕 What's New
551
+
552
+ - TUI plugin: copy logic, stale skill cleanup, `tui.json` dedup; advanced plugin with version detection and 14 commands
553
+ - Agents migrated from deprecated `tools:` to OpenCode `permission:` model; legacy multi-platform tests removed (OpenCode-only conformance); docs modernized (OpenCode-only, unified commands)
554
+
555
+ ## 🐞 Fixed
556
+
557
+ - Hardcoded version fallback replaced with package.json version; routing aligned with actual skills (vscode platform removed)
558
+
559
+ [v1.0.2]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.2
560
+
561
+ ## [v1.0.1] - 2026-07-24
562
+
563
+ ## 🆕 What's New
564
+
565
+ - Installer: unified setup flow, removed lifecycle install, fixed entry points
566
+
567
+ [v1.0.1]: https://github.com/ils15/pantheon-opencode/releases/tag/v1.0.1
568
+
569
+ ## [v3.19.2] - 2026-07-21
570
+
571
+ ## 🆕 What's New
572
+
573
+ - `_pantheon_paths.py` — shared path resolution (`PANTHEON_HOME`, `PANTHEON_PROJECT`)
574
+ - `pantheon-persistence` MCP — KV store with SQLite FTS5, TTL, namespaces, 6 tools
575
+ - `pantheon-memory` rewritten — sqlite-vec + fastembed (ONNX, ~50MB) replaces chromadb + torch (~1.4GB)
576
+ - Hybrid semantic search: vector cosine + FTS5 BM25 via RRF fusion
577
+ - `.pantheon/mcp-registry.yml` — canonical MCP registry + auto-propagation
578
+ - Simplified installer: `install:lite` (agents only), `install:full` (everything), `install:runtime` (MCP infra)
579
+ - `scripts/install/venv.mjs` — auto .venv creation + pip install of lightweight deps
580
+ - `scripts/install/health-check.mjs` — 6 post-install validations
581
+ - `scripts/install/migrate.mjs` — upgrade path v3.10 → v3.18 → v3.19.0 → v3.19.2
582
+ - MCP servers patched for global install (no more `__file__.parent.parent`)
583
+ - **Dependencies reduced from ~1.4GB to ~50MB** — removed chromadb, sentence-transformers, torch
584
+ - `memory_mcp_server.py`: 1,344→584 lines, 14→6 tools (memory_store, memory_search, memory_recall, memory_forget, memory_list, memory_stats)
585
+ - `routing.yml`: 1,102→482 lines (-56%), deleted 22 dead handoffs, routing_matrix
586
+ - `internet-search` skill: 519→130 lines, tool-agnostic (context7/websearch/webfetch)
587
+ - Memory Protocol: shared `instructions/memory-protocol.instructions.md`, 14 agents with 2-4 line overrides
588
+ - Agent YAML frontmatter fixed across all 14 agents (broken `...` separators, skills indent)
589
+ - All platform configs updated with persistence MCP entries
590
+ - `opencode.json` generated with correct deploy paths (cwd = deploy target)
591
+ - chromadb + sentence-transformers + torch (~1.4GB dependency chain)
592
+ - `scripts/requirements-mcp-memory.txt`
593
+ - 9 duplicate instructions (now skills on-demand)
594
+ - `multi-model-routing` from prometheus (deleted skill)
595
+
596
+ ## 🐞 Fixed
597
+
598
+ - 157 dangling instruction references across 6 platforms
599
+ - YAML frontmatter in all 14 agents (broken by previous sed edits)
600
+ - OpenCode platform detection (was missing `platform/opencode/opencode.json`)
601
+
602
+ ## [v3.19.0] - 2026-07-21
603
+
604
+ ## 🆕 What's New
605
+
606
+ - Memory Persistence Protocol (ADR-006) — agents now have mandatory `memory_recall()` pre-work (top_k=3, skip if score<0.3) and `memory_store()` post-work (2 lines max, importance 0.4-0.9)
607
+ - Session-end auto-save script (`.pantheon/code-mode/session-end-save.py`) — exports Vector DB entries with importance ≥0.4 at session close (ChromaDB direct read + client-side filtering)
608
+ - `session_end_save` handoff in routing.yml for Mnemosyne session close trigger
609
+ - `tools.agent: true` for Apollo, Talos, and Gaia canonical agent files
610
+ - Recall Conflict Protocol (ADR-006 v1.1) — 5 rules for when recalled memory conflicts with current action (log, prefer freshness, escalate ADRs, score threshold, audit trail)
611
+ - New skills synced: `file-prompts`, `plan-architecture`, `streaming-patterns`, `token-audit`, `wisdom-accumulation`
612
+ - All 14 agent files updated with `## 🧠 Memory Protocol` section (both canonical `/agents/` and OpenCode `.config/opencode/agents/`)
613
+ - Zeus now auto-stores `memory_store()` directly on agent return — no Mnemosyne middleman
614
+ - Steps optimization in opencode.json: zeus(25→35), aphrodite(25→30), hermes(20→25), themis(20→25), demeter(20→25), mnemosyne(10→8), iris(15→10), nyx(15→12), athena(15→12)
615
+ - README.md badges updated to v3.19.0, skills count 43→40
616
+ - 9 duplicate instructions deleted — now only skills on-demand (tdd-standards, code-quality-checks, code-review-standards, database-standards, artifact-protocol, mcp-security, memory-bank-standards, infra-standards, auto-continue-safety-gates)
617
+ - Always-loaded instructions: 19→10 files (~5.7K→~3K tokens/session, -47%)
618
+ - Agent platform copies updated across 6 platforms (Claude, Cursor, Windsurf, Continue, Cline — .clinerules)
619
+ - `routing.yml` artifact paths: `docs/memory-bank/`→`.pantheon/memory-bank/`
620
+ - 5 orphan skills linked to agents: wisdom-accumulation→zeus, plan-architecture→athena, file-prompts+streaming-patterns→hermes, token-audit→nyx
621
+ - `prompts/orchestrate-with-zeus`: fixed 3 instances of ATHENA→APHRODITE for frontend delegation
622
+ - `prompts/focus.prompt.md`: stale `/memories/session/` path → `.pantheon/memory-bank/.tmp/`
623
+ - `prompts/mirrords.prompt.md`: tool names updated to current API
624
+ - `commands/pantheon-install.md`: stale doc ref and platform count fixed
625
+ - `commands/pantheon-update.md`: example version bumped to 3.19.0
626
+ - `pyproject.toml`: removed all backend/fastapi/alembic dependencies (no longer maintained)
627
+ - `platform/forge.json`: version bumped to 3.19.0
628
+ - `alembic/` — stale DB scaffolding (never completed)
629
+ - `backend/` — stale FastAPI database engine (half-finished)
630
+ - `docs/memory-bank/` — stale duplicate (should have been purged in v3.17.0)
631
+ - `docs/TUTORIAL-PLUGIN-PT.md` — Portuguese tutorial for disabled plugin
632
+ - `plugins-disabled/` — stale pantheon-tui-plugin
633
+ - `release_notes.md` — lowercase, redundant with CHANGELOG
634
+ - 4 obsolete skills: `conversational-ai-design`, `multi-model-routing`, `prompt-improver`, `prompt-injection-security`
635
+ - `__pycache__` and `.mypy_cache` build artifacts
636
+ - Full documentation audit: 10+ doc files cleaned, versions reconciled, stale content purged
637
+ - Memory Persistence Protocol documented as ADR-006
638
+ - `.config/opencode/` fully synced from canonical Pantheon (14 agents + 10 instructions)
639
+
640
+ ## 🐞 Fixed
641
+
642
+ - 33 dangling `docs/memory-bank/` references fixed across platform configs (`.claude/`, `.cursor/`, `.windsurf/`, `.continue/`, `.clinerules/`, `.github/`, `memories/`, `platform/`, `template/`, `.opencode/skills/`, `.tests/`)
643
+ - `.pantheon/memory-bank/.tmp/` added to `.gitignore`
644
+ - `docs/RELEASING.md` version reference — v3.8.4 → v3.19.0
645
+ - `docs/UPGRADING.md` — removed obsolete Agora migration guide, added v3.19 Memory Protocol section
646
+ - `docs/mcp-recommendations.md` — removed Exa MCP references (removed in v3.15.0)
647
+ - `docs/platforms/opencode.md` — removed stale "agora" references
648
+ - `docs/AGENT-MCP.md` — removed Exa reference
649
+ - CHANGELOG duplicate v3.9.0 entries removed
650
+ - `template/CLAUDE.md` — `agora`→`zeus` for council dispatch
651
+ - `.github/instructions/auto-continue-safety-gates`: "Agora Council"→"Council"
652
+ - `.tests/test-all.sh`: removed stale chiron.agent.md test
653
+ - Skills count reconciled across all docs: 40
654
+ - `docs/INDEX.md` skills count: 45→40
655
+
656
+ ## [v3.18.0] - 2026-07-15
657
+
658
+ (no changes)
659
+
660
+ ## [v3.17.1] - 2026-07-14
661
+
662
+ ## 🆕 What's New
663
+
664
+ - Inline compression triggers (C8/C9/C11): implementation agents (Hermes, Aphrodite, Demeter, Hephaestus, Prometheus) now declare `context-compression` skill and have a concise `## Inline Compression` section covering CRITICAL/HIGH subtask summaries, pre-delegation large blocks, and phase boundaries/handoffs
665
+ - `tests/test_code_mode_args.py`: TDD coverage for the new `args` parameter forwarding
666
+ - `context-compression` SKILL.md: real C8–C11 trigger definitions added; redundant C10 noted as OpenCode-native cross-reference; L1/L3 contradiction resolved (L1 = inline compress via MCP, L2 = batch promotion at gates)
667
+ - Agent `.md` files: `context-compression` added to `skills:` frontmatter for all 5 implementation agents
668
+ - `instructions/artifact-protocol.instructions.md`: scrub documented as automatic via MCP layer
669
+
670
+ ## 🐞 Fixed
671
+
672
+ - `execute_code_script` now forwards CLI arguments to subprocess — `compress-inline.py` is reachable via MCP (fixes argparse code 2 error)
673
+ - Unified scrubber: 3 divergent implementations consolidated into single canonical `scripts/scrub-secrets.py`, imported by both `memory_mcp_server.py` and `compress-inline.py` via `importlib` (hyphenated filename cannot be statically imported)
674
+ - OpenAI key regex standardized across all consumers to `sk-[A-Za-z0-9\-_]{10,}`
675
+
676
+ ## [v3.17.0] - 2026-07-11
677
+
678
+ ## 🆕 What's New
679
+
680
+ - Pantheon TUI Plugin overhaul: sidebar modernization, clickable commands, dynamic Python version
681
+ - MCP Config section in TUI: list active plugins, MCP status, auto-compaction toggle
682
+ - Memory section in TUI: show memory entries count
683
+ - MCP templates for 6 platforms (Claude, Cline, Cursor, Windsurf, Continue, Copilot)
684
+ - `scripts/init-pantheon-mcp.sh` — automated MCP setup
685
+ - `docs/INSTALLATION.md` — MCP installation guide
686
+ - `docs/MIGRATION-MEMORY-BANK.md` — migration guide for memory bank to .pantheon/
687
+ - Memory bank moved from `docs/memory-bank/` → `.pantheon/memory-bank/` (fully local, gitignored)
688
+ - `.pantheon/` is now the standard for all local/generated artifacts
689
+ - OpenCode MCP format fixed: command as array + cwd
690
+ - All platform templates updated with pantheon-code-mode MCP
691
+ - `.mcp.json` moved from root to `platform/mcp/mcp-template.json`
692
+ - Version synchronization: `versioning.mjs` now handles all manifests (package.json, plugin.json, pyproject.toml, forge.json)
693
+ - Updated 65+ source files with new .pantheon/ paths
694
+ - `docs/memory-bank/` from git history (fully purged via filter-repo)
695
+
696
+ ## 🐞 Fixed
697
+
698
+ - TUI plugin path in tui.json (was pointing to non-existent file)
699
+ - OpenCode MCP config format (command must be array + cwd)
700
+ - Release pipeline: version mismatch between package.json and plugin.json
701
+ - `mcp_resources_server.py` memory-bank path resolution
702
+
703
+ ## [v3.16.0] - 2026-07-10
704
+
705
+ ## 🆕 What's New
706
+
707
+ - MCP Resources Support: pantheon://agents, skills, routing, deepwork, memory-bank
708
+ - Code Mode MCP Adapter: confined script execution from .pantheon/code-mode/
709
+ - YOLO Mode / Auto-Approve: permission tiers for trusted MCP servers
710
+ - Reasoning Effort per Agent: high / medium / low in routing.yml + 14 agent frontmatter
711
+ - Unified Memory MCP Server: 14 tools, ChromaDB + sentence-transformers, 79 tests
712
+ - Knowledge graph: memory_link + memory_traverse (BFS traversal)
713
+ - RTK-style output filters: dedup, group, truncate on memory_store
714
+ - Freshness decay (30-day half-life) + importance boost + claim verification
715
+ - Agent MCP Integration: all 14 agents with MCP Capabilities + routing.yml capabilities
716
+ - Documentation: MCP.md (238l), MEMORY.md (471l), AGENT-MCP.md (197l)
717
+ - Skills audit: 5 orphan skills deleted, quality-gate skill created
718
+ - Platform sync: pantheon-memory added as Tier 1 MCP in install-mcp.mjs
719
+ - docs/mcp-recommendations.md expanded to 422 lines (browser MCPs, infra MCPs, 3-7 rule)
720
+ - memory_cleanup: 3-char minimum prefix guard
721
+ - memory_export: restricted to ~/.pantheon/exports/ with path traversal check
722
+ - Content size limit: 100KB max, 500 char category
723
+
724
+ ## 🐞 Fixed
725
+
726
+ - memory_sessions dead code (always returned empty results)
727
+ - install-mcp.mjs filename: dash → underscore
728
+ - .github/plugin/plugin.json: removed deleted streaming-patterns reference
729
+ - memory_mcp_server.py: F821 undefined name, missing except block
730
+
731
+ ## [v3.15.0] - 2026-06-26
732
+
733
+ ## 🆕 What's New
734
+
735
+ - **Level 3 Vector Memory:** 5 scripts (`schema.py`, `index.py`, `query.py`, `rebuild.py`, `cli.py`) with dual indexing (FTS5 + optional sqlite-vec embeddings), 8/8 tests passing, 120 entries indexed from memory bank
736
+ - **Two-Tier Persistence Model:** Tier 1 auto-index (`quick_index()`) saves background agent results instantly into Vector Memory; Tier 2 full compression (ZZ artifact + memory bank update) only on Themis APPROVED
737
+ - **Inline quick_index():** New function in `index.py` indexes subtask_summary dicts directly (no file scanning), idempotent via content_hash, auto-tags from keywords
738
+ - **Context Compression Trigger:** Section in `zeus.agent.md` with test script `scripts/test-context-compression.sh` — validates all 5 checks (prerequisites, mocks, structure, secrets, output)
739
+ - **Background Agent Dispatch:** Pattern documented in `zeus.agent.md` and `orchestration-workflow/SKILL.md` — OpenCode v1.16.2+ background agents with auto-persist
740
+ - **Auto-Continue Canonical Name:** "relentless" → "auto-continue" across 43 files (skills, commands, agent files, platform copies)
741
+ - **Tools Format:** 14 agents converted from YAML array (`- tool`) to object format (`tool: true`)
742
+ - **quick_index path fix:** Scripts now add `scripts/` (parent of vector_memory package) to sys.path instead of their own directory
743
+ - **Platform Skill Directories:** 211 stale skill files removed from 6 platform dirs (`.clinerules/skills/`, `.claude/skills/`, `.cursor/skills/`, `.windsurf/skills/`, `.continue/skills/`, `platform/*/`) — OpenCode v1.16.0+ discovers skills natively from `~/.config/opencode/skills/`
744
+ - **Exa MCP Server:** `exa-mcp-server` removed from `opencode.json` (redundant with OpenCode native websearch)
745
+ - **`vector_memory` config key:** Removed from both project and global `opencode.json` (not recognized by OpenCode v1.17.x)
746
+ - **NOTE0010:** Pantheon v3 Roadmap — 5-phase vision from FTS5 to Plugin Architecture
747
+ - **TASK-016:** Level 3 Implementation Plan — 24 tasks across 5 phases
748
+ - **01-active-context.md:** Updated with deepwork v3.15 changes and Two-Tier model
749
+
750
+ ## 🐞 Fixed
751
+
752
+ - **Import Path in Vector Memory Scripts:** `sys.path` now correctly points to parent of `vector_memory/` package, enabling both direct execution and `python -m` usage
753
+
754
+ ## [v3.14.1] - 2026-06-21
755
+
756
+ ## 🆕 What's New
757
+
758
+ - **Pantheon-Context MCP Experiment:** Removed entire `scripts/pantheon-context-mcp/` directory (server.py, scoring.py, summarizer.py, tests — 12 files, ~1,200 lines)
759
+ - **Stale Agent References:** Stripped `pantheon-context` tool references from all 14 agent files, `.mcp.json`, `opencode.json`, `ROADMAP.md`
760
+ - **Auto-Release CI:** Removed `.github/workflows/auto-release.yml` (triggered broken v3.14.0 release on every push to main)
761
+ - **TUI Sidebar Plugin:** Rewrote from flat file to npm-style directory (`plugins/pantheon-tui/` with `index.tsx`, `package.json`, `dist/tui.tsx`). New features: real context usage bar (color thresholds 70%/90%), collapsible command guide (16 `/pantheon` commands), manual compress button, Python version display, collapsible agent registry
762
+
763
+ ## 🐞 Fixed
764
+
765
+ - **Install Script:** `scripts/install/opencode.mjs` now correctly copies npm-style plugin directory and registers in `tui.json` (not `opencode.json` — TUI plugins use separate registration)
766
+ - **CI Release Pipeline:** Added `dry_run` input to manual release workflow, removed auto-merge from release PRs, fixed duplicate steps
767
+
768
+ ## [v3.14.0] - 2026-06-20
769
+
770
+ ## 🆕 What's New
771
+
772
+ - **Codebase Audit:** Comprehensive 5-agent scan — 48 issues found, all resolved
773
+ - **Mermaid Diagrams:** 5 new diagrams — TDD Cycle (stateDiagram-v2), Artifact Lifecycle (flowchart), Council Synthesis (sequenceDiagram), Architecture (flowchart), Delegation Flow (flowchart)
774
+ - **Python Infrastructure:** Added `[build-system]`, project deps (FastAPI 0.110+, SQLAlchemy 2.0+, Alembic 1.13+, Pydantic 2.7+), ruff expanded to 11 rule groups, coverage (`fail_under=80`), mypy strict
775
+ - **Alembic Scaffolding:** `alembic.ini` with env var interpolation, async `env.py`, Mako template, models base with `AsyncAttrs` + `TimestampMixin`
776
+ - **SQLAlchemy 2.0 Mixins:** `UUIDPrimaryKeyMixin`, `IntegerPrimaryKeyMixin`, `SoftDeleteMixin`, `ActivatableMixin`
777
+ - **Frontend Scaffolding:** `biome.json` (1.9.4), `tsconfig.json` (strict mode, ES2022), npm scripts (test, lint, typecheck, build, dev)
778
+ - **Docker Infrastructure:** Multi-stage Dockerfile (build + runtime, non-root), docker-compose.yml (PostgreSQL 16 + API), `.env.example`
779
+ - **Database Standards:** Async SQLAlchemy 2.0 patterns, connection pooling, migration testing, disaster recovery + 2 Mermaid diagrams
780
+ - **Documentation Quality:** "When NOT to Use" sections on all 7 main agents, English-only throughout, ROADMAP.md updated
781
+
782
+ ## 🐞 Fixed
783
+
784
+ - **Dead Agent Purge:** Removed ~150+ references to Echo, Chiron, Argus, Agora across 67+ files (agents, platforms, instructions, skills)
785
+ - **Portuguese→English:** `docs/platforms/README.md` fully translated, `agents/prometheus.agent.md` mixed-language fixed
786
+ - **QUICKSTART.md:** Removed duplicate Nyx entry in agent table
787
+ - **`00-project.md`:** Fixed Argus in architecture diagram, corrected skill path, fixed Portuguese text
788
+ - **Prometheus Self-Contradiction:** Fixed "MUST NOT deploy (that's @prometheus)" — copy-paste bug from Chiron merge
789
+ - **Hephaestus Echo Dead Code:** Removed 25-line Echo section that was copy-pasted verbatim
790
+ - **`seo-config.ts`:** Renamed to `.md` (was Markdown disguised as TypeScript)
791
+ - **`agent-return-format.instructions.md`:** Fixed Agora reference in artifact table
792
+ - **`skills/README.md`:** Count corrected from 37→42, stale Chiron/Echo refs updated
793
+
794
+ ## [v3.13.0] - 2026-06-20
795
+
796
+ ## 🆕 What's New
797
+
798
+ - **Level 2 Context Compression** — priority scoring engine (5 deterministic dimensions: Impact, Risk, Novelty, Blockers, Downstream relevance), semantic summarization templates per agent-pair, budget allocation (100-line cap, priority-greedy), cross-reference mechanism (D/E/M/C IDs with auto-generated `_xref/index.md`), ZZ artifact format for phase-to-phase context injection, `context-compression` skill (Level 2)
799
+ - **New prompts**: `prompts/semantic-summarize.md` for agent-pair aware semantic summarization
800
+ - **New scripts**: `scripts/scrub-secrets.py` for security scrubbing of compressed content
801
+ - **Missing infra**: `docs/memory-bank/_xref/_next_id.json` with full key names (decisions/entities/milestones/tasks)
802
+ - **Safety preflight**: `can_compress()` guard prevents compression of in-progress/escalated/blocked/NEEDS_REVISION artifacts
803
+ - **Atomic write protocol**: .tmp + fsync + rename with validation for corruption prevention
804
+ - **14 agent `.agent.md` files** — stripped non-OpenCode frontmatter (`tools:`, `handoffs:`, `agents:`, `color:`, `hidden:`, `mcpServers:`). All agents now use only OpenCode-recognized fields
805
+ - **Agent count unified** — all files consistently say "14 agents" (removed chiron, echo, argus from counts)
806
+ - **`instructions/artifact-protocol.instructions.md`** — updated with ZZ artifact format, compression lifecycle, atomic write protocol, budget guardrails
807
+ - **`instructions/memory-bank-standards.instructions.md`** — updated with compression and recovery section, cross-reference docs
808
+ - **Context compression** — Level 1 replaced entirely by Level 2 (priority-scored summaries with downstream-aware field masks)
809
+ - **All 7 platforms regenerated** — commands (pantheon-status, ping) and agents synced across OpenCode, Claude Code, Cursor, Windsurf, Cline, Continue, Copilot
810
+ - **TUI Plugin** — moved to `plugins-disabled/`, removed from OpenCode config (temporary removal)
811
+ - **`packages/tui-plugin/`** — source files removed from active tree
812
+ - **`plugins/pantheon-tui-plugin/`** — secondary plugin source removed
813
+ - **`platform/opencode/.opencode/package.json`** — stale TUI config removed
814
+ - **Stale agent references** — chiron, echo, argus, agora references cleaned from 40+ files across platforms, docs, tests, commands
815
+ - **Missing skill references** — `code-discipline`, `architecture-diagrams` removed from agent references (never existed as skills)
816
+ - **Platform Conformance Matrix** — 6/6 plataformas passando com 0 falhas
817
+ - **CI validate** — passing
818
+ - **Sync Check** — passing
819
+ - **Auto Release** — published at v3.13.0
820
+
821
+ ## 🐞 Fixed
822
+
823
+ - **CHANGELOG.md** — removed 4 duplicate v3.12.1 entries and empty v3.12.2 section
824
+ - **Frontmatter consistency** — all 14 agents now parse cleanly with OpenCode YAML frontmatter
825
+ - **Cross-platform agent count** — 14 everywhere (was inconsistent: some files said 18, some said 14)
826
+ - **`.opencode/plugins/pantheon-hooks.ts`** — local OpenCode plugin que executa os 10 hooks de validação via tool.execute.before/after/event
827
+ - **`sync-platform.sh`** — step 3.6 não synca mais TUI plugin; step 3.7 synca o pantheon-hooks.ts globalmente
828
+ - **`.gitignore`** — `.opencode/plugins/` agora versionado; `platform/opencode/.opencode/{commands,skills}` ignorados
829
+ - **`opencode-hooks-plugin` npm** — removido do config (nunca foi publicado como pacote npm)
830
+ - **`@agora` redirects** — substituídos por `@zeus` em 5 platform files
831
+ - **Stale docs references** — Chiron, Echo removidos de README.md, QUICKSTART.md, platforms docs; TUI marcado como desativado; hooks docs atualizados de `.github/hooks/` para `scripts/hooks/`; skill count corrigido para 42
832
+ - **Canonical skills** — referências a Chiron em agent-coordination e database-optimization atualizadas para "Model Selection" e "model tier"
833
+ - **`tools:` field restored to all 14 canonical agents** — re-adicionado de v3.12.2 para o sync engine + conformance tests validarem toolMap keys
834
+ - **Stale skills removed** — `relentless-mode`, `review-work` (sem fonte canônica) removidos de .clinerules/skills, platform/claude, platform/cline, platform/continue, platform/cursor
835
+ - **Stale commands removed** — `cancel-relentless`, `token-audit` (sem fonte canônica em commands/) removidos de .clinerules/commands, .continue/commands, .cursor/commands e platform sources
836
+ - **wisdom-accumulation cleaned from platforms** — nenhum agente referenciava o skill; removido de platform dirs via sync --clean
837
+ - **All platforms sync:check** — 0 stale files across 7 platforms
838
+
839
+ ## [v3.12.0] - 2026-06
840
+
841
+ [compare changes](https://github.com/ils15/pantheon/compare/v3.11.0...v3.12.0)
842
+
843
+ ## 🆕 What's New
844
+
845
+ - **agents:** Add anti-stall resilience and orchestration improvements ([7a61b69](https://github.com/ils15/pantheon/commit/7a61b69))
846
+ - **agents:** Add /pantheon-status command with version badge + agent registry ([984ec65](https://github.com/ils15/pantheon/commit/984ec65))
847
+ - **platform:** Add Pantheon TUI sidebar plugin for OpenCode ([09253c1](https://github.com/ils15/pantheon/commit/09253c1))
848
+ - **release:** Sync version to v3.11.0 ([1a9fb64](https://github.com/ils15/pantheon/commit/1a9fb64))
849
+
850
+ ## 🐞 Fixed
851
+
852
+ - **ci:** Sync platform files and add mcp-security skill to pass CI ([a27a245](https://github.com/ils15/pantheon/commit/a27a245))
853
+
854
+ ## [v3.9.0] - 2026-05-28
855
+
856
+ [compare changes](https://github.com/ils15/pantheon/compare/v3.8.4...v3.9.0)
857
+
858
+ ## 🆕 What's New
859
+
860
+ - Setup changelogen + git-cliff for auto-releases ([ce4ee22](https://github.com/ils15/pantheon/commit/ce4ee22))
861
+ - Cleanup commands, fix subtask agent, add Context7 tools, improve sync script ([da6ed7c](https://github.com/ils15/pantheon/commit/da6ed7c))
862
+
863
+ ## 🐞 Fixed
864
+
865
+ - Add missing closing brace for github configuration in opencode.json ([a63c522](https://github.com/ils15/pantheon/commit/a63c522))
866
+ - Address PR review sync and mapping feedback ([c550049](https://github.com/ils15/pantheon/commit/c550049))
867
+ - Sync version to 3.8.4, fix versioning.mjs apply bug, add version check script ([141a6b1](https://github.com/ils15/pantheon/commit/141a6b1))
868
+ - Add CHANGELOG entry for v3.8.4 to fix CI validate failure ([58cc0f5](https://github.com/ils15/pantheon/commit/58cc0f5))
869
+ - **ci:** Auto-release cria PR com auto-merge ao invés de push direto pra main ([e4f78c9](https://github.com/ils15/pantheon/commit/e4f78c9))
870
+
871
+ [v3.19.0]: https://github.com/ils15/pantheon/compare/v3.18.0...v3.19.0