waypoint-codex 0.18.1 → 0.19.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
@@ -163,6 +163,7 @@ Waypoint scaffolds a Codex-friendly repo around a few core pieces:
163
163
 
164
164
  - `AGENTS.md` for the project-scoped startup contract and durable repo guidance
165
165
  - `.waypoint/WORKSPACE.md` for live operational state
166
+ - `.waypoint/ACTIVE_PLANS.md` for the currently approved plan and active phase checkpoints
166
167
  - `.waypoint/docs/` for long-lived project docs
167
168
  - `.waypoint/plans/` for durable plan documents
168
169
  - `.waypoint/DOCS_INDEX.md` for docs and plans routing, so the agent knows what
@@ -186,6 +187,7 @@ The continuity story matters:
186
187
 
187
188
  - `.waypoint/DOCS_INDEX.md` helps the agent find the right docs before work
188
189
  - `.waypoint/WORKSPACE.md` helps the next session understand what is in flight
190
+ - `.waypoint/ACTIVE_PLANS.md` keeps the currently approved plan visible during execution
189
191
  - `.waypoint/context/RECENT_THREAD.md` helps the agent retain the important
190
192
  parts of the previous conversation
191
193
 
@@ -237,6 +239,7 @@ repo/
237
239
  ├── DOCS_INDEX.md
238
240
  ├── TRACKS_INDEX.md
239
241
  ├── WORKSPACE.md
242
+ ├── ACTIVE_PLANS.md
240
243
  ├── docs/
241
244
  ├── plans/
242
245
  ├── track/
package/dist/src/core.js CHANGED
@@ -11,6 +11,7 @@ const DEFAULT_PLANS_DIR = ".waypoint/plans";
11
11
  const DEFAULT_TRACK_DIR = ".waypoint/track";
12
12
  const DEFAULT_TRACKS_INDEX = ".waypoint/TRACKS_INDEX.md";
13
13
  const DEFAULT_WORKSPACE = ".waypoint/WORKSPACE.md";
14
+ const DEFAULT_ACTIVE_PLANS = ".waypoint/ACTIVE_PLANS.md";
14
15
  const GITIGNORE_WAYPOINT_START = "# Waypoint state";
15
16
  const GITIGNORE_WAYPOINT_END = "# End Waypoint state";
16
17
  const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
