@specforge/canary-cli 0.1.18 → 0.2.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.
Files changed (28) hide show
  1. package/dist/cli/commands/debug/types.d.ts.map +1 -1
  2. package/dist/cli/commands/debug/types.js +4 -1
  3. package/dist/cli/commands/debug/types.js.map +1 -1
  4. package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts.map +1 -1
  5. package/dist/cli/templates/agents/content/core/sfag-spec-creator.js +40 -35
  6. package/dist/cli/templates/agents/content/core/sfag-spec-creator.js.map +1 -1
  7. package/dist/lib/workflow-definitions.js +1 -1
  8. package/dist/lib/workflow-definitions.js.map +1 -1
  9. package/dist/tools/index.d.ts.map +1 -1
  10. package/dist/tools/index.js +67 -34
  11. package/dist/tools/index.js.map +1 -1
  12. package/node_modules/@specforge/session-types/dist/runtime/lifecycle-contract.d.ts +5 -1
  13. package/node_modules/@specforge/session-types/dist/runtime/lifecycle-contract.d.ts.map +1 -1
  14. package/node_modules/@specforge/session-types/dist/runtime/planning-operations.d.ts +2 -2
  15. package/node_modules/@specforge/session-types/dist/runtime/planning-operations.d.ts.map +1 -1
  16. package/node_modules/@specforge/session-types/dist/runtime/planning-operations.js +18 -1
  17. package/node_modules/@specforge/session-types/dist/runtime/planning-operations.js.map +1 -1
  18. package/node_modules/@specforge/session-types/dist/runtime/planning-session-action.d.ts +3 -3
  19. package/node_modules/@specforge/session-types/dist/runtime/planning-session-action.d.ts.map +1 -1
  20. package/node_modules/@specforge/session-types/dist/runtime/planning-session-action.js +6 -1
  21. package/node_modules/@specforge/session-types/dist/runtime/planning-session-action.js.map +1 -1
  22. package/node_modules/@specforge/session-types/dist/runtime/planning-session-aggregate.d.ts +10 -0
  23. package/node_modules/@specforge/session-types/dist/runtime/planning-session-aggregate.d.ts.map +1 -1
  24. package/node_modules/@specforge/session-types/dist/runtime/planning-session-aggregate.js +8 -0
  25. package/node_modules/@specforge/session-types/dist/runtime/planning-session-aggregate.js.map +1 -1
  26. package/node_modules/@specforge/session-types/package.json +1 -1
  27. package/package.json +5 -5
  28. package/src/cli/templates/agents/content/core/sfag-spec-creator.ts +40 -35
@@ -192,8 +192,12 @@ export interface ActionPlanningPayload {
192
192
  * the human never leaves the review window by editing).
193
193
  * - `'agent'` (default) → the session flips to `active` exactly as before (the
194
194
  * agent then re-requests the gate via a subsequent CPS).
195
+ *
196
+ * ME.19.5 (D18) — `'system'` is the D18 auto-materialized baseline actor
197
+ * (system-originated, deterministic). Extends the 'agent'|'human' union at this
198
+ * canonical contract site so the value flows uncompiled to `performedByActor`.
195
199
  */
196
- actor?: 'agent' | 'human';
200
+ actor?: 'agent' | 'human' | 'system';
197
201
  }
