Skip to content

v0.28.0

Choose a tag to compare

@anthonyrisinger anthonyrisinger released this 27 Jul 02:48
· 504 commits to main since this release

Highlights

  • Rebuilt Serve around coherent lifecycle, task-board, and lane-chrome
    authorities, improving automatic launch convergence, refresh correctness,
    browser rendering, and live-state performance.
  • Unified Claude and Codex transcript handling on a typed, lossless reader and
    reducer pipeline with safer cursoring, rotation recovery, provenance, and
    cross-surface parity.
  • Hardened durable state upgrades: team, ACK, and maxim authority stores now
    fail closed on incompatible schemas, preserve canonical facts in place, and
    rebuild disposable projections explicitly.
  • Added fleet-safe deployment and release guarantees, including
    drain-before-schema-bump coordination, installed-runtime identity checks,
    real predecessor-wheel rehearsals, and read-only release validation.
  • Strengthened operator feedback and wire contracts across task cards,
    directive ACK/NACK history, metrics, payload validation, strict browser
    typing, and failure diagnostics.
Task-level changes

Changes by project

Lifecycle Release

  • Guide release-notes curators to skip features added and then reverted within the same release window. (6502d9e)
  • Stop the release artifact gate from dirtying the tree its own next step requires clean. (c75b2d6)
  • Give the release gates a read-only entry point so verifying a tree cannot bump or publish it. (381255f)
  • Collapse the second copy of the release gate sequence that prepare and release still inline. (5d4b8b5)
  • Record the authority and projection storage classes as invariants. (a941abc)
  • Reconcile the reset-projections name and its help text. (1fbb235)
  • Documented the projection store as operator-visible state. (57a6013)
  • Collapse migration ladders to one forward step. (e08fa6c)
  • Rename the acronym expansion from Simultaneous to Software. (dc8454b)
  • Replace the stale projection recovery command in operator docs. (1576932)
  • Retune the migration maxims to target accumulated arms. (ddf4e47)
  • Pin every authority version to exactly one shape. (3d69441)
  • Adopt pre-versioned team authority databases. (e270145)
  • Rehearse upgrade from every supported prior release. (85905de)
  • Land lifecycle fixes through the installed CLI, not just the branch. (44a4b67)
  • Gate the in-place upgrade inside the artifact-producing release proof. (530e149)
  • Made the carried-predecessor refusal citable when the manifest contradicts itself. (3727c10)
  • Made the installed-artifact upgrade proof preserve every governed store. (89cb2e1)

Task Identity

  • Fixed stale doc wording: base62->base52 codec docs and gitshadow->shadow filename ref. (911fa29)

Serve Autostart

  • Added a short (~3s) settle wait before auto-starting an agent when 2+ ready tasks trigger zero-wait. (de0c97b)

Lifecycle Launch

  • Unify agent-launch tree update onto the quiet fast-forward safe advance (no raise, no mangle). (3b8d22e)

Serve UI

  • Promote spice.png to the first-page hero at a web-safe size. (bb9b2e7)
  • Find why task activity in the message stream never updates the top pill structures. (632da3d)
  • Find why the Serve metrics SVG renders no series. (adace46)

Task Tooling

  • Task show renders the complete annotation record instead of silently truncating to the most recent 6. (db76d80)

Task Store

  • Build the executable behavior ledger for every Taskwarrior touchpoint behind tw.py. (f474030)
  • Remeasure coordination read/write physics once the revision-owned projection is live. (355e42d)

Serve Web

  • Define the narrow faceted lane-chrome wire contract. (6f2a77e)
  • Close lane-chrome identity and topology ownership leaks. (fcaa0dd)
  • Made ServeLaneStore own lane-chrome state transitions. (d9241a8)
  • Removed duplicate claimed-task authority from lane chrome. (dc72b1a)
  • Pin the lane-chrome facet epoch to a total order the browser reducer can trust. (570624b)
  • Build the pure server lane-chrome projection assembler. (4f20c35)
  • Migrate every server lane-chrome producer to facet deltas. (ed0bf73)
  • Enforce lane-chrome facet epoch monotonicity at the first producer. (0f4b4bb)
  • Route browser chrome updates through one reducer and delete dual writes. (e325204)
  • Date the team-store lane-chrome facets so a remade store still supersedes. (a27f570)
  • Date the task-board facet by both stores it counts in. (7bc0ce7)
  • Prove lane-chrome convergence and remove superseded authorities. (23915ce)
  • Correct the grant-free send comment to the canonical pending facet. (3b245d2)
  • Stop a pre-epoch transcript stamp from blanking every lane. (387ac94)
  • Carry the wire contract past ingress into the functions that read it. (1777eef)
  • Made the generated wire types able to enforce required fields in the browser lane. (0b628ea)
  • Burn down the 145 checkJs diagnostics blocking --strictNullChecks in the serve browser lane. (5c19269)

Serve Lifecycle

  • Introduce the target-scoped Serve lifecycle reconciler runtime. (a5758bc)
  • Harden lifecycle future publication and cancellation. (ee4c6d1)
  • Move automatic lane evaluation into the lifecycle authority. (83fac8d)
  • Publish task and inbox watcher signals to the lifecycle reconciler. (fe8d465)
  • Bound lifecycle timer wake identities across retries. (7baa213)
  • Seal lifecycle retry bookkeeping behind the authority. (8aeba22)
  • Route HTTP and live-bus send intents through the lifecycle reconciler. (a12c92f)
  • Release the explicit launch grant when its intent never reaches its decision. (31d4761)
  • Converge renewal handoff and successor identity in the lifecycle authority. (1232d83)
  • Made inventory and message payloads pure lifecycle projections. (e21753b)
  • Converge automatic launch identity inside lifecycle authority. (a9f47df)
  • Align reused-thread identity test with explicit persistence path. (b2dca01)
  • Delete superseded lifecycle coordination and prove end-to-end convergence. (dec1874)

Serve Latency

  • Build the revision-coherent Serve task-board observation core. (c2d5deb)
  • Derive open-board filters and active claims from shared rows. (b8b9032)
  • Derive task cards, review pressure, and drained metrics from shared rows. (c340ffa)
  • Cross worktree inventory onto one task-board observation. (9eaa24a)
  • Cross lane messages and on-demand metrics onto the task observation. (9f39492)
  • Converge Serve on the task observation and prove one-read behavior. (4d93f71)

Serve Team

  • Migrate team authority schema without destructive resets. (1ee89c2)
  • Preserve source identity and derive renewal lineage at read time. (c65b4d2)
  • Made directive send and ACK records the canonical metric facts. (18be395)
  • Reject archive-first directive attachment collisions. (8b17b8a)
  • Project transcript activity from typed durable transcript facts. (edcc720)
  • Made transcript activity projection and checkpoint recovery atomic. (7444ba7)
  • Scope the checkpoint-loss reset to the source it can account for. (be0e05c)
  • Read task lifecycle metrics from canonical task-plane facts. (4e7a4b7)
  • Isolate remaining observations in a disposable projection store. (ffb0033)
  • Rebuild the Serve projection file when it disappears under a live process. (88c7997)
  • Prove full rebuild parity and remove obsolete observation paths. (fbeeef4)
  • Resolve the duplicated fifteen-field agent identity record in the team plane. (8a3273a)
  • Stop the partial identity write from silently erasing renewal lineage. (b471234)