@@ -43,6 +44,7 @@ const LEGACY_WAYPOINT_GITIGNORE_RULES = new Set([
43
44
  ".waypoint/README.md",
44
45
  ".waypoint/SOUL.md",
45
46
  ".waypoint/WORKSPACE.md",
47
+ ".waypoint/ACTIVE_PLANS.md",
46
48
  ".waypoint/agent-operating-manual.md",
47
49
  ".waypoint/",
48
50
  ".waypoint/DOCS_INDEX.md",
@@ -76,6 +78,7 @@ const SHIPPED_SKILL_NAMES = [
76
78
  "backend-ship-audit",
77
79
  ];
78
80
  const TIMESTAMPED_WORKSPACE_SECTIONS = new Set([
81
+ "## Active Plans",
79
82
  "## Active Trackers",
80
83
  "## Current State",
81
84
  "## In Progress",
@@ -382,6 +385,7 @@ export function initRepository(projectRoot, options) {
382
385
  scaffoldWaypointOptionalTemplates(projectRoot);
383
386
  writeText(path.join(projectRoot, DEFAULT_CONFIG_PATH), renderWaypointConfig(config));
384
387
  writeIfMissing(path.join(projectRoot, DEFAULT_WORKSPACE), readTemplate("WORKSPACE.md"));
388
+ writeIfMissing(path.join(projectRoot, DEFAULT_ACTIVE_PLANS), readTemplate(".waypoint/ACTIVE_PLANS.md"));
385
389
  ensureDir(path.join(projectRoot, DEFAULT_DOCS_DIR));
386
390
  ensureDir(path.join(projectRoot, DEFAULT_PLANS_DIR));
387
391
  ensureDir(path.join(projectRoot, DEFAULT_TRACK_DIR));
@@ -400,7 +404,7 @@ export function initRepository(projectRoot, options) {
400
404
  return [
401
405
  "Initialized Waypoint scaffold",
402
406
  "Installed managed AGENTS block",
403
- "Created .waypoint/WORKSPACE.md, .waypoint/docs/, .waypoint/plans/, and .waypoint/track/ scaffold",
407
+ "Created .waypoint/WORKSPACE.md, .waypoint/ACTIVE_PLANS.md, .waypoint/docs/, .waypoint/plans/, and .waypoint/track/ scaffold",
404
408
  "Installed repo-local Waypoint skills",
405
409
  "Installed coding/reviewer agents and project Codex config",
406
410
  "Generated .waypoint/DOCS_INDEX.md and .waypoint/TRACKS_INDEX.md",
@@ -483,6 +487,7 @@ export function doctorRepository(projectRoot) {
483
487
  const workspaceText = readFileSync(workspacePath, "utf8");
484
488
  for (const section of [
485
489
  "## Active Goal",
490
+ "## Active Plans",
486
491
  "## Active Trackers",
487
492
  "## Current State",
488
493
  "## In Progress",
@@ -622,6 +627,25 @@ export function doctorRepository(projectRoot) {
622
627
  paths: [tracksIndexPath],
623
628
  });
624
629
  }
630
+ const activePlansPath = path.join(projectRoot, DEFAULT_ACTIVE_PLANS);
631
+ if (!existsSync(activePlansPath)) {
632
+ findings.push({
633
+ severity: "error",
634
+ category: "workspace",
635
+ message: ".waypoint/ACTIVE_PLANS.md is missing.",
636
+ remediation: "Run `waypoint init` to scaffold the active plans file.",
637
+ paths: [activePlansPath],
638
+ });
639
+ }
640
+ else if (existsSync(workspacePath) && !readFileSync(workspacePath, "utf8").includes(DEFAULT_ACTIVE_PLANS)) {
641
+ findings.push({
642
+ severity: "warn",
643
+ category: "workspace",
644
+ message: "Workspace does not reference .waypoint/ACTIVE_PLANS.md under `## Active Plans`.",
645
+ remediation: "Point `## Active Plans` at `.waypoint/ACTIVE_PLANS.md` and summarize the current active phase.",
646
+ paths: [workspacePath, activePlansPath],
647
+ });
648
+ }
625
649
  if (existsSync(workspacePath) &&
626
650
  tracksIndex.activeTrackPaths.length > 0 &&
627
651
  !tracksIndex.activeTrackPaths.some((trackPath) => readFileSync(workspacePath, "utf8").includes(trackPath))) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "waypoint-codex",
3
- "version": "0.18.1",
3
+ "version": "0.19.0",
4
4
  "description": "Make Codex better by default with stronger planning, code quality, reviews, tracking, and repo guidance.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -58,8 +58,9 @@ If the plan is not actually settled, stop and use `planning` instead of guessing
58
58
 
59
59
  ## Step 3: Implement In Small Verified Chunks
60
60
 
61
- - Make the change in small logical chunks.
62
- - Commit in small steps when the repo workflow benefits from granular history.
61
+ - Make the change in small logical chunks inside the current approved plan phase.
62
+ - Batch related edits into a meaningful phase slice before running heavyweight checks, reviewer passes, or a commit.
63
+ - Commit at phase boundaries or other meaningful checkpoints when the repo workflow benefits from granular history.
63
64
  - Keep unrelated local changes intact.
64
65
  - Do not stop after the first implementation pass if clear follow-up fixes are still needed.
65
66
 
@@ -77,10 +78,10 @@ Use the repo's existing skills and reviewer agents instead of inventing a parall
77
78
 
78
79
  If the repo ships reviewer agents under `.codex/agents/`, use them in the closeout flow when they are available:
79
80
 
80
- - run `code-reviewer` for every non-trivial implementation slice before declaring the work clear
81
+ - run `code-reviewer` for every non-trivial completed phase before declaring the work clear
81
82
  - run `code-health-reviewer` when the change is medium or large, especially when it adds structure, duplicates logic, or introduces new abstractions
82
83
  - launch them in parallel when both apply
83
- - use them at meaningful milestones, not only at the very end: after substantial implementation chunks, before opening or materially updating a PR, after fixing substantial findings, and before final closeout
84
+ - use them at phase checkpoints, not only at the very end: after completing a substantial phase, before opening or materially updating a PR, after fixing substantial findings, and before final closeout
84
85
  - treat them as fresh closeout passes, not as optional decoration
85
86
  - if either reviewer finds anything more serious than obvious optional polish, fix those findings, rerun the most relevant verification, and run fresh reviewer passes instead of trusting stale results
86
87
  - keep iterating until the remaining reviewer feedback is only nitpicks or none
@@ -97,13 +98,21 @@ If those reviewer agents are not present in the repo, do the equivalent closeout
97
98
 
98
99
  If an existing repo-local skill clearly matches the verification surface, use it.
99
100
 
100
- ## Step 6: Run The Full Pre-Push Loop
101
+ ## Step 6: Run The Phase Checkpoint And Pre-Push Loop
101
102
 
102
- - Run the required tests and typechecks for every touched package or service.
103
- - Run builds, lint, migrations, or focused smoke tests when they are part of the real risk surface.
104
- - Fix failing checks before pushing unless the user explicitly accepts an exception.
105
- - For user-facing flows, do at least one realistic manual or UI-driven pass beyond pure unit coverage.
106
- - Update `WORKSPACE.md` and any active tracker with the current verification state before moving on.
103
+ At the end of each completed phase:
104
+
105
+ - run the required tests and typechecks for the touched package or service
106
+ - run builds, lint, migrations, or focused smoke tests when they are part of the real risk surface
107
+ - run the relevant reviewer-agent passes for non-trivial work
108
+ - fix failing checks and reviewer findings before moving to the next phase
109
+ - rerun the checkpoint until the current phase is clean
110
+ - update `WORKSPACE.md`, `.waypoint/ACTIVE_PLANS.md`, and any active tracker with the current verification state before moving on
111
+
112
+ Before pushing:
113
+
114
+ - make sure the latest completed phase checkpoint is still green
115
+ - for user-facing flows, do at least one realistic manual or UI-driven pass beyond pure unit coverage
107
116
 
108
117
  Do not push a branch that still obviously fails its own touched-surface checks.
109
118
 
@@ -28,9 +28,10 @@ Before planning:
28
28
  1. Read `.waypoint/SOUL.md`
29
29
  2. Read `.waypoint/agent-operating-manual.md`
30
30
  3. Read `.waypoint/WORKSPACE.md`
31
- 4. Read `.waypoint/context/MANIFEST.md`
32
- 5. Read every file listed in the manifest
33
- 6. Read the routed docs relevant to the task
31
+ 4. Read `.waypoint/ACTIVE_PLANS.md`
32
+ 5. Read `.waypoint/context/MANIFEST.md`
33
+ 6. Read every file listed in the manifest
34
+ 7. Read the routed docs relevant to the task
34
35
 
35
36
  ## Output Location
36
37
 
@@ -40,6 +41,7 @@ The plan belongs in the repo, not only in chat.
40
41
  - Choose the smallest routed location that matches the work, such as a project plan, implementation plan, or focused design note.
41
42
  - If a relevant plan doc already exists, update it instead of creating a competing one.
42
43
  - Make sure the doc remains discoverable through the routed docs layer.
44
+ - Update `.waypoint/ACTIVE_PLANS.md` when this plan becomes the approved active plan or when its current phase changes.
43
45
  - In chat, return only a concise summary plus the path to the plan doc.
44
46
 
45
47
  If the planned implementation will be large, multi-step, or likely to span multiple sessions, also create or update a tracker under `.waypoint/track/` and link it from `WORKSPACE.md` before implementation begins.
@@ -102,7 +104,10 @@ Plans document your understanding. Include what matters for this task:
102
104
  - **Current State**: What exists today — relevant files, data flows, constraints, existing patterns
103
105
  - **Changes**: Every file to create/modify/delete, how changes connect
104
106
  - **Decisions**: Why this approach, tradeoffs, assumptions
105
- - **Acceptance criteria**: What must be true when each step is "done"
107
+ - **Phase breakdown**: Distinct execution phases in the order they should happen
108
+ - **Scope checklist**: Concrete implementation items that can be marked done or not done
109
+ - **Acceptance criteria**: What must be true when each phase is "done"
110
+ - **Phase checkpoints**: What verification, reviewer passes, tests, typechecks, builds, or manual QA must pass before moving to the next phase
106
111
  - **Test cases**: For behavioral changes, include input -> expected output examples
107
112
  - **Non-Goals**: Explicitly out of scope to prevent implementation drift
108
113
 
@@ -125,6 +130,9 @@ Before presenting the plan, verify against real code:
125
130
  - No "we'll figure it out during implementation"
126
131
  - No literal code unless the user explicitly wants it
127
132
  - No pretending you verified something you didn't
133
+ - Approved scope must be explicit enough to act as an execution contract after user approval
134
+ - The plan must be explicit enough to support phase-by-phase execution and checkpoints without rediscovering the intended order in chat
135
+ - If the user approves the plan, do not silently defer or drop checklist items later; discuss any proposed scope change first
128
136
 
129
137
  If the change touches durable project behavior, include docs/workspace updates in the plan.
130
138
  Write or update the durable plan doc under `.waypoint/plans/` as part of the skill, not as an optional follow-up.
@@ -140,9 +148,12 @@ A good durable plan doc usually includes:
140
148
  1. Current state
141
149
  2. Proposed changes
142
150
  3. Decisions and tradeoffs
143
- 4. Acceptance criteria
144
- 5. Verification
145
- 6. TL;DR
151
+ 4. Phase breakdown
152
+ 5. Scope checklist
153
+ 6. Acceptance criteria
154
+ 7. Phase checkpoints
155
+ 8. Verification
156
+ 9. TL;DR
146
157
 
147
158
  ## Final Response
148
159
 
@@ -152,6 +163,8 @@ When the plan doc is written:
152
163
  - include the doc path
153
164
  - call out any unresolved decisions that still need the user's input
154
165
  - if there are no unresolved decisions and the user approves the plan, treat that approval as authorization to execute the plan end to end rather than asking again at each obvious next step
166
+ - once approved, update `.waypoint/ACTIVE_PLANS.md` so the active plan, current phase, and current checkpoint are visible during execution
167
+ - once approved, use the plan's checklist, phase checkpoints, and acceptance criteria to decide whether the work is actually done; if anything approved is skipped, report that as partial work or ask to change scope instead of calling it complete
155
168
 
156
169
  ## Quality Bar
157
170
 
@@ -26,9 +26,10 @@ Before tracking:
26
26
  1. Read `.waypoint/SOUL.md`
27
27
  2. Read `.waypoint/agent-operating-manual.md`
28
28
  3. Read `.waypoint/WORKSPACE.md`
29
- 4. Read `.waypoint/context/MANIFEST.md`
30
- 5. Read every file listed in that manifest
31
- 6. Read `.waypoint/track/README.md`
29
+ 4. Read `.waypoint/ACTIVE_PLANS.md`
30
+ 5. Read `.waypoint/context/MANIFEST.md`
31
+ 6. Read every file listed in that manifest
32
+ 7. Read `.waypoint/track/README.md`
32
33
 
33
34
  ## When A Tracker Is Required
34
35
 
@@ -84,6 +85,7 @@ A good tracker usually includes:
84
85
  - `Current State`
85
86
  - `Next`
86
87
  - `Workstreams`
88
+ - `Phase Checkpoints`
87
89
  - `Verification`
88
90
  - `Decisions`
89
91
  - `Notes`
@@ -93,8 +95,10 @@ Use `- [ ]` checkboxes when there are many concrete tasks to track. Use status-s
93
95
  ## Step 4: Link It From The Workspace
94
96
 
95
97
  Add or update a bullet under `## Active Trackers` in `.waypoint/WORKSPACE.md` that points at the tracker path and states the current phase or next step.
98
+ If the work is driven by an approved plan, keep `.waypoint/ACTIVE_PLANS.md` aligned with the same phase naming and checkpoint language.
96
99
 
97
100
  `WORKSPACE.md` should answer "what matters right now?"
101
+ `.waypoint/ACTIVE_PLANS.md` should answer "what plan and phase must be followed right now?"
98
102
  The tracker should answer "what exactly is happening across the whole workstream?"
99
103
 
100
104
  ## Step 5: Maintain It During Execution
@@ -22,6 +22,7 @@
22
22
  .waypoint/README.md
23
23
  .waypoint/SOUL.md
24
24
  .waypoint/WORKSPACE.md
25
+ .waypoint/ACTIVE_PLANS.md
25
26
  .waypoint/agent-operating-manual.md
26
27
  .waypoint/DOCS_INDEX.md
27
28
  .waypoint/TRACKS_INDEX.md
@@ -0,0 +1,23 @@
1
+ # Active Plans
2
+
3
+ This file is the live execution-contract layer for approved plans that are currently in flight.
4
+
5
+ Keep it short and current.
6
+
7
+ For each active plan, include:
8
+ - source plan path under `.waypoint/plans/`
9
+ - whether the plan is approved
10
+ - the current phase
11
+ - the checklist or acceptance criteria for that phase
12
+ - what checkpoint must pass before moving to the next phase
13
+ - any explicit non-goals or approved deferrals
14
+
15
+ Rules:
16
+ - Read this file during bootstrap and before meaningful implementation.
17
+ - Follow the approved plan. Do not silently deviate from it.
18
+ - Update this file whenever the active plan, current phase, checkpoint, or approved scope changes.
19
+ - If no approved plan is active, say so plainly here.
20
+
21
+ ## Active Plan
22
+
23
+ - None right now.
@@ -4,6 +4,7 @@ Repo-local Waypoint configuration and project memory files.
4
4
 
5
5
  - `config.toml` — Waypoint feature toggles and file locations
6
6
  - `WORKSPACE.md` — live operational state; new or materially revised entries in multi-topic sections are timestamped
7
+ - `ACTIVE_PLANS.md` — live execution-contract view of the approved plan(s) and current phase checkpoints
7
8
  - `DOCS_INDEX.md` — generated docs and plans routing map
8
9
  - `SOUL.md` — agent identity and working values
9
10
  - `agent-operating-manual.md` — required session workflow
@@ -20,8 +20,9 @@ Bootstrap sequence:
20
20
  2. Read `.waypoint/SOUL.md`
21
21
  3. Read this file
22
22
  4. Read `.waypoint/WORKSPACE.md`
23
- 5. Read `.waypoint/context/MANIFEST.md`
24
- 6. Read every file listed in that manifest
23
+ 5. Read `.waypoint/ACTIVE_PLANS.md`
24
+ 6. Read `.waypoint/context/MANIFEST.md`
25
+ 7. Read every file listed in that manifest
25
26
 
26
27
  Do not skip this sequence.
27
28
 
@@ -37,6 +38,7 @@ The repository should contain the context the next agent needs.
37
38
  - user-scoped `AGENTS.md` is the durable cross-project guidance layer: collaboration preferences, personal workflow rules, and stable defaults that should apply across repos
38
39
  - the repo root `AGENTS.md` is the project-scoped guidance layer: repo-specific context, constraints, and durable rules for this project
39
40
  - `.waypoint/WORKSPACE.md` is the live operational record: in progress, current state, next steps
41
+ - `.waypoint/ACTIVE_PLANS.md` is the live execution-contract record: which approved plan is active, which phase is active, and what checkpoint must pass before moving on
40
42
  - `.waypoint/track/` is the optional execution-tracking layer for active long-running work that genuinely needs durable progress state
41
43
  - `.waypoint/docs/` is the durable project memory: architecture, decisions, integration notes, and debugging knowledge
42
44
  - `.waypoint/plans/` is the durable planning layer: implementation plans, rollout plans, migration plans, and other task-shaped plans worth keeping
@@ -49,17 +51,22 @@ If something important lives only in your head or in the chat transcript, the re
49
51
  - Read code before editing it.
50
52
  - Follow the repo's documented patterns when they are healthy.
51
53
  - If the user approves a plan or explicitly tells you to proceed, treat that as authorization to finish the approved work end to end.
52
- - When the user shows a bug, screenshot, or broken behavior, investigate first. Lead with what is happening, why it is likely happening, what you checked, and what you are doing next.
54
+ - Once a plan is approved, treat its scope and acceptance criteria as the execution contract. Do not silently narrow, defer, or drop approved work because the system feels good enough, the remaining work looks less valuable, or you would prefer a smaller PR. If the scope should change, discuss that with the user first unless a real blocker, hidden-risk decision, or explicit user redirect forces the change.
55
+ - When the user shows a bug, screenshot, or broken behavior, investigate first. Lead with what is happening, why it is likely happening, the important options or tradeoffs if they matter, what you checked, and what you are doing next.
56
+ - After investigation, explain the diagnosis before jumping into implementation whenever the cause, tradeoffs, or solution shape are not already obvious.
53
57
  - Fix underlying causes instead of papering over symptoms. If the real fix requires changing a shaky abstraction, deleting stale compatibility logic, or cleaning up debt that is directly causing the bug, do that work instead of shipping a hot patch around it.
54
58
  - Do not stop at the first local patch that makes the symptom disappear if the root cause is still obviously in place.
55
59
  - Do not lead with readiness disclaimers such as "I can't call this done yet" unless the user explicitly asked whether the work is ready, shippable, or complete.
60
+ - Keep communication concise by default. Lead with the answer, diagnosis, decision, or next step, and include only the most important supporting detail unless the user asks for more.
56
61
  - Honesty means accurate diagnosis, explicit uncertainty, and clear verification limits. It does not mean substituting process language for investigation.
57
62
  - Before making meaningful frontend or backend decisions, inspect the available user-scoped and project-scoped `AGENTS.md` guidance. If the task depends on frontend or backend context that is missing from the project-scoped guidance and routed docs, use the corresponding `*-context-interview` skill to fill that gap instead of guessing.
58
63
  - Update the user-scoped `AGENTS.md` when you learn a durable preference, workflow rule, or default that should apply across projects and your environment allows you to edit it.
59
64
  - Update the project-scoped repo `AGENTS.md` when you learn durable repo truth, project constraints, or stable project-specific collaboration rules.
60
65
  - Treat `.waypoint/WORKSPACE.md` as mandatory live execution state, not end-of-task paperwork.
66
+ - Treat `.waypoint/ACTIVE_PLANS.md` as mandatory live plan state for approved work, not a forgotten side file.
61
67
  - Update `.waypoint/WORKSPACE.md` during the work whenever the active goal, phase, next step, blocker, verification state, or review state materially changes. In multi-topic sections, prefix new or materially revised bullets with a local timestamp like `[2026-03-06 20:10 PST]`.
62
- - Do not wait until final handoff to update workspace state. If the work took enough effort that the next agent would benefit from a current snapshot, the workspace should already say so.
68
+ - Update `.waypoint/ACTIVE_PLANS.md` whenever the active approved plan, current phase, phase checklist, checkpoint, or approved scope changes.
69
+ - Do not wait until final handoff to update workspace or active plan state. If the work took enough effort that the next agent would benefit from a current snapshot, those files should already say so.
63
70
  - For any non-trivial multi-step work, any work likely to span sessions, any work with a meaningful checklist, or any workstream that has already accumulated review/QA follow-ups, create or update a tracker in `.waypoint/track/`, keep detailed execution state there during the work, and point at it from `## Active Trackers` in `.waypoint/WORKSPACE.md`.
64
71
  - If a tracker exists for the workstream, maintain it as the work evolves instead of updating it only at the end.
65
72
  - Update `.waypoint/docs/` when durable project knowledge changes, update `.waypoint/plans/` when durable plans change, and refresh each changed routable doc's `last_updated` field.
@@ -69,7 +76,8 @@ If something important lives only in your head or in the chat transcript, the re
69
76
  - Let skills carry their own invocation guidance. The always-on contract should only keep the high-level rule: use repo-local skills deliberately when they help the current task.
70
77
  - Use the repo-local skills and reviewer agents deliberately, but do not underuse them on work that is expensive to get wrong.
71
78
  - When spawning reviewer agents or other subagents, explicitly set `fork_context: false` and choose the model/reasoning pair that matches the risk and importance of the second pass.
72
- - For non-trivial work, strongly prefer reviewer-agent passes between major implementation milestones, before opening or updating a PR, after fixing substantial findings, and before final closeout when the environment allows those agents to run.
79
+ - For non-trivial work, strongly prefer reviewer-agent passes at phase checkpoints, before opening or materially updating a PR, after fixing substantial findings, and before final closeout when the environment allows those agents to run.
80
+ - Do not run heavyweight reviewer or full-suite loops after every tiny edit. Batch related work into the current approved phase, then run the checkpoint.
73
81
  - If you created a PR earlier in the current session and need to push more work, first confirm that PR is still open. If it is closed, create a fresh branch from `origin/main` and open a fresh PR instead of pushing more commits to the old PR branch.
74
82
  - Treat reviewer agents as one-shot workers: once a reviewer returns findings, read the result and close it. If another review pass is needed later, spawn a fresh reviewer instead of reusing the same thread.
75
83
  - If `code-reviewer` or `code-health-reviewer` surface anything more serious than optional polish, fix the findings, rerun the relevant verification, and launch fresh passes until the remaining feedback is only nitpicks or none.
@@ -86,6 +94,8 @@ If something important lives only in your head or in the chat transcript, the re
86
94
 
87
95
  Once the user has approved a plan or otherwise told you to continue, own the work until the slice is genuinely complete.
88
96
 
97
+ Execute approved work phase by phase. Complete the current phase, run the relevant checkpoint, fix findings, rerun verification, and only then move to the next phase.
98
+
89
99
  That means:
90
100
 
91
101
  - continue through implementation, verification, and required repo-memory updates without asking for incremental permission
@@ -96,6 +106,7 @@ Pause only when:
96
106
 
97
107
  - a real blocker prevents forward progress
98
108
  - a hidden-risk or non-obvious decision would materially change scope, behavior, cost, or data safety
109
+ - you want to change approved scope or defer approved work
99
110
  - the user explicitly redirects, pauses, or narrows the work
100
111
 
101
112
  If none of those are true, keep going.
@@ -143,6 +154,7 @@ Deliberate closeout review is available when you want a second pass for ship-rea
143
154
  - No silent assumptions
144
155
  - No fake verification
145
156
  - No hiding behind process language when a useful diagnosis is possible
157
+ - No silent scope reduction after plan approval
146
158
  - No skipping docs or workspace updates when they matter
147
159
  - No broad scope creep under the banner of "while I'm here"
148
160
 
@@ -534,6 +534,22 @@ function writeActiveTrackers(contextDir, projectRoot, activeTracks) {
534
534
  );
535
535
  }
536
536
 
537
+ function writeActivePlans(contextDir, projectRoot) {
538
+ const activePlansPath = path.join(projectRoot, ".waypoint", "ACTIVE_PLANS.md");
539
+ return writeContextFile(
540
+ contextDir,
541
+ "ACTIVE_PLANS.md",
542
+ "Active Plans",
543
+ existsSync(activePlansPath)
544
+ ? [
545
+ "Read this file before meaningful implementation when approved plan work is in flight:",
546
+ "",
547
+ `- \`${path.relative(projectRoot, activePlansPath)}\``,
548
+ ].join("\n")
549
+ : "`.waypoint/ACTIVE_PLANS.md` is missing.",
550
+ );
551
+ }
552
+
537
553
  function main() {
538
554
  const projectRoot = detectProjectRoot();
539
555
  const contextDir = path.join(projectRoot, ".waypoint", "context");
@@ -672,6 +688,7 @@ function main() {
672
688
  ].join("\n")
673
689
  );
674
690
  const recentThreadPath = writeRecentThread(contextDir, projectRoot, threadIdOverride);
691
+ const activePlansPath = writeActivePlans(contextDir, projectRoot);
675
692
  const activeTrackersPath = writeActiveTrackers(contextDir, projectRoot, activeTracks);
676
693
 
677
694
  const manifestPath = path.join(contextDir, "MANIFEST.md");
@@ -691,6 +708,7 @@ function main() {
691
708
  `- \`${path.relative(projectRoot, recentCommitsPath)}\` — recent commits`,
692
709
  `- \`${path.relative(projectRoot, prsPath)}\` — open and recently merged pull requests`,
693
710
  `- \`${path.relative(projectRoot, recentThreadPath)}\` — latest meaningful turns from the local ${codingAgentLabelText} session for this repo`,
711
+ `- \`${path.relative(projectRoot, activePlansPath)}\` — active plan summary`,
694
712
  `- \`${path.relative(projectRoot, docsIndexPath)}\` — current docs index`,
695
713
  `- \`${path.relative(projectRoot, tracksIndexPath)}\` — current tracker index`,
696
714
  `- \`${path.relative(projectRoot, activeTrackersPath)}\` — active tracker summary`,
@@ -700,6 +718,7 @@ function main() {
700
718
  "- `.waypoint/SOUL.md`",
701
719
  "- `.waypoint/agent-operating-manual.md`",
702
720
  "- `.waypoint/WORKSPACE.md`",
721
+ "- `.waypoint/ACTIVE_PLANS.md`",
703
722
  "",
704
723
  "## Active tracker files to read after this manifest",
705
724
  "",
@@ -31,6 +31,10 @@ What outcome this tracker is trying to reach.
31
31
  - [ ] First task
32
32
  - [ ] Second task
33
33
 
34
+ ## Phase Checkpoints
35
+
36
+ - [ ] Checkpoint required before leaving the current phase
37
+
34
38
  ## Verification
35
39
 
36
40
  - [ ] Verification step
@@ -1,11 +1,15 @@
1
1
  # Workspace
2
2
 
3
- Timestamp discipline: Prefix new or materially revised bullets in `Active Trackers`, `Current State`, `In Progress`, `Next`, `Parked`, and `Done Recently` with `[YYYY-MM-DD HH:MM TZ]`.
3
+ Timestamp discipline: Prefix new or materially revised bullets in `Active Plans`, `Active Trackers`, `Current State`, `In Progress`, `Next`, `Parked`, and `Done Recently` with `[YYYY-MM-DD HH:MM TZ]`.
4
4
 
5
5
  ## Active Goal
6
6
 
7
7
  Describe the main thing currently being built or changed.
8
8
 
9
+ ## Active Plans
10
+
11
+ Point at `.waypoint/ACTIVE_PLANS.md` and note the currently active approved plan and phase.
12
+
9
13
  ## Active Trackers
10
14
 
11
15
  List any active tracker docs under `.waypoint/track/`, with the current phase or next step.
@@ -19,8 +19,9 @@ Bootstrap sequence:
19
19
  2. Read `.waypoint/SOUL.md`
20
20
  3. Read `.waypoint/agent-operating-manual.md`
21
21
  4. Read `.waypoint/WORKSPACE.md`
22
- 5. Read `.waypoint/context/MANIFEST.md`
23
- 6. Read every file listed in the manifest
22
+ 5. Read `.waypoint/ACTIVE_PLANS.md`
23
+ 6. Read `.waypoint/context/MANIFEST.md`
24
+ 7. Read every file listed in the manifest
24
25
 
25
26
  This is mandatory, not optional.
26
27
 
@@ -69,18 +70,21 @@ If some uncertainty still remains after checking persisted context and interview
69
70
 
70
71
  Prefer existing persisted context over re-interviewing the user.
71
72
 
72
- If the user approves a plan or explicitly tells you to proceed, treat that as authorization to execute the work end to end. Do not stop mid-implementation for incremental permission unless a real blocker, hidden-risk decision, or explicit user redirect requires a pause.
73
+ If the user approves a plan or explicitly tells you to proceed, treat that as authorization to execute the work end to end. An approved plan is the active execution contract: do not silently narrow, defer, or drop planned work because the system feels good enough, the remaining work feels less important, or you would prefer a smaller PR. If you believe the approved scope should change, pause and discuss that change with the user before proceeding. Only change approved scope without that discussion when a real blocker, hidden-risk decision, or explicit user redirect requires it.
73
74
  When work is in flight elsewhere — reviewer agents, subagents, CI, automated review, external jobs, or other waiting periods — wait as long as required. There is no fixed waiting limit, and slowness alone is not a reason to interrupt or abandon the work.
74
75
  When you use a browser, app, or other interactive UI to inspect, reproduce, or verify something, send the user screenshots of the relevant states so they can see what you saw. If screenshots are not possible in the current environment, say so explicitly.
75
76
  When an explanation is clearer visually, use Mermaid diagrams directly in chat for flows, architecture, state, and plans.
76
77
 
77
78
  Delivery expectations:
78
- - Before you start, decide what "done" means for the task. Set your own finish line and use it as your checklist while you work.
79
+ - Keep communication concise by default. Lead with the answer, diagnosis, decision, or next step, and include only the most important supporting detail unless the user asks for more.
80
+ - For planned work, treat `.waypoint/ACTIVE_PLANS.md` as the live execution contract and define done from the approved scope, current phase checkpoint, and acceptance criteria, not from your own sense that the system is already good enough.
81
+ - Execute approved plans phase by phase. Finish the current phase, run the relevant checkpoint, resolve findings, and only then move to the next phase.
79
82
  - When you report back to the user, explain the result in plain, direct language. Say what you changed, what happened, and anything the user actually needs to know, but do not lean on jargon, low-level implementation detail, or code-heavy narration unless the user asks for it.
80
83
  - Write for a smart person who is not looking at the code. The goal is clarity, not technical performance.
81
84
  - This communication rule applies to how you explain the work, not to how you do it. Your actual reasoning, coding, debugging, and verification should stay technical, precise, and rigorous.
82
85
  - When the user shows a bug, broken behavior, or a screenshot of something wrong, investigate before discussing readiness.
83
- - Lead with the useful truth: what is happening, the likely cause, what you checked, and what you are doing next.
86
+ - After investigation, explain the problem to the user before jumping into implementation whenever the diagnosis, tradeoffs, or solution shape are not already obvious.
87
+ - Lead with the useful truth: what is happening, the likely cause, the important options or tradeoffs if they matter, what you checked, and what you are doing next.
84
88
  - Fix the underlying problem, not only the visible symptom. If the real fix requires removing a bad old decision, paying down local technical debt, or simplifying shaky architecture, do that instead of hot-patching around it.
85
89
  - Do not ship a bug fix that knowingly leaves the real cause in place behind a cosmetic patch unless the user explicitly asked for a temporary workaround.
86
90
  - Do not lead with refusal or readiness-disclaimer language like "I can't call this done yet" unless the user explicitly asked for a ship/readiness judgment.
@@ -90,21 +94,25 @@ Delivery expectations:
90
94
  - Use representative or real inputs when practical instead of toy examples, so the check tells you something meaningful about the actual request.
91
95
  - If there are realistic edge cases, failure modes, or recovery paths you can exercise without turning the task into a science project, do that too.
92
96
  - If something looks wrong, incomplete, or unproven, keep going. Fix it, rerun the check, and only report completion once the result matches the request.
97
+ - Do not call work done while approved scope or acceptance criteria remain unfinished. If any approved item was skipped or deferred, report that plainly as partial work or a scope-change proposal, not as completion.
93
98
  - The point of this is to keep iteration off the user's shoulders. Return finished work when possible, not a first pass that still depends on the user to spot-check it for you.
94
99
  - Only come back before that if you hit a genuine blocker you cannot clear with the codebase, tools, or available context. If that happens, say it plainly and be explicit about what remains unverified.
95
100
 
96
101
  Working rules:
97
102
  - Treat `.waypoint/WORKSPACE.md` as a mandatory live execution log, not a closeout chore.
103
+ - Treat `.waypoint/ACTIVE_PLANS.md` as the mandatory live execution-contract file for approved plans.
98
104
  - Update `.waypoint/WORKSPACE.md` during the work whenever the active goal, current phase, next step, blocker, verification state, or handoff context materially changes.
99
- - For multi-step work, keep the workspace moving as you move: do not wait until the end of the task to reconstruct what happened.
105
+ - Update `.waypoint/ACTIVE_PLANS.md` whenever the active approved plan, current phase, phase checklist, checkpoint, or approved scope changes.
106
+ - For multi-step work, keep the workspace and active plan file moving as you move: do not wait until the end of the task to reconstruct what happened.
100
107
  - If a tracker exists for the active workstream, update the tracker during the work as well and keep `WORKSPACE.md` pointing at the current tracker state.
101
108
  - Update user-scoped `AGENTS.md` when you learn a durable preference, standing rule, or default that should apply across projects and your environment allows you to edit that file
102
109
  - Update the project-scoped repo `AGENTS.md` when you learn durable repo truth, project constraints, or stable project-specific collaboration rules
103
- - Update `.waypoint/docs/` when durable project knowledge changes, update `.waypoint/plans/` when a durable plan changes, and refresh `last_updated` on touched routable docs
110
+ - Update `.waypoint/docs/` when durable project knowledge changes, update `.waypoint/plans/` when a durable plan changes, update `.waypoint/ACTIVE_PLANS.md` when the active approved plan or current phase changes, and refresh `last_updated` on touched routable docs
104
111
  - Keep most work in the main agent. Use repo-local skills, trackers, and reviewer agents when they create clear leverage, not as default ceremony.
105
112
  - Let repo-local skills describe their own triggers. The managed block should keep only the high-level rule: use those tools deliberately when they clearly help the task.
106
- - Use reviewer agents proactively at meaningful milestones when the work is non-trivial, risky, user-facing, merge-bound, or otherwise expensive to get wrong.
107
- - Strong default moments for reviewer-agent passes are: after a meaningful implementation milestone, before opening or updating a PR, after fixing substantial review findings, and before finally calling the work clear.
113
+ - Use reviewer agents proactively at phase checkpoints when the work is non-trivial, risky, user-facing, merge-bound, or otherwise expensive to get wrong.
114
+ - Strong default moments for reviewer-agent passes are: after completing a plan phase, before opening or materially updating a PR, after fixing substantial review findings, and before finally calling the work clear.
115
+ - Do not interrupt implementation for heavyweight checks after every tiny edit. Batch related work into the current plan phase, then run the checkpoint.
108
116
  - When `code-reviewer` or `code-health-reviewer` find anything more serious than obvious optional polish, fix those findings, rerun the relevant verification, and run fresh review passes until the remaining feedback is only nitpicks or none.
109
117
  - Treat `plan-reviewer`, `code-reviewer`, and `code-health-reviewer` as one-shot agents: once a reviewer returns findings, close it; if another pass is needed later, spawn a fresh reviewer instead of reusing the old thread
110
118
  - If you created a PR earlier in the current session and need to push more work, first confirm that PR is still open. If it is closed, create a fresh branch from `origin/main` and open a fresh PR instead of pushing more commits to the old PR branch