Repository navigation
lode v1.2.1
214 tickets landed on trunk since v1.2.0 (2026-07-24). This release is dominated by hardening the
unattended build/land/sweep autonomy loop and the shell gates around it, plus a broad test-suite
consolidation and a round of LLM-provider and indexing reliability fixes.
Features
- /sweep: list deferred-state tickets in its report (surface-only, never reviewed) (lode-1q2i)
- /sweep §2b: surface stranded in_progress tickets carrying no pipeline label (rebuild after land bounce) (lode-ppki)
- Derive lock-gen Python from .python-version (single source of truth) so requirements.lock can't flap (lode-sys4)
Epics completed
Adopt ruff 0.16's remaining default rules requiring rework (lode-cs5u)
Brings the repo onto ruff 0.16's full default rule set, adopting the rules that needed real code changes rather than suppression.
- Reconcile docs/stack.md's ruff section with the settled 0.16 policy (ju25's unpaid docs AC) (lode-cs5u.1)
- Adopt PLW1510 (subprocess-run-without-check): add explicit check=False repo-wide (lode-cs5u.2)
- Adopt six small mechanical ruff rules (ISC004, B008, B017, FLY002, C402, C408) (lode-cs5u.3)
- Adopt BLE001 (blind-except): add exc_info=True logging at all 9 sites (lode-cs5u.4)
Fixes and internal work
Landing pipeline — /land, /sweep, /code, /release
- /land's single-lander lock is inert: trap EXIT fires at the end of Section 0's own Bash block (lode-aps3)
- /land Section 1's $STATE_DIR wipe destroys the lock token Section 0 just persisted -- every pass's ownership checks run blind (lode-l7mj)
- /land: Section 3's merge loop depends on shell state that does not survive across tool calls (lode-sfnb)
- /land: $CONFLICTS still crosses a Bash-invocation boundary between its producer and the needs-rebase kick-back that consumes it (lode-rfon)
- Audit and fix land/SKILL.md's remaining cross-block shell-state instances (beyond lode-rfon's $CONFLICTS) (lode-p1r3)
- /land Section 3's isolation-replay block runs an unguarded 'git reset --hard origin/trunk' (same class as lode-pcee, one section over) (lode-gczf)
- /land Section 1: the -C "$(git rev-parse --show-toplevel)" idiom gives false assurance, and the destructive reset omits it entirely (lode-pcee)
- /land: two more cwd-assuming mutation blocks in land/SKILL.md are unguarded, and lode-gczf's scope rationale over-claims for one (lode-pxyt)
- land/SKILL.md Section 1's residue print uses
rtk git log, which silently drops merge commits (lode-eza9) - /land: a machine-fault stop leaves local trunk carrying unpushed merges (no pass-start reset) (lode-k9ef)
- /land: hoist the per-pass $STATE_DIR wipe out of Section 3a into Section 1, so no earlier writer has to be verbally ordered around it (lode-wjw4)
- Pin /land's gate-before-push ordering mechanically (lode-rlz8's declined option (b), re-costed) (lode-youi)
- Cover /land's two uncovered heartbeat gaps (Section 0->2a, Section 3->4 release) (lode-v4sv)
- /land's lock TTL measures acquisition age, not idle time: add a heartbeat (lode-m87j)
- /land's stale-lock reclaim is not atomic: two ticks can both reclaim the same lock (lode-ao95)
- land-lock: acquire's exit 1 conflates 'another lander' with 'this machine can never land' (lode-119w)
- land-lock.sh's reclaim path never re-checks gate ownership before the destructive rm -- lode-q9pm does not cover it (lode-78ih)
- scripts/land-lock.sh: a rev-parse failure escapes as git's bare 128, outside the script's documented 0/1/2 exit contract (lode-8qkb)
- scripts/land-lock.sh derives the lockfile from --git-dir, so a worktree-dispatched /land takes a DIFFERENT lock (mutual exclusion silently does not hold) (lode-xkpd)
- Wire an owner-token ownership check into land-lock.sh's heartbeat (rebuild after land bounce) (lode-kmrs)
- land-lock.sh's ownership check is opt-in per call site: consider making it a script invariant (lode-yuwt)
- land-lock reclaim: close the alive-but-stalled gate-holder hole (evaluate flock vs a gate-ownership check) (lode-y3dw)
- land-lock: a permanent MACHINE FAULT still only surfaces in per-tick output nobody reads (lode-oup2)
- land-lock.sh's stale reclaim-residual parenthetical, plus two blind spots in the stall-hook scan test (lode-78ih review follow-ups) (lode-qg6g)
- land-merge-one.sh's empty-own-token warning deserves a BEHAVIOURAL pin, not just a textual one (lode-sp9l)
- Collapse the triplicated land-lock owner-token threading explanation to one canonical block (lode-1n4x)
- Extract /land Section 4's worktree-GC predicates into a tested scripts/ helper (lode-9owc)
- land-escalated has no exit for 'amend an accepted branch held by a defect in already-landed code' (lode-wp2r)
- Reclaim leaked agent worktrees: 2.2 GB / 14 dirs, 8 permanently unreclaimable by /land's sweep -- and decide who owns machine-local leak detection (lode-yrtu)
- Consider moving the main-checkout assertion INTO scripts/land-merge-one.sh rather than guarding its two call-site fences (lode-1nty)
- scripts/assert-main-checkout.sh's exit-1 diagnostic narrates only Section 1's command set (lode-ibfw)
- land/SKILL.md 2c: 'qualifies by construction' for land-review's scratch worktree is falsified by lode-nt98 (lode-qv5t)
- Cross-reference scripts/recycled-worktree-guard.sh's undischarged premise into land/SKILL.md (or assert it) (lode-rlz8)
- land/SKILL.md guard coverage is pinned per-known-fence; nothing fails when a NEW unguarded mutation fence appears (lode-1d2y)
- land/SKILL.md's guard pins are per-fence and hand-anchored: a NEW unguarded cwd-resolved mutation fence is caught by none of them (lode-8p3c)
- /sweep §7 re-derives NEW_IDS after §6 already rewrote the digest, so it is always empty -- no push, no new-items report, ever (lode-fm7t)
- /sweep: §1/§2/§4 bd list queries silently truncate at bd's default --limit 50 (lode-hwbm)
- /sweep §1/§2: bd query failures are undetectable and silently empty the digest (lode-5qbi)
- /sweep §2b: persist $STRANDED to $SWEEP_TMP and read it back in §8 (lode-5qsv)
- /sweep §2a/§2b assign DEFERRED=/STRANDED= without persisting to $SWEEP_TMP (lode-lrg2)
- /sweep: a §2a/§2b query error is not actually reportable in §8 (lode-s6fg)
- /sweep §2b lists in-flight builds as stranded (no age discriminator) (lode-3k6x)
- /sweep §2b: no test executes the age-discriminator query (24h arithmetic is unpinned) (lode-42fh)
- /sweep §2b's pipeline-label roster is hand-maintained; §2a/§2b duplicate the report-only contract (lode-mm73)
- /sweep: decide whether a land-escalated + deferred ticket should still notify (lode-o7ai)
- Audit /land, /epic-audit, /code, /release for the same unbounded bd list --limit-50 truncation as lode-hwbm (lode-2gun)
- .claude/statusline.sh carries an unbounded bd list --json missed by lode-2gun's audit (lode-9bbq)
- Nothing gates --limit 0 on bd list call sites -- add a scanning test (lode-200t)
- Remove the correctness-review Workflow from the /code path (lode-rlyx)
- correctness-review workflow: a crashed VERIFY agent defaults its finding to 'refuted', silently discarding real bugs (lode-wtwb)
- release skill: bump-derivation snippet silently under-detects feat/fix (leading-newline bug) (lode-ns3r)
- /release skill: LATEST_TAG selection + version_gt() are untested inline shell, duplicated in scripts/release.sh (lode-b2bf)
- scripts/release-bump.sh: four grep call sites conflate 'no match' with a grep machine fault, and the result picks the release version (lode-umtc)
- Wire scripts/release-latest-tag.sh into the shared gate-lib.sh gate_could_not_run() helper (lode-25xp)
- recycled-worktree-guard.sh reads local trunk, which /land leaves un-pushed for the whole merge window (lode-isl3)
- Reconcile the 16 doc/script sites still describing recycled-worktree-guard.sh as reading bare local trunk (lode-isl3 fallout) (lode-opgw)
- Consolidate the duplicated recycled-worktree-guard prose (decisions.md re-narrations + 4 copy-pasted quick-card rows) (lode-zt62)
- Re-home the general recycled-worktree-guard material buried under agents-workflow.md's baseRef-fresh h4 (lode-9ag9)
- recycled-worktree-guard.sh's .claude/worktrees/ glob anchors are unpinned by its tests (asymmetry with isolation-guard.sh) (lode-v12j)
- Gate the skills' fenced bash blocks against cross-block shell state, and audit /sweep + /release (lode-x495)
- code-reviewer dispatched with NO isolation worktree -- cwd pinned to the main checkout on trunk (lode-ska2)
- Probe whether isolation: worktree frontmatter (vs call-site option) prevents the lode-ska2 no-worktree dispatch fault (lode-ojsr)
- Drop /land's call-site isolation param once land-review frontmatter isolation is confirmed (lode-p2vi)
- Run a top-level dispatch probe (mirroring lode-p2vi) to test isolation: worktree frontmatter for coding/code-reviewer (lode-09td)
- docs/agents-workflow.md's lode-p2vi paragraph makes the same single-variable overclaim lode-09td's limit (1) disclaims (lode-p1o4)
- Decide: mechanically enforce isolation:"worktree" on agent dispatches, or record why instruction-only is accepted (lode-kt6g)
- Agent docs' venv-activation step is unrunnable under worktree isolation (lode-6874)
- Agent-doc gate block: the restore/undo dance for a not-yet-landed scripts/nox.sh has a poisonable HEAD oracle (lode-828x)
- The 'git restore --staged .beads/issues.jsonl' cluster still hardcodes the path at four live sites (lode-2nw5)
- The two beads passive-export paths are hardcoded in three unrelated places, in three different syntaxes (lode-do3q)
- bd dolt push call sites were enumerated with a grep that misses unprefixed invocations (lode-bpl)
- Move Opus 4.8 model references to Claude Opus 5 (claude-opus-5) (lode-d1sr)
- land/SKILL.md's own-token read-back sites fail OPEN silently: an empty $MY_TOKEN disables the ownership check with no diagnostic (rebuild after land bounce) (lode-xyty)
Gate scripts & the shared shell library
- Extract the duplicated gate_could_not_run() exit-2 helper shared by scripts/*.sh (lode-090f)
- Extract the exit-1-is-content partition into scripts/gate-lib.sh (6 sites, 2 gate scripts) (lode-1mea)
- Consolidate scripts/gate-lib.sh: migrate the stranded land-merge-one.sh copy and make every consumer fail CLOSED on a missing library (lode-bss5)
- tests/test_gate_lib.py: sweep that no gate_could_not_run call site sits above the guarded gate-lib.sh source (lode-b4md)
- scripts/validate-mermaid.sh: source gate-lib.sh above REPO=, so the REPO= guard stops being a second hardcoded half-contract (lode-dyq0)
- Make gate-lib.sh's GATE_ADVISORY ordering structural instead of a convention (lode-ysr6)
- Add lode-ysr6's GATE_ADVISORY source-positional-args decision to docs/decisions.md (lode-szgb)
- Weigh replacing gate-lib.sh's --no-advisory sentinel with an assignment-prefix binding (lode-nwqb)
- Decide whether scripts/gate-lib.sh's header narrative should move to docs/ (lode-k4as)
- Document the gate exit-code contract (0/1/2) once, instead of restating it per gate (lode-jhry)
- Document why an in-skill GATE COULD NOT RUN guard exits 1, not 2 (the exit-2 convention binds scripts/, not agent-executed fences) (lode-vmnx)
- The three precondition guards have no written contract, and two of them now disagree on whether a failed git rev-parse may escape as raw 128 (lode-t6ni)
- scripts/validate-mermaid.sh: the shebang's -e routes machine faults to exit 1 (its CONTENT verdict) (lode-3xqb)
- scripts/validate-mermaid.sh: a grep machine fault silently SKIPS a doc and can report a clean PASS (lode-yoc3)
- validate-mermaid.sh guards on 'command -v docker' (a proxy) — with the engine down it reports every doc as FAIL, so a broken gate looks like broken content (lode-9i2p)
- scripts/validate-mermaid.sh: AUDIT header site inventory is not exhaustive (rebuild after land bounce) (lode-32tc)
- External-tracker write guard false-positives on gh command names quoted inside unrelated text (lode-obox)
- gh-write guard: a quoted-heredoc body is scanned as if it were live shell (lode-d5je)
- sha-fabrication-guard.sh shares the quoting-unaware splitter, so it carries the same false-positive class (lode-dia6)
- gh-write-guard _split_unquoted is O(n^2) and its gh pre-filter is too loose to gate it (lode-vrhu)
- _split_unquoted is still ~740ms on a 25KB command; the per-character bash loop is now on two guards' hot path (lode-rjqm)
- Record the decided SHELL_QUOTE_SPLIT_MAX_LEN outcome: keep 16 KiB, accept the false DENY (docs only) (lode-qzg4)
- tests/test_skill_bash_state.py's ALLOWLIST has no liveness pin -- a dead entry silently masks the violation it once excused (lode-e49j)
- _dead_allowlist_entries' live-set is looser than the sweep it pins: a non-mutating line reads as live (lode-dkak)
- _dead_allowlist_keys' liveness is correct only by where a filter happens to sit (lode-dutt)
- _dead_allowlist_entries' live set still ignores the block-level guard state _unguarded_mutations gates on (lode-eu04)
- _KNOWN_ENV_VARS has no liveness pin, and LAND_LOCK_STALE_SECONDS is ALREADY DEAD -- masking repo-wide (lode-rscn)
- test_bd_list_limit_gate: _is_unguarded runs the per-char _command_segments loop on every line, incl. the 96.7% with no 'bd' in them (lode-vzj7)
LLM provider, model tiers & configuration
- Wire ModelTier.reasoning_effort through to Anthropic's output_config.effort (lode-wnz1)
- thinking={type:disabled} is not universally accepted -- Fable-class override 400s (lode-3dlt)
- output_config.effort on a model that doesn't support it is a reachable unhandled BadRequestError (lode-90o7)
- Per-tier max_tokens: ModelTier pairs (model, reasoning_effort) but not the output budget (lode-d70n)
- enrichment_llm forced-tool-use branch: no max_tokens headroom for a thinking-capable Kind.RUNTIME override (lode-jgus)
- qa.MAX_TOKENS 8192 + adaptive thinking vs the unchanged 120s llm_call_timeout_s (lode-wfyx)
- reasoning_effort value is validated at the provider seam, not at config load -- a typo dead-letters jobs instead of failing at startup (lode-tvps)
- llm_call_timeout_s now bounds only enrichment -- consider renaming to enrich_call_timeout_s (lode-7y6s)
- docs/configuration.md's "no dated-snapshot form" claim is false for claude-haiku-4-5 (lode-sdjb)
- AnthropicProvider.collect_batch's two SDK calls still escape the seam raw (lode-i7yr)
- collect_batch's JSONL results iteration escapes the seam as a raw httpx/json exception (lode-3gtu)
- collect_batch wrong-shape guards: complete the chain enumeration and fix the custom_id contract break (rebuild after land bounce) (lode-i821)
- submit_batch rebuilds the identical JSON schema once per batch item (lode-a31q)
- lode add's immediate-enrich fast path doesn't catch LLMAuthError (or non-auth LLMProviderError) either (lode-s08c)
- lode work surfaces a non-auth LLMProviderError as a raw traceback, not the actionable message the docs promise (lode-yx1c)
Indexing, enrichment & worker reliability
- worker.drain builds a fresh FastEmbedEmbedder per embed job, so a drain of N versions pays N ONNX model loads and N HF revision probes (lode-j5r2)
- Every embed job still rebuilds a VectorStore (lancedb.connect + open_table + schema compare), ~4.5-7.3ms/job, the same hoist-me shape lode-j5r2 fixed for the embedder (lode-2brb)
- FastEmbedEmbedder resolves the HF model revision eagerly in _load, so every query-only embed pays an untimed live HTTPS call nothing reads (lode-dj6m)
- A failed HF revision probe now latches for a whole 'lode work' process, stamping model_revision = NULL on every version it indexes (lode-fxse)
- resolve_model_revision's HF probe is untimed, so indexing with no network and HF_HUB_OFFLINE unset blocks for the full OS TCP connect timeout (lode-w5nr)
- huggingface_hub's detect_agent() registry fetch is a second live-egress site on the same path as lode-7ypf, and is one except-clause away from being invisible (lode-sx17)
- lode models pull promises indexing is 'fully offline' afterward, but the write path re-probes the HF revision once per process (lode-r4r2)
- drain()'s submit pre-step arm still starves embed jobs: _batch_submit_enrich's SELECT and CAS claim loop sit outside its own try (lode-2mnj)
- A permanently malformed batch-results line poison-pills worker.drain every tick (lode-5zqa)
- A poisoned batch handle still blocks enrich entirely: no failure budget, and one shared try over both pre-steps (lode-knnt)
- Add a consecutive-failure budget for a permanently stuck enrich batch_handle (lode-u6he)
- Drop the jobs.next_attempt_at SQL DEFAULT -- it is now a test-only trap (lode-uk1i)
- RelatedNotesPanel's related-notes pass runs inside asyncio.to_thread, so cancellation cannot stop an in-flight one -- it outlives its test and lands in a later one (lode-du4p)
- related_notes_panel.py's on_unmount/_cancel_related_pass docstrings are silent on the uncancellable to_thread pass (lode-mmaw)
Dependency locking & CI
- Derive lock-gen Python from .python-version (single source of truth) so requirements.lock can't flap (lode-sys4)
- Fold the 4 remaining hard-coded python-version workflow literals into python-version-file: .python-version (lode-u709)
- nox inherits ambient PATH (venv_backend='none'), so a stale system ruff shadows the venv's and yields a falsely-green 'nox -t fix' (lode-0yfn)
- CI: cost/tail-risk controls for the push-triggered workflows (concurrency, pip cache, timeout) (lode-2ouz)
- CI: coverage.yml resolves deps fresh while tests.yml installs the hash-verified lock -- decide whether that divergence is deliberate (lode-7byn)
- CI concurrency group under-cancels across the push/pull_request pair (latent 2x if a PR is ever opened from a land/ branch) (lode-7hbu)
- coverage.yml is the only push-triggered workflow with no concurrency cancel-in-progress and no timeout-minutes (lode-s1ia)
- release.yml has no timeout-minutes -- the one workflow that publishes artifacts is uncapped at GitHub's 360-minute default (lode-w35h)
- release.yml is the only pip-installing CI leg with no pip cache and no comment saying why (lode-le9e)
- No test pins the deliberate byte-identical concurrency block across build/tests/coverage.yml (lode-4lqx)
- CI concurrency + timeout-minutes convention has no doc home; three workflows re-derive it in prose (lode-eb8i)
- 11 workflow pointers cite a 'trigger scope' anchor for concurrency/timeout content 70 lines below it (lode-k7cc)
- .github/workflows/tests.yml: the 'no cache: pip' comment is factually wrong -- install_locked_venv's first command IS a pip download (lode-81w0)
- tests.yml and docs/release.md both describe a 'full -e .[dev] install' the workflow no longer performs (lode-rol4)
- CI: tighten the 'caching left off' wording in docs/release.md, and carry the cold-vs-cached measurement question (lode-3vrq)
- Is scripts/venv-install.sh step 4 (uv pip install -e . --no-deps) dead work? And tests.yml calls it a '3-step' install when it is 4 (lode-xo99)
- scripts/venv-install.sh: is 'uv pip install -U pip' in install_locked_venv also dead work? (lode-hfaz)
- Reconcile the nox session inventory: noxfile.py's docstring and docs/onboarding.md both miscount, in different directions (lode-dis6)
- check_links.py does not scan .github/workflows/*.yml, so every anchored pointer from a workflow comment into docs/ is ungated (lode-v10i)
- tests/ imports pyyaml directly but pyproject.toml never declares it (transitive via huggingface_hub) (lode-z31w)
- tests/ has three more undeclared direct imports: numpy, packaging, tree_sitter_markdown (lode-sjbo)
Test-suite consolidation & flake fixes
- Flaky test: test_add_claims_own_job_not_backlog_job intermittently fails under pytest-xdist (lode-0dnk)
- Flaky under xdist: test_work_drains_pending_embed_jobs (lode-4e48)
- Flaky under -n 8: test_worktree_agent_not_merged_dirty_and_old_enough_is_kept_dirty (lode-ej6u)
- Flaky gate: test_run_refresh_dead_letter_still_tombstones_over_older_content intermittently gets 'pending' instead of 'dead' under -n 8 (lode-x10m)
- test_default_staleness_threshold_is_still_1800s is load-flaky: only 1s of slack at the 1799s boundary (lode-44cq)
- tests/test_tui_open_link.py makes a live outbound network call from a background worker, flaking the whole gate under load (lode-fr3p)
- FORCE_COLOR in the gate's environment reddens 6 CLI tests on unmodified trunk — /land would bounce an innocent branch for it (lode-kq4v)
- test_poisoner_no_longer_flips_its_victims is vacuous after lode-y7gk: restore a behavioural pin on _reset_jobs_clock_anchor (lode-up8x)
- tests/test_assert_main_checkout.py's liveness pin (lode-1d2y) has no non-vacuity proof (lode-7zap)
- tests: test_land_lock.py's fenced-bash parser misses every INDENTED fence in land/SKILL.md -- its inline-lock pin is blind to 4 of 24 blocks (lode-ovgs)
- tests: a FOURTH fenced-bash parser survives in test_assert_main_checkout.py -- lode-ovgs unified only three of the four (lode-p4qb)
- tests: a FIFTH fenced-bash parser survives in test_sweep_digest_id.py, and the wrappers around the shared helper are still duplicated 3x (lode-jm4a)
- tests: lode-p4qb widened the shared fence marker but test_bd_list_limit_gate.py's inline scan was left at three backticks -- one document, two partitions (lode-xqc7)
- tests/test_bd_list_limit_gate.py's _strip_blockquote/_BLOCKQUOTE_RE is now redundant -- tests/conftest.py::bash_fence_blocks strips blockquote markers itself (lode-3pyo)
- test_land_lock.py's independent fence counter and test_assert_main_checkout.py's private parser now diverge from the blockquote-stripping bash_fence_blocks (lode-bi9h)
- tests: collapse bash_fence_blocks and inline_violations onto one shared fence-partition generator in conftest (lode-kjei)
- tests: a mechanical gate that no private fenced-bash state machine can be reintroduced under tests/ (lode-k5qb)
- test_assert_main_checkout.py: fold the last two fence-parser leftovers into the sweep/conftest (lode-0mkv)
- tests/test_assert_main_checkout.py now holds two subjects: split the land/SKILL.md text gates out (lode-2thl)
- tests: land/lode-2thl's new test_land_skill_guard_coverage.py reintroduces a private LAND_SKILL definition (lode-wf7f)
- tests: consolidate the 4 byte-identical LAND_SKILL constant definitions into one (lode-va47)
- tests: hoist the duplicated SWEEP_SKILL path constant into conftest.py alongside LAND_SKILL (rebuild after land bounce) (lode-b8jc)
- tests/: four LAND_SKILL/SWEEP_SKILL readers still re-read+re-parse SKILL.md; consider @functools.cache on bash_fence_blocks (lode-pxwn)
- tests/test_land_skill_guard_coverage.py re-parses the 179KB land/SKILL.md twice despite LAND_SKILL_BLOCKS (lode-lmnx)
- tests/test_land_lock.py re-reads and re-parses the 166KB land/SKILL.md eight times per run (rebuild after land bounce) (lode-ulkf)
- tests: three copies of the SKILL.md fenced-block locator/runner helpers -- extract to conftest (lode-n6q0)
- tests: hoist the duplicated _only_block_with SKILL.md-block locator into conftest.py (lode-pm37)
- tests: three copies of the same importlib load-a-repo-root-script-by-path block; extract one conftest helper (lode-7ed9)
- tests: mechanical gate against a re-forked hand-derived SKILL.md Path expression in tests/ (lode-1el8)
- tests/: _git and _init_repo git-repo helpers are duplicated byte-identically across 6-7 shell-script test modules (lode-863q)
- tests/: two throwaway-git-repo helpers outside lode-863q's 6 modules still hand-roll git subprocess calls (lode-c835)
- Shared _init_repo scratch-repo builder (now 7 copies) + a durable answer on the jq-fixture cluster -- residual of lode-y8u0 (lode-ea5b)
- tests/_gitrepo.py's byte-identical-pair inventory is stale, and a third pair is unlisted (lode-g7bl)
- tests: eight further hand-rolled fake-bin PATH overlays should use conftest.fake_bin_env (lode-dxue)
- tests: test_sweep_digest_id.py hand-rolls the fake-bin PATH/subprocess plumbing run_block now owns (lode-oj8x)
- Share the real-SDK MockTransport test rig between test_enrich.py and test_llm_provider.py (lode-a9x3)
- Decide the home for the shared real-SDK Anthropic batch rig: tests/conftest.py vs a dedicated tests/_anthropic_rig.py (lode-qnfp)
- Dedup _fake_batch_client (test_enrich.py) and _fake_batch_client_worker (test_worker.py) (lode-ylh2)
- Collapse the duplicate job-insert helpers in tests/test_worker.py and tests/test_enrich.py (lode-z1e7)
- Dedup the succeeded-batch-result payload builder across test_worker.py and test_enrich.py (lode-0i0k)
- Fold tests/test_enrich.py's _insert_done_enrich_job into the hoisted _insert_enrich_job (lode-3en5)
- tests/test_cli.py's two work --wait tests patch the SHARED time module, not a module-local seam (rebuild after land bounce) (lode-e8lo)
- Widen tests/test_skill_bash_state.py's cross-block gate to .claude/agents/*.md (lode-lv04)
- _bash_blocks cannot see blockquoted fences -- 4 of code/SKILL.md's 9 bash blocks are ungated by test_skill_bash_state.py (lode-wroz)
- tests: pin land/SKILL.md's lode-oup2 escalation block (ESCALATE grep, file-once dedup, non-git-dir stderr path) (lode-jcnl)
Documentation accuracy
- Record the six maintainer decisions from the 2026-08-06 /sweep walkthrough in docs/decisions.md (lode-k9mo)
- Three stale comment/doc inaccuracies left behind by the 2026-07-26 landings (lode-5zrg)
- docs/stack.md carries two now-false claims landed by lode-wnz1 and lode-7byn (lode-zfoi)
- docs/stack.md:219-220 attributes compile-lock.sh's --upgrade/--upgrade-package flags to update-deps.sh, which rejects both (lode-ice8)
- docs/decisions.md's 'never a silent rewrite' rule is unenforceable by its own gate, and that limit is recorded nowhere (lode-nlk6)
- docs/decisions.md's supersession-marker convention is stated where writers never read it (lode-u9uz)
- docs/decisions.md uses five different supersession-marker shapes; six are invisible to the grep everyone uses (lode-ur6o)
- docs/decisions.md's lode-ojsr entry states the nested-probe conclusion backwards, and lode-09td's note duplicates it (lode-yi7i)
- rich Console: correct the 'freezes its TTY check at construction' imprecision in the three pre-existing copies (lode-1f5u)
- rich Console: the two 'consequences under test' are still stated in full in three places (lode-3npn)
- rich Console mechanism is stated in full in 4 places -- collapse to one canonical block plus pointers (lode-qv91)
- Decide B008's altitude for Typer option defaults: extend-immutable-calls vs per-site hoists (lode-up58)