Browse docs

Changelog

All notable changes to coding-os are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Development began in April 2026 and the full history is preserved in this repository. Release automation (release-please) starts at the 0.3.0 baseline below; entries before the first tagged release were written by hand and describe the project as it was on that date — the current adapter/parity state lives in docs/engineering/adapter-parity.md.

0.3.20 (2026-08-15)

Added

  • adapters: give Hub chat a real port instead of a duck-typed SDK module (6dc3fc1)
  • bench: measure the always-on context cost per project profile (c6c6015)
  • bench: rank always-on rules by measured blocks per token (f7394e1)
  • doctor: report whether the hook layer has a JSON/stdin parser at all (91e13cf)
  • eval: pre-register the ablation and mine its candidate task set (fb3370c)
  • stacks: mark which stacks CI actually builds, derived from the matrix (fb96358)

Fixed

  • adapters: tool_guard raises instead of silently dropping the write policy (da5041b)
  • bench: never score an envelope the harness could not read (91d5b2d)
  • bench: score against a realistic baseline and never score a truncated envelope (5dbaf84)
  • core: resolve the agent runtime through the adapter registry, not by SDK name (ccf55f8)
  • db: hold the migration write lock for the whole apply loop (43dfb2a)
  • db: type the migration proxy at its call site (07e6940)
  • docs: replace the hand-computed meta-repo budget with a profiler run (c255ebc)
  • doctor: report stack rules that have drifted from their template (4c22078)
  • graph: revive two enforcement globs that matched no file (d47e838)
  • graph: stop reporting zero references for structural node kinds (0f64cf9)
  • hooks: degrade stdin read perl -> python3 -> cat so gates never fail open (0731594)
  • hooks: read the governance keyword from the task, not the marker string (42c4fc0)
  • hooks: scope the layered-backend rules to stacks that opted into them (c5c8c49)
  • hooks: stop every blocking gate from flipping its verdict when jq is absent (7c55a56)
  • hub: refuse an off-loopback bind with no token, stop mounting all of $HOME (001be95)
  • memory: reading a pattern no longer raises its confidence (4a6f057)
  • packaging: make a wheel install actually serve the Hub (c6d3a16)
  • ssot: reconcile five facts the repo stated in two places (f56c0db)
  • test: size the hook subprocess timeout as a hang detector, not a budget (1f9d4bb)

Changed

  • comments: strip TASK-NNN provenance and gate it shut (67dd8dd)

Documentation

  • agents: add the file-size gate to the matrix row for edited Python (f6fd39b)
  • bench: replace the strawman savings claims with measured, baselined numbers (0d319d0)
  • eval: move the ablation onto SWE-bench Verified and name the run environment (f8393e5)
  • graph: a zero from references is a coverage signal, not just truncation (9877aa4)
  • readme: publish what one project actually receives, per stack and per profile (56c6d7a)
  • readme: quote the exact preset figure rather than a rounded group (45f15bc)

Build

  • add make lint so a local check cannot be narrower than CI (c23c277)

0.3.19 (2026-08-14)

Fixed

  • hub-ui: picking a project no longer bounces chat and memory to Hub home (a3eaa3c)
  • hub: say codex live chat is unbuilt instead of explaining in-process streaming (f86e047)

Documentation

  • readme: show the Web Hub with five annotated screenshots (bd3aa8e)

0.3.18 (2026-08-14)

Fixed

  • templates: pin log4j2 2.25.5 in the spring-boot scaffold for CVE-2026-49844 (c6be65d)

Documentation

  • governance: turn the PyPI approval gate off and record why the reversal is the lesson (fa3a087)

Build

  • security: hash-pin the build frontend and verify the uv installer before running it (e676d5b)

0.3.17 (2026-08-13)

Documentation

  • agents: add the Verification-Matrix row for src/core/rules and src/core/skills (1bd26e7)
  • governance: gate irreversible publishes behind a human, and say why review cannot be bought here (7a0d27d)

0.3.16 (2026-08-13)

Fixed

  • deps: bump nanoid to 3.3.18 for GHSA-2v37-7h3g-55p8 (6a4ad9d)

Documentation

  • ci: correct the Signed-Releases prediction with the measured result (f76a359)

0.3.15 (2026-08-13)

Fixed

  • board_os: freeze the clock in the reconcile determinism test (4615982)
  • ci: drop the unused noqa that failed the ruff gate (c8dec8e)
  • ci: make Dependabot able to satisfy the gates this repo already has (05c93d3)
  • ci: set the mypy baseline from the CI count, not the local one (bbb39fd)
  • deps: clear all 79 OSV advisories across scaffolds and locks (c7cab87)
  • graph_os: use SHA-256 for the three derived content digests (41946cf)
  • release: bump uv.lock with pyproject.toml and gate the drift in CI (912f902)
  • security: close the weak-hash, ReDoS and URL-substring CodeQL alerts (ba37021)
  • security: log exceptions under a correlation id instead of returning str(exc) (7fbffcb)
  • security: one path-segment validator, applied where request data joins a path (cf343c3)
  • web: drop the control-char regex class that broke the ESLint gate (b670471)
  • web: escape quotes and gate URL schemes in the task markdown renderer (c596947)

Changed

Documentation

  • bench: publish the Django 5.2 third-party token-cost row (#37) (c51ecea)
  • ci-gates: record the CodeQL fix-vs-dismiss policy and the reachability test (ad6b4d9)
  • ci-gates: record the measured 5.9 to 7.4 outcome, not the prediction (7dc5ce4)
  • ci-gates: record the Scorecard weight model and its honest ceiling (41288b0)
  • insights: record that fixing a CodeQL finding and clearing its alert are separate jobs (9f23636)
  • insights: record why a gate below a self-healing command is a no-op (6fa4869)
  • release: define the merge trigger and correct the pre-1.0 bump table (fb006ca)

Build

  • pin Docker base images by digest and the release build backend (a63730e)

0.3.14 (2026-08-12)

Fixed

  • scripts: point the session-resolver probe at the helper's real module (f6105a6)
  • tests: make the script smoke test catch sys.path bootstrap bugs (4117200)

Changed

  • scripts: point the session-resolver probe's docs at the real module (d9d7b0b)

0.3.13 (2026-08-12)

Added

  • ci: add zero-tolerance mypy error codes above the count ratchet (dcb5b59)
  • cli: offer quick vs custom setup and close init with an actionable panel (bd008b7)
  • cli: tell consumers which command actually upgrades coding-os (16f38a5)
  • hooks: make the documented 300-line budget visible at write time (03223e2)
  • hub: list MCP servers by scope and accept custom http/sse servers (e80a3c8)
  • hub: manage MCP servers per adapter, per scope, on both transports (d1bbe50)
  • hub: probe adapter chat, dispatch and transcript capability at runtime (2b5c611)
  • hub: rebuild the Memory tab around the trust ladder (65cb794)
  • hub: show role titles and name what each inherited default resolves to (452172a)
  • rules: add Critical Rule 27 — runtime cost is correctness (6cb07ef)
  • scripts: add a split-parity guard that proves a module move edited nothing (1b1f508)

Fixed

  • ci: annotate the split fixtures as generators so the mypy ratchet holds (a594051)
  • ci: make dispatch readiness assertions environment-independent (1bf6166)
  • ci: repoint the workflow, Makefile and scan-ignore paths at the split test modules (072b009)
  • ci: resolve the remaining flat sibling imports for mypy (004fd5b)
  • ci: restore the mypy BASELINE to the CI-measured value (3283e41)
  • ci: silence the flat-sibling import class for board_os and thinking_os tool modules (d153222)
  • ci: spell out the flat-sibling mypy overrides so the dead glob stops hiding errors (29a1eab)
  • cli: register every command before the main guard runs (311aeb2)
  • cli: restore the dropped return in _normalized_hook_map (d76583f)
  • docs: repair three Verification-Matrix rows that resolved to no tests (80a6293)
  • gates: measure the mypy count over kernel source, not test preambles (b2b80aa)
  • graph_os: drop the duplicated _php_short_name left by the contracts split (1503226)
  • graph_os: roll back the write transaction when a backend statement raises (028196b)
  • hub: name the graph doctor tab and label its informational findings (e5d41a3)
  • hub: start the daemon without project- or session-scoped COS_* env (cadaaa2)
  • memory: render distilled lessons in the agent-memory mirror, not block counters (ba79946)
  • memory: sweep orphaned outbox rows so the embedding drain stops starving (5c809ae)
  • mypy: bind the strict overrides to the module names mypy derives (0489c6d)
  • presence: restore the chat presence probe globals a module split left behind (08d0b65)
  • release: unblock CI — regenerate api-types, split db pool, clean shellcheck (68f2d2b)
  • skills: drop the live model id from the no-hardcoding example (91f1fbe)
  • tests: assert sqlite3.Error so the rollback guard passes on 3.11+ (c179e6b)
  • tests: keep the cos-env marker-parity assertion within its size ratchet (9e27c13)
  • tests: repoint the assertions the cos-env and config splits moved (3ac4da3)
  • update: re-register hooks in the agent settings file when it falls behind (47c7030)
  • update: stop cos update relinking skills the project opted out of (0f8adc4)
  • web: keep the cognition helpers reachable and patchable after the split (76f46c1)
  • web: re-export the moved cognition helpers from the facade (d753929)

Changed

  • board_os: split id allocation, card shaping and forge refs out of _mcp_shared (a0dc6c6)
  • board_os: split reclaim into stranded, pick, report and work-log modules (54d08b0)
  • board_os: split the git commit sources and the edit tool out of task history (e0d5fef)
  • board_os: split the override audit and result types out of the gate validator (f8112e0)
  • board_os: split the ready label and reposition tools out of the lifecycle module (1b5818b)
  • board_os: split workflow into types, wip, deps, frontmatter, and gates (926297d)
  • claude: lift prompt, schema, env and result mapping out of dispatch (0135441)
  • claude: split the SDK dispatcher into options, telemetry and result modules (9501dcd)
  • clean-code: move the error-handling and split-mechanics depth into references (dc6ac4e)
  • cli: move per-project skill enablement out of the skill commands (4e9398c)
  • cli: move the first doc + graph index runs out of the init phase driver (336b885)
  • cli: move the installed-asset manifest engine out of cos update (4b29d21)
  • cli: split AGENTS.md, CI and Docker rendering out of renderer.py (0acefef)
  • cli: split board commands into shared, lifecycle, views, outcome and validate (9a8dccf)
  • cli: split doctor_extras into runtime, adapter and project checks (b77220b)
  • cli: split graph commands into shared, query, reindex, ingest and group modules (cb86e0a)
  • cli: split hub file locations and the service group out of hub_commands (94a61e2)
  • cli: split init target resolution, git bootstrap and materializers into leaves (39f81d7)
  • cli: split main into path leaf, init, adopt, install and runtime command modules (90f4b25)
  • cli: split the core-rule link cascade out of the module commands (9af0a9c)
  • cli: split the doctor check-orchestration sequence into a leaf (34d7fde)
  • cli: split the graph doctor checks into pipeline, storage and embedding leaves (810b763)
  • cli: split the runtime doctor checks into cognition, hooks, presence and schedule (5a8f65f)
  • cli: split the stack registry into manifest parsers and relocation rules (d5c9b0a)
  • cli: split the stack-registry and MCP launch doctor checks into leaves (15f78dd)
  • core: split learning.py and graph.py along their real cohesion seams (da130a2)
  • graph_os: decompose cos_graph_doctor into edge, orphan and path checks (5712ad4)
  • graph_os: decompose the ts symbol walk into a declaration pass and a call pass (b23a6d7)
  • graph_os: move the doctor's orphan classifier to a leaf module (421e0ae)
  • graph_os: split change analysis into impact, rename and contract modules (7dde54a)
  • graph_os: split code_generic into spec, node walk and edge-hook modules (8299fa7)
  • graph_os: split code_go into uid, symbol, type, package, call and regex modules (abcf452)
  • graph_os: split code_php into a uid leaf, symbol walker, and call walker (1bf573a)
  • graph_os: split code_python into uid, decl, tree-sitter, visitor and emit modules (92858a4)
  • graph_os: split code_ts into a uid leaf, node primitives, symbol walk and regex scanners (ff6824e)
  • graph_os: split md_links into a shared base leaf, uids, resolve and section modules (b4ff3fb)
  • graph_os: split the community processes view out of the export tool (0d366dc)
  • graph_os: split the contracts extractor into one module per ecosystem (2b87fff)
  • graph_os: split the graph kernel into envelope, walk and lookup leaves (4b83aa3)
  • graph_os: split the insight tools into structure, centrality, ranking and hygiene (5a76647)
  • graph_os: split the PHP contract scanners into their own module (0d66cc3)
  • graph_os: split the read tools into read, paths, references and similar (69a41cc)
  • graph_os: split the reindex dispatcher into routing, state and layer modules (349d21b)
  • graph_os: split the sqlite backend into a connection base and three mixins (9346953)
  • graph_os: split the TypeScript regex fallback out of code_ts (4ad773a)
  • graph_os: split uid derivation and node emission out of the shell extractor (7681d00)
  • hooks: move doc-sync symbol extraction to its own leaf module (e0f378f)
  • hooks: split cos-env.sh into path, log, io and state function leaves (017772f)
  • hooks: split the branch guard into shared refs, trunk and pr policy (384d02b)
  • hub-ui: clear the last three files over the backstop (18813f1)
  • hub-ui: split DashboardPage into types, format leaf, data hook and widgets (c26f5df)
  • hub-ui: split DoctorPage into one module per diagnostic tab (9dbb0b0)
  • hub-ui: split HubHome into types, shared leaf, icons, card and dialogs (b0213da)
  • hub-ui: split OnboardingWizard into types, constants, controls and a composer hook (fc1514e)
  • hub-ui: split SettingsPage into types, primitives and one module per section (1db5d42)
  • scheduled: split nightly into memory, board and index leg modules (4972240)
  • scripts: split the MCP audit into a shared harness and per-group probes (98bb073)
  • supervision: split the routing policy out of the capacity breaker (45fd7fd)
  • thinking_os: move the embedding outbox into its own module (a6871ea)
  • thinking_os: split cognition into supervise, audit, routing and classify (5f11a81)
  • thinking_os: split cognition.py into dispatch, a shared leaf, and the gates (6506f74)
  • thinking_os: split doc tools into hints, retrieval and header modules (6c6fc31)
  • thinking_os: split doc_indexer into chunking, sources and store modules (a1e6488)
  • thinking_os: split formula dispatch into request building and persistence (cbf7fd4)
  • thinking_os: split learning into extract, suggest, validate and generalize modules (789c734)
  • thinking_os: split memory tools into ranking, semantic and search modules (5452fba)
  • thinking_os: split skill routing, weights and failure anatomy out of routing.py (021b7de)
  • thinking_os: split the agent and situation registry loaders out of cognition (9ed4c36)
  • thinking_os: split the cognitive artifact value types out of the schemas module (0ef8ce4)
  • thinking_os: split the cos_task_* tools into records and lifecycle modules (3169a07)
  • thinking_os: split the human-readable report renderer out of health_check (27bd214)
  • thinking_os: split the MCP envelope into size, trim, subgraph, errors, and gating (d11b6ce)
  • thinking_os: split the metric, recall and learning tools out of _tools_memory (08b2780)
  • thinking_os: split the prompt keyword heuristics out of the formula composer (c4234fb)
  • web: move the cognition router to a leaf and split out the dispatch views (e8c9169)
  • web: split board routes into shared, presence, autospawn, git and view modules (11721b0)
  • web: split cognition chat serialization into a leaf module (080cca3)
  • web: split hub routes into shared, init, init-routes and scan (7dad131)
  • web: split presence runtime readers and context accounting into leaves (8141db5)
  • web: split the cached graph export endpoint off the thin route wrappers (2da5a2d)
  • web: split the cognition chat routes from their SDK, prompt and lookup seams (825389c)
  • web: split the cognition routes into chat and onboarding modules (a2c2957)
  • web: split the config routes into shared, read and mutation modules (a283be8)
  • web: split the presence and activity snapshots out of the SSE stream route (d413170)

Documentation

  • adr-0016: record the held-out eval-gate spike verdict as a measured no-go (b9326b0)
  • ci-gates: record the four burndown splits and the two traps they surfaced (fbb77e5)
  • ci-gates: record why embeddings.py stays whole and how the envelope split cleared mypy (bf34bad)
  • ci: record why the pr_commands split was reverted (b2c8f70)
  • clean-code: adopt one output contract for scripts and checks (99d6000)
  • clean-code: name resource lifetime on the failing path as a rule (d26fd8f)
  • clean-code: record the five resolution mechanisms a module split breaks (e768e4b)
  • insights: record the reproduce-before-fixing lesson from TASK-929 (319f681)
  • insights: record the type-checker re-export trap in a facade split (5e27b56)
  • readme: merge the two quickstarts and correct the supervision copy (b11a987)
  • record the real oversized-file state after the burndown session (cb0f23b)
  • record the session-context exception and the real burndown numbers (b8b30e2)
  • skills: add upload, rate-limit, concurrency, CQS and file-splitting standards (51d48c1)

Build

  • deps: bump pydantic-settings from 2.14.1 to 2.14.2 (#25) (b972718)

0.3.12 (2026-08-10)

Added

  • quality: enforce an 800-line file ceiling at write time and in consumers (859425a)
  • quality: make the file-size budget cohesion-first and surface it everywhere (541b643)

Fixed

  • ci: give diff-cover a real merge base so the gate can pass (20248dd)
  • ci: reformat after the main.py split and tighten the size ratchet (3602dce)
  • ci: stop counting unresolvable flat sibling imports in the mypy ratchet (93a09ab)
  • thinking_os: make the database sibling imports work under both import identities (e257310)

Changed

  • cli: split main.py into cohesive init modules, 3111 lines to 1605 (3f1cabc)
  • thinking_os: split database.py into paths, the migration ledger, and a facade (70f3533)
  • thinking_os: split the 3159-line server.py into a facade plus domain modules (4d12c4d)

Documentation

  • insights: record the four break modes of a dual-identity module split (7414348)

Build

  • deps: bump aiohttp from 3.13.5 to 3.14.3 (#29) (e96e7cf)
  • deps: bump cryptography from 48.0.0 to 50.0.0 (#26) (0f70fed)
  • deps: bump mcp from 1.27.2 to 1.28.1 (#27) (ea27f11)
  • deps: bump python-multipart from 0.0.29 to 0.0.31 (#51) (64296e1)
  • deps: bump starlette from 1.2.1 to 1.3.1 (#50) (86e2a15)
  • deps: bump torch from 2.12.0 to 2.13.0 (#28) (de6cc90)

0.3.11 (2026-08-10)

Fixed

  • ci: keep sigstore bundles out of the PyPI upload directory (5080d3c)
  • ci: write the release SBOM to an existing directory (3461b46)

0.3.10 (2026-08-09)

Added

  • board: add cos task-validate --repair for stale duplicate frontmatter (d609a32)
  • graph_os: reproducible third-party token-cost benchmark harness (ba8d79c)

Fixed

  • cli: stop cos init rejecting piped stdin for the agent prompt (e1b4a86)
  • cli: stop cos update reporting drift on a freshly initialised project (6e0a95f)
  • lint: clear the ruff baseline and fix bug-prone patterns (7caea1e)
  • tests: type the frontmatter-repair tests and use the core.board_os import path (d20bcbc)
  • types: declare all on the split facades so re-exports are explicit for mypy (2c6fdac)

Changed

  • board_os: split mcp_tools.py into a facade over private mcp* siblings (6f0e9fc)
  • cli: split doctor.py into a facade over doctor_checks_* siblings (2ec606b)
  • graph_os: split graph.py into four private tool-family modules (8478d64)
  • tests: split test_cli.py into _cli_suite part modules (141e102)

Documentation

  • add front-matter headers to ci-gates and stability-contract (b19fcf1)
  • correct the mypy baseline and state each gate's real scope (863c5b4)
  • governance: add GOVERNANCE + MAINTAINERS and the agent-workflow contributor guide (4915a67)
  • readme: correct the supervision cooldown scope and list the command (299c4f0)
  • refresh generated indexes for ci-gates and stability-contract (6bd0391)

Build

  • coverage: scope the coverage gate to src/core on the src suites (f7a7dec)

0.3.9 (2026-08-07)

Fixed

  • board: anchor the DoD verify ledger to the project root (1a04d6e)
  • cli: stop cos update deleting adapter-owned hooks (54dac1d)
  • hub: keep a saved supervision target visible when its adapter is unavailable (9d54c91)
  • hub: stop the settings toggle reading inverted (5966767)
  • supervision: enforce trigger modes and make the orchestrator target the role default (f221330)
  • supervision: hold the recovery probe for its whole run and report the soonest recovery (44cfb37)
  • supervision: meter capacity per model pool instead of per adapter (bfe13e6)
  • supervision: restore adapter validation and protect the capacity recovery probe (8451079)

Documentation

  • refresh the engineering index after the supervision doc update (501687f)
  • rules: sync the model-routing rule to the enforced supervision trigger modes (96cefa4)
  • supervision: document probe-lease duration, fleet exhaustion, and the adapter contract (05ee39c)
  • supervision: document the enforced contract, add the operator playbook and README section (b1d0633)
  • supervision: record what a provider limit actually applies to (72c8c2b)

0.3.8 (2026-08-07)

Fixed

  • make supervision configurable without Hub (33001c0)
  • sync shared supervision OpenAPI schema (29e2509)

0.3.7 (2026-08-07)

Added

  • add configurable agent supervision (b924120)

Fixed

  • sync Hub OpenAPI snapshot (bdbe6be)

Documentation

  • define configurable agent supervision (bc5846f)

0.3.6 (2026-08-06)

Fixed

  • ci: refresh golden fixtures and scaffold manifest for the CLAUDE.md entrypoint (4251243)
  • cli: emit Node 22 in generated CI and the TypeScript Dockerfile (cceba34)
  • release: keep the PyPI recovery hatch reachable and pin checkout to the release sha (ce2d180)

0.3.5 (2026-08-06)

Fixed

  • templates: raise the go-fiber dependency floors past 21 advisories (1a30a05)
  • cli: create each adapter's root entrypoint symlink during init and update (beceeaa)

Documentation

  • readme: point the version badge at PyPI instead of GitHub releases (f7376f3)
  • readme: drop the per-project token figures from the scoping section (2ab0420)
  • readme: state skill scoping accurately with measured numbers (57f2cd0)
  • drop residual references to removed third-party material (70788bb)
  • translate all remaining non-English prose to English (f26ff1d)
  • readme: lead with measured context economics + a visible support surface (e265f88)

Build

  • release: pin last-release-sha so the changelog starts at 0.3.4 (e09bc04)

0.3.4 (2026-08-05)

Fixed

  • docs-lint: audit the last unwatched doc subtree + GitHub-accurate anchor slugs (02c8a5b)
  • hub-ui: update vulnerable transitives + react-router-dom to the patched 7.18 (f4a942d)
  • security: declare and enforce why credential-shaped test fixtures are safe (bad64a7)
  • templates: nestjs 11, laravel 12 and puma 7.2.1 floors clear their advisories (1a602ec)
  • templates: npm floors above known-vulnerable ranges + repair the SvelteKit toolchain (5143d3a)
  • templates: quote the go.mod module placeholder so Go can parse it (3254a44)

0.3.3 (2026-08-04)

Fixed

  • cli: honest post-init next steps + document the Hub-optional CLI loop (cf434fa)
  • cli: post-init quick start prints commands that actually run (729ce10)
  • readme: color-safe release badge URL so release-please version bumps keep the color (4ff70b4)
  • readme: dynamic GitHub release badge — works now the repo is public (70a4699)

Documentation

  • lead with the modular story — take only what you need (50e4bb6)
  • Maven Wrapper attribution per Apache-2.0 4(d) + final name sweep (6068c3e)
  • readme: accurate profile ladder + paste-safe shell fences (ce1ba81)
  • readme: live CI workflow badge now that Actions run green in public (488531c)
  • workflow: ship the modularity note to consumer projects, not just the meta-repo (467776a)

0.3.2 (2026-08-04)

Added

  • docs-lint: audit all root *.md and resolve link targets case-exactly (a441719)

Fixed

  • regenerate derived artifacts left stale by the codex-parity change (3068588)
  • release: self-updating README release badge via release-please extra-files (a11c909)

Documentation

  • readme: dynamic release badge so the version never goes stale (3a35cf5)
  • readme: restore Sponsor links now that GitHub Sponsors is live (1eba56d)
  • readme: slim the front page — move graph/docker deep-dives to engineering docs (5a792da)
  • replace absolute developer paths with neutral placeholders (e0ff839)

0.3.1 (2026-08-04)

Added

  • adapters: complete Codex SDK and hook parity (c0e1870)
  • adapters: dual Claude auth mode — subscription OAuth or API key, selectable in Hub panel (7743797)
  • adapters: refresh Codex SDK and hook parity (2abec02)
  • adapters: versioned agent memory — in-repo .agents/memory with self-repairing harness symlink (099fef0)
  • board: autonomy-gated auto-commit of board↔git drift + fix silent drift-task filing (93de359)
  • board: blocked-lane SLA aging via blocked_sla_hours knob (observability only) (fc8c5d1)
  • board: graduated DoD acceptance gate at complete + fix for_kind merge clobber (ae11594)
  • board: hook-block trend KPI in cos retro (blocks/session vs prior period) (46ce11b)
  • board: warn on session-created un-ready icebox cards (create-then-park nudge) (74c684e)
  • cli: --enable-module escape from profile+disable union on init/adopt (92e22e3)
  • cli: add owner-gated brain-sweep-changelog to retire legacy changelog rows (2746981)
  • cli: generate backend Dockerfiles at init — render_dockerfile, cicd-gated (3417a51)
  • cli: generate consumer CI workflow at init — render_ci_workflow, cicd-gated (d5519e2)
  • cli: mention --preset in the interactive stack prompt (54c69df)
  • cli: stack-lint v2 soft checks + factory rows 13-18 + 4 backfilled rules (a67c9b1)
  • cognition: persist sub-agent transcript + cos cognition log --transcript (1cb24c6)
  • core: doctor rule_drift + doc_drift audit + Hub drift banner (F-D) (f4bee05)
  • core: JIT convention-rule reminders via jit-recall glob map (jit-rules.tsv) (a15378b)
  • core: live agent pip on task cards — pulse while the bound session works, click opens its chat (dd05259)
  • core: live-toggle doc prune/restore + correct doc_drift source mapping (F-B) (eb89852)
  • core: LLM friction-lesson distiller behind the dispatcher port (idempotent, budget-capped) (0b70e65)
  • core: module-owned rules — cascade-unlink a disabled module's rules (F-A) (af56209)
  • core: out-of-core module overlay so a plugin registers a module without forking (F-F) (91d4ea0)
  • core: promotion ladder — promoted lessons leave belief surfaces; retro drafts rule promotions (cd79983)
  • core: settings-gated board auto-spawn — drag icebox->in_progress dispatches an implementer (17b282b)
  • cost: dispatch cost analytics + budget ladder; fix budget spent-today query (2b539e7)
  • dispatch: cost-routed multi-model dispatch — bandit, cheaper reviewer, adapter hint (83ead02)
  • dispatch: per-chain budget ceiling, EvidenceBundle flock, max_turns hop-cap (c4fa7ff)
  • docs: lint scaffold docs for untagged module-owned slash commands (F-H) (1554365)
  • governor: dedup make-target verify suites, not only bare pytest (0d56c79)
  • hooks: nudge-git-mode + banner git=pr field so pr-mode is surfaced proactively (dab639b)
  • hooks: nudge-reentry UserPromptSubmit reminder for an unbound in_progress task (94eb7b2)
  • hooks: session-end advises on uncommitted non-docs code at end-of-turn (b53ba48)
  • hooks: visible hook-parity deficits (N1) + rename-completeness teeth (N11) (951817f)
  • hooks: warn-diff-size nudges diff-minimal commits (fail-open) (7ec570c)
  • hub: add Config Adapters tab with runtime, models, and MCP wiring (14997c4)
  • hub: add Marketplace top-nav tab (Extension Manager coming-soon) (b77abef)
  • hub: config stack/adapter/MCP install-remove endpoints (meta-guarded) (636e416)
  • hub: consolidate IA — Settings into Config, Memory into Workspace, slim Diagnostics (0c6e665)
  • hub: declutter task HISTORY — commits-first default, details behind a toggle (d2bf41b)
  • hub: live dispatch observability via trace tee, SSE tail route, and chat fallback (82f308f)
  • hub: mark installed adapters in /api/config/adapters (c098bf8)
  • hub: Memory tab — validation-rate headline, tier groups, lesson evidence (341e3ee)
  • hub: ModulesTab discloses commands/rules + inline refusal reason + dependency why (F-E) (8bd5757)
  • hub: move Overview into Workspace and restore the Design tab (d7f0414)
  • hub: redesign Config tabs — installed-first stacks, grouped skills, adapter/MCP add-remove (0c4c0fc)
  • hub: SettingsPage single-save flow — bottom Save flushes scheduled edits (TASK-836) (4b1c46d)
  • hub: show module reverse-deps + skills; pre-empt a blocked disable in Config (ab35f7e)
  • hub: tag presets with provenance and clarify the composer preset choice (4fb5ad5)
  • hub: typecheck every SPA API path against the generated OpenAPI types (84f82ea)
  • learning: derive per-task reward label from the verify ledger (v52) (833fba5)
  • learning: fire the validation loop for formal tasks + honest trust deflation (300a8fd)
  • memory: async per-session LLM enrichment of changelog observations (default-OFF) (c63c52c)
  • memory: fidelity-gated session_summaries.learned via apply_session_facts (a759a73)
  • memory: MMR diversity + column-weighted FTS5 + RRF fusion in cos_search (7f2b484)
  • memory: wire expires_at forward — TTL stamp at capture + decay GC of expired rows (6198221)
  • modules: lite install profile + per-module hint discovery in Hub (4f9815d)
  • pr-mode: cos pr conflicts — early-warning file overlap across agent branches (3564a23)
  • pr: bootstrap worktree gitignored deps + secrets so first validate works (a2635f4)
  • pr: cos pr triage — ranked digest of open agent PRs for the review bottleneck (9ae239c)
  • pr: local_autonomous rung — cos pr land merges to local integration, guard-carved (d6cb2dc)
  • pr: warn on unprotected integration branch + mark local-rung merge human-only (fdcc42c)
  • pulse: surface last verify-suite result in the agent pulse (63c17a8)
  • repair: budget-capped autonomous repair loop + dispatchable repairer (84a4ef8)
  • routing: flag-gated Thompson-sampling Beta-Bernoulli model router (05ce062)
  • stack-lint: flag a shipped sample test that verify never runs (dbc8be0)
  • templates: add famous-stack presets mern, nuxt-fullstack, laravel-vue, go-react (37355b0)
  • templates: bootable fastapi + django scaffolds (manifest, entrypoint, test, verify) (c829604)
  • templates: bootable go + go-fiber scaffolds (go.mod, cmd/api entrypoint, test, verify) (29d33d4)
  • templates: bootable nextjs + react-native seeds + flat ESLint migration (1ac6921)
  • templates: bootable wordpress php seed (composer.json + phpcs PSR-12) (48fcbd2)
  • templates: bump astro scaffold to v7 with the Content Layer API (bc243bf)
  • templates: language config bundle for go/rust/ruby/php/dart linters (ac0d35a)
  • templates: migrate angular scaffold to v22 with Vitest unit-test runner (0d52c15)
  • templates: per-language toolchain config bundle selected by stack language (52bc7a7)
  • templates: seed .editorconfig + base .gitignore in _base/scaffold (bab7893)
  • verify: add test-web-ui (vitest) suite + make ui-test target (49e8221)

Fixed

  • adapters: add Sonnet 5 / Fable 5 to Claude model catalogue, bump SDK to 0.2.110 (12608aa)
  • adapters: drop codex delegates pointing at removed core hooks (5c544ae)
  • adapters: pass a real UUID as the SDK session id — new CLI rejects non-UUID --session-id (4aad3dd)
  • board_os: panel-first session attribution to stop cross-panel drift (6b48e05)
  • board: board-churn auto-commit fires on 'local' autonomy + Hub lists local_autonomous (4496d3e)
  • board: flag icebox zombie cards + bilingual task-mode classifier (10634d2)
  • board: merge duplicate frontmatter blocks in 12 task files that sync rejected (235af22)
  • board: prune deleted-file task rows on full sync, cascade to child tables (f9a709d)
  • board: stop phantom NULL-reason reverts from idle sibling panels (36932e0)
  • board: YAML-quote frontmatter list items, map legacy fallback status to icebox+ready (f59840c)
  • ci: exclude .ruff_cache from manifest + golden capture — dev-cache pollution (85979f7)
  • ci: resolve 7 Linux-only full-sweep failures + unblock fresh uv resolution (d51c753)
  • ci: resolve adapter-scoped hooks in registry test + drop herestring read-loop (416148f)
  • clarify git config safety limits (ed2d582)
  • cli: apply ultra-review findings to generated CI/Dockerfiles + stack-lint (d206735)
  • cli: cos init substitutes placeholders in all text files, not a 7-extension allowlist (f1fe393)
  • cli: detect nested same-language root collisions + longest-pattern boundary owner (2716ce6)
  • cli: drop shadowed graph-reindex dup, wire cos-mcp-start entry, portable trace-replay path (8b7326b)
  • cli: ensure_gitignore tops up runtime carve-outs on an existing .gitignore (59a5fe9)
  • cli: honor adapter_scope in doctor hook.coverage check (5b7b2cc)
  • cli: materialize wires Makefile -include only when a stack contributes targets (2235b83)
  • cli: renderer preserves file mode; node-express Node>=21; astro doc drift (81d5434)
  • cli: stream init progress to stderr in json mode so create phases advance (04ff999)
  • codex: preserve runtime identity across Hub and hooks (12a8bb6)
  • codex: wire warn-diff-size into codex pretool dispatch + kernel module (0d1319c)
  • cognition: drop repairer's spurious canonical_order; align onboarder registry pin (f6c1b1b)
  • core: anatomy lessons require a recorded remedy; harvest skips headers and frontmatter (023b91f)
  • core: attribute unattended board maintenance to a system actor, not the human operator (aa88cb4)
  • core: cos_search recall correctness — read-only, semantic filters, FTS5 escaping (435bc5a)
  • core: drop hardcoded claude-opus-4-8 literals that broke the anthropic guard suite (0ba07f2)
  • core: full graph stub list, project-root doc-header guard, drop dead experiment script (a5a2111)
  • core: gate parallel dispatch on projected cost so an N-way fan-out cannot overrun the cap (15b0d12)
  • core: honor bound project scope over $COS_DB_PATH in resolve_db_path (16b863f)
  • core: let the distiller use the adapter turn default; filter tool-fumble noise from lessons (7caf198)
  • core: memory lifecycle safety — fresh breakthrough survival + trust_tier decay guard (7fca22b)
  • core: missing DB rows no longer block the nightly board-drift auto-commit (de8fb34)
  • core: outcomes/metrics loop — dedup outcome_history + add time_to_solution metric (3f657b3)
  • core: own 3 delta hooks + fix profile assertion; add tool-owner guard + module verify-suite (ef5d46f)
  • core: panel-scoped gate resolution in session_enrich (a3170da)
  • core: raise board-drift commit timeout to 600s for large staged sets (f0f65a3)
  • core: refuse $HOME as a project root so no phantom DB is minted in the hub state dir (b6ca44a)
  • detect unmanaged hub listeners (e8e157e)
  • enforce protected branch patterns (ee3a85f)
  • error-sweep: classify hook BLOCKs as policy via log_events.event_class (d944209)
  • fastapi: async-first sample endpoint + test, declare pytest-asyncio (4a1ddb1)
  • governance: put comment-provenance ban in always-on Rule 12 + de-contradict TODO hook (7971e51)
  • graph: declare networkx as base dep so the Communities view populates (34b5e9a)
  • graph: honest references count, impact visit_limit + freshness, dead_code FP (cluster 3) (742d9ef)
  • graph: map live extractor ids to provenance, cover edges in export cache signature (ae5b34b)
  • graph: MCP-written freshness-bound graph-gate markers (cluster 1) (8f32678)
  • graph: sweep folder-spine + phantom residue on full graph-reindex reconcile (badce59)
  • graph: type-only TS imports emit imports_type, not a runtime cycle edge (fa38916)
  • hooks: block-protected-files guards src/core skills+rules source, not just renders (142c321)
  • hooks: block-secrets blocks all git-hook-skip bypasses (-n, path/cd/env, core.hooksPath) (894709d)
  • hooks: branch-guard trunk blocks force-rewrite of main + update-ref (pr-mode parity) (c329c5e)
  • hooks: close 6 code-review bypasses/FPs in branch-guard + block-secrets + pr-cleanup (TASK-565) (ed21433)
  • hooks: close git long-option-abbreviation bypasses in 3 client-side guards (f0934a7)
  • hooks: close git-safety bypasses F1-F5 via shared shlex tokenizer (b0792a5)
  • hooks: close indirection, settings-write & pr-mode update-ref HEAD git-guard bypasses (236f8ce)
  • hooks: close separator/grouping bypass of git-verify gate + order-independent force-push (2679f5b)
  • hooks: context-budget marker no longer reports stale pre-compact ctx after /compact (cf20bcc)
  • hooks: context-budget marker no longer reports stale pre-compact ctx after /compact (1022a4a)
  • hooks: data-driven graph-explorer gate in enforce-skill (cluster 2) (50bca95)
  • hooks: defer heredoc/command-substitution commit -m values instead of mis-validating them (7c573f1)
  • hooks: drop dead TodoWrite matcher from track-discovery, clarify Work-Log-vs-todo policy (e9b70b7)
  • hooks: re-arm abandoned-task warning on task-state-change (50f41d5)
  • hooks: surface git_settings fail-open downgrades + jq↔python parity test (49be78a)
  • hooks: surface state-misroute in the per-turn banner (8704d8f)
  • hooks: test-governor lock uses owner-agent pid + release leg, not host-global pgrep (a41227f)
  • hub-ui: confirm pr-mode enable + meta hard-block, always-probe, agent-only note (08c658a)
  • hub-ui: read producer response shapes, send CSRF on mutations, re-scope live logs (25cc454)
  • hub: a11y sweep — WAI-ARIA tablists/listbox + keyboard-operable rows/cards (TASK-835) (6212163)
  • hub: align Observability/CommandPalette/trace consumers to producer field names (3bae64f)
  • hub: allow config mutations on coding-os; mark only active skills on; kernel badge nowrap (b973437)
  • hub: bound trace replay, presence allow-list, patterns envelope (TASK-833) (0ce795d)
  • hub: close module sets over dependents and let the onboarding marker expire (b7df636)
  • hub: Config→Git highlights the active preset, not the Recommended badge (1709204)
  • hub: correct SupportFooter repo handle (kouroshez) + drop 404 payment placeholders (TASK-836) (c9e52ef)
  • hub: data-drive RolesPage agent picker + render single-integer model ids (46424ab)
  • hub: harden /api/sessions payload + bound search sys.path & graph export (TASK-833) (43c456a)
  • hub: honest telemetry + working Activity bell + Search redesign (1523792)
  • hub: honor per-request project scope over ambient env in Hub routes (83a9729)
  • hub: InfoTip a11y (aria-describedby + Esc-dismiss); drop orphaned read-only comment (144fcf0)
  • hub: isolate scheduled run-now, honor cron hour, scope client logs (TASK-834) (c30d648)
  • hub: keep board toolbar and zoom controls clear of the stream/legend/tweaks panels (ca567ef)
  • hub: keyboard-operable switch toggles + WAI-ARIA tablist nav (TASK-835) (8dfe962)
  • hub: make Composer module chips authoritative and land users in the new project (48b0121)
  • hub: make HealthAlarmBar link scope-aware and reconnect LiveStatus SSE on project switch (ece7d9a)
  • hub: plain-language module refusal string + surface toggle cascade notes (de28c5b)
  • hub: preserve task Work Log on board edit; focus deep-linked task; trim dead bell events (f86404c)
  • hub: re-open the Composer when a create job is still running after a reload (b9e2415)
  • hub: real per-session ctx badges for every adapter (1d3e0bf)
  • hub: review fixes for config mutations — cos JSON parse, argv guard, cwd shadow (1012152)
  • hub: scope Config→Git settings per-project + preserve unknown sections + atomic write (0a1c48c)
  • hub: stop Config→Git leaking meta-repo framing to consumers; fix NUL-byte separator (ee02785)
  • hub: stop the board "+ more" button re-fetching an exhausted column page (641b0ba)
  • hub: surface fetch failures on Diagnostics Overview and the Roles panel (f65b5fd)
  • learning: emit enum-valid domain header on filed narratives (c58ff38)
  • learning: link filed narratives to the real slugged task file (cca0db4)
  • learning: mine anatomy lessons from remedy-less backtracks via canonical remedies (b3603bf)
  • load Codex transcripts in Hub chat (ba5b320)
  • memory: drain embedding-outbox under rag interpreter + BGE-M3 similarity floor (641a28a)
  • memory: hide mechanical capture rows as changelog + session-wide write-dedup (be361e0)
  • memory: recalibrate BGE-M3 memory floor 0.55->0.45 to restore synonym recall (8f4b1a6)
  • memory: relabel MEMORY.md trusted-lessons badge validated→seen (8a85d69)
  • memory: split conflated times_validated into times_seen vs times_validated (v49) (eae440c)
  • migrate Codex hooks feature flag (214128d)
  • nightly: reconcile orphan doc chunks + run memory_gc; column-guard gc (625a14a)
  • node-express: exclude test files from pre-install tsc typecheck (d7ebfa4)
  • onboarding: keep readiness on one signal and stop json mode emitting prose (b729f92)
  • pr-mode,hooks: preserve unpushed work on cleanup; anchor session-end advisory (H/J/N) (f811816)
  • pr-mode: cos pr cleanup preserves drifted/peer uncommitted work before destroy (7cfb7de)
  • pr-mode: driver STOP-on-green is signal-derivable via passing-unarmed (D5) (e578778)
  • pr-mode: harden branch-guard double-prefix, gh-api cwd, reaper preserve (D1/D4/D2) (5f65cf1)
  • pr-mode: route misrouted worktree state to a per-worktree quarantine off the hub (fe31593)
  • pr: distinguish merge-queue queued/ejected from pending in ci rollup (9b4f407)
  • pr: harden owner-stamp liveness — refresh on re-open, parse pid past a quoted host (8c43b75)
  • pr: reaper skips a live-but-presence-less worktree via the lock-owner pid (371ed93)
  • pr: surface review-required so auto_merge does not silently deadlock on reviews (c32a5f7)
  • pr: validate autonomy_level at consumption + escalate auto-merge deadlock (d9c47e2)
  • review: apply code-review findings from the 9-task backlog (bugs + doc-drift) (74d4394)
  • review: apply ultra-code-review findings to the TASK-633..642 backlog (76ea6f6)
  • review: correct 6 bugs introduced by the code-review fix batch (1ba0d7f)
  • review: RED test + test-modules coverage + regex/UI guards from max-effort review (daace0b)
  • review: relocate $HOME DB guard to init_db; board sends full body to keep Work Log (955678c)
  • review: restore resolve_db_path raise as the complete $HOME guard; swap fresh Work Log on edit (cee1116)
  • scheduled: nightly.py runs as a direct script — bootstrap src + src/core on sys.path (5d3ec2a)
  • templates: astro problem.ts emits the canonical error envelope, not RFC 9457 (8ae1f46)
  • templates: astro sample test passes astro check; pin Node>=20 for global crypto (2f25745)
  • templates: complete go-fiber v3 migration across docs, skill, rules, boundary (635662b)
  • templates: conform nestjs error filter and docs to the error-format.md envelope (ea8efd8)
  • templates: gate every task-system instruction in AGENTS.md fragments on modules.tasks (04ff621)
  • templates: honest verify + day-one sample tests for 5 stacks (7d5cc3c)
  • templates: node-express verify command drops the dead npx-eslint prefix (e2eaae3)
  • templates: relocate wordpress skill to its stack overlay (stop over-shipping) (4c6b6e0)
  • templates: remove go/go-fiber/svelte shipped-artifact drift (18667a1)
  • templates: repair 4 shipped hard-breaks (dangling rules, go-fiber v3, mvnw, astro content-seo) (3854a0a)
  • templates: ship angular accessibility doc for the playbook's a11y link (76a8931)
  • templates: ship aspnet-core xUnit test project for green dotnet test on init (b5481aa)
  • templates: ship go-fiber go.sum so go vet/test pass on a fresh init (91e5d25)
  • templates: spring-boot scaffold google-java-format + bind spotless to verify (9cfdfb8)
  • templates: svelte vite.config import + vue-nuxt vitest/vite major skew (ee42c5f)
  • templates: sync nextjs/wordpress verify substitutions + revert day-one-red changes (37a7783)
  • templates: wire cross-adapter Channel-2 memory-read pointer into AGENTS.md (90284bd)
  • test: -S in nightly smoke test so the editable finder can't mask a broken bootstrap (5fcf70e)
  • thinking_os: atomic observation dedup via partial UNIQUE index (migration v51) (dcf15b3)
  • thinking_os: close the learn-validate loop on the MCP completion path (5378bc9)
  • thinking_os: session_summary bootstraps src/ so it runs as a file (90780f1)
  • web: attribute unowned panel move/reposition to the human actor (8c70fb1)

Performance

  • core: guard jit-nudge mkdir behind a dir-exists check (e4ab25d)
  • pr: reaper sweep lists worktrees once (O(N)) and rejects foreign-host owners (cc31900)
  • tests: class-scoped scaffold for TestInit + TestClaudeAdapter (cos-init once per class) (3f22dab)

Changed

  • board: self-documenting names over comments in board_coherence (55974f8)
  • core: compress git-workflow, test-discipline, transparency-banner rules 42 percent (dce452b)
  • core: disjoin graph_query/graph_search + honest kernel always-on tool floor (0d12e76)
  • core: drop dead completion_gap read-paths + cos_learn_feedback; measured [Memory] pulse (5192ef9)
  • golden: single SECTIONS SSOT module for capture + parity test (bf4ff33)
  • hooks: behavior-parity harness + delete transitional warn-template-drift hook (d82ffdc)
  • hooks: consolidate branch_guard onto shared tokenizer + fail-closed test (0fb3de0)
  • hooks: merge shell reindex+prune into one ordered reconciler (cluster 4) (1eb8041)
  • hub: decompose ChatView (806L) into chat-turns + chat-turn-views (TASK-836) (f631c23)
  • hub: decompose ConfigPage (1855L) into features/config modules (TASK-836) (37b8f79)
  • hub: derive the scheduled-endpoint payload types from the OpenAPI schema (d055f4f)
  • hub: extract board modals/badges/panels from CosBoardPage (TASK-836) (379bb3f)
  • hub: extract board-shared (types/constants/helpers/context) from CosBoardPage (TASK-836) (e704ee2)
  • hub: extract git-tab-data (types/presets/tips) from GitTab (TASK-836) (77da2d3)
  • hub: extract TaskDetailDrawer + history into task-detail from CosBoardPage (TASK-836) (e04b50d)
  • hub: extract TaskStickyCard/SwimlaneLabel + TopBar from CosBoardPage (TASK-836) (f00ded8)
  • hub: extract the stream-event and trace-timeline models from their views (094448c)
  • hub: route MemoryPage/DoctorPage through api-client (TASK-836) (489baf2)
  • hub: split board-modals into 4 modules all <400 (TASK-836) (6f6956c)
  • hub: split board-panels into 4 panel modules all <400 (TASK-836) (8be4f2e)
  • hub: split CosBoardPage into data/view/dnd hooks + grid — main 928->233 (4b1f82c)
  • hub: split task-detail drawer + GitTab so every module is under 400 lines (5a74c51)
  • hub: split task-detail into drawer + history + edit-form (TASK-836) (4be988d)
  • thinking_os: drop dead record_review + auto-record memory-check on cos_search (78b6176)

Documentation

  • adapters: define current Codex capability and SDK contract (3aca2b2)
  • adapters: state the enforced P8 boundary and sanctioned lazy-import carve-out (fc54993)
  • adr: ADR-0014 unified graph-gate + graph-first-enforcement epic tasks (eb47932)
  • adr: kernel scope boundaries (ADR-0015) + dispatch-deferral partially revived (525c258)
  • adr: record graph-first-enforcement landed C1-C5; scope C6 deferral (ec6e02a)
  • align public-facing docs with current reality before first release (0e64f46)
  • api: regenerate openapi.json — spec drifted from live routes (d97eee5)
  • architecture: complete raptor lens — density, operational cost, worked case study (e0dc8f8)
  • core: align dispatcher contract with current Codex runtimes (e3f6d5b)
  • engineering: July 2026 modularity re-audit + variability-completion backlog (1e1d849)
  • engineering: register derived-store coherence audit in the index (4db6472)
  • fix onboarding clone URLs and stale governance references (7487fa7)
  • governance: add Critical Rule 26 — verify by executing, not by reading (153b5ec)
  • governance: add product vision + raptor consolidation lens as SSOT docs (4b5b8b4)
  • hub: tick-by-tick pre-release audit report for the Hub UI (4b5b00b)
  • index: commit stale auto-index regen for adapters + engineering (6f81c8f)
  • index: list pr-mode-ci-economics playbook in the auto-index (TASK-619) (47615ab)
  • index: re-sort engineering index for the modularity-audit updated date (48ed52a)
  • memory: mark QW-3 shipped as detector, not column (SSOT) (be697a6)
  • memory: persist icebox-parking structural-failure finding (288de5f)
  • memory: reconcile memory.md + retro.md with the shipped memory/metrics tools (79f4e27)
  • modularity: record pass-7 audit + inline the tasks->docs rationale (620a0db)
  • onboarding: document the panel-first install path and the module/profile axis (79a5026)
  • playbook: add multi-agent git layered-defense model + 11 real-world use-case matrix (0893477)
  • pr-mode: document agent-only enforcement boundary + settings durability (7b8d9d8)
  • pr: pr-mode CI economics — fast-gate/full-suite split + reference workflow (c41e84d)
  • research multi-adapter supervisor architecture (1254119)
  • rules: add Test cadence policy to test-discipline.md (d07f6e8)
  • Smoke row in testing-strategy + the as-file bootstrap invariant in scheduled-jobs and hook-authoring. Regenerated golden (hook + skill drift). (e1090cb)
  • templates: add references/anatomy.md to 13 bare stack skills (d4c91b9)
  • test: refresh stale suite-size figures to ~4,850/327 files (e03f87c)
  • tests: testmon spike verdict — DEFER (redundant with verify-ledger dedup) (e7c6dba)

Build

  • pin ruff==0.15.15 — floating pin broke the CI format gate on each release (ec1f607)

Unreleased

Added

Changed

Fixed

Removed


0.3.0 — 2026-05-20

Initial public release of coding-os, the agent-agnostic cognitive operating system for AI coding agents.

What is coding-os?

Three-layer composition that teaches AI agents how to think and how to code:

  • src/core/ — agent-agnostic kernel: MCP server (thinking_os, graph_os, board_os), hooks (62 scripts), rules, skills.
  • src/adapters/<agent>/ — per-agent translation: how the kernel surfaces as .claude/, .codex/, .cursor/.
  • src/templates/<stack>/ — per-stack scaffolds: Django, Next.js, FastAPI, Go, Go+Fiber, React Native, Python library, Meta.

The cos CLI composes the three layers into a consumer project that inherits the same skeleton (own hooks, own MCP, own AGENTS.md).

Highlights of the 0.3 line

Cognitive layer (thinking_os + graph_os + board_os)

  • 11 semantic agent roles (researcher, analyst, architect, documenter, implementer, reviewer, debugger, security_auditor, deployer, observer, refactorer) composable via cos_compose_chain.
  • Append-only schema migrations with idempotent extractors.
  • Polyglot graph extractor: Python, TS/TSX, Go, Bash, YAML, Markdown, JSON, TOML. Parallel reindex (cos graph-reindex --workers N).
  • Knowledge graph backed by SQLite (Kuzu backend retired in B2 series — see ADR 02).
  • 79 MCP tools, all under the cos_* prefix with the ok(data) / fail(category, message) envelope (Rule 13).

Workflow governance

  • Intent enforcement layer: exhaustive-intent vocabulary (FA + EN) triggers evidence-required audit mode (G0–G14).
  • Completion guardian (Stop hook) refuses premature "done" claims without satisfying predicates.
  • Scrumban task system (docs/tasks/TASK-*.md) with axes: swimlane · kind · epic · labels. WIP-limit enforcement.

Web Hub

  • Singleton FastAPI + uvicorn on port 9188, multi-project router via /api/p/<slug>/*. SSE event stream at /api/stream/events.
  • React 18 + Vite + TypeScript + Sigma.js graph canvas + Zustand state.
  • 4 tabs: Graph (3 views — overview/tree/code), Board (Scrumban), Cognition (trace replay), Search.
  • All /api responses ≥ 500 B gzipped (compresses 270 KB → 21 KB).

Adapter parity

  • Adapter capabilities declared in src/adapters/<agent>/adapter.yaml::hook_capabilities — renderer skips registry entries the agent's CLI can't fire.
  • Claude Code: 58/62 hooks fire. Cursor: 59/62. Codex CLI: 21/62 (Bash-only). Codex GUI: 0/62 (.codex/hooks.json ignored upstream). (Historical — the Cursor adapter was removed 2026-06-15 and Codex reached full hook parity 2026-08-03; current matrix: adapter-parity.md.)

Performance

  • Database mmap + ANALYZE on init → 4× faster JOINs.
  • Nightly auto-reindex when graph probe > 24 h stale.
  • Barnes–Hut FA2 layout cuts graph-tab freeze from 10–30 s to < 2 s.
  • Hook timeouts capped at ≤ 30 s (previously up to 5000 s).

Repo hygiene (this release)

  • Apache License 2.0 + NOTICE.
  • SECURITY.md private-disclosure policy.
  • CONTRIBUTING.md + CODE_OF_CONDUCT 2.1.
  • .github/workflows/ci.yml matrix CI on every PR.
  • pyproject.toml [tool.ruff] + [tool.mypy] baseline.
  • .github/dependabot.yml (Python uv, npm, actions).
  • .pre-commit-config.yaml (ruff + shellcheck + prettier).
  • 5 ADRs documenting the major architectural decisions of the 0.x line.

Removed in 0.3.0

  • Internal client references (NakoDigital) replaced with neutral ExampleApp placeholders across scaffold templates, golden fixtures, and the E2E verification script.
  • Developer-local path defaults in verify_phase_c_e2e.py; the script now requires COS_CORPUS_PATH explicitly.
  • Internal experiment artifacts predating the 0.3.0 baseline (see note at top of file).

Acknowledgements

  • The thinking_os methodology draws on John Boyd's OODA loop, the Cynefin framework (Snowden), Wardley Mapping, and DDD bounded contexts.
  • The graph_os layer draws on Roy Fielding's REST dissertation, tree-sitter, and the GraphRAG literature.