tldr-experts 0.31.0 → 0.31.1

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,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.31.1 — 2026-09-16
4
+
5
+ ### Fixed
6
+
7
+ - **A seed placed at the documented `.tldrx/seeds/<slug>.md` location was invisible to the #346
8
+ `seed_solution` skip, so `how` ran at full price even when the seed already declared its own
9
+ `## Solution` (#358).** `seedDocumentPaths` (`src/core/facilitator/seedSolution.ts`) filtered
10
+ out every first-stage input starting with `.tldrx/` — meant to drop the `what` stage's own
11
+ template inputs (`.tldrx/memory/facts.yml`, `.tldrx/map/{repo}/domains.md`), it also swallowed
12
+ `.tldrx/seeds/…`, the exact path `run new --seed` records and the docs tell writers to use. Now
13
+ only those two template-input families are excluded, so a seed document is recognised wherever
14
+ `run new --seed` accepted it from.
15
+
3
16
  ## 0.31.0 — 2026-09-16
4
17
 
5
18
  ### Added
package/README.md CHANGED
@@ -335,6 +335,7 @@ back on the registry is 0.3.0.
335
335
 
336
336
  | Version | Date | Status | Contains |
337
337
  |---|---|---|---|
338
+ | 0.31.1 | 2026-09-16 | `beta` | One fix, measured on the first unattended run under 0.31.0: a seed placed at the documented `.tldrx/seeds/` location was invisible to the seed-solution detector, because the filter that drops the `what` stage's own framework inputs dropped every `.tldrx/` path, so `how` ran at full price for exactly the seeds #346 was written to skip (#358). |
338
339
  | 0.31.0 | 2026-09-16 | `beta` | Ten efficiency adjustments, ranked from a measured audit of 48 runs, so an unattended run spends less and stalls less. `how` is skipped when the seed already declares its own solution, and runs on `sonnet` when it does run (#346); `risks.md` is no longer generated (#350); `watch` follows `build`'s gate policy, so an all-auto run signs itself (#349); a Watch card's `[src:]` punctuation slip is repaired locally instead of costing a turn (#345); a fix list with zero open findings settles the round, an unreadable one holds it by name (#218); `run status` warns NO-RETRY before a retry the budget refuses (#232); a failed headless turn carries a named `failure_kind`, so the loop stops buying the same retry for every death (#348); an orphaned turn is banked as unmetered instead of a confident zero (#337); a relaunch resumes its own epic branch instead of restarting it (#347); the base-tree DoD refusal names the workspace `install:` (#343) and `run auto` names `--wait-gates` (#342). |
339
340
  | 0.30.0 | 2026-09-15 | `beta` | Seventeen changes that keep an unattended run moving instead of stranding. A cached Build refusal says so and a relaunch re-measures it (#339); a rate-limit warning is read instead of dropped, so a Build parks before the wall (#298); the plan-over-stage advisory speaks only past 2× (#302); a stage death stops recommending a retry the budget refuses (#232); a DoD command is measured twice, a fix-list finding is checked against the epic tip, and an over-long sha is refused by name (#163); a formatting slip gets one bounded repair turn (#288); five Checks stop asking the reviewer for what it can't do (#195); a Codex review no longer dies before it runs (#148); `tldrx init` probes four commands at once (#180); `tldrx ship` refuses a merged diff nobody judged (#311). Docs: the zero-touch recipe pairs `run auto` with `--wait-gates`/`--wait-answers` (#342). |
340
341
  | 0.29.0 | 2026-09-15 | `beta` | Sixteen changes that make an unattended run trust its own gates and its own numbers. Verdict integrity: a reviewer's `changes` must cite evidence (#326), a re-reviewed story's `changes` is consumed instead of parking it (#327), and a story blocked on a stale fix list settles `done` once resolved (#329). Fix-list flow: a headless fix list now buys its own fix round, and an approving reviewer's signature closes what it was shown (#327). Money and phase sizing: `run auto` rebalances a blocked phase's shortfall out of finished phases by default (#330), the `budget-gate` hook stops denying the launch that would fix the shortfall (#321), a Build gate no longer stops on paths outside the declared surface but carries them into the PR instead (#331), a parallel wave no longer hands two developers the same unspent money (#325), `budget show`/`run estimate`/the budget-gate hook price remaining work off the stage's own `attempts:` (#214), `run auto --until-done` states a token refusal in tokens rather than invented dollar words (#270), a Watch turn is recorded as unmetered rather than a false `$0.00` (#224), and a Watch spawn now records the ceiling it was given (#190). Dependency and safety: a Build gate names the story a dependent waits on (#303), the conflict-turn marker guard names unreadable paths, bounds its scan, and covers modified files too (#324), a developer's array-valued `notes` is joined instead of silently dropped (#217), and the Plan prompt states its per-item character cap where each field is described so an over-cap finding survives into the retry (#328). |
@@ -47,6 +47,7 @@ import {
47
47
  FRAMEWORK_ROOT,
48
48
  MAX_ITEM_CHARS,
49
49
  PLAN_STATUSES,
50
+ PROJECT_FRAMEWORK_DIR,
50
51
  listRunDirs,
51
52
  parseYaml,
52
53
  parseYamlRepairing
@@ -726,6 +727,14 @@ function describeGateSignature(sig) {
726
727
 
727
728
  // src/core/facilitator/skipIf.ts
728
729
  import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync3 } from "node:fs";
730
+
731
+ // src/core/facilitator/seedSolution.ts
732
+ var WHAT_STAGE_OWN_INPUT_PREFIXES = [
733
+ `${PROJECT_FRAMEWORK_DIR}/memory/`,
734
+ `${PROJECT_FRAMEWORK_DIR}/map/`
735
+ ];
736
+
737
+ // src/core/facilitator/skipIf.ts
729
738
  function phaseDirs(runDir) {
730
739
  try {
731
740
  return readdirSync(runDir, { withFileTypes: true }).filter((entry) => entry.isDirectory() && /^0[1-9]-/.test(entry.name)).map((entry) => entry.name).sort();
@@ -20,7 +20,7 @@ import {
20
20
  runSnapshot,
21
21
  statusWithOutcome,
22
22
  whatIsWaiting
23
- } from "./chunk-3r0hhgcf.js";
23
+ } from "./chunk-4ygy9w7j.js";
24
24
  import"./chunk-ae6bkfs5.js";
25
25
  import {
26
26
  expertsDir,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  bar,
4
4
  runSnapshot
5
- } from "./chunk-3r0hhgcf.js";
5
+ } from "./chunk-4ygy9w7j.js";
6
6
  import"./chunk-ae6bkfs5.js";
7
7
  import"./chunk-me0kzc6k.js";
8
8
  import"./chunk-akemhezh.js";
package/dist/tldrx.js CHANGED
@@ -32821,11 +32821,15 @@ import { dirname as dirname12, join as join65 } from "node:path";
32821
32821
  var SEED_SOLUTION_HEADING_RE = /^(Solution|Technical approach)$/i;
32822
32822
  var SEED_SOLUTION_HEADING_LEVEL = 2;
32823
32823
  var PHASE_RELATIVE_RE = /^0[1-9]-[a-z]+\//;
32824
+ var WHAT_STAGE_OWN_INPUT_PREFIXES = [
32825
+ `${PROJECT_FRAMEWORK_DIR}/memory/`,
32826
+ `${PROJECT_FRAMEWORK_DIR}/map/`
32827
+ ];
32824
32828
  function seedDocumentPaths(run) {
32825
32829
  const first2 = run.phases[0]?.stages[0];
32826
32830
  if (first2 === undefined)
32827
32831
  return [];
32828
- return first2.inputs.filter((path) => !path.startsWith(`${PROJECT_FRAMEWORK_DIR}/`) && !PHASE_RELATIVE_RE.test(path));
32832
+ return first2.inputs.filter((path) => !WHAT_STAGE_OWN_INPUT_PREFIXES.some((prefix2) => path.startsWith(prefix2)) && !PHASE_RELATIVE_RE.test(path));
32829
32833
  }
32830
32834
  function readSeedDocuments(runDir, run) {
32831
32835
  const ctx = { root: workspaceRootOfRunDir(runDir), runDir };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tldr-experts",
3
- "version": "0.31.0",
3
+ "version": "0.31.1",
4
4
  "description": "tldr-experts: an evidence-first, file-based AI development framework - five stages, a gate on every one, and every claim cited or refused. Installs the `tldrx` (and `tldr-experts`) command. Beta.",
5
5
  "license": "MIT",
6
6
  "author": "Alan Martinez",
@@ -2,7 +2,7 @@
2
2
  "$doc": "Shape verified from https://code.claude.com/docs/en/plugins.md (Quickstart > Create the plugin manifest). Fields used here: name, description, version, author.name. Only plugin.json goes inside .claude-plugin/; skills/, agents/ and hooks/ live at the plugin root.",
3
3
  "name": "tldrx",
4
4
  "description": "tldr-experts: an evidence-first, file-based AI development framework. Five stages, a gate on every one, every claim cited or refused. Beta.",
5
- "version": "0.31.0",
5
+ "version": "0.31.1",
6
6
  "author": {
7
7
  "name": "Alan Martinez"
8
8
  }