Skip to content

v0.10.0 - Codex E2E reliability hardening

Choose a tag to compare

@cskwork cskwork released this 04 Jul 15:20

v0.10.0 - Codex E2E reliability hardening

Minor release from v0.9.3 to v0.10.0.

This release focuses on making long-running Symphony boards easier to trust:
workers get better prompt context, operators get clearer cost and dependency
signals, workspace reuse is guarded before hooks run, and the 9999 web app no
longer fails on YAML timestamp frontmatter in issue details.

Highlights

  • Stage-local turn watchdogs: workflows can set
    agent.max_state_turns_by_state so reasoning-heavy In Progress work and
    stricter Verify / Learn gates can use different same-state turn limits.
  • Token attention without surprise stops: productive zero-token reports and
    configured agent.token_attention_threshold_by_state values now surface as
    operator attention, while high token use remains telemetry unless an explicit
    hard cap is configured.
  • Stage-aware prompt context compaction: agent.compact_issue_context: true
    preserves user scope, the newest evidence/failure context, and a full-ticket
    path while dropping repeated history from worker prompts. Measured copied-board
    Verify prompt size: TASK-005 went from 5,453 to 3,944 o200k_base tokens
    (27.7% smaller).
  • Workspace ownership protection: Symphony records workspace owner sidecars
    under the workspace root and blocks foreign TASK-* reuse before
    after_create hooks can mutate the wrong project.
  • Hook failure evidence: after_create stdout/stderr and a JSON manifest are
    persisted outside the ticket worktree, so failed setup remains inspectable
    even when the worktree is cleaned up.
  • Stricter contract rewind scope: Verify evidence failures now carry structured
    rows, table row numbers, and expected artifact path shapes into the rewind
    prompt instead of a vague failure note.
  • Dependency-aware file-board dispatch: unresolved dependency IDs now remain
    visible as blocked_dependency beyond Todo, so held work does not silently
    run.
  • 9999 admin UI documentation: README surfaces now lead with the browser admin
    UI and a sanitized screenshot, while still keeping the terminal TUI visible.

Fixes

  • Fixed GET /api/v1/issues/<ID> for issue files whose YAML frontmatter parses
    unquoted timestamps into Python date or datetime objects. This fixes the
    Could not load CODEX-E2E-001: Object of type datetime is not JSON serializable drawer failure.
  • OpenCode 1.17 token accounting now follows step_finish.part.tokens, handles
    nested cache and reasoning fields, and avoids double-counting explicit cache
    totals.
  • File ticket parsing auto-heals shallow accidental indentation on canonical
    metadata keys such as updated_at, preventing post-turn refresh failures from
    malformed agent-authored YAML.
  • symphony doctor now warns on masked setup commands such as || true and
    piped tail by default; workflows can opt into fatal warnings with
    hooks.fail_on_warning_patterns: true.

Compatibility Notes

  • Prompt compaction is opt-in and remains off unless a workflow sets
    agent.compact_issue_context: true.
  • Token attention thresholds do not block or move tickets by themselves.
  • symphony doctor warning-pattern checks are warnings by default.
  • Verify contract checks are stricter about placeholder or prose-only evidence;
    use durable evidence files such as docs/<ID>/qa/... instead of n/a, -,
    or "validated in source" table cells.

Verification

  • Focused release-prep checks on dev:
    rtk pytest tests/test_cli_main_routing.py::test_version_flag_prints_version_and_exits_zero tests/test_webapi.py::test_issue_detail_serializes_unquoted_frontmatter_timestamps -q
    -> 2 passed.
  • dev pre-push CI-parity gate:
    1,109 passed, 2 skipped, 2 warnings.
  • main full local gate after fast-forward:
    rtk pytest -q -> 1,109 passed, 2 skipped.
  • main pre-push CI-parity gate:
    1,109 passed, 2 skipped, 2 warnings.
  • Prior fresh remote-clone Codex E2E rerun reached Human Review on
    CODEX-E2E-002 with worker_exit reason=normal; the issue-detail API
    returned string timestamps.

Commit Scope

  • db55768e6bc2d3d8283ec238a08d566c6e55da5b -
    docs(readme): showcase 9999 admin ui
  • 6fe480b6abc9c2844d35d9974b7cb52466bee10b -
    feat: harden symphony token reliability
  • 8710ec736840a08b07e24013681af9f770639a0a -
    fix: serialize issue detail frontmatter timestamps
  • 1c48d9bb73d82464907e0bfdad69884895fc46b1 -
    chore: prepare v0.10.0 release

Tag target: 1c48d9bb73d82464907e0bfdad69884895fc46b1.