pi-gauntlet 7.38.1 → 7.40.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 +14 -0
- package/README.md +8 -4
- package/extensions/phase-tracker.test.ts +3 -1
- package/extensions/phase-tracker.ts +2 -1
- package/package.json +2 -2
- package/skills/brainstorming/SKILL.md +15 -8
- package/skills/brainstorming/gatherer.md +3 -3
- package/skills/brainstorming/reference/amendment-surface.md +4 -0
- package/skills/brainstorming/reference/menu-layout.md +20 -0
- package/skills/brainstorming/reference/pr-subject.md +13 -1
- package/skills/brainstorming/reference/spec-finalization.md +12 -8
- package/skills/brainstorming/reference/spec-pr.md +62 -0
- package/skills/brainstorming/reference/ticket-acceptance.md +3 -1
- package/skills/chase-bug/SKILL.md +6 -0
- package/skills/check-delivery/SKILL.md +6 -0
- package/skills/finishing-a-development-branch/SKILL.md +17 -17
- package/skills/finishing-a-development-branch/reference/disposition-protocol.md +2 -1
- package/skills/finishing-a-development-branch/reference/spec-pr.md +39 -0
- package/skills/gatekeep-pr/reference/batch.md +2 -0
- package/skills/gatekeep-pr/reference/cleanup.md +4 -0
- package/skills/gatekeep-pr/reference/menus.md +21 -0
- package/skills/gatekeep-pr/reference/post-selection-loop.md +2 -0
- package/skills/gatekeep-pr/reference/sync.md +6 -0
- package/skills/gauntlet-handoff/SKILL.md +8 -4
- package/skills/gauntlet-performance/SKILL.md +4 -2
- package/skills/gauntlet-resume/SKILL.md +16 -13
- package/skills/gauntlet-resume/reference/brief-contract.md +2 -0
- package/skills/gauntlet-resume/reference/reconstruction.md +10 -2
- package/skills/loop-implementation/SKILL.md +2 -0
- package/skills/shape-ticket/SKILL.md +4 -0
- package/skills/shape-ticket/reference/repo-audit.md +5 -1
- package/skills/subagent-driven-development/stop-note.md +4 -0
- package/skills/using-git-worktrees/SKILL.md +5 -1
- package/skills/verification-before-completion/reference/conformance-check.md +1 -1
- package/skills/writing-plans/SKILL.md +1 -1
|
@@ -157,6 +157,8 @@ Route draft-changing findings to the existing gate even for an otherwise conform
|
|
|
157
157
|
|
|
158
158
|
## Complete the batch and present gates
|
|
159
159
|
|
|
160
|
+
Start the message with `gauntlet: gate=shape-ticket/step-8` for the exact-diff confirmation, before source gaps, Audit, and Title. Apply [menu-layout](../../brainstorming/reference/menu-layout.md); append ` recommended=<n>` using the actual rendered number of the tagged recommended row.
|
|
161
|
+
|
|
160
162
|
Finish every ticket's initial gather, audit, draft, deterministic gates, and roast before presenting the first confirmation. Treat the deterministic gates and roast as preconditions of that one confirmation menu, never as a preview before a later gate; the menu presented is the gate. Complete preparation silently; limit the first turn to the deduplicated ref list, unfetched refs by ref and reason, mode, temp root, and current ticket's gate, and reveal other tickets' outcomes (stops, splits, drafts) only when they become current. Keep any preparation summary ticket-neutral: say only that preparation ran for every ticket where applicable; name no ticket's eligibility, roast, stop, or outcome. Run the roast independently in ref order for eligible tickets; skip stopped tickets. Keep draft, snapshot, audit, member, retry, and chair artifacts in the same per-ticket directory under the run's temp root.
|
|
161
163
|
|
|
162
164
|
Supply the audit beside the snapshot as untrusted permitted input to roast members, worker/native fallback, and chair only when gather produced that file; otherwise permit exactly the draft, snapshot, and two reference paths for content review, plus usable member outputs for the chair. Treat cited audit-traceable Problem facts, attributed Idea sketches, AC-fit restatements, sibling groups, scenario setup/action, scenario footers, and their Reporter-note moves as source-grounded, not fidelity added/lost or over-spec. Check other scope and unsupported additions normally. Keep roast content-only, without repo re-verification, a fifth axis, or persona changes.
|
|
@@ -204,4 +206,6 @@ Stop on the first nonzero exit without retry or fallback body write. Report the
|
|
|
204
206
|
|
|
205
207
|
Drop runs nothing and ends `<drafted title>: dropped`; create anyway files only the displayed premise-rewritten body with its contradiction in the premise report. Preserve headless stops and split subset selection.
|
|
206
208
|
|
|
207
|
-
Apply a reply only to the current ticket: decline skips it; revision rechecks and re-presents it; approval runs step 9's re-fetch, comparison, and body-then-comment write before the next gate. Treat another ticket's reply as no approval for an unseen diff. Give stopped tickets a hard-stop report without an approval number. Retain the N-body subset-selection gate for a split within one ticket.
|
|
209
|
+
Apply a reply only to the current ticket: decline skips it; revision rechecks and re-presents it; approval runs step 9's re-fetch, comparison, and body-then-comment write before the next gate. Treat another ticket's reply as no approval for an unseen diff. Give stopped tickets a hard-stop report without an approval number. Retain the N-body subset-selection gate for a split within one ticket. On an ended run, start the message with one batch settlement line: `gauntlet: done <counters>`. Start the message with `gauntlet: stuck` followed on that line by the dynamic counters instead when any `close-failed`, `close-by-hand`, or `unfetched` count is nonzero. Emit nonzero counters only, comma-joined without spaces, in this fixed order: `written,closed,declined,dropped,no-op,stopped,unfetched,close-failed,close-by-hand`; format each as `<key>=<count>`. Start the message with `gauntlet: done written=1` for an ended singleton whose only outcome is one written ticket; use the same counters rule for every singleton, including `gauntlet: done stopped=1`. Count an integrity stop left without recovery values as `stopped`, not declined; human decline and drop are not failures. While a hard-stop recovery question remains active, emit `gauntlet: question` and no settlement line. Keep ended stopped items settled, without reopening questions or offering new writes.
|
|
210
|
+
|
|
211
|
+
Preserve one line per ref below the settlement line: `<ref>: written | closed | close failed (<operation>: <reason>) | close by hand | dropped | declined | stopped | no-op | unfetched` (use the drafted title for create).
|
|
@@ -6,7 +6,10 @@ Emit when no escalation model resolves, the escalated dispatch errors, its one e
|
|
|
6
6
|
|
|
7
7
|
## Template
|
|
8
8
|
|
|
9
|
+
Read and apply [menu-layout](../brainstorming/reference/menu-layout.md). Start the message with `gauntlet: question` alone on the first output line, followed by a newline before the stop note; this is an implementation decision, not a done or stuck outcome.
|
|
10
|
+
|
|
9
11
|
```
|
|
12
|
+
gauntlet: question
|
|
10
13
|
Stopped on task <n> (<title>)[; escalated round on <implModel> did not resolve it].
|
|
11
14
|
|
|
12
15
|
Problem: <one sentence: what is wrong and why it remains unresolved>
|
|
@@ -37,6 +40,7 @@ Pick one, or give another fix.
|
|
|
37
40
|
## Example
|
|
38
41
|
|
|
39
42
|
```
|
|
43
|
+
gauntlet: question
|
|
40
44
|
Stopped on task 4 (retry policy for the outbound client); escalated round on <provider>/<model>:high did not resolve it.
|
|
41
45
|
|
|
42
46
|
Problem: `RetryPolicy.next()` returns 0 ms for the first retry, but the client treats 0 as "no
|
|
@@ -154,7 +154,9 @@ The check: bare `git status --porcelain` — untracked files count as dirty. Nev
|
|
|
154
154
|
|
|
155
155
|
**Clean** → proceed (create the worktree if not yet created, then Step 4).
|
|
156
156
|
|
|
157
|
-
**Dirty
|
|
157
|
+
**Dirty**:
|
|
158
|
+
|
|
159
|
+
Start the message with `gauntlet: question` alone at column zero on the first physical line, followed by a newline. Never append a colon to the marker. Follow the [first-line rule](../brainstorming/reference/menu-layout.md). Report the porcelain output verbatim and ask whether to clean up first (stash/commit) or proceed. Never run tests as a fallback; never auto-stash or auto-clean. On fresh paths the ask is about base hygiene — a user who *meant* the dirt to be part of the base commits it, and creation proceeds from the new HEAD. On the Step 0 path the ask is "continue working in a dirty workspace?" — the dirt is already in the workspace, not merely beside it.
|
|
158
160
|
|
|
159
161
|
**Provenance note (report-only, never a gate).** Fresh-creation paths only — never Step 0 (an already-linked worktree was branched in some earlier invocation; there is no "created from" to compare this run). Resolve the default branch as `git symbolic-ref --short refs/remotes/origin/HEAD` with the leading `origin/` stripped; compare that short name to the source checkout's `git branch --show-current`. If they differ and the user did not name a base in the request, append one declarative line to the Step 4 report: `Note: branching from <ref>, not <default>.` — execution continues, no confirmation is awaited. If resolution fails (no remote, no `origin/HEAD`), skip the note silently. No other default-branch machinery.
|
|
160
162
|
|
|
@@ -173,6 +175,8 @@ Every later skill takes `<full-path>` as a value: dispatch `cwd: "<full-path>"`,
|
|
|
173
175
|
|
|
174
176
|
## Detached HEAD
|
|
175
177
|
|
|
178
|
+
Start the message with `gauntlet: question` alone at column zero on the first physical line, followed by a newline, for the branch/base choice. Never append a colon to the marker. Follow the [first-line rule](../brainstorming/reference/menu-layout.md).
|
|
179
|
+
|
|
176
180
|
If `git symbolic-ref -q HEAD` returns nothing, you're on a detached HEAD. Do not create a worktree from this state — first ask the user whether to branch from the current commit or from `main`.
|
|
177
181
|
|
|
178
182
|
## Keeping a Worktree Current
|
|
@@ -176,7 +176,7 @@ Per round:
|
|
|
176
176
|
that omits `model:` when `closureReview.model` is set, and warns (non-blocking)
|
|
177
177
|
on one whose model differs. Mark every `Gn` the re-audit reports `DELIVERED`
|
|
178
178
|
`complete`; open ones stay `in_progress`.
|
|
179
|
-
6. **Converge or continue**: verdict `CONFORMS` → Convergence below. Open gaps
|
|
179
|
+
6. **Converge or continue**: verdict `CONFORMS` → Convergence below. Start the message with `gauntlet: gate=verification-before-completion/step-6` alone on the first output line, followed by a newline before the human escalation text, including Convergence cap exhaustion. Read and apply [menu-layout](../../brainstorming/reference/menu-layout.md); ask for explicit funding of additional rounds. Emit this proactively, independent of any runtime guard error. Keep verification incomplete; emit no done or stuck line here or at intermediate closure. Open gaps
|
|
180
180
|
within the cap → re-partition (per the rule above) and start the next
|
|
181
181
|
round. Cap (`gauntlet_setting({ key: "closureReview" }).maxFixRounds`,
|
|
182
182
|
default `5`, floors negatives at `0`, normalizes missing or non-integer values to `5`) reached
|
|
@@ -70,7 +70,7 @@ The main loop never writes the plan. One fresh `plan-writer` child does the reco
|
|
|
70
70
|
No `output:`, no `model:` (`subagents.agentOverrides.plan-writer.model` applies when set, else the child inherits the main loop). The `acceptance` line is required: without it pi-cohort appends a structured-report contract that the child's one-line reply would fail. Fill the five paths and, when step 6 or an amendment supplies one, append a `Findings:` or `Amend:` block after the template; compose nothing else.
|
|
71
71
|
4. The dispatch errored, returned an async handle, or left the plan path missing or empty: stop and report. There is no parent-authored fallback.
|
|
72
72
|
5. `plan_check({ planPath: "<abs plan path>" })` in the parent. This is the stamping call; run it whichever line the child replied with.
|
|
73
|
-
6. Branch on the pair (child reply, parent check):
|
|
73
|
+
6. Branch on the pair (child reply, parent check). Start the message with `gauntlet: question` alone at column zero on the first physical line, followed by a newline, for every user-facing baseline-failure, dirty-source, or contract question, including a second verbatim `FAIL`. Never append a colon to the marker. Follow the [first-line rule](../brainstorming/reference/menu-layout.md):
|
|
74
74
|
- `PLAN WRITTEN` + `PASS` -> step 7.
|
|
75
75
|
- `OPEN QUESTIONS` + any result -> read the section; absent or exactly `- none` takes the `PLAN WRITTEN` branch. For substantive rows, use the table below. On a pause retain phase `plan` as `in_progress` and its substep; no stamp or `plan_tracker` init.
|
|
76
76
|
|