Orchestrata Ultimate › Workflow › Improvements

Workflow improvements — dated log

This is the log of changes to how work gets done on orchestrata-ultimate: briefs, hooks, gates, the test runner, the map generators and the deploy launchers. Each entry says what changed, why, the measured before and after, and where it lives. Under RUL-041 a workflow change counts as an improvement only if the measurements improve, so every entry cites its numbers, or says "not measured".

Sources. Commit messages in the orchestrata repo (~/workspace/wt-MAP-PRECOMMIT, origin/master = a4cbc2bdf on 2026-10-23) and the codetools repo (~/workspace/orchestrata.codetools); the dispatch ledger (~/.local/state/codetools/dispatch-ledger.ndjson) for which worker built what and how long it ran; the session's IMPROVEMENT-LOG.md and TEMPLATE-sonnet-agent.md drafts and notes.md; the memory files named in each entry; and the deploy logs. Worker wall times are the ledger's wall_s. "Stopped" in the ledger means the worker's transcript went idle, not that it failed. Clock times are the commits' local time (EDT, UTC−4).

The current workflow these changes add up to is on Workflow; the bugs found on the way are on Bug fixes.

The 2026-10-22 numbers in one table

Change Before After Source
Codebase maps in one process 128 s (eleven processes, each unpickling a 200 MB warm cache) about 15 s e1f3a5047
Per-file delta cache in gen_codebase_map.py about 12 s every run (15.4 s with --no-cache) 1.0 s warm, 1.3 s with one changed file c995f5b88
codetools ast map verb with its own delta cache 33–39 s cold 0.8 s no-change run, in process codetools 25bcbf4f
Maps through the codetools verb in the hook the script with its delta cache: 1.0 s warm, 15.4 s with --no-cache (c995f5b88) 0.5 s warm, 10.9 s cold d4ae44819
codetools ast map fast start path CLI start 1–1.4 s before the verb; tiny repo 2.4–3.1 s; import 118 ms warm orchestrata probe 0.39 s; tiny repo 0.07–0.08 s; import 17.6 ms codetools b518f88a
Worker meets the commit gate first at git commit, after hand-back at SubagentStop: 0.4 s with nothing to review, about 5 s per test file memory commit-gate-precheck
codetools deploy suite-gated verify: 60 s of selection, then 3+ min in 8 shards (install 72) build, promote, identity + smoke checks: 26 s (install 73) memory codetools-install-launcher, reports/ct8-install72/73.log
Tools-installer test module 8 of 11 tests each ran the full installer; 9 of 11 done when the 300 s cap hit six read-only tests share one install; installer phases measured at about 22 s 7309a3488, brief brief-tools-fast.md
codetools without orchestrata orchestrata-ultimate a hard dependency (with its janus-swi source build) codetools --version and ast map run with 0 orchestrata packages installed codetools a5c419f5
Hooks and the venv plain uv run re-synced the venv editable; 3 pushes refused uv run --no-sync 8a2cb42ad (not pushed)

The figure "7.1 s down to 0.41 s warm" quoted for the ast map fast path in the task brief for this page was not found in any commit, log or ledger row read for it; the measured numbers above are the commit's.

Diagram projects-orchestrata-ultimate-workflow-improvements-1

How the brief-improvement loop works

Introduced with the template on 2026-10-22 (d9bcbb7cc, plans/briefs/IMPROVEMENT-LOG.md and TEMPLATE-sonnet-agent.md):

  1. Before dispatch, run the template's pre-dispatch check. A failing check is a brief defect caught early; fix it and log it anyway.
  2. After dispatch, check the fence, re-run VERIFY, check authorship. Every difference between the brief, the report and the re-run is a defect.
  3. Classify: inaccurate (the brief stated something false), incomplete (it left out a guard, stage, stop condition or report field), deviation, agent-error, environment.
  4. Fold back the same session: change a template line or add a pre-dispatch check; tighten wording or move a rule into a staged check; add an environment trap to the guard corpus.
  5. Mechanize on the second sighting: a defect class seen twice becomes a mechanism candidate (brief_lint.py), not another line of prose.

Measures: first-pass rate, follow-ups per dispatch, fence violations, report fidelity.

Diagram projects-orchestrata-ultimate-workflow-improvements-2

The defect log on 2026-10-22 held D1–D22 (D9 out of order) and findings F1–F5. The mechanism queue at the end of the day (second sightings):

Defect class Sightings Candidate Status
Dispatch label not literal (FILES (...): instead of FILES:) D16, D19 brief_lint.py: each label starts its own line exactly as LABEL: queued
A rule held only by a hook is dropped where the hook is silent D13, D15 extend the Bash guard to refuse grep/sed/cat/head/tail on *.py queued
A staged-content gate refuses a commit the brief did not foresee D2, D10 for a commit packet, stage FILES in a scratch index and run every pre-commit scanner before dispatch queued; the review half is now precommit-check (below)

2026-10-23

Hooks run uv run --no-sync

codetools no longer requires orchestrata-ultimate

2026-10-22

The map hook creates docs/ (23:52)

Maps through the codetools verb (22:00)

codetools ast map fast start path (21:54)

codetools ast map verb with a per-file delta cache

Per-file delta cache in gen_codebase_map.py (21:43)

Codebase maps in one process (20:38)

Pre-commit regenerates the maps (19:35)

Tools-installer tests share one read-only install (19:52)

The deployed AST toolkit gets bin/ast (19:25)

Deploy launchers: ct-install, tools-deploy, hermes-deploy

The worker's stop gate: precommit-check + SubagentStop

The dispatch ledger records itself

Briefs: the template, the improvement log, and "better briefs"

Let the tooling run

The runner keeps the full failure (13:54)

Ship's plain-pytest gates run past the observer (10:58)

The Stop hook blocks only for this session's branches (00:01)

2026-10-21

2026-10-20

2026-10-11 to 2026-10-19

Earlier milestones

Still open (2026-10-23)

Item Source
8a2cb42ad (uv run --no-sync) is not pushed; until it is pushed and deployed, re-sync non-editable before each push memory uv-run-flips-venv-editable
The battery's ruff and mypy gates and deploy/ship.sh's verify also call plain uv run; whether they flip the venv is not measured scripts/gates.py GATES argv; deploy/ship.sh
The three user-level hooks are not in any repo, so install-claude-config.sh --delete removes them on each config deploy memory claude-config-deploy-deletes-user-hooks
The source-provenance message prints equal paths for an editable install Gate: source-provenance
brief_lint.py (the label check and the scratch-index pre-commit check) is queued, not built improvement log, mechanism queue
The ledger keys at module level; RUL-040 asks for function level scripts/test_green_ledger.py docstring, RUL-040
Prod promoter rollback does not restore the venv (F4); the ADR-0077 drift gate red since 2026-10-20 (F5) improvement log, open findings