Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Aug 06:46
· 1671 commits to refs/heads/main since this release

What's Changed

  • style(cli): normalize help punctuation to end with periods (#497) @Cyrax321
  • fix(cli): add ellipsis when goal truncated in runs and tree (#496) @Cyrax321
  • fix(cli): clarify observe output when tool_name missing (#495) @Cyrax321
  • feat(budgets): refusal surfaces name authorization and budget report shows per-auth rows (Fixes #414) (#465) @Cyrax321
  • fix(observations): reject bool in payload bytes field (#462) @Newer1107
  • ci: deploy docs to Vercel from main only (#355) @Cyrax321
  • fix(recovery): tighten replayguard types for strict mypy (#248) @Cyrax321
  • fix(recovery): close gate, escalation and reconcile correctness issues in the ledger (#183) @Cyrax321
  • feat: resume returns goal; drop CONTINUUM_TASK.md overhead (#6) (#80) @Cyrax321
  • docs: detect interrupted run and ask resume-vs-new (#6) (#79) @Cyrax321
  • docs: new task never resumes an unrelated old run (#6) (#78) @Cyrax321
  • docs: explicit task overrides CONTINUUM_TASK.md on resume (#6) (#77) @Cyrax321
  • docs: make CONTINUUM auto-resume hands-free (#6) (#76) @Cyrax321
  • feat: auto-detect and resume the active interrupted run (#6) (#75) @Cyrax321
  • docs: add a separate API reference (#23) (#74) @Cyrax321
  • feat: register continuum-mcp with Claude Code via .mcp.json (#73) @Cyrax321
  • feat(mcp): bind caller credentials to identity with per-client tokens (#7) (#72) @Cyrax321
  • fix(attest): wire attestation into CI and correct stale docstring (#24) (#71) @Cyrax321
  • ci(release): migrate release workflow to uv (#27) (#70) @Cyrax321
  • fix(actions): only treat known file suffixes as stem-derived (#67) (#69) @Cyrax321
  • fix(adapter): declare captured environment so drift blocks resume (#25) (#68) @Cyrax321
  • test: add regression test for OpenAI adapter arg binding (#37) (#66) @Cyrax321
  • fix: stop _identity_match from falsely deduplicating distinct actions (#64) (#65) @Cyrax321
  • fix: close seven correctness issues from the C1 triage backlog (#61) @Cyrax321
  • chore: apply ruff format to the serve sidecar files (#62) @Cyrax321
  • feat(observability): metrics collector and Phase 14 recovery dashboard (A2) (#60) @Cyrax321
  • docs(bench): reflect 5 implemented scenarios after #58 (#59) @Cyrax321
  • docs(bench): correct CONTINUUM-Bench status to reflect shipped harness (#57) @Cyrax321
  • feat(bench): expand CONTINUUM-Bench scenario suite with crash-timing scenarios (#58) @Cyrax321

🚀 Features

🐛 Bug Fixes

  • fix: show absolute path in gate config error messages (#340) @aastha-m22
  • fix(serve): delete the dead auth gate and pin the policy the sidecar really has (#95) (#99) @Adhi1-2
  • fix: report the failing storage path unescaped so it is copy-pasteable (#94) (#97) @Adhi1-2
  • fix(mcp): report a missing 'mcp' extra instead of an import traceback (#87) (#93) @Adhi1-2
  • fix(serve): let a sidecar client resume without a memorized id or task file (#92) @abyyxhek
  • fix(mcp): make a failed cold start leak free and diagnosable (#87) (#90) @Adhi1-2
  • fix(benchmark): close SQLiteStorage handles so continuum benchmark runs on Windows (#89) @abyyxhek
  • fix(validator): report UNKNOWN, not VALID, for unverifiable model assumptions (#54) @as950118
  • fix(extractor): collapse ids repeated within a single LLM proposal (closes #41) (#52) @dchaudhari7177
  • fix(extractor): fall back to deterministic state on malformed LLM proposal (#56) @lesbass
  • fix(cli): make replay actually confirm the stored version (closes #31) (#50) @dchaudhari7177
  • fix(adapters): keep a result dict holding the envelope key intact on cache hit (closes #44) (#53) @dchaudhari7177
  • fix(mcp): reject negative progress counters even when total is omitted (#51) @lesbass

🔌 Adapters

  • feat(adapters): native LangGraph checkpointer over CONTINUUM storage (#246) @Cyrax321
  • feat(adapters): thin adapters for CrewAI, AutoGen and Pydantic AI (#229) @Cyrax321
  • feat(cli): install observation hooks for Gemini CLI and Codex CLI (#224) @Cyrax321
  • feat(cli): pre-action gate enforcing ledger claims before side effects (#220) @Cyrax321
  • perf(adapters): resolve optional SDK adapters lazily (PEP 562) (#219) @Cyrax321
  • fix(adapters): keep a result dict holding the envelope key intact on cache hit (closes #44) (#53) @dchaudhari7177

📚 Documentation

  • fix(gateway): answer malformed JSON with 400 instead of an empty body (#505) @abyyxhek
  • docs: note pair programming with Co-authored-by in CONTRIBUTING (#500) @Cyrax321
  • docs(cli): make --json discoverability explicit in CLI docs (#498) @Cyrax321
  • docs(cli): fix diff example to include required versions (#491) @Cyrax321
  • docs(cli): show --total flag in benchmark table (#490) @Cyrax321
  • docs: launch assets for 0.1.0 (Refs #400) (#492) @Cyrax321
  • docs: concepts and how-to for constraint pinning with honest scope (Refs #420) (#489) @Cyrax321
  • fix(gate): strip surrounding whitespace from derived key values (#488) @abyyxhek
  • feat(rewind): atomic dual-state rewind (Refs #292) (#486) @Cyrax321
  • feat(pins): surface constraint-pin verdicts in resume and validate (Refs #419) (#463) @Cyrax321
  • chore: add compose.yaml for Postgres contract tests (#450) @Cyrax321
  • docs(adapters): embeddability sprint with tested harness hook recipes (#448) @Cyrax321
  • docs: embeddability sprint with tested harness hook recipes (#445) @Cyrax321
  • fix(budgets): write through a symlinked registry and keep its owner (#442) @abyyxhek
  • fix(budgets): reject boolean limits, save atomically, name the bad value (#441) @abyyxhek
  • fix(cli): make complete idempotent (#440) @quangshuynh
  • docs: celebrate continuum-agent 0.1.0 on PyPI (#439) @Cyrax321
  • ci: add markdown linter to catch unbalanced fences (#435) @Cyrax321
  • [#388] cut CHANGELOG 0.1.0 heading (#431) @Cyrax321
  • docs: list every CLI subcommand in the api reference (#363) @tasodoufu
  • [#388] written release checklist for the maintainer gate (#423) @Cyrax321
  • docs: explain stale editable install metadata (#422) @timothyanderson096-ocdealcheck
  • docs: restore the Project Structure code fence in CONTRIBUTING (#375) @Cyrax321
  • fix(state): an unprojectable log can degrade instead of killing every command (#383) (#385) @Cyrax321
  • feat(mcp): record the model behind a run so drift can be detected (#380) @Cyrax321
  • fix(budgets): count retries per operation, not per action type (#378) @Cyrax321
  • fix(ledger): same filename in a different directory is different work (#376) @Cyrax321
  • fix(ledger): complete must not assert an outcome nobody verified (#374) @Cyrax321
  • fix(cli): verify must not certify a run that cannot be projected (#384) @Cyrax321
  • revert: take back confirm_gate fix to credit #377 (#381) @Cyrax321
  • fix(recovery): do not say nothing is wrong over an unresolved side effect (#379) @Cyrax321
  • fix(mcp): reconcile the action the recovery guidance actually names (#373) @Cyrax321
  • fix(mcp): a rejected progress update must not brick the run (#372) @Cyrax321
  • docs: clarify mypy runs in CI, not pre-commit (#354) @unmoha
  • fix(actions): serialise ActionLedger claims with the run lease (#350) @abyyxhek
  • fix(mcp): stop the retry budget defeating idempotency, and name what is actually missing (#311) @Cyrax321
  • docs: add pre-commit example with ruff hooks to CONTRIBUTING (#341) @unmoha
  • docs: months-scale upgrade spec plus live web synthesis and STATUS checklist (#339) @Cyrax321
  • ci: build and smoke-test a wheel artifact on every push to main (#310) @Cyrax321
  • fix(dashboard): bind 127.0.0.1 by default (loopback hardening) (#272) @Cyrax321
  • docs: record 2026-08-24 full-gate audit, refresh README counts, add architecture section 19 (#299) @Cyrax321
  • feat(recovery): semantic similarity backends for the replay guard (#300) @Cyrax321
  • feat(distribution): add Docker image, Codespaces, and git-install paths (#277) @Cyrax321
  • fix(storage): harden compaction per the #253 review (#260) @Cyrax321
  • docs: tighten README, add install and related-work references, strip em dashes (#274) @Cyrax321
  • docs: refresh README with current numbers and resolved references (#273) @Cyrax321
  • feat(recovery): multi-agent parent/child runs and aggregated contracts (#264) @Cyrax321
  • docs(mcp): document the CONNECTION_CLOSED failure mode and the eleventh tool (#256) @Parthipashok04
  • feat(dashboard): human-in-the-loop surface for request_human runs (#257) @Cyrax321
  • feat(recovery): run-level retry budgets enforced at claim time (#255) @Cyrax321
  • feat(storage): event-log compaction with archive table (schema v5) (#253) @Cyrax321
  • fix(postgres): ship lg_* tables in _SCHEMA; rewrite contract suite (#251) @Cyrax321
  • feat(serve): production server mode - PG CI + HTTP transport (#249) @Cyrax321
  • feat(recovery): replay-safety guard as a portable primitive (#247) @Cyrax321
  • feat(adapters): native LangGraph checkpointer over CONTINUUM storage (#246) @Cyrax321
  • feat(mcp): record and brief reasoning summaries across interruptions (#245) @Cyrax321
  • docs: seven-level testing guide covering every seam (#234) @Cyrax321
  • docs: refresh README for enforced durability and new integrations (#233) @Cyrax321
  • fix(gateway): body-size cap; refresh CLI reference for new surfaces (#232) @Cyrax321
  • feat(cli): continuum complete + README harness-wiring refresh (#231) @Cyrax321
  • feat(cli): enforcing HTTP gateway for registered upstreams (#230) @Cyrax321
  • feat(adapters): thin adapters for CrewAI, AutoGen and Pydantic AI (#229) @Cyrax321
  • feat(otel): mirror tool-call spans into the event log (#228) @Cyrax321
  • feat(cli): session briefing injects durable state without CLAUDE.md (#227) @Cyrax321
  • feat(recovery): render actionable next steps on resume and validate (#225) @Cyrax321
  • feat(recovery): surface post-checkpoint observations in the contract (#223) @Cyrax321
  • feat(cli): install observation hooks for Gemini CLI and Codex CLI (#224) @Cyrax321
  • feat(cli): reconciler registry settles uncertain actions with probes (#222) @Cyrax321
  • perf(storage): index cross-run idempotency claims (schema v3) (#221) @Cyrax321
  • feat(cli): pre-action gate enforcing ledger claims before side effects (#220) @Cyrax321
  • perf(adapters): resolve optional SDK adapters lazily (PEP 562) (#219) @Cyrax321
  • feat(cli): record observed tool completions via host-side hooks (#210) @Cyrax321
  • fix: close the five issues from the 2026-08-22 audit (#201-#205) (#206) @Cyrax321
  • docs: add CI status badge to README (#199) @Cyrax321
  • docs(changelog): correct the serve resume test count to six (#96) @abyyxhek

⚙️ Infrastructure

🧪 Tests & Benchmarks

  • fix(dashboard): escape all user fields on list and detail pages (Refs #334) (#515) @Cyrax321
  • fix(tests): close file-backed storage before unlink on Windows (#514) @Cyrax321
  • test: add regression test for render_key with whitespace-only value (#512) (#513) @mhaye9545
  • bench: unsafe-edit e2e with corpus registration (Fixes #410) (#506) @Cyrax321
  • fix(gateway): answer malformed JSON with 400 instead of an empty body (#505) @abyyxhek
  • feat(cli): render precondition refusals and lineage summaries (Refs #409) (#504) @Cyrax321
  • feat(recovery): structured attempt memory with falsification lessons (Fixes #313) (#499) @Cyrax321
  • fix(gate): strip surrounding whitespace from derived key values (#488) @abyyxhek
  • feat(rewind): atomic dual-state rewind (Refs #292) (#486) @Cyrax321
  • bench(fault): fresh-key reissuance scenario and corpus registration (Refs #415) (#483) @Cyrax321
  • test(mcp): fix slim full mode count to 12 after plan upsert (Fixes #470) (#472) @Cyrax321
  • test(mcp): include continuum_record_plan in tool count (Fixes #470) (#471) @Cyrax321
  • test(state): enforce projection bookkeeping invariant (Refs #386) (#464) @Cyrax321
  • feat(state): durable structured plan via PLAN_UPSERT (Refs #312) (#467) @Cyrax321
  • fix(budgets): reject bool action type caps (#466) @Samearth17
  • feat(pins): surface constraint-pin verdicts in resume and validate (Refs #419) (#463) @Cyrax321
  • feat(analysis): advisory prefix-trust score with mode-invariance guarantee (#458) @Cyrax321
  • fix(budgets): reject bool counters in hand-built helpers (#461) @Samearth17
  • [#391] reconstruction accounting present/absent/unverifiable per pin (#457) @Cyrax321
  • fix(storage): create parent directory for sqlite:// URLs (#447) @Cyrax321
  • bench: fault-injection chaos suite with detection-rate and unsafe-resume metrics (#446) @Cyrax321
  • fix(budgets): write through a symlinked registry and keep its owner (#442) @abyyxhek
  • test: regression test for StateCheckpoint.verify with tampered hash (#444) @Cyrax321
  • feat(mcp): instant resume detection, scoped confirm, and slim tool subset (#438) @Cyrax321
  • fix(budgets): reject boolean limits, save atomically, name the bad value (#441) @abyyxhek
  • fix(cli): make complete idempotent (#440) @quangshuynh
  • feat(interchange): content-addressed evidence export for external consumers (#437) @Cyrax321
  • feat(provenance): non-amplification invariant for derived artifacts (#436) @Cyrax321
  • [#389] enforce preconditions on fork with rationale payloads (#433) @Cyrax321
  • [#391] projector folds pins into SemanticState (#432) @Cyrax321
  • [#390] deterministic authorization identity from keys or identity tokens (#430) @Cyrax321
  • [#389] pure precondition derivation over event prefixes (#428) @Cyrax321
  • [#391] CONSTRAINT_PINNED event type with hash-only guarantees (#425) @Cyrax321
  • [#390] authorization-bound budget registry schema (#424) @Cyrax321
  • fix: clarify authentication errors (#353) @adity982
  • fix(state): an unprojectable log can degrade instead of killing every command (#383) (#385) @Cyrax321
  • feat(mcp): record the model behind a run so drift can be detected (#380) @Cyrax321
  • fix(budgets): count retries per operation, not per action type (#378) @Cyrax321
  • fix(ledger): same filename in a different directory is different work (#376) @Cyrax321
  • fix(ledger): complete must not assert an outcome nobody verified (#374) @Cyrax321
  • fix(cli): verify must not certify a run that cannot be projected (#384) @Cyrax321
  • revert: take back confirm_gate fix to credit #377 (#381) @Cyrax321
  • fix(recovery): do not say nothing is wrong over an unresolved side effect (#379) @Cyrax321
  • fix(mcp): reconcile the action the recovery guidance actually names (#373) @Cyrax321
  • fix(mcp): a rejected progress update must not brick the run (#372) @Cyrax321
  • fix(storage): use-after-close must say it was closed, and pin idempotent close (#352) @Cyrax321
  • fix: every registry error names an absolute path, completing #333 (#351) @Cyrax321
  • fix(actions): serialise ActionLedger claims with the run lease (#350) @abyyxhek
  • fix: attest-verify must not pass a tampered chain; fork must produce a usable child (#348) @Cyrax321
  • fix(mcp): stop the retry budget defeating idempotency, and name what is actually missing (#311) @Cyrax321
  • fix: Improve backoff delay error message (#343) @stoppo22
  • test: cover Origin self_certified variants (#344) @stoppo22
  • fix(dashboard): bind 127.0.0.1 by default (loopback hardening) (#272) @Cyrax321
  • feat(recovery): semantic similarity backends for the replay guard (#300) @Cyrax321
  • fix(tests): inherit the parent environment when spawning child processes (#212) @abyyxhek
  • feat(actions): consumed-grant tracking, deny Authority Resurrection (#269) (#287) @Cyrax321
  • Informed retry: engine-authored prior-attempt summaries on recovery surfaces (#265) (#275) @Cyrax321
  • Fork semantics: audited divergent continuations at the tool boundary (#259) (#286) @Cyrax321
  • fix(storage): harden compaction per the #253 review (#260) @Cyrax321
  • fix(windows): make hooks, the test suite and the smoke script portable (#252) @Parthipashok04
  • feat(recovery): multi-agent parent/child runs and aggregated contracts (#264) @Cyrax321
  • feat(dashboard): human-in-the-loop surface for request_human runs (#257) @Cyrax321
  • feat(recovery): run-level retry budgets enforced at claim time (#255) @Cyrax321
  • feat(storage): event-log compaction with archive table (schema v5) (#253) @Cyrax321
  • fix(postgres): ship lg_* tables in _SCHEMA; rewrite contract suite (#251) @Cyrax321
  • feat(serve): production server mode - PG CI + HTTP transport (#249) @Cyrax321
  • feat(recovery): replay-safety guard as a portable primitive (#247) @Cyrax321
  • feat(adapters): native LangGraph checkpointer over CONTINUUM storage (#246) @Cyrax321
  • feat(mcp): record and brief reasoning summaries across interruptions (#245) @Cyrax321
  • fix(gateway): body-size cap; refresh CLI reference for new surfaces (#232) @Cyrax321
  • feat(cli): continuum complete + README harness-wiring refresh (#231) @Cyrax321
  • feat(cli): enforcing HTTP gateway for registered upstreams (#230) @Cyrax321
  • feat(adapters): thin adapters for CrewAI, AutoGen and Pydantic AI (#229) @Cyrax321
  • feat(otel): mirror tool-call spans into the event log (#228) @Cyrax321
  • feat(cli): session briefing injects durable state without CLAUDE.md (#227) @Cyrax321
  • test(guidance): make the stdio round trip environment-portable (#226) @Cyrax321
  • feat(recovery): render actionable next steps on resume and validate (#225) @Cyrax321
  • feat(recovery): surface post-checkpoint observations in the contract (#223) @Cyrax321
  • feat(cli): install observation hooks for Gemini CLI and Codex CLI (#224) @Cyrax321
  • feat(cli): reconciler registry settles uncertain actions with probes (#222) @Cyrax321
  • perf(storage): index cross-run idempotency claims (schema v3) (#221) @Cyrax321
  • feat(cli): pre-action gate enforcing ledger claims before side effects (#220) @Cyrax321
  • perf(adapters): resolve optional SDK adapters lazily (PEP 562) (#219) @Cyrax321
  • feat(cli): record observed tool completions via host-side hooks (#210) @Cyrax321
  • fix: close the five issues from the 2026-08-22 audit (#201-#205) (#206) @Cyrax321
  • fix(benchmark): close SQLiteStorage handles so continuum benchmark runs on Windows (#89) @abyyxhek

What's Changed

New Contributors

Full Changelog: https://github.com/Cyrax321/CONTINUUM/commits/v0.1.0