@popoverai/dotrequirements 0.38.0 → 0.38.2

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.
@@ -3,7 +3,7 @@ export declare function readPlanFile(text: string, _file: string): unknown;
3
3
  /**
4
4
  * A plan file's plan as the backend takes it (docs/working/plan-surfaces.md):
5
5
  * its surfaces, its phases of outcomes under `plan`, its approvals, agents,
6
- * loops, inputs, `orient to` and hooks, as the file writes them; the backend reads them
6
+ * loops, inputs, `orient to`, `featured` and hooks, as the file writes them; the backend reads them
7
7
  * (`readOutcomePlan`). A file whose `plan` isn't a list of phases, as a
8
8
  * scenario's `{ from: default, ... }`, goes as it is.
9
9
  */
@@ -16,6 +16,7 @@ export declare function planPayload(spec: {
16
16
  inputs?: unknown;
17
17
  loops?: unknown;
18
18
  "orient to"?: unknown;
19
+ featured?: unknown;
19
20
  conversations?: unknown;
20
21
  hooks?: unknown;
21
22
  }): unknown;
@@ -6,7 +6,7 @@ export function readPlanFile(text, _file) {
6
6
  /**
7
7
  * A plan file's plan as the backend takes it (docs/working/plan-surfaces.md):
8
8
  * its surfaces, its phases of outcomes under `plan`, its approvals, agents,
9
- * loops, inputs, `orient to` and hooks, as the file writes them; the backend reads them
9
+ * loops, inputs, `orient to`, `featured` and hooks, as the file writes them; the backend reads them
10
10
  * (`readOutcomePlan`). A file whose `plan` isn't a list of phases, as a
11
11
  * scenario's `{ from: default, ... }`, goes as it is.
12
12
  */
@@ -22,6 +22,7 @@ export function planPayload(spec) {
22
22
  "inputs",
23
23
  "loops",
24
24
  "orient to",
25
+ "featured",
25
26
  "conversations",
26
27
  "hooks",
27
28
  ]) {
@@ -8,8 +8,8 @@ import type { Plan, PlanPart } from "./types.js";
8
8
  * with the pitch an input. An outcome on one left out is kept on that
9
9
  * one's surface instead. The checkpoints on what is kept stay, presenting
10
10
  * what is still there, and one named into a phase the part doesn't have
11
- * names none; a pull-request surface's ready for review or draft on an
12
- * outcome left out goes; and loops go, since part of a plan starts or ends
11
+ * names none; a pull-request surface's ready for review, draft or merge
12
+ * closes on an outcome left out goes; and loops go, since part of a plan starts or ends
13
13
  * nothing.
14
14
  *
15
15
  * The one exception is the outcome that makes the solution exist: the
@@ -36,8 +36,8 @@ const worksFrom = (plan, outcome) => [
36
36
  * with the pitch an input. An outcome on one left out is kept on that
37
37
  * one's surface instead. The checkpoints on what is kept stay, presenting
38
38
  * what is still there, and one named into a phase the part doesn't have
39
- * names none; a pull-request surface's ready for review or draft on an
40
- * outcome left out goes; and loops go, since part of a plan starts or ends
39
+ * names none; a pull-request surface's ready for review, draft or merge
40
+ * closes on an outcome left out goes; and loops go, since part of a plan starts or ends
41
41
  * nothing.
42
42
  *
43
43
  * The one exception is the outcome that makes the solution exist: the
@@ -117,6 +117,10 @@ export function planForOutcomes(plan, names) {
117
117
  if (surface.draft && !kept.has(surface.draft.outcome)) {
118
118
  delete own.draft;
119
119
  }
120
+ // PULL-12: nor does the merge close an outcome left out.
121
+ if (surface.mergeCloses !== undefined && !kept.has(surface.mergeCloses)) {
122
+ delete own.mergeCloses;
123
+ }
120
124
  return own;
121
125
  }),
122
126
  phases,
@@ -103,6 +103,8 @@ export type Plan = {
103
103
  when: string;
104
104
  };
105
105
  watchedBy?: string;
106
+ /** The outcome a merge of its pull request closes (PULL-12). */
107
+ mergeCloses?: string;
106
108
  }>;
107
109
  phases: Array<{
108
110
  name: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popoverai/dotrequirements",
3
- "version": "0.38.0",
3
+ "version": "0.38.2",
4
4
  "description": "Requirements as testable, human-readable data — CLI and test harness for spec-driven development with AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {