pi-gauntlet 7.32.0 → 7.33.0
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 +13 -0
- package/README.md +7 -5
- package/agents/plan-writer.md +2 -2
- package/agents/pr-gatekeeper.md +2 -2
- package/extensions/lib/gauntlet-settings.test.ts +4 -4
- package/extensions/lib/gauntlet-settings.ts +1 -1
- package/extensions/phase-tracker.test.ts +5 -5
- package/package.json +1 -1
- package/skills/gatekeep-pr/SKILL.md +11 -11
- package/skills/gatekeep-pr/reference/assessment.md +2 -2
- package/skills/gatekeep-pr/reference/batch.md +11 -9
- package/skills/gatekeep-pr/reference/cleanup.md +19 -1
- package/skills/gatekeep-pr/reference/decision-menu.md +38 -160
- package/skills/gatekeep-pr/reference/findings.md +6 -4
- package/skills/gatekeep-pr/reference/fix-wave.md +24 -27
- package/skills/gatekeep-pr/reference/menus.md +80 -0
- package/skills/gatekeep-pr/reference/post-selection-loop.md +89 -46
- package/skills/gatekeep-pr/reference/report.md +13 -19
- package/skills/gatekeep-pr/reference/sync.md +15 -6
- package/skills/gatekeep-pr/verification-brief.md +13 -11
- package/skills/verification-before-completion/reference/conformance-check.md +1 -1
- package/skills/verification-before-completion/reference/settings-precedence.md +1 -1
- package/skills/writing-plans/SKILL.md +11 -3
|
@@ -22,7 +22,7 @@ does not recurse into their leaves.
|
|
|
22
22
|
whole-object, a repo file that sets only *one* leaf of a key silently drops the
|
|
23
23
|
preset's other leaves for that key. A repo `closureReview: { "model": "..." }` with
|
|
24
24
|
no `enforce`/`maxFixRounds` makes those fall back to their code defaults
|
|
25
|
-
(`enforce` true, `maxFixRounds`
|
|
25
|
+
(`enforce` true, `maxFixRounds` 5), **not** to the preset's values. Define every
|
|
26
26
|
leaf you care about together in the file that owns the key. (Sibling keys are
|
|
27
27
|
unaffected - only the key the repo redefines is replaced.)
|
|
28
28
|
|
|
@@ -279,18 +279,26 @@ If a decision is genuinely open, put it in an explicit **Open Questions** sectio
|
|
|
279
279
|
|
|
280
280
|
The plan-writer runs Baseline, the deterministic checker, then the judgment checks before replying.
|
|
281
281
|
|
|
282
|
-
- **Baseline.** Execute the numbered procedure below for task `Tests:` commands only; leave header `**Verification:**` to verify. Never author baseline evidence without execution.
|
|
282
|
+
- **Baseline.** Execute the numbered procedure below for task `Tests:` commands only; leave header `**Verification:**` to verify. Never author baseline evidence without execution or a recorded tree-equivalence.
|
|
283
283
|
1. Read provenance: `BASE=$(git -C "<abs worktree path>" rev-parse --short HEAD)` and `git -C "<abs worktree path>" status --porcelain --untracked-files=all`. Match every `XY <path>` entry (including `??`) against the worktree-relative plan and spec paths, plus only the parent-supplied `In-flight:` paths on an `Amend:` re-dispatch; never infer that set. Also allow untracked paths already recorded in existing baseline bullets' ` - artifacts:` suffixes in the plan at the plan path, excluding every plan `Create:` or `Test:` path. Keep those suffixes on retained bullets. Any other entry blocks all commands: collect `- Baseline: worktree dirty on <BASE>: <paths>`. Allowed in-flight paths outside the spec and plan directories are source edits: collect `- Baseline: in-flight source edits on <BASE>: <paths>` and run nothing. Allow doc-only workflow edits. For plain jj (no `.git`, VCS kind `jj`), use `BASE=$(jj -R "<abs worktree path>" log -r @- --no-graph -T 'commit_id.short()')` and `jj -R "<abs worktree path>" diff --summary`; classify one-letter status and relative paths identically (`A` includes new files). Never revert or clean anything. Record a short baseline provenance note with the initial per-file inventory, BASE, and which exact paths were admitted before running commands; retain it even when a later run is contaminated or blocked.
|
|
284
|
-
2. On Findings/Amend,
|
|
284
|
+
2. On Findings/Amend, before any command runs, use step 1's BASE and prove endpoint-tree equivalence once per distinct recorded SHA in the plan. Derive `<spec dir>` and `<plan dir>` as the worktree-relative directories of the dispatched spec and plan paths. Run `git -C "<abs worktree path>" diff --quiet <recorded> <BASE> -- . ':!<spec dir>/' ':!<plan dir>/'`; only exit 0 proves equivalence. Keep the trailing `/` directory boundaries. For plain jj, run `jj -R "<abs worktree path>" diff --from <recorded> --to <BASE> --summary`: require exit 0 and empty stdout after dropping entries whose paths all lie under `<spec dir>/` or `<plan dir>/`. Reject entries that do not parse as `<status> <path>`; exclude stderr from filtered evidence. Prove every recorded SHA before rewriting any bullet; retention is all-or-nothing.
|
|
285
|
+
|
|
286
|
+
| Proof outcome | Baseline action |
|
|
287
|
+
|---|---|
|
|
288
|
+
| Every proof holds and every admitted in-flight path lies within those directories | Retain valid evidence for unchanged command text, even when task steps changed; rewrite its SHA to BASE, preserving `skipped`, `pass via`, and ` - artifacts:` forms. Append `retained <n> bullets: <recorded> -> <BASE>, tree-equivalent outside <spec dir>, <plan dir>` once per distinct re-stamped SHA to the existing step-1 provenance note, the sole record. |
|
|
289
|
+
| Any proof fails: missing/unresolvable SHA, git/jj error, nonzero exit, nonempty outside-directory diff, or admitted doc-only in-flight path outside both directories | Rerun every command and retain nothing. Emit no retained-provenance line or Open Questions finding for proof failure. |
|
|
290
|
+
|
|
291
|
+
`Findings: rerun baseline` overrides retention, reruns all commands and re-stamps nothing. Never rewrite recorded SHAs without execution or a recorded tree-equivalence. For each command, split on the contract's separators (`&&`, `||`, `;`, `|`) and classify anchor tokens (a `Test:` path alone or with `::`/`#`/`:` filters) and selectors independently:
|
|
285
292
|
|
|
286
293
|
| Command anchors/selectors | Baseline action |
|
|
287
294
|
|---|---|
|
|
295
|
+
| Changed command text or missing/invalid evidence on re-dispatch | Rerun regardless of equivalence through the anchor/selector procedure below. |
|
|
288
296
|
| Every anchor in every segment is a `Create:` path of some task | Append `- baseline: <BASE> skipped - <path>[, <path>] created by this task`, one path per created anchor. Only all-created anchors skip. |
|
|
289
297
|
| No segment has a created anchor or introduced selector | Run `(cd "<abs worktree path>" && <command>)` unchanged. |
|
|
290
298
|
| Mixed anchors or introduced selectors | Derive per segment: drop each created-anchor token; strip an introduced attached filter to its path; drop an introduced flag selector and its value. Drop a segment with no existing `Test:` anchor of this task. Join surviving segments with their original separators. Keep at least one segment, each anchored to an existing `Test:` path of this task and no `Create:` path; otherwise skip only for all-created anchors as above. Run the derived base command. |
|
|
291
299
|
|
|
292
300
|
An introduced selector is an attached filter or flag/value pair (`-k <expr>`, `-t <name>`, `-e <name>`, `-n <name>`, `--grep <name>`, `--test-name-pattern <name>`) whose filter/name appears verbatim in a test name the task's steps say they add. Keep selectors the steps do not name and run unchanged. Pass requires exit 0 and a runner summary reporting at least one test executed. Append `- baseline: <BASE> pass` for unchanged runs or `- baseline: <BASE> pass via `<base command>`` for derived runs. Treat non-zero exits, host allowlist/runtime errors, and exit-0 summaries with zero tests as failures; collect task, original command, exit code, summary and last 20 output lines, plus the derived command when used. Record a zero-test result as `exit <n>, no tests ran`, never a harmless skip. `- none:` tasks get no baseline.
|
|
293
|
-
3. After each run reread status and BASE with step 1's commands. New tracked status outside the allowed set, a new `??` (jj `A`) at any plan `Create:` or `Test:` path, or moved BASE contaminates the run: collect the task, original command and `dirtied tracked source: <paths>` or `HEAD moved to <sha>`; stop further runs and record every unrun command. Any other new untracked entry is a disposable generated artifact: keep the result and append ` - artifacts: <path>[, <path>]` to its `pass` or `pass via` bullet. For each rerun (changed command text, missing/invalid bullet,
|
|
301
|
+
3. After each run reread status and BASE with step 1's commands. New tracked status outside the allowed set, a new `??` (jj `A`) at any plan `Create:` or `Test:` path, or moved BASE contaminates the run: collect the task, original command and `dirtied tracked source: <paths>` or `HEAD moved to <sha>`; stop further runs and record every unrun command. Any other new untracked entry is a disposable generated artifact: keep the result and append ` - artifacts: <path>[, <path>]` to its `pass` or `pass via` bullet. For each rerun (changed command text, missing/invalid bullet, failed equivalence proof, or `Findings: rerun baseline`), carry its recorded artifact paths still present as untracked onto the replacement bullet's ` - artifacts:` suffix, merged with new untracked entries from that run and excluding every plan `Create:` or `Test:` path. Record artifacts, never delete them. Do not give a contaminated command a passing bullet.
|
|
294
302
|
4. Regenerate every baseline-form Open Questions row from this pass's collection; resolved rows disappear and `blocked:` lines are recomputed. Preserve unresolved contract rows until Findings answers them. Put `## Open Questions` at the top when any rows remain; omit it otherwise. Use these exact forms:
|
|
295
303
|
|
|
296
304
|
- Failure: `- Task N: `<command>` fails on <BASE> (exit <n>): <one-line result summary>`, quoting the original Tests command. Indent a `ran: `<base command>`` continuation for a derived run, then a fenced block containing the last 20 output lines (or all output when shorter).
|