Session Transcript

  • Define the closed typed transcript event vocabulary with provenance and multiplicity. (60aac4e)
  • Decode Codex transcript lines into the same typed events and settle the context-usage fact. (5b22408)
  • Decode Codex custom tool outputs into typed transcript events. (aea1894)
  • Declare dialect line-hint and signal hooks on AgentDriver with a shared adapter conformance suite. (cd3b8e6)
  • Enforce explicit tool output discriminator at every producer. (f4223c3)
  • Define the assembled-message reducer core and classified-span model. (8ed57d3)
  • Hold the forward cursor before an unterminated final transcript line. (b0e8086)
  • Cross sessions analysis and command records onto substrate typed events. (881a371)
  • Build the differential parity harness for every interpreter crossing. (e45ed05)
  • Cross watchdog prose judgment and ACK archival onto the reducer. (d5735cb)
  • Cross session forensics turn folding onto the reducer. (84096fc)
  • Cross serve message envelopes onto the reducer. (d5f553b)
  • Cross mail-watch ACK extraction and launch-history replay onto the reducer. (162bc91)
  • Keep reducer failure spans out of session turns. (ebf73e1)
  • Carry keyed-run polarity onto directive spans. (cb7e06f)
  • Prove transcript-plane convergence and remove superseded interpreters. (0515dae)

Session Transcript Reader

  • Extract the shared transcript reader engine from the serve cursor/window scanner. (5417b8a)
  • Project sparse reverse transcript chunks exactly once. (54eff2a)
  • Harden the reader engine with a fault-injection contract battery. (d69916a)
  • Unify the three transcript timestamp parsers onto one shared primitive. (10464ec)
  • Exercise independent rotation identity and deterministic append overlap. (af41709)
  • Fold the remaining ad-hoc ISO timestamp readers onto the transcript primitive. (a8bbbf5)
  • Made cursor identity the only forward transcript read shape. (d43ef34)
  • Bind reader records to the lossless typed event stream. (747cc1e)
  • Migrate the usage-fact transcript scans in effort accounting onto the reader engine. (7ee8669)
  • Migrate mail/watch onto the reader engine with a driver-supplied prefilter hook. (f128331)
  • Fold the sessions forward and 64KB reverse line readers into the reader engine. (0880e79)
  • Migrate the serve images and launch-history scans onto the reader engine. (00a55db)

Tests Isolation

  • Stop the layered-consumer config patch leaking into hook repo-root discovery. (9d2a7f3)
  • Patch consumer bindings, not defining modules, in monkeypatched tests. (38005b2)
  • Made the suite's agent-driver pin survive the environment scrub run_serve performs. (4f520d8)

Task CLI

  • Clarify small fixes during review in agent guidance. (59cc5a4)

Studies Typecheck

  • Fold the duplicated typecheck subprocess runner into one helper. (c65ddde)

Tests Lifecycle

  • Split tests/test_lifecycle.py below the file-shape base limit. (09aabc4)

Serve Messages

  • Keep a partial Serve history tail behind the live cursor. (04d743d)
  • Made the messages/messagepresentation split a real seam. (ac5c7e3)
  • Keep a withheld NACK's task card when its refusal is not honored. (43a43bf)
  • Stop Serve inventing task cards for TASK lines the supervisor suppressed. (530116c)
  • Show a task card for a marker-prefixed TASK directive the supervisor captured. (b26ab4b)
  • Decide a directive's line-leading context from the raw message, not the segment body. (670291a)
  • Preserve segment indentation so a directive that opens a segment stays suppressed. (8d8f016)
  • Admit a capture card by directive position, not by directive text. (c2905e8)
  • Keep the opening line's indentation in display_text. (bd67249)
  • Show task descriptions before acceptance in agent-message cards. (36ff3b2)

Hooks Initplan

  • Fold the duplicated git-config file reader shared by initplan and deinitplan. (5868229)

Studies Stability

  • Fold the duplicated SQLite schema-once bootstrap into one shared helper. (9ba66ed)
  • Fold the last two byte-identical helper pairs outside the boarded folds. (6937a87)

Mail Ack

  • Serve publishes a reasonless NACK the supervisor never honored. (9ffd81e)

Task Transitions

  • Bind task transition cache to operations log identity. (78d2d3a)

Task Capture

  • Made the assistant post hook consume each complete message atomically. (1b290a9)
  • Made ACK NACK and TASK share one control-line decoration grammar. (7b6749c)

Serve Taskboard

  • Invalidate Serve task-board observations when the authority store changes. (9e7a50f)
  • Made the task-board store witness survive a platform without birthtime. (e1619f8)

Tests Scaffolding

  • Fold the duplicated git-repo and task-repo test scaffolding into shared helpers. (6e668a3)

Mail Schema

  • Version and fail closed the canonical ACK authority schema. (33d5095)

Studies Docs

  • Reconcile accepted design records after the authority cutovers. (d9336a9)

Mail Ackgrammar

  • Return the directive grammar's internal-only names to private. (b708b08)

Serve Diagnostics

  • Report task-authority freshness from the operations log, not the store mtime. (116f0f6)

Tests Waitaudit

  • Re-anchor the task-board observation wait after the peer store-witness split. (27e6e39)
  • Retire the audit anchors naming call sites the code no longer has. (387ab33)

Tests Audit

  • Tracked the split task-board wait in the blocking-surface audit. (fcaa8ea)

Serve Payload

  • Preserve the failing arm's field-level detail when a wire union rejects a payload. (74dc5c6)
  • Derive the opaque-json allowlist from the schema so an unlisted opaque field cannot pass. (066cc3b)
  • Validate the two index-page globals so every browser payload passes the wire contract. (c2af5aa)
  • Split AgentEnsurePayload so an outcome's fields ride the outcome. (6b204bc)
  • Close the browser-payload emitter gate's blind spot and register the ensure answer. (006d3a3)
  • Declare a wire contract for the three metrics HTTP responses. (4fd0699)
  • Report a wire validation failure as a server fault, not a bad request. (7bd0319)

Serve Audio

  • Play served speech audio under the content type the server declared. (3ae6007)
  • Honor the configured speech rate on the external speech backend. (6d96ee5)

Serve Wire

  • Split spice/serve/payload/wire.py under its base file-loc limit. (82a5bcd)

Lifecycle Drivers

  • Stop silently dropping launch knobs the Claude driver cannot honor. (03c56bc)
  • Removed service_tier: launch plumbing no driver can populate. (c597dae)

Lifecycle Skill

  • Refresh generated skill after baseline advances. (9adf708)
  • Keep the generated-skill refresh inside the boundary never-raises contract. (d2831a7, 08e0c37)
  • Keep an undecodable packaged skill from wedging activation and launch. (d2c1324)
  • Refresh the generated skill when a landing merge carries new packaged bytes. (d3a52ea)
  • Repair an undecodable generated skill copy from its valid packaged source. (ce86706)
  • Keep an unwritable tree from serving an undecodable generated skill. (e6d810b)

Lifecycle Status

  • Type AgentStatus readers so a dropped field fails loudly instead of defaulting. (acdd075)

Task Release

  • Converge the stale-skill activation test on both available_skill_path namespaces. (828c3aa)
  • Made the installed-CLI release gate see uncommitted deployment drift. (f751481)
  • Made the activation convergence fixture enforce the single resolver. (ff19bb7)

Lifecycle Maximmetrics

  • Version-guard the durable maxim-metrics store. (f735c5b)
  • Version-guard the maxim-metrics store or state its unversioned contract. (85d514b)
  • Keep a maxim-metrics store refusal from silencing maxim reminders. (70b23f7)
  • Keep maxim-metrics refusal from suppressing reminders. (992db65)

Lifecycle Deployment

  • Refuse to hand new work to a lane whose supervisor predates the store. (8497eba)
  • Defer an authority schema bump until every older supervisor has drained. (d5a21b2)

Package Notes

  • PyPI release: spice-harness==0.28.0
  • Release commit: a13b7a9c
  • Commit range: v0.27.0..a13b7a9c
  • Commit source: first-parent history grouped by Task-Project metadata
  • Release tag: v0.28.0