Skip to content

v0.13.0 - Architecture deepening (C1-C6)

Choose a tag to compare

@github-actions github-actions released this 12 Aug 18:08
· 13 commits to main since this release

v0.13.0 - Architecture deepening (C1-C6)

Released 2026-08-09.

Refactor-only minor: no new commands (inventory stays 6), no layout change —
six architecture deepenings that make the bundled runtimes, gates, and
imports single-homed. Behavior changes are narrow, sanctioned corrections
(see below); everything else is movement, not semantics.

Contract v1 lands atomically (C2, ADR-0018)

  • Capture contract rules move into one package-internal module
    mcp/evidence/capture_contract.py: write-side parse_capture_contract,
    read-side validate_capture_snapshot, and the contract-fields JSON Schema
    fragment the provider composes (const/enum/required share one source, so
    schema and parser cannot drift).
  • G6 now validates bound manifest request snapshots through the same read
    authority instead of hand-written partial checks. Sanctioned correction:
    malformed viewport shape or missing freeze fail closed
    (was lax).
    New rule IDs G6.capture_viewport_shape / G6.capture_freeze; existing
    G6.capture_schema / G6.capture_viewport keep wording.

Preview integrity deepens (C1, ADR-0008/0013)

  • One read-only mcp/preview/integrity.py owns prototype digest, feedback
    floor, current round, and confirm validity; G5 and run status consume the
    same snapshot. run status aligns with G5 on Preview occurrence.

Stage registry (C4, ADR-0021)

  • scripts/stages.py is the single home for named stage specs (SKILL.md step
    mirror), regular resume actions, and the shared artifact names
    (evidence/, manifest.jsonl, point-back.md, decision-report.md,
    spec.md); run status and G6 share them, so the table and the names cannot
    disagree.

Closed-loop gate split (C3, ADR-0023)

  • validate_run.py (1262 → 272 lines) is a thin orchestrator over focused
    gate modules: g1_spec, g2_g4_pointback, g5_preview,
    g6_evidence, g6_warnings, with shared ledger/manifest parsing in
    g6_records. Rule IDs, messages, ordering, and exit codes remain unchanged.

Real import seam (C5, ADR-0022)

  • Cross-runtime sys.path adapters (31) collapse to one package-root
    bootstrap + absolute design_playbook.* imports; mcp/ and scripts/
    become importable packages. The duplicated root scripts/run_status.py
    dev copy is removed (one copy remains, in the package).

Preview versions collapse (C6, ADR-0024)

  • versions.py no longer reaches through transaction's private seam: the
    shared primitives (atomic write, directory lock, entry load, log render)
    are transaction's public API, and the lock policy is one source
    (DIRECTORY_LOCK_*) — no second lock namespace to desync.

Release-boundary notes

  • Per ADR-0018, capture contract v1 ships as one merge/release boundary;
    old unversioned run-local evidence requires recapture (no dual-read path).
  • main stays the stable channel (ADR-0015); this tag is the first surface
    carrying the deepening branch.