Repository navigation
v0.11.0
Throughput and stability release. Clears the review queue, ships the
scenario framework, and lands five targeted stability fixes that were
stuck on blocked/in-progress engineer lanes.
Scenario framework (tickets #636 – #646)
- New
tests/scenarios/integration target driving the real
TeamDaemonagainst in-process fake shims (FakeShim+
ShimBehavior) on per-test tempdirs. Zero subprocess spawn, zero
tmux, fully deterministic. - 22 prescribed scenarios: happy path + 7 regression scenarios (one
per recent release bug) + 14 cross-feature scenarios (worktree
corruption, merge conflicts, narration-only, scope fence
violations, ack loops, context exhaustion, silent death,
multi-engineer, disk pressure, stale merge lock, and more). proptest-state-machinefuzz harness:ModelBoardreference modelFuzzTestSUT + 10 cross-subsystem invariants + three fuzz
targets (fuzz_workflow_happy,fuzz_workflow_with_faults,
fuzz_restart_resilience).
- New
TeamDaemon::tick() -> TickReportfactoring so tests can drive
one iteration at a time.run()keeps signal handling, sleep
cadence, hot reload, heartbeat persistence. ScenarioHooksfeature-gated public test surface so integration
tests can manipulate daemon state without widening visibility of
daemon internals.- CI wiring:
cargo test --test scenarios --features scenario-test
runs on every PR (~60s); nightly cron runs fuzz targets in release
mode withPROPTEST_CASES=2048. docs/testing.md— end-to-end guide to running the suite, writing
a new scenario, using fake shims, and reading fuzz shrinks.
Review queue landings
- #629 (
src/team/telemetry_db.rs, +557/-41) — auto-repair
legacy telemetry schemas ininit_schemawith a column-aware
upgrade path. Replaces blindALTER TABLEpatterns that masked
missing columns until first write or read failures. - #592 — parallel evolution on main already implemented the
auto-merge gate (merge_request_skip_reason+
AutoMergeSkipReasonenum withWrongStatus/MissingPacket/
NoBranchcategories and a full unit test catalog). - #631 — centralized supervisory notice pressure classifier in
src/team/supervisory_notice.rs, consumed by both manager digest
routing and inbox digesting. - #621 — supervisory inbox digests now count only actionable
notices; status output suppresses stall signals when triage or
review backlog is present.
Stability fixes
- #634 Supervisory shim restart recovery
(src/team/daemon/health/poll_shim.rs) —
handle_supervisory_stallnow honors thestall-restart::{name}
cooldown so a stall check firing right after a restart cannot
re-trigger another respawn (previous behavior degraded into
repeated control-plane disconnects as
orchestrator disconnected / Broken pipe). After a cold respawn
the daemon tracks the member asIdleuntil the freshly-started
shim emits its firstStateChangedevent. +1 regression test. - #635 Completion rejection bookkeeping drift
(src/team/merge/completion.rs) —is_narration_onlynow
requirestotal_commits > 0. Fixes a drift where zero-commit
attempts double-counted as narration-only rejections and
silently escalated after one extra retry. +1 regression test
covering mixed zero-commit → narration → narration sequences. - #618 Supervisory stalls report actionable backlog
(src/team/status.rs) — added a regression test pinning
actionable_backlog_presentsuppression of generic stall text
whenneeds review/needs triageis active. - #612 Collapse stale escalation storms
(src/team/inbox.rs,src/team/messaging.rs) — new
extract_task_ids_from_bodyanddemote_stale_escalations
helpers.format_inbox_digestnow demotes escalations whose
referenced tasks aredone/archivedon the board from
Escalationcategory toStatusso stale spam no longer occupies
top-of-inbox actionable slots.--rawview is unchanged. - #630 Post-approval dirty lane recovery
(src/team/daemon/automation.rs) —reconcile_active_tasksnow
callspreserve_worktree_before_restartbefore clearing an
engineer whose task landed asdone/archived, snapshotting any
dirty tracked work into a preservation commit so the worktree
can be freed for the next assignment instead of parking the
engineer on the completed branch indefinitely.
Housekeeping
- #598 archived — Discord/Telegram bot-token rotation moved to
.batty/team_config/board/archive/with an operator runbook note.
Cannot be completed from repository code; requires provider-console
access.
Numbers
cargo test --lib: 3,410 passing (was 3,369 at 0.10.10; +41)cargo test --test scenarios --features scenario-test:
58 passing (new target)cargo fmt --check: clean