198
202
  export interface CompletePlanningPayload {
199
203
  sessionId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-contract.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-contract.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle-contract.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export declare const PLANNING_MUTATING_OPERATIONS: readonly ["update_spec", "create_epic", "update_epic", "delete_epic", "create_ticket", "update_ticket", "delete_ticket", "create_blueprint", "update_blueprint", "delete_blueprint", "link_blueprint_to_tickets", "unlink_blueprint_to_tickets", "create_dependencies", "delete_dependencies", "justify", "unjustify", "link_step_file", "unlink_step_file", "link_step_snippet", "unlink_step_snippet", "apply_creator_election"];
1
+ export declare const PLANNING_MUTATING_OPERATIONS: readonly ["update_spec", "create_epic", "update_epic", "delete_epic", "create_ticket", "delete_ticket", "ticket_general_actions", "ticket_step_actions", "ticket_criteria_actions", "ticket_test_actions", "create_blueprint", "update_blueprint", "delete_blueprint", "link_blueprint_to_tickets", "unlink_blueprint_to_tickets", "create_dependencies", "delete_dependencies", "justify", "unjustify", "link_step_file", "unlink_step_file", "link_step_snippet", "unlink_step_snippet", "apply_creator_election"];
2
2
  export declare const PLANNING_READ_ONLY_OPERATIONS: readonly ["get_planning_status"];
3
3
  export declare const PLANNING_SYNTHETIC_OPERATIONS: readonly ["start_planning_session", "complete_planning_session", "phase_complete", "phase_advance", "phase_rollback", "human_approve", "human_reject_with_feedback", "human_reject_no_feedback", "session_closed"];
4
- export declare const PLANNING_OPERATIONS: readonly ["update_spec", "create_epic", "update_epic", "delete_epic", "create_ticket", "update_ticket", "delete_ticket", "create_blueprint", "update_blueprint", "delete_blueprint", "link_blueprint_to_tickets", "unlink_blueprint_to_tickets", "create_dependencies", "delete_dependencies", "justify", "unjustify", "link_step_file", "unlink_step_file", "link_step_snippet", "unlink_step_snippet", "apply_creator_election", "get_planning_status", "start_planning_session", "complete_planning_session", "phase_complete", "phase_advance", "phase_rollback", "human_approve", "human_reject_with_feedback", "human_reject_no_feedback", "session_closed"];
4
+ export declare const PLANNING_OPERATIONS: readonly ["update_spec", "create_epic", "update_epic", "delete_epic", "create_ticket", "delete_ticket", "ticket_general_actions", "ticket_step_actions", "ticket_criteria_actions", "ticket_test_actions", "create_blueprint", "update_blueprint", "delete_blueprint", "link_blueprint_to_tickets", "unlink_blueprint_to_tickets", "create_dependencies", "delete_dependencies", "justify", "unjustify", "link_step_file", "unlink_step_file", "link_step_snippet", "unlink_step_snippet", "apply_creator_election", "get_planning_status", "start_planning_session", "complete_planning_session", "phase_complete", "phase_advance", "phase_rollback", "human_approve", "human_reject_with_feedback", "human_reject_no_feedback", "session_closed"];
5
5
  export type PlanningOperationName = typeof PLANNING_OPERATIONS[number];
6
6
  //# sourceMappingURL=planning-operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"planning-operations.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-operations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,oaA6B/B,CAAC;AAEX,eAAO,MAAM,6BAA6B,kCAAmC,CAAC;AAE9E,eAAO,MAAM,6BAA6B,oNAUhC,CAAC;AAEX,eAAO,MAAM,mBAAmB,ooBAItB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"planning-operations.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-operations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,sfA8C/B,CAAC;AAEX,eAAO,MAAM,6BAA6B,kCAAmC,CAAC;AAE9E,eAAO,MAAM,6BAA6B,oNAUhC,CAAC;AAEX,eAAO,MAAM,mBAAmB,stBAItB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC"}
@@ -1,7 +1,24 @@
1
1
  export const PLANNING_MUTATING_OPERATIONS = [
2
2
  'update_spec',
3
3
  'create_epic', 'update_epic', 'delete_epic',
4
- 'create_ticket', 'update_ticket', 'delete_ticket',
4
+ 'create_ticket', 'delete_ticket',
5
+ // ME.19.1 (D8) — the four ticket NODE VERBS replace the retired free-form
6
+ // `update_ticket` (`{id, fields: z.record(z.unknown())}`). Each targets ONE scope so
7
+ // its payload can be TYPED (no `fields` bag) and its phase semantics can differ:
8
+ // · ticket_general_actions — shell/general fields (title, description, complexity,
9
+ // epicId, order, planningType, ticketType, guardrails, estimatedMinutes).
10
+ // ticket_decomposition-native + usable in ticket_expansion WITHOUT rollback for
11
+ // shell edits; rolls back to ticket_decomposition ONLY when it changes
12
+ // planningType/ticketType (a decomposition-level classification). SHELL-EDIT only —
13
+ // create/delete stay with create_ticket/delete_ticket (D20).
14
+ // · ticket_step_actions / ticket_criteria_actions / ticket_test_actions — the
15
+ // ticket_expansion-content verbs: ticket_expansion-native, NO cross_validation in
16
+ // the band, so a late call from cross_validation rolls back to ticket_expansion
17
+ // (re-score + re-gate the MB.15 link gate) — update_ticket's exact phase semantics
18
+ // (D15). complexity/planningType/ticketType are TYPED enum fields on the general
19
+ // verb (enum-poison impossible by construction, D20); `status` is system/event-driven
20
+ // (readiness cascade / work-discovery) and is NOT on any node-verb payload.
21
+ 'ticket_general_actions', 'ticket_step_actions', 'ticket_criteria_actions', 'ticket_test_actions',
5
22
  'create_blueprint', 'update_blueprint', 'delete_blueprint',
6
23
  'link_blueprint_to_tickets', 'unlink_blueprint_to_tickets',
7
24
  'create_dependencies', 'delete_dependencies',
@@ -1 +1 @@
1
- {"version":3,"file":"planning-operations.js","sourceRoot":"","sources":["../../src/runtime/planning-operations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,aAAa;IACb,aAAa,EAAE,aAAa,EAAE,aAAa;IAC3C,eAAe,EAAE,eAAe,EAAE,eAAe;IACjD,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB;IAC1D,2BAA2B,EAAE,6BAA6B;IAC1D,qBAAqB,EAAE,qBAAqB;IAC5C,0EAA0E;IAC1E,iFAAiF;IACjF,qFAAqF;IACrF,kFAAkF;IAClF,kFAAkF;IAClF,SAAS,EAAE,WAAW;IACtB,+EAA+E;IAC/E,+EAA+E;IAC/E,kFAAkF;IAClF,2EAA2E;IAC3E,0BAA0B;IAC1B,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,sEAAsE;IACtE,6EAA6E;IAC7E,+EAA+E;IAC/E,kFAAkF;IAClF,sFAAsF;IACtF,uFAAuF;IACvF,sFAAsF;IACtF,0DAA0D;IAC1D,wBAAwB;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,qBAAqB,CAAU,CAAC;AAE9E,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,wBAAwB;IACxB,2BAA2B;IAC3B,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,4BAA4B;IAC5B,0BAA0B;IAC1B,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,4BAA4B;IAC/B,GAAG,6BAA6B;IAChC,GAAG,6BAA6B;CACxB,CAAC"}
1
+ {"version":3,"file":"planning-operations.js","sourceRoot":"","sources":["../../src/runtime/planning-operations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,aAAa;IACb,aAAa,EAAE,aAAa,EAAE,aAAa;IAC3C,eAAe,EAAE,eAAe;IAChC,0EAA0E;IAC1E,qFAAqF;IACrF,iFAAiF;IACjF,qFAAqF;IACrF,8EAA8E;IAC9E,oFAAoF;IACpF,2EAA2E;IAC3E,wFAAwF;IACxF,iEAAiE;IACjE,gFAAgF;IAChF,sFAAsF;IACtF,oFAAoF;IACpF,uFAAuF;IACvF,qFAAqF;IACrF,0FAA0F;IAC1F,gFAAgF;IAChF,wBAAwB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB;IACjG,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB;IAC1D,2BAA2B,EAAE,6BAA6B;IAC1D,qBAAqB,EAAE,qBAAqB;IAC5C,0EAA0E;IAC1E,iFAAiF;IACjF,qFAAqF;IACrF,kFAAkF;IAClF,kFAAkF;IAClF,SAAS,EAAE,WAAW;IACtB,+EAA+E;IAC/E,+EAA+E;IAC/E,kFAAkF;IAClF,2EAA2E;IAC3E,0BAA0B;IAC1B,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,sEAAsE;IACtE,6EAA6E;IAC7E,+EAA+E;IAC/E,kFAAkF;IAClF,sFAAsF;IACtF,uFAAuF;IACvF,sFAAsF;IACtF,0DAA0D;IAC1D,wBAAwB;CAChB,CAAC;AAEX,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,qBAAqB,CAAU,CAAC;AAE9E,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,wBAAwB;IACxB,2BAA2B;IAC3B,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,4BAA4B;IAC5B,0BAA0B;IAC1B,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,4BAA4B;IAC/B,GAAG,6BAA6B;IAChC,GAAG,6BAA6B;CACxB,CAAC"}
@@ -18,7 +18,7 @@ export declare const PlanningSessionActionSchema: z.ZodObject<{
18
18
  perEntityScoresAfter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
19
19
  humanInstruction: z.ZodOptional<z.ZodString>;
20
20
  targetActionId: z.ZodOptional<z.ZodString>;
21
- performedByActor: z.ZodEnum<["agent", "human"]>;
21
+ performedByActor: z.ZodEnum<["agent", "human", "system"]>;
22
22
  performedByUserId: z.ZodOptional<z.ZodString>;
23
23
  guidanceVariant: z.ZodOptional<z.ZodEnum<["denied", "gate_failed", "gate_passed", "human_handover", "human_feedback", "phase_advance", "phase_rollback", "phase_complete", "phase_status_report", "awaiting_human_review_handover", "human_feedback_received", "human_rejected_no_feedback", "phase_advanced_after_approve", "session_closed"]>>;
24
24
  findingsCategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -29,7 +29,7 @@ export declare const PlanningSessionActionSchema: z.ZodObject<{
29
29
  performedAt: string;
30
30
  phase: "planning_spec" | "epic_decomposition" | "epic_expansion" | "ticket_decomposition" | "ticket_expansion" | "cross_validation" | "planned";
31
31
  outcome: "success" | "denied";
32
- performedByActor: "agent" | "human";
32
+ performedByActor: "agent" | "human" | "system";
33
33
  entityId?: string | undefined;
34
34
  entityType?: "ticket" | "epic" | "spec" | "blueprint" | "acceptanceCriterion" | "implementationStep" | "ticketDependency" | undefined;
35
35
  projectId?: string | undefined;
@@ -52,7 +52,7 @@ export declare const PlanningSessionActionSchema: z.ZodObject<{
52
52
  performedAt: string;
53
53
  phase: "planning_spec" | "epic_decomposition" | "epic_expansion" | "ticket_decomposition" | "ticket_expansion" | "cross_validation" | "planned";
54
54
  outcome: "success" | "denied";
55
- performedByActor: "agent" | "human";
55
+ performedByActor: "agent" | "human" | "system";
56
56
  entityId?: string | undefined;
57
57
  entityType?: "ticket" | "epic" | "spec" | "blueprint" | "acceptanceCriterion" | "implementationStep" | "ticketDependency" | undefined;
58
58
  projectId?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"planning-session-action.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-session-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoDtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"planning-session-action.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-session-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyDtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -41,7 +41,12 @@ export const PlanningSessionActionSchema = z.object({
41
41
  perEntityScoresAfter: z.record(z.string(), z.number()).optional(),
42
42
  humanInstruction: z.string().optional(),
43
43
  targetActionId: z.string().optional(),
44
- performedByActor: z.enum(['agent', 'human']),
44
+ // ME.19.5 (D18) — `'system'` is the actor of the auto-materialized baseline write on
45
+ // cross_validation entry (system-originated, deterministic). The resolvers stream parser
46
+ // runs this schema's `.safeParse` on EVERY row BEFORE the projector switch, so the enum
47
+ // MUST accept `'system'` or the baseline's scaffold edges are silently bucketed as
48
+ // `schema_mismatch` and dropped.
49
+ performedByActor: z.enum(['agent', 'human', 'system']),
45
50
  performedByUserId: z.string().optional(),
46
51
  // ── M10.0a write-side capture fields (populated by M10.0b) ──────────────────
47
52
  // The guidance variant this action produced + the distinct FINDING_CATEGORIES
@@ -1 +1 @@
1
- {"version":3,"file":"planning-session-action.js","sourceRoot":"","sources":["../../src/runtime/planning-session-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B,+EAA+E;IAC/E,8EAA8E;IAC9E,iFAAiF;IACjF,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,kFAAkF;IAClF,gFAAgF;IAChF,mFAAmF;IACnF,sEAAsE;IACtE,2EAA2E;IAC3E,6CAA6C;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW;QACrC,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB;KAChE,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,iFAAiF;IACjF,8DAA8D;IAC9D,kFAAkF;IAClF,qFAAqF;IACrF,oFAAoF;IACpF,oFAAoF;IACpF,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IACrD,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC"}
1
+ {"version":3,"file":"planning-session-action.js","sourceRoot":"","sources":["../../src/runtime/planning-session-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B,+EAA+E;IAC/E,8EAA8E;IAC9E,iFAAiF;IACjF,2EAA2E;IAC3E,0EAA0E;IAC1E,sEAAsE;IACtE,kFAAkF;IAClF,gFAAgF;IAChF,mFAAmF;IACnF,sEAAsE;IACtE,2EAA2E;IAC3E,6CAA6C;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW;QACrC,qBAAqB,EAAE,oBAAoB,EAAE,kBAAkB;KAChE,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,iFAAiF;IACjF,8DAA8D;IAC9D,kFAAkF;IAClF,qFAAqF;IACrF,oFAAoF;IACpF,oFAAoF;IACpF,mFAAmF;IACnF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACjE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,qFAAqF;IACrF,yFAAyF;IACzF,wFAAwF;IACxF,mFAAmF;IACnF,iCAAiC;IACjC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,+EAA+E;IAC/E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IACrD,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC"}
@@ -52,16 +52,22 @@ export declare const PlanningSessionAggregateSchema: z.ZodObject<{
52
52
  ticket: z.ZodNumber;
53
53
  blueprint: z.ZodNumber;
54
54
  dependency: z.ZodNumber;
55
+ dependencyDerived: z.ZodDefault<z.ZodNumber>;
56
+ dependencyAuthored: z.ZodDefault<z.ZodNumber>;
55
57
  }, "strip", z.ZodTypeAny, {
56
58
  ticket: number;
57
59
  epic: number;
58
60
  blueprint: number;
59
61
  dependency: number;
62
+ dependencyDerived: number;
63
+ dependencyAuthored: number;
60
64
  }, {
61
65
  ticket: number;
62
66
  epic: number;
63
67
  blueprint: number;
64
68
  dependency: number;
69
+ dependencyDerived?: number | undefined;
70
+ dependencyAuthored?: number | undefined;
65
71
  }>;
66
72
  entityRevisions: z.ZodRecord<z.ZodString, z.ZodObject<{
67
73
  type: z.ZodEnum<["epic", "ticket", "blueprint"]>;
@@ -147,6 +153,8 @@ export declare const PlanningSessionAggregateSchema: z.ZodObject<{
147
153
  epic: number;
148
154
  blueprint: number;
149
155
  dependency: number;
156
+ dependencyDerived: number;
157
+ dependencyAuthored: number;
150
158
  };
151
159
  entityRevisions: Record<string, {
152
160
  count: number;
@@ -202,6 +210,8 @@ export declare const PlanningSessionAggregateSchema: z.ZodObject<{
202
210
  epic: number;
203
211
  blueprint: number;
204
212
  dependency: number;
213
+ dependencyDerived?: number | undefined;
214
+ dependencyAuthored?: number | undefined;
205
215
  };
206
216
  entityRevisions: Record<string, {
207
217
  count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"planning-session-aggregate.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-session-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0FzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
1
+ {"version":3,"file":"planning-session-aggregate.d.ts","sourceRoot":"","sources":["../../src/runtime/planning-session-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkGzC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC"}
@@ -31,6 +31,14 @@ export const PlanningSessionAggregateSchema = z.object({
31
31
  ticket: z.number().int().nonnegative(),
32
32
  blueprint: z.number().int().nonnegative(),
33
33
  dependency: z.number().int().nonnegative(),
34
+ // ME.19.5 (D1/D2/D4 · material M4) — the dependency total SPLIT by ORIGIN so the
35
+ // observatory can show how many edges are SYSTEM-DERIVED (provenance/scaffold, the D18
36
+ // baseline + creator-election) vs AGENT-AUTHORED (semantic, `create_dependencies`). At
37
+ // HEAD there was only the single `dependency` gauge; a projector that lumped both into
38
+ // one bucket hid the parallelization story. Defaulted so legacy aggregate rows (no
39
+ // split) still parse; `dependency` stays the TOTAL for back-compat.
40
+ dependencyDerived: z.number().int().nonnegative().default(0),
41
+ dependencyAuthored: z.number().int().nonnegative().default(0),
34
42
  }),
35
43
  entityRevisions: z.record(z.string(), z.object({
36
44
  type: z.enum(['epic', 'ticket', 'blueprint']),
@@ -1 +1 @@
1
- {"version":3,"file":"planning-session-aggregate.js","sourceRoot":"","sources":["../../src/runtime/planning-session-aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planning-session-aggregate.js","sourceRoot":"","sources":["../../src/runtime/planning-session-aggregate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specforge/session-types",
3
- "version": "0.2.62",
3
+ "version": "0.3.0",
4
4
  "description": "Session type definitions for SpecForge work/planning/review sessions.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@specforge/canary-cli",
3
- "version": "0.1.18",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server for SpecForge - AI agent integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  "inquirer": "^9.3.8",
18
18
  "minimatch": "^10.1.1",
19
19
  "ora": "^8.2.0",
20
- "@specforge/session-types": "0.2.62",
21
- "@specforge/types": "1.0.2"
20
+ "@specforge/types": "1.0.2",
21
+ "@specforge/session-types": "0.3.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/inquirer": "^9.0.9",
@@ -30,7 +30,7 @@
30
30
  "tsx": "^4.7.0",
31
31
  "typescript": "^5.0.0",
32
32
  "vitest": "4.0.18",
33
- "@specforge/lifecycle": "0.1.86"
33
+ "@specforge/lifecycle": "0.2.0"
34
34
  },
35
35
  "engines": {
36
36
  "node": ">=18.0.0"
@@ -56,7 +56,7 @@
56
56
  "@specforge/types",
57
57
  "@specforge/session-types"
58
58
  ],
59
- "gitHead": "df3b83315fbd3eefe05c1f7b6136d1481bdf66f9",
59
+ "gitHead": "a4c2d0fd81719a2cc6f485f0ae78a7dcc5709aff",
60
60
  "scripts": {
61
61
  "build": "tsup && tsc --emitDeclarationOnly --outDir dist",
62
62
  "typecheck": "tsc --noEmit",
@@ -235,20 +235,28 @@ Only after the interrogation loop is complete (or sufficient for Adaptive mode),
235
235
  ticket_decomposition (SHELL only):
236
236
  { operation: { type: 'create_ticket', epicId, title, description } }
237
237
 
238
- ticket_expansion (author each ticket's body):
239
- { operation: { type: 'update_ticket', id, fields: {
238
+ ticket_expansion (author each ticket's body — ONE node verb per scope, each TYPED):
239
+ // shell / general fields (partial edit; changing ticketType/planningType rolls back)
240
+ { operation: { type: 'ticket_general_actions', ticketId,
240
241
  ticketType, // 'implementation' | 'verification'
241
242
  complexity, // 'small' | 'medium' | 'large' | 'xlarge'
242
243
  estimatedMinutes, // integer — MINUTES, not hours
243
- acceptanceCriteria, // BDD objects {given, when, then}
244
- implementationSteps, // [{ text }]
245
- filesToBeCreated, filesToBeModified, filesToBeDeleted, filesToBeReferenced,
246
- guardrails,
247
- testSpecification: { testTypes, qualityGates, testCommands, coverageTarget },
248
- codeReferences, typeReferences, // anchor on existing code/types
249
- codeSnippets, typeSnippets, tags } } }
250
- (blueprint↔ticket links are NOT set here use link_blueprint_to_tickets
251
- while decomposing, the sole writer of the blueprint relation)
244
+ guardrails } }
245
+ // acceptance criteria — batch add/edit/remove/reorder
246
+ { operation: { type: 'ticket_criteria_actions', ticketId,
247
+ add: [{ given, when, then }, …] } } // BDD objects
248
+ // implementation steps EACH step carries the file(s) it touches BY ROLE (step-as-atom)
249
+ { operation: { type: 'ticket_step_actions', ticketId,
250
+ add: [{ text, // the functional work this step does
251
+ files: [{ path, role }] }] } } // role ∈ creates|modifies|deletes|imports|reads
252
+ // test specification (single object)
253
+ { operation: { type: 'ticket_test_actions', ticketId,
254
+ testSpecification: { testTypes, qualityGates, testCommands, coverageTarget } } }
255
+ (There is NO flat file list any more: a file is declared INLINE on the step that
256
+ touches it via files:[{path, role}] — that derives the step↔file link + the ticket's
257
+ file rows on the same call. Inline code/type patterns go in codeSnippets/typeSnippets,
258
+ attached to a step via the snippet's stepId. blueprint↔ticket links are NOT set here —
259
+ use link_blueprint_to_tickets while decomposing, the sole writer of the blueprint relation.)
252
260
 
253
261
  cross_validation (wire the dependency DAG):
254
262
  { operation: { type: 'create_dependencies',
@@ -283,18 +291,16 @@ Before completing the session, verify internally (and confirm with \`get_plannin
283
291
 
284
292
  ### Test Strategy in Tickets
285
293
 
286
- Acceptance criteria are BDD objects; test expectations live in \`testSpecification\`, both set via \`update_ticket\` during \`ticket_expansion\`:
294
+ Acceptance criteria are BDD objects (set via \`ticket_criteria_actions\`); test expectations live in \`testSpecification\` (set via \`ticket_test_actions\`) — both during \`ticket_expansion\`:
287
295
  \`\`\`
288
- { operation: { type: 'update_ticket', id, fields: {
289
- acceptanceCriteria: [
290
- { given: "a valid email and password", when: "the user creates an account", then: "the account is persisted and a welcome email is sent" },
291
- { given: "an email that already exists", when: "the user creates an account", then: "the API returns 409" }
292
- ],
293
- testSpecification: {
294
- testTypes: ["unit", "integration"],
295
- testCommands: ["pnpm test -- --filter registration"],
296
- coverageTarget: 80
297
- }
296
+ { operation: { type: 'ticket_criteria_actions', ticketId, add: [
297
+ { given: "a valid email and password", when: "the user creates an account", then: "the account is persisted and a welcome email is sent" },
298
+ { given: "an email that already exists", when: "the user creates an account", then: "the API returns 409" }
299
+ ] } }
300
+ { operation: { type: 'ticket_test_actions', ticketId, testSpecification: {
301
+ testTypes: ["unit", "integration"],
302
+ testCommands: ["pnpm test -- --filter registration"],
303
+ coverageTarget: 80
298
304
  } } }
299
305
  \`\`\`
300
306
 
@@ -305,19 +311,18 @@ For complex features, create dedicated verification tickets (shell in \`ticket_d
305
311
  title: "E2E: Complete checkout flow",
306
312
  description: "End-to-end test covering the full checkout journey" } }
307
313
 
308
- // ticket_expansion
309
- { operation: { type: 'update_ticket', id, fields: {
310
- ticketType: "verification",
311
- implementationSteps: [
312
- { text: "Create seed data: user with items in cart, valid payment method" },
313
- { text: "Write Playwright test: navigate to cart → checkout → payment → confirmation" },
314
- { text: "Cover error states: expired card, out-of-stock item, network timeout" },
315
- { text: "Add to CI pipeline as blocking check" }
316
- ],
317
- filesToBeCreated: ["tests/e2e/checkout.spec.ts", "tests/fixtures/checkout-seeds.ts"],
318
- testSpecification: { testTypes: ["e2e"], testCommands: ["pnpm test:e2e -- checkout"] },
319
- tags: ["test", "e2e", "checkout"]
320
- } } }
314
+ // ticket_expansion — classify, then steps (files carried by role), then tests
315
+ { operation: { type: 'ticket_general_actions', ticketId, ticketType: "verification" } }
316
+ { operation: { type: 'ticket_step_actions', ticketId, add: [
317
+ { text: "Create seed data: user with items in cart, valid payment method",
318
+ files: [{ path: "tests/fixtures/checkout-seeds.ts", role: "creates" }] },
319
+ { text: "Write Playwright test: navigate to cart → checkout → payment → confirmation",
320
+ files: [{ path: "tests/e2e/checkout.spec.ts", role: "creates" }] },
321
+ { text: "Cover error states: expired card, out-of-stock item, network timeout" },
322
+ { text: "Add to CI pipeline as blocking check" }
323
+ ] } }
324
+ { operation: { type: 'ticket_test_actions', ticketId,
325
+ testSpecification: { testTypes: ["e2e"], testCommands: ["pnpm test:e2e -- checkout"] } } }
321
326
 
322
327
  // cross_validation
323
328
  { operation: { type: 'create_dependencies',