feat(trekplan): Regression and On failure step rules, and trial 2's minor fixes
The minor points (B8-B12, C13, C14, C16, C17) of the second voyage-lekerepo trial (2026-10-08), each verified against the code and started with a test that failed first. - K10: optional step field `Regression:` - one command the criteria runner allows, unpiped; plan-validator refuses one that can never run (PLAN_STEP_REGRESSION_NOT_RUNNABLE). Any plan_version, no bump. - K11: `On failure:` opens with revert | retry | skip | escalate, or the validator warns (PLAN_STEP_ON_FAILURE_UNKNOWN); onFailureAction in plan-schema. - B8 (operator decision 2026-10-08): minors open after the last critic round are listed numbered in the Phase 10 summary; the ones the operator picks are fixed and get one more round (--extra-round when the 3 are spent). - B11: plan-review dedup merges two reviewers' findings on the same file:line with the same content (trial pair: Jaccard 0.44, overlap 0.83); the Jaccard threshold for every other pair is unchanged. - B12: /trekbrief Step 4c says the reviewer runs in the background and is waited for, not "foreground, blocking". - C13: the Phase 4 size count includes .mjs, .cjs, .mts, .cts. - C14: --evidence shows the first output line on PASS rows. - C16: findings-schema checks path:line citations in finding prose (error) and in the prose around the block (warning) against the file. - C17: git-historian gets the brief, never proposes changing a frozen file, and names the remote from `git remote -v`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4ee711a6ac
commit
255b6b4bf8
15 changed files with 675 additions and 24 deletions
|
|
@ -263,6 +263,24 @@ export function parseStepFields(body) {
|
|||
return fields;
|
||||
}
|
||||
|
||||
// ---- `On failure:` (K11) ---------------------------------------------------
|
||||
|
||||
// The recovery words /trekexecute reads from a step's `On failure:` ("Parse
|
||||
// steps"). Free text that opens with none of them left the executor to guess:
|
||||
// "retry once; if still failing, revert ... and STOP" met a ladder of fix rounds
|
||||
// (voyage-lekerepo trial 2, 2026-10-08).
|
||||
export const ON_FAILURE_ACTIONS = Object.freeze(['revert', 'retry', 'skip', 'escalate']);
|
||||
|
||||
/**
|
||||
* The recovery word an `On failure:` text opens with, or null. Case-insensitive;
|
||||
* leading markdown (`**`, backticks, a sub-bullet's `-`) is stripped.
|
||||
*/
|
||||
export function onFailureAction(text) {
|
||||
const s = String(text ?? '').trim().replace(/^[*_`\s-]+/, '').toLowerCase();
|
||||
const m = s.match(/^([a-z]+)\b/);
|
||||
return m && ON_FAILURE_ACTIONS.includes(m[1]) ? m[1] : null;
|
||||
}
|
||||
|
||||
// ---- sections (fence-aware) ------------------------------------------------
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue