e2e-engineering 1.0.0 → 1.1.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/README.md
CHANGED
|
@@ -172,7 +172,7 @@ The risks
|
|
|
172
172
|
|
|
173
173
|
## Part 3 — Establish shared language before building
|
|
174
174
|
|
|
175
|
-
### 3.1 Why “Grill Me” is useful
|
|
175
|
+
### 3.1 Why “Grill Me” is useful (@mattpocock)
|
|
176
176
|
|
|
177
177
|
The original **grill-me** skill asks the AI to interview the user relentlessly until both sides reach a shared understanding. It walks down the design tree and resolves dependencies between decisions one by one.
|
|
178
178
|
|
|
@@ -193,7 +193,7 @@ Use this when an idea is still vague.
|
|
|
193
193
|
|
|
194
194
|
---
|
|
195
195
|
|
|
196
|
-
### 3.2 Prefer “Grill with Docs” when there is a codebase
|
|
196
|
+
### 3.2 Prefer “Grill with Docs” when there is a codebase (@mattpocock)
|
|
197
197
|
|
|
198
198
|
The newer workflow replaces pure grill-me with **grill-with-docs** when a codebase exists. The problem with grill-me alone is that good terminology may emerge during the conversation but not get documented. Then the user has to re-explain the same domain concepts again in future sessions.
|
|
199
199
|
|
|
@@ -64,7 +64,7 @@ Repeat until COMPLETE (all stories `status: done`):
|
|
|
64
64
|
1. **Compute ready set** — stories whose `depends_on` are all `done` AND own `status: todo`.
|
|
65
65
|
2. **Fan-out** — dispatch each ready story to its OWN git worktree + subagent (use EnterWorktree). Inject [constitution](./constitution.md) + the story + its testCases into each subagent. Subagent runs [tdd](./impl/tdd.md): gap-check → red-green-refactor → automate its FEATURE e2e → return SUMMARY ONLY.
|
|
66
66
|
- **HARD GATE 2 — TDD red before green.** Each subagent must write a failing test before production code. Enforced inside tdd.md.
|
|
67
|
-
- **HARD GATE 3 — debug escalation.** Subagent fails 3 fix attempts → orchestrator re-dispatches ONCE with [systematic-debugging](./impl/systematic-debugging.md) (4-phase root-cause). Still red → mark story `blocked`, append `## Blocked` in progress.txt, keep draining the ready set. Escalate to human ONLY on stall (no ready work left, or every remaining story depends on a blocked one).
|
|
67
|
+
- **HARD GATE 3 — debug escalation.** Subagent fails 3 fix attempts → orchestrator re-dispatches ONCE with [systematic-debugging](./impl/systematic-debugging.md) (4-phase root-cause). Still red → mark story `blocked`, append `## Blocked` in progress.txt, keep draining the ready set. Escalate to human ONLY on stall (no ready work left, or every remaining story depends on a blocked one). Emit `<e2e-stall reason="all-stories-blocked" />` before escalating.
|
|
68
68
|
3. **Fan-in (orchestrator, serial — sole writer):** for each returned summary:
|
|
69
69
|
- Per-slice review: check summary against the story spec + constitution. Drift → bounce back to the subagent, do not merge.
|
|
70
70
|
- Merge the worktree branch into baseBranch. Resolve conflicts (never discard work).
|
|
@@ -88,7 +88,7 @@ Entry: gate 5 passed.
|
|
|
88
88
|
1. [review](./post-impl/review.md) — fresh-context, full-diff, cross-slice audit by a clean reviewer. Findings ranked by severity.
|
|
89
89
|
2. [human-qa](./post-impl/human-qa.md) — walk the Manual test-case set (the disposition `Manual` cases). Single human-approval chokepoint: in ONE touch the human approves QA sign-off AND batched `## Pending Amendments` → promote to [constitution](./constitution.md) (bump version) or drop.
|
|
90
90
|
|
|
91
|
-
Task close: extract durable learnings, ensure amendments resolved, progress.txt resets on the NEXT task.
|
|
91
|
+
Task close: extract durable learnings, ensure amendments resolved, progress.txt resets on the NEXT task. Emit `<e2e-complete stories="N" />` (N = total story count from prd.json).
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
|
package/dist/marketplace/plugins/e2e-engineering/skills/e2e-engineering/cross/context-checkpoint.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# context-checkpoint — 65% snapshot
|
|
2
2
|
|
|
3
|
-
When context reaches 65% (hook-injected %),
|
|
3
|
+
When context reaches 65% (hook-injected %), **set a checkpoint flag** — do NOT interrupt immediately. Finish the current in-flight task to its next fan-in boundary, then save the checkpoint and end the session so a fresh one resumes cleanly. Provenance: ralph checkpoint/phase-transition. ADR 0002.
|
|
4
|
+
|
|
5
|
+
## When to trigger
|
|
6
|
+
|
|
7
|
+
| State at 65% | Action |
|
|
8
|
+
|---|---|
|
|
9
|
+
| Between slices / at fan-in / idle | Checkpoint immediately |
|
|
10
|
+
| Mid-slice TDD loop | Finish current slice, checkpoint at fan-in |
|
|
11
|
+
| Mid-subagent (spawned, not returned) | Wait for subagent result, checkpoint after fan-in |
|
|
12
|
+
| Mid-user-message reply | Complete reply, then checkpoint |
|
|
13
|
+
|
|
14
|
+
Never abort mid-task. The 65% signal means "next safe stop, not right now."
|
|
4
15
|
|
|
5
16
|
## What to write (three files)
|
|
6
17
|
1. **prd.json** — already maintained live by the orchestrator. Ensure `status` of every story is current.
|
|
@@ -14,10 +25,32 @@ When context reaches 65% (hook-injected %), save a checkpoint and end the sessio
|
|
|
14
25
|
## Suggested skill # which e2e-engineering sub-skill the fresh session should invoke
|
|
15
26
|
```
|
|
16
27
|
|
|
17
|
-
## Then
|
|
18
|
-
|
|
28
|
+
## Then — checkpoint instruction + HARD STOP
|
|
29
|
+
|
|
30
|
+
After writing the three files:
|
|
31
|
+
|
|
32
|
+
1. Output this exact message to the user:
|
|
33
|
+
```
|
|
34
|
+
Context at 65%+ — checkpoint saved.
|
|
35
|
+
Handoff: .e2e-engineering/handoff-<phase>-<timestamp>.md
|
|
36
|
+
|
|
37
|
+
Resume (manual):
|
|
38
|
+
1. /clear ← reset context
|
|
39
|
+
2. /e2e-engineering ← fresh session reads handoff automatically
|
|
40
|
+
|
|
41
|
+
<e2e-checkpoint handoff=".e2e-engineering/handoff-<phase>-<timestamp>.md" />
|
|
42
|
+
```
|
|
43
|
+
(substitute actual handoff path in BOTH the Handoff line and the signal)
|
|
44
|
+
2. **HARD STOP** — process NO further messages in this session. Any further user message gets one reply: "Checkpoint saved — `/clear` then `/e2e-engineering` to resume."
|
|
45
|
+
|
|
46
|
+
> **Unattended automation (AFK wrapper):** `scripts/afk.ps1` detects `<e2e-checkpoint />` and restarts automatically. Run `.\scripts\afk.ps1` after gate 1 to enable AFK mode. Supports claude (default), opencode, codex via `-AI` param. (ADR 0005)
|
|
47
|
+
|
|
48
|
+
The fresh session runs [phase-transition](./phase-transition.md) bootstrap when `/e2e-engineering` is invoked.
|
|
19
49
|
|
|
20
50
|
## Red flags (stop)
|
|
51
|
+
- Checkpointing mid-task instead of waiting for fan-in boundary.
|
|
52
|
+
- Treating 65% as an immediate hard stop — it's a "prepare to stop" signal.
|
|
21
53
|
- Hand-writing the handoff instead of generating from state files (drift).
|
|
22
|
-
- Checkpointing mid-subagent (checkpoint at fan-in boundaries, between slices — not inside a slice's TDD).
|
|
23
54
|
- Writing the handoff in prose (it's caveman:ultra).
|
|
55
|
+
- Continuing to process user messages after outputting the stop message.
|
|
56
|
+
- Telling user to start fresh without providing the exact handoff path.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "e2e-engineering",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Master engineering orchestrator skill — idea to passing E2E across pre-implementation, implementation, and post-implementation phases. Installs into Claude Code (full fidelity), or as a portable AGENTS.md / Cursor rules variant (sequential).",
|
|
5
5
|
"bin": {
|
|
6
6
|
"e2e-engineering": "bin/install.js"
|