v3.2.1
TrafficGuard/typedaiv3.2.1Jun 18, 2026by github-actions[bot]
AI Summary
A patch release designed to stabilize the scaffolds around v3.2.0 by remediating blocking issues observed after the initial release. It focuses on fixing orchestrator coordination reads, charter coherence, and CI gate stability.
Key Highlights
- Fixed orchestrator API to correctly resolve missions that exist only in coordination worktrees by adopting a canonical mid8 cascade.
- Resolved charter status and sync coherence issues, including a crash on non-JSON-safe datetime and BOM/CRLF hash divergence.
- Re-greened the architectural CI gate to support Python 3.11 and 3.12 f-string tokenization.
- Decomposed `merge.py` by extracting the `baseline_merge_commit` logic into a dedicated module.
New Features
- Coord-read of coord-only missions.
- Charter status and sync coherence improvements.
- Architectural CI gate stability.
- Merge module decomposition.
Full Release Notes
Patch release stabilizing the scaffolds around the functionality introduced in 3.2.0. Remediates blocking issues witnessed after 3.2.0; not every discovered issue is remediated here, and further patch releases are expected in quick succession. ### 🐛 Fixed - **Orchestrator coord-read of coord-only missions (#2016):** `orchestrator_api` now resolves a mission that exists only as a coordination worktree (no primary `meta.json`) by adopting the canonical mid8 cascade (`meta.mid8` → declared `mission_id` → `<slug>-<mid8>` tail) instead of a strict-only reimplementation that returned `None`. Legacy non-coord missions keep their primary-read path; genuinely unresolvable handles still fail closed. - **Charter status/sync/preflight coherence (#2009, epic #2007/C2):** `charter status --json` no longer crashes on a non-JSON-safe `datetime` in the bundle metadata; the DRG "`built_in_only` + stale `graph.yaml` residue" state is now a non-blocking read-time diagnostic instead of a preflight-blocking `invalid`; and a BOM/CRLF hash divergence between `sync` and `status`/freshness (which produced a `noop`-despite-stale `charter sync`) is fixed by canonicalizing line endings/BOM in the single `charter.hasher.hash_content` seam. Regression tests pin the already-landed status side-effect-free and hash-unification fixes. - **Green the architectural CI gate (#2025):** corrected pytest markers on a subprocess/git test, removed a mission-diff-scoped test that did not belong on `main`, and made the architectural ratchet composite keys interpreter-stable (Python 3.11 ↔ 3.12 f-string tokenization), re-greening the `tests/architectural/**` shard that went red when 3.2.0's gate-un-mask first ran on `main`. ### 🔧 Changed - **merge.py decomposition, slice 1 (#2027, epic #2026):** extracted the `baseline_merge_commit` record/verify cluster from the oversized `cli/commands/merge.py` into a dedicated `specify_cli/merge/baseline.py`, behavior-preserving with back-compat re-exports (public + legacy private names). - **Charter constant single-sourced:** the `_GRAPH_FILENAME` value, previously duplicated across three modules, now resolves from one leaf `charter.synthesizer._constants`. ### 🐛 Fixed (security follow-up) - **SonarCloud + Dependabot:** re-exported the charter package helper named in `__all__`, hardened merge bookkeeping projection so status-surface paths cannot resolve outside trusted repo roots, and refreshed locked crypto/tooling dependencies to patched releases (`cryptography 49.0.0`, `pip 26.1.2`) so the security gates stay clean.