119: v0.14.0 — truth in the pipe, identity for the agents
Where we left off
v0.13.1 (post #116) closed by deliberately not naming a milestone around two
half-finished features — Agent vs Harness terminology (Phase 0 only) and
Quota-Aware Dispatch Reservation (no consumer yet) — and instead shipped what was
actually load-bearing: GOVERNS event-contract extensions and the
init/migrate/upgrade rollback mechanism. That left two real gaps on the table,
named explicitly in docs/strategy/2026-08-15-two-imperatives-roadmap.md:
execution autonomy (can Agy/Grok/Codex be trusted with more of the loop
without Claude babysitting every write?) and workspace context accuracy (does
tracked state — state.db, project-docs/*, memory — stay honest without silent
drift?). Job-truth/gh-write reliability (#701) was called out specifically as a
recurring failure — fixed once, recurred as #935 — meaning it had to be closed
before stacking more autonomy on top of it made any sense.
What moved the goalpost
Nothing rescoped mid-flight this time. The two imperatives' own dependency
ordering held: job-truth/gh-write consolidation shipped first (unreliable
execution floor fixed before building on it), then the workspace-context-
governance vertical slice (which designed the agent artifact storage that
Agent-roles-charters Phase 1 needed), then Phase 1 itself. The one genuine
mid-stream decision was cadence, not scope: rather than accumulating everything
into one eventual v0.14.0, named releases now cut per completed 3+-PR cluster —
literally the Named Release Policy's own existing trigger, just applied more
deliberately than before.
What this PR shipped
Release pitch: the execution floor gets a truth guarantee — every
GitHub-write dispatch now has its claimed outcome independently verified against
live GitHub state instead of trusted at face value — and workspace agents get a
real identity: a storage-backed charter, a synlynk agent init/list/show/edit/disable onboarding surface, and dispatch integration that
resolves role and harness from that identity automatically.
- GOVERNS job-truth/gh-write consolidation (#701, closes #331/#579/#935) —
gh_write_verified()queries live GitHub state through the orchestrator's own identity (never the sandboxed job's) and is now consulted on every code path that decides a--requires-gh-writejob's terminal status, with a regression guard (tests/test_gh_write_guard.py) locking that in. This is the fix for the exact silent-failure pattern this session hit twice more on PR #1006 and #1010's own reviews — a dispatched job reportingexit 0after itsstopReasonwas actuallycancelledright before thegh pr reviewcall landed. - Workspace-scoped agent artifact storage (gh#936) — a real
workspace_id, anagent_idregistry mirroring the existingmember_idpattern, and provenance-chainedcharter.md/memory//statements-of-record/storage with conflict detection on stale-parent revisions. - Agent-roles-charters Phase 1 —
synlynk agent init/list/show/edit/disableas the onboarding surface,dispatch_agent(agent_id=...)resolving role and auto-selecting a harness by capability fit, andsynlynk dispatch --as-agent. - Agent → Harness rename (#993) — freed the
agentverb for the surface above (see post #118). - TPM/session MVP — a
sessionstable,session_idthreaded throughdispatch_agent() → daemon_jobs → cost_entries, and a NUDGE line insynlynk session statusfor unattributed dispatches — the first concrete signal a future TPM role can act on. - #559 (worktree/job accumulation) closed without new code:
synlynk worktree audit/worktree clean, shipped pre-0.13.1, already covered it.
Terminology Phase 0 and Quota-Aware Dispatch Reservation stay in [Unreleased] —
Phase 0 gained Phase 1 this release but Phases 2-4 (memory, capability registry,
portability) are still unbuilt, and nothing yet exercises the reservation ledger
in production dispatch.
What this achieved
Both halves of the two-imperatives roadmap moved from "designed" to "shipped and verified in production" — including on themselves: the job-truth consolidation this release ships is the same mechanism that caught its own predecessor's silent-failure pattern recurring twice during this release's own review cycle, before the fix had even finished landing everywhere.
The goal at the end of this PR
Agent-roles-charters continues into Phase 2 (memory), the reservation ledger
waits for a real consumer, and the two-imperatives roadmap's next item —
whatever surfaces highest on docs/strategy/2026-08-15-two-imperatives-roadmap.md
once its status table is next revisited — picks up from here.