tldr-experts 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,46 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## 0.9.2 — 2026-09-07
5
+
6
+ ### Changed
7
+
8
+ - **The Build executor is no longer one 4,351-line file.** `BuildSession` was a single class
9
+ (`:520-3833`) over five subjects — the story pipeline, the reviewer handshake, the fix-list
10
+ round, the base-tree pre-flight and the worktree/branch mechanics — and the methods that
11
+ reached three or more of them were the ones every change had to touch. That is not an
12
+ aesthetic complaint: every remaining hardening fix lands inside this file, and a 4,000-line
13
+ diff context is exactly where the review loop is weakest, because the reviewer reads the
14
+ change and cannot see what the change sits next to. Eight modules now hold the machinery —
15
+ `build/reviewLedger.ts` (`events.jsonl` read once into the bounds a fresh process cannot
16
+ remember), `build/phaseCost.ts` (the handoff's cost line), `build/caps.ts` (the money
17
+ constants and every ceiling), `build/dodRunner.ts` (the story DoD and the #41 base
18
+ pre-flight), `build/worktrees.ts` (the git side of a story), `build/branchClaims.ts` (which
19
+ epic branch this run owns and the two refusals that protect the tree), `build/reviewBundle.ts`
20
+ (the reviewer's bundle on disk) and `build/reviewRound.ts` (one review round, one reviewer
21
+ prompt) — each taking DATA rather than the session, which is the rule the rest of
22
+ `src/core/build/` already kept without exception. The mutable state the orchestrator used to
23
+ hide in private maps is now explicit and passed in: `PreflightCache`, `EpicState` and
24
+ `ReviewCounters` — three counters of three different things, reset on three different events,
25
+ still never merged. `executors/build.ts` is down to ~2.9k lines and keeps the orchestration: the
26
+ entry points, the wave drivers, the story-state cluster, the log and handoff cluster, the
27
+ refusal helpers and `SerialQueue`. Nothing moved that a caller can see — every symbol anything
28
+ imports is still exported from `executors/build.ts`, so the nine importing test files,
29
+ `run/reopenStory.ts` and `facilitator/index.ts` did not change one line of import (the
30
+ re-exports nothing imported were dropped rather than carried, which is the opposite of drift).
31
+ The one test edit is a widening: `build-executor.test.ts`'s #134 pin that no file builds a
32
+ `story/${…}` name by hand now reads `worktrees.ts` and `branchClaims.ts` too, because a
33
+ NEGATIVE pin on one file gets weaker every time code leaves it.
34
+ Zero behaviour change, and it is proved rather than argued. A golden guard captured before the
35
+ first move — `test/build-golden.test.ts`, 18 committed artifacts across three scenarios that
36
+ cannot stand in for one another — freezes byte for byte the developer prompt, the reviewer
37
+ prompt, the `--prepare` bundle's own prompt, the ordered event stream with its payload keys
38
+ and values, `run.yml`'s task rows and the exit codes of a real fake-agent build, and every one
39
+ of the five move steps — and the surface-polish pass after them — had to keep it identical. It
40
+ is kept, because it is the cheapest regression net this file has ever had. The rule while the
41
+ wave ran, and the rule now: a golden byte change means REVERT — never "update the golden" to
42
+ make a diff go away.
43
+
4
44
  ## 0.9.1 — 2026-09-06
5
45
 
6
46
  ### Added
package/README.md CHANGED
@@ -314,6 +314,7 @@ back on the registry is 0.3.0.
314
314
 
315
315
  | Version | Date | Status | Contains |
316
316
  |---|---|---|---|
317
+ | 0.9.2 | 2026-09-07 | `beta` | the Build executor decomposed: 4,351 lines became an orchestrator plus eight modules under src/core/build/ (review ledger and phase cost, money caps, the DoD runner with its preflight cache, worktrees and epic-branch claims, the reviewer bundle and review round) — a pure refactor proven byte-for-byte by a golden guard over prompts, ordered events, run.yml rows and exit codes across three scenarios; no behaviour changed, every remaining hardening fix now lands in a file a reviewer can hold |
317
318
  | 0.9.1 | 2026-09-06 | `beta` | records and money that do not lie: a turn without a provider USD figure is unmetered, never a metered $0.00; a refusal no longer discards the turn's cost (banked first, deduped only against marked rows); an event over the 4096-byte cap spills its text beside the run and names it instead of losing every row of the invocation; preflight rows carry `command_hash` and their own `checked_at`, so a cached red is re-probed when the command changed, after 30 minutes, or under --prepare; the fix list writes back git's canonical 40-hex sha; `tldrx facts add` exists with owner/driver attribution rendered in prompts; run.yml rows carry the provider's token split only when reported |
318
319
  | 0.9.0 | 2026-09-06 | `beta` | opt-in stack packs: four language pack bodies and thirteen framework overlays detected from manifests, interrogative by default (Defaults yield to any repo signal, Checks are questions with `verify:` hints), behind one per-project switch (`tldrx expert packs enable`) that materialises into `.tldrx/experts/<lang>-stack/` without touching trained knowledge; the Build reviewer gets `## Stack checks (the repo's own conventions win)`; every stage names the project's `.claude/skills` and the developer may invoke them; workspace.yml records overlays with evidence and skills with a tracked flag, `version: 1` unchanged |
319
320
  | 0.8.0 | 2026-09-04 | `beta` | the unattended mandate learns to keep going: a `## Do not stop` section that defines the one thing allowed to end a run early (a strict blocker, named against the work it does not block), product questions parked as **guided** ones with lettered options and a pre-declared fallback, and a budget stop that asks instead of halting — written against 26 `budget.raised` and 26 `question.answered` events on a real ten-run workspace where the owner had to re-authorise "unattended" mid-run. Plus `tldrx drive --tldr`: a reporting contract for runs nobody will audit — the `run status` block plus three bullets of delta, no operator notes, minimal gate evidence, handoffs trimmed of prose but never of the citations `claim-sources` gates on. The ask channel stays the console and the framework names no chat vendor |