Commit graph

614 commits

Author SHA1 Message Date
3abf3d7238
refactor: simplify pass (trekexecute)
Decision 41's rerun is scoped to below plan_version 1.8 in the executor and Handover 4 (as the helper and the exit-2 row already say), the decision-30 sentence names the one exception, and the Fixed and Known-issues slicers share one subsection helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:45:25 +02:00
ca9cb53e79
docs(changelog): the third review remediation, decision 41's door line and the findings decision 42 defers
Review findings of S153; operator decisions 37 to 43.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:32:04 +02:00
829da487ec
fix(execute): below 1.8 a plan that names no test file gets the files the helper wrote
Operator decision 41 (14.10); review finding 7b3b59ed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:17:24 +02:00
e142556543
fix(tests): the control-run test leaves headroom over a slow start
Review finding 703d87e1 (BLOCKER); the timeout and hang live in tests/helpers/timing.mjs as CONTROL_RUN.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:07:12 +02:00
4d5c927c5d
refactor(simplify): drop a dead branch and repeated fixtures from the round-2 remediation
/simplify over bcf3adb..HEAD. Pass 3's last else could never run (RULE_KEYS is checked first); entryPaths tracks an open entry the way testFirstFileEntries does; wrapLine drops normalisations its callers already made. Tests: one payload builder, one BLOCKER fixture, one unreleasedBody helper, one 1.9-block loop, one plan-unreadable loop, and make_repo in the e2e script. No behaviour change; suite 2515 (2513/0/2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:43:24 +02:00
2cca61170a
docs(changelog): the second review remediation, decisions 27 to 31, with door lines
Review findings of S147; operator decisions 26 to 31.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:55:03 +02:00
f746f27788
docs(plan): Handover 4, the planner and the template follow decisions 29 to 31
Operator decisions 28 to 31 (13.10 and 14.10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:43:01 +02:00
a70f082f6e
fix(execute): the helper and the executor give red proof no list
Operator decisions 30 and 31 (14.10); review findings 11ee78c5 and d01df508.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:32:29 +02:00
73e53f3134
fix(verification): red proof prints the list it ran and refuses a plan it cannot read
Operator decision 30 (14.10); review findings 793fc1aa, 09ae46d8, d01df508, 11ee78c5 and 289e59cd.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:50:37 +02:00
25856f2e9c
fix(review): the workflow review fails closed when its coordinator returns nothing
Review finding edf2ec56; every reviewer that did not run is named in allow_blocked_by.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:20:28 +02:00
9529df7665
fix(review): original_severity names what the kept finding asserted
Review finding 08deae68.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:09:01 +02:00
8e6229b01d
fix(plan): below 1.9 a test file after a note, and, plus or + is read
Operator decisions 28 (13.10) and 31 (14.10); review finding bd2520b0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:44:47 +02:00
b70f242e53
fix(plan): a 1.9 wrapped line keeps its paths only after a comma or in an empty entry
Operator decision 29 (14.10); review findings d21ff81e and eaeb398e.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:29:35 +02:00
1786df999e
refactor(plan): K6 keeps its own normaliser and LIST_ITEM is a literal again
Operator decision 27 (13.10); review finding 7961a700.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:19:56 +02:00
bcf3adbba7
refactor(simplify): one plan read in red proof, one list marker, one put-back rule [skip-docs]
/simplify over ed6699d..HEAD (closing review of the remediation):
- red-proof reads and parses the step once (planStep) for the test list and
  tests_only; normTest goes, plan-schema exports normPlanPath, also used by
  plan-scope-sweep.
- plan-schema builds LIST_ITEM and the 1.9 File: line from one LIST_MARKER;
  the below-1.9 File: regex ends in a lookahead instead of slicing back one.
- the workflow script hoists tripletOf and puts back through dedupByTriplet.
- coordinator-contract keeps the rank in its JSDoc only; engine-findings
  drops a redundant String().
- tests: reuse knownIssues, trekplan19Block, step1Fields, one red-proof cli
  helper with childEnv, one payload-pair builder; drop a test the decision-20
  definition test covers.

No behaviour change. Suite 2462 (2460/0/2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:47:08 +02:00
d7db590c26
docs(changelog): the review remediation, decisions 20, 22 and 23, with door lines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:28:58 +02:00
5b94952be9
fix(docs): the trekbrief pass branch names no Brief Quality, and the stats rows span their blocks
Operator decision 21 (12.10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:16:51 +02:00
5fa956b974
docs(plan): Handover 4, the planner and the template follow the 1.9 fixes
Operator decisions 20 and 22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:10:37 +02:00
0142034979
fix(execute): one definition of the step's test files, read as decision 20 sets it
Review finding cf241526.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:00:09 +02:00
734b4a23ae
fix(verification): red proof checks the test list against the plan
Review finding cf241526; the list is read as operator decision 20 sets it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:43:44 +02:00
045191f51d
refactor(plan): the plan validator parses each step once
Review finding 93382464.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:47:33 +02:00
1621352e67
fix(approval): a trailer with a blank or padded name is refused
Review finding 8420915b.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:40:10 +02:00
05f6b67be9
fix(review): the workflow review ranks by tier and puts back every engine finding
Operator decision 23 (13.10); review findings ab1b5d9f and bc7f4e23 (workflow side).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:32:59 +02:00
f04fecea7f
fix(review): Pass 1 ranks by catalogue tier, and a duplicate never lowers its group
Review finding bc7f4e23 (library side).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:24:33 +02:00
d492abb5e9
fix(review): the engine of a payload is read from an own property
Review finding 3799ea6c; the same lookup in engine-findings.mjs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:17:07 +02:00
48b57284fe
fix(plan): a 1.9 plan refuses placeholders and mixed-case bare names as files
Operator decision 22 (13.10); review finding 33f37f53.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:50:20 +02:00
fddd0a078c
fix(plan): a 1.9 entry keeps its wrapped paths, and a numbered File line names its test
Review findings b4fa1927 and 4b6460e5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:43:26 +02:00
1320e3a4d5
fix(plan): below 1.9 the step's test files are the paths right after File:
Operator decision 20 (12.10); review finding 6c31212c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:34:13 +02:00
6b8b0e3f2a
fix(plan): a list joiner no longer ends the read of a plain path below 1.9
Review finding 182ceb93.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:26:07 +02:00
ed6699da58
refactor(simplify): one source per rule, shared test helpers, a faster isolation test [skip-docs]
/simplify over a97efb6..HEAD (the plan_version 1.9 / trial-4 delivery).

- coordinator-contract: engine names come from engine-findings ENGINES;
  one markedMajorCodeReview predicate under both lowering checks;
  isEngineFinding everywhere; the unreachable branch (c) of
  illegalBriefLowering folded into (e).
- armB workflow: RULE_KEYS = Object.keys(RULE_TIERS); the engine map is a
  literal pinned equal to ENGINES by the workflow test.
- plan-schema: usesFilesGrammar() is the one 1.9 check (validator, sweep,
  testFirstFiles, stepTestsOnlyFromFields); opensEntry built on opensChunk.
- plan-validator: one issue builder for the Files and Test first grammar.
- plan-scope-sweep: the 1.9 and the 6.2.0 reader are one if/else.
- artifact-commit: TRAILER_RE/trailerProblem no longer exported (no
  importer); the order comment says the CLI finds the repo root first.
- tests: the lock drivers in session-id-isolation (d) run side by side per
  mode (~100 s -> ~30 s); a shared artifact-repo helper; severityRank and
  extractFindingsBlock reused; childEnv(env) without a spread; one copy of
  the PLAN_VERSION_CURRENT check.

Plan readers: validator errors/warnings, plannedPaths, fieldPaths,
testFirstFiles and stepTestsOnlyFromFields compared byte for byte against
HEAD over 510 plans / 1692 steps plus 210 synthetic 1.7-1.9 cases: same.
Suite 2384 (2382/0/2).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 21:06:47 +02:00
acfd2eb9b6
docs(changelog): plan_version 1.9 and the trial-4 findings, with door lines
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:40:33 +02:00
acd0e3dd47
fix(approval): approval commits carry the caller's Co-Authored-By trailer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:17:22 +02:00
94de23ca3b
fix(trekbrief): the review stamp covers only text the reviewer saw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 20:03:26 +02:00
e6755bd886
fix(trekplan): explorers and reviewers read only in the repo and get the brief
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:45:40 +02:00
305ac9284f
fix(review): the payload decides the engine, and a tie keeps the reviewer finding
An engine's brief-conflict mark could lower a reviewer agent's MAJOR: ingest kept an engine field a reviewer wrote on its own finding, and on a severity tie the survivor depended on payload order (engine first gave ALLOW, reviewer first WARN). ingest now takes engine from the payload source; Pass 1 and the workflow dedup keep the reviewer-agent finding on a tie. Prose (coordinator Pass 1, Handover 6) follows. Decision 13, operator 12.10.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:50:56 +02:00
11315d04eb
fix(review): the coordinator gets the brief's choices and writes the brief-conflict mark
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:28:54 +02:00
8cc6ba0181
fix(review): the workflow review floors an illegally lowered brief-conflict finding
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:16:07 +02:00
ce7700b71b
fix(review): a code-review finding against a brief Non-Goal may drop to MINOR, never a BLOCKER
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 18:04:36 +02:00
3009c5eddb
fix(plan): a 1.9 Test first names its test only on a line that opens with File:
The step check read File: anywhere on the Test first lines, so a 1.9 plan whose only File: stood mid-line validated while the executor, K6 and the red proof read no test file. From 1.9 checkSteps reads the test the way testFirstFiles does; below 1.9 it reads as before (decision 16). Found by the step 5 controller in /trekexecute --session 2; fixed on the operator's decision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:44:23 +02:00
64e6771c8b
feat(plan): plan_version 1.9 is the current target, the file first on every line [skip-docs]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:42:28 +02:00
d14a49b92d
feat(verification): K6 and the red proof read a 1.9 plan by its grammar [skip-docs]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:29:58 +02:00
fc157c3ad5
feat(plan): the Test first File line follows the 1.9 grammar [skip-docs]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:18:53 +02:00
3e1a811c60
feat(plan): read Files by the 1.9 grammar, warn on unticked paths below it [skip-docs]
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:09:25 +02:00
8bf97cc834
fix(execute): every test file on the Test first line is read, locked and copied
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:42:12 +02:00
6f342a2cdc
fix(plan): the Files reader gives 6.3.0's answer in the three known regressions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:21:56 +02:00
d8527976ef
fix(tests): the suite no longer hands the session id to the lock CLI
npm test now preloads tests/helpers/no-session-id.mjs, which deletes CLAUDE_CODE_SESSION_ID before any test file loads, and the 18 files that spread process.env into a child use childEnv() instead (23 sites). A live session's stop guard is no longer pointed at a temp-repo lock (S133).

engines stays >=18: --import exists from Node 18.18/20.6, and the quoted test glob already needs Node 21 (criteria-runner NODE_GLOB_MAJOR), so the real floor does not move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:09:14 +02:00
a97efb6989
merge: release 6.3.1 (rounds 7-10 of the release review and the release commit) v6.3.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:02:06 +02:00
724a7045eb
chore(release): 6.3.1 — Fixes from the release review of 6.3.0, and two verdict-gate holes closed
Version 6.3.1 in plugin.json, package.json, package-lock.json and the
README badge; the 6.3.1 CHANGELOG section with its Doors list (all
two-way) and the Known issues from round 11 of the release review (WARN:
0 BLOCKER, 10 MAJOR; the operator chose to release with it on
2026-10-11).

Measured against 6.3.0 for the Doors list: the plan validator reports the
same errors and warnings for 233 plan files, the verdict gate gives the
same exit for 123 review files, and tests-only reads the same for 1408
plan steps, over the marketplace and the test repo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 17:55:36 +02:00
10ac9c5231
fix(review): round 10 of the release review of 6.3.0, for 6.3.1
Round 10 (0f400d3..a1e0e50, WARN: 0 BLOCKER, 11 MAJOR): six findings, by
operator choice. Each began with a test that failed on a1e0e50 on its
assertion, every case on its own; suite 2236 (2234/0/2).

- Files: a new line inside a description opens a new entry when it opens
  with a plain file with a slash, or with one alone on the line or followed
  by a colon or a dash ("src/cli.mjs", "package.json", "Makefile - a
  target"); "child_process.spawnSync, path.join", "Node.js 22 only" and
  "index.js and the CLI" stay description (ecd9da6f).
- Files: a numbered list item (`1.` or `1)`) is an entry, its marker
  dropped like `-` (b4215783).
- Files: a backticked capitalised name is a file only alone in its entry
  before any description; `Parser` inside one is not (39a57fee).
- Files: a backticked span that is no path (`x()`:) starts no description
  with its colon (882cc82a); a plain file with a colon starts it wherever it
  stands ("the entry cli.mjs: wires parse", a6bd9c8c).
- Measured over all 939 Files: fields in the .md files under the
  marketplace and the test repo (560 of them in the 48 plan.md files outside
  worktrees): 0 read differently from a1e0e50, tests-only changed in 0.
- The trailing-json fence reader is built on plan-schema's fenceTracker:
  a ~~~ fence is a fence, so a ```json line inside one no longer swallows
  the review's own block or hides its BLOCKER ids (0d94c5fe). This also
  closes a gate hole in 6.3.0 and a1e0e50: a last block written as ~~~json
  holding a BLOCKER, after a clean ```json block, passed with exit 0; now 2.
- Kept on purpose: a fence line indented four spaces or more still counts
  in that reader (fenceTracker's new anyIndent). Markdown's three-space
  rule made a BLOCKER block inside a list item, four spaces in, invisible,
  and the gate passed it with exit 0 (seen while fixing, before commit); a
  ```json line in a code block indented four spaces fails the gate closed.
  Both are pinned in the 0d94c5fe test.
- The fieldPaths doc names rounds 1-10 (it said 1-7).

Not in this round (operator 2026-10-11): F8 754723c1 (an info string
" json" fails closed, as in 6.3.0), F9 88de9e6b, F10 164c5bd0, F11
e70b28b7 (dc3a467e). F1 878e3960: this title carries a scope; the three
earlier commits are left as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:36:17 +02:00
a1e0e50451
fix: round 9 of the release review of 6.3.0, for 6.3.1
Round 9 (0f400d3..a10018f, WARN: 0 BLOCKER, 12 MAJOR): seven findings and
three brief notes, by operator choice. Each finding began with a test that
failed on a10018f on its assertion; suite 2230 (2228/0/2).

- A check refused for its comment (a quote, $, backtick or backslash) keeps
  its command and its reason, and every reader refuses it out loud: a nested
  ## Verification bullet stays a criterion (PLAN_VERIFICATION_NOT_RUNNABLE)
  and a brief SC warns (BRIEF_SC_NOT_RUNNABLE). It was folded into a
  sub-point or read as prose, a regression from a10018f. Readers that took a
  command as runnable (the end-to-end lists) skip a refused one.
- The verdict gate reads the last fenced block's info string and body from
  one reading, and exits 2 unless the info string is exactly json: a last
  block opened as ```json {x} held a BLOCKER the gate passed with exit 0
  (also in 6.3.0). A last block never closed is exit 2 too.
- One fence reader (findings-schema fencedBlocks) for the gate and every
  trailing-json reader: a fence closes only on a run at least as long as its
  opener, as in Markdown, so a four-backtick example of a json block is one
  block; CRLF and an indented fence read alike in the gate and the readers.
- Files: a description runs on past a comma and onto the next line until a
  new entry starts (a list item on a new line, or a backticked path), and a
  plain path followed by a colon starts its description. Measured over all
  939 Files: fields in the .md files under the marketplace and the test repo
  (560 of them in the 48 plan.md files outside worktrees): 0 read
  differently, tests-only changed in 0.
- The test lock compares --cmd by its words, so other blanks between the
  same words are the step's command.
- release-check decides "two files" on real paths: one review.md reached
  through a symlinked --repo is one file.
- Brief notes: red proof's stopped control run has its own test (green at
  once, red with the branch deleted); the two tests that assumed jest is not
  installed run with a PATH that finds only git (red on a10018f with a jest
  on PATH, green now); the Files: reader's doc states the measured counts
  (520 fields in 48 plan files at rounds 7-8, not "182 plans"; 560 now).

Not in this round (operator 2026-10-11): a144e9ce, 1dc2e785, dc3a467e,
2fa88853, 26873fa5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 12:49:01 +02:00