You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.20.0 — Sprint 4 + close all v0.19 high/medium gaps (10 features)
The biggest single release. Closes every 🔴 high and 🟠 medium item from
the v0.19.0 honest-completion audit, ships Sprint 4 retrieval upgrades,
verifies the entire stack with live agents.
🔴 HIGH FIXES
#6 file-ownership 409: PG store-postgres.recallBroadcasts was missing
the v0.15.0 §8.1 columns from SELECT — overlap guard always saw
empty exclusive set. Fix: explicit SELECT + JSON parse on read.
Verified live.
#3 vitest test isolation: new vitest.setup.ts forces ZC_POSTGRES_DB to
securecontext_test (auto-creates if missing); destructive helpers
refuse unless DB matches /test/i AND VITEST is set.
#7 REJECT resolver works in Docker: writes to learnings_pg directly
(parallel to the JSONL append, which is best-effort). Container can
reach PG; can't reach host's Windows path for JSONL.
🟠 MEDIUM
#1 skill auto-import: src/skill_auto_import.ts walks skills/*.skill.md
at API server startup, UPSERTs into skills_pg by skill_id with
body_hmac idempotency. POST /dashboard/skills/import for manual
trigger. Dockerfile copies skills/ in. First run imported 25 skills.
#2 LLM 'Generate skill body from rejection cluster':
src/skill_candidate_generator.ts. Default backend = Anthropic Sonnet
when ANTHROPIC_API_KEY set, else Ollama qwen2.5-coder:14b. Three
new endpoints: /generate, /approve (writes to skills/ + auto-import
+ marks installed_skill_id), /reject (with notes). Dashboard panel
shows status-tier action buttons. Live verified: 1.6KB skill body
generated in 12s via Ollama.
#4 context-budget: src/context_budget.ts tracks per-session tokens,
formatCostHeader appends [ctx: X% / 200K] suffix that upgrades to
⚠ WARN / 🚨 ALERT / ⛔ EMERGENCY at 70/85/95%. New zc_context_status
MCP tool. Hard enforcement (block Read at 70%) deferred to v0.21.
SPRINT 4
#8 reranker: zc_search([q], { rerank: true }) cross-encoder rerank
via Ollama embeddings.
#9 HyDE: zc_search([q], { mode: 'hyde' }) generates hypothetical
answer first, embeds THAT for the search.
#10 multi-hop: zc_search([q], { mode: 'multihop', hopDepth: 2 })
extracts file/URL refs from initial results, recurses with score
decay 0.7 per hop.
#5 rolling compaction MVP: src/compaction.ts + zc_compact_window MCP
tool + POST /api/v1/compact endpoint. Pulls last N broadcasts +
tool_calls, generates structured summary via Ollama, writes to
working_memory. Live verified: 20 turns → 1538-char summary.
E2E RESULTS
Unit tests: 803 pass / 36 skip (test isolation working — fresh test
DB has no seed data, those tests skip)
Direct API E2E: 14/14 pass
Live agent E2E: 14/14 pass on Test_Agent_Coordination
- ASSIGN→MERGE cycle, REJECT resolver, file-ownership 409,
skill candidate cluster + LLM generation, context budget
tracking on real agent activity, rolling compaction.
DEFERRED (honest gaps documented)
- Full live mutator loop (skill_run failure → mutator agent spawns →
candidates → operator approves) — infra verified, but live test
requires an agent to explicitly invoke a skill (~$0.20 + 5-10 min)
- Hard context-budget enforcement (block Read at 70%) — needs hook
integration, ships in v0.21
- Background compaction daemon — v0.20 ships on-demand only
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments