@rasensio/aidlc 1.5.0 → 1.7.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 (61) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/gate.d.ts.map +1 -1
  4. package/dist/commands/gate.js +20 -2
  5. package/dist/commands/gate.js.map +1 -1
  6. package/dist/commands/init.js +13 -0
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/metrics.d.ts +10 -0
  9. package/dist/commands/metrics.d.ts.map +1 -0
  10. package/dist/commands/metrics.js +83 -0
  11. package/dist/commands/metrics.js.map +1 -0
  12. package/dist/commands/status.d.ts.map +1 -1
  13. package/dist/commands/status.js +82 -3
  14. package/dist/commands/status.js.map +1 -1
  15. package/dist/commands/transition.d.ts.map +1 -1
  16. package/dist/commands/transition.js +109 -6
  17. package/dist/commands/transition.js.map +1 -1
  18. package/dist/commands/update.d.ts.map +1 -1
  19. package/dist/commands/update.js +13 -0
  20. package/dist/commands/update.js.map +1 -1
  21. package/dist/concurrency/gitattributes.d.ts.map +1 -1
  22. package/dist/concurrency/gitattributes.js +3 -0
  23. package/dist/concurrency/gitattributes.js.map +1 -1
  24. package/dist/core/gate.d.ts +19 -1
  25. package/dist/core/gate.d.ts.map +1 -1
  26. package/dist/core/gate.js +18 -1
  27. package/dist/core/gate.js.map +1 -1
  28. package/dist/core/lifecycle.d.ts.map +1 -1
  29. package/dist/core/lifecycle.js +7 -3
  30. package/dist/core/lifecycle.js.map +1 -1
  31. package/dist/core/types.d.ts +10 -1
  32. package/dist/core/types.d.ts.map +1 -1
  33. package/dist/events/event-bus.d.ts +7 -0
  34. package/dist/events/event-bus.d.ts.map +1 -1
  35. package/dist/events/event-bus.js +36 -1
  36. package/dist/events/event-bus.js.map +1 -1
  37. package/dist/events/shipped-actions.d.ts +17 -0
  38. package/dist/events/shipped-actions.d.ts.map +1 -0
  39. package/dist/events/shipped-actions.js +47 -0
  40. package/dist/events/shipped-actions.js.map +1 -0
  41. package/dist/metrics/report.d.ts +83 -0
  42. package/dist/metrics/report.d.ts.map +1 -0
  43. package/dist/metrics/report.js +286 -0
  44. package/dist/metrics/report.js.map +1 -0
  45. package/dist/tasks/gate-criterion.d.ts +42 -0
  46. package/dist/tasks/gate-criterion.d.ts.map +1 -0
  47. package/dist/tasks/gate-criterion.js +180 -0
  48. package/dist/tasks/gate-criterion.js.map +1 -0
  49. package/dist/tasks/parser.d.ts +30 -0
  50. package/dist/tasks/parser.d.ts.map +1 -0
  51. package/dist/tasks/parser.js +200 -0
  52. package/dist/tasks/parser.js.map +1 -0
  53. package/dist/tasks/status.d.ts +20 -0
  54. package/dist/tasks/status.d.ts.map +1 -0
  55. package/dist/tasks/status.js +41 -0
  56. package/dist/tasks/status.js.map +1 -0
  57. package/dist/tasks/types.d.ts +90 -0
  58. package/dist/tasks/types.d.ts.map +1 -0
  59. package/dist/tasks/types.js +9 -0
  60. package/dist/tasks/types.js.map +1 -0
  61. package/package.json +2 -2
@@ -10,6 +10,13 @@
10
10
  * Requirements: 20.1, 20.9
11
11
  */
12
12
  import type { ActionsConfig, EventPayload, DispatchReport } from '../core/types.js';
13
+ /**
14
+ * Path of the retro-pending marker for an instance. Markers are coordination
15
+ * data (like claims/registry): they live in `<git-common-dir>/aidlc/
16
+ * retro-pending/` so every worktree sees them and worktree removal cannot
17
+ * destroy them. Outside a git repo they fall back to the instance state dir.
18
+ */
19
+ export declare function retroPendingPath(projectRoot: string, instance: string): string;
13
20
  /**
14
21
  * Load and parse `.aidlc/actions.yaml` into an ActionsConfig.
15
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAkD1B;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyB3E;AAMD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACxC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAqD1C;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE3E;AA8ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,cAAc,CAmChB"}
1
+ {"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,cAAc,EAEf,MAAM,kBAAkB,CAAC;AAM1B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM9E;AAkDD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAyB3E;AAMD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,KACxC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAwE1C;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAE3E;AA8ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1B,cAAc,CAmChB"}
@@ -9,9 +9,27 @@
9
9
  *
10
10
  * Requirements: 20.1, 20.9
11
11
  */
12
- import { readFileSync, existsSync } from 'node:fs';
12
+ import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'node:fs';
13
+ import { join, dirname } from 'node:path';
13
14
  import { execSync } from 'node:child_process';
14
15
  import { parse } from 'yaml';
16
+ import { coordinationRoot } from '../concurrency/common-dir.js';
17
+ // ---------------------------------------------------------------------------
18
+ // Retro-pending markers (feedback-loop AC-23, design DD-4)
19
+ // ---------------------------------------------------------------------------
20
+ /**
21
+ * Path of the retro-pending marker for an instance. Markers are coordination
22
+ * data (like claims/registry): they live in `<git-common-dir>/aidlc/
23
+ * retro-pending/` so every worktree sees them and worktree removal cannot
24
+ * destroy them. Outside a git repo they fall back to the instance state dir.
25
+ */
26
+ export function retroPendingPath(projectRoot, instance) {
27
+ const root = coordinationRoot(projectRoot);
28
+ if (root !== null) {
29
+ return join(root, 'retro-pending', instance);
30
+ }
31
+ return join(projectRoot, '.aidlc', 'state', instance, 'retro-pending');
32
+ }
15
33
  // ---------------------------------------------------------------------------
16
34
  // Actions config loader
17
35
  // ---------------------------------------------------------------------------
@@ -121,6 +139,23 @@ const builtInHandlers = {
121
139
  return { success: false, error: `github-issue failed: ${err.message}` };
122
140
  }
123
141
  },
142
+ /**
143
+ * retro-pending: Mark an instance as awaiting its retrospective
144
+ * (feedback-loop AC-23). Cross-platform Node fs — the shipped
145
+ * on-instance-complete action cannot be a shell script (design F3).
146
+ */
147
+ 'retro-pending': (event) => {
148
+ try {
149
+ const marker = retroPendingPath(process.cwd(), event.instance);
150
+ mkdirSync(dirname(marker), { recursive: true });
151
+ writeFileSync(marker, `${new Date().toISOString()}\n`, 'utf8');
152
+ process.stdout.write(`retro pending for ${event.instance}: run the aidlc-retrospective skill\n`);
153
+ return { success: true };
154
+ }
155
+ catch (err) {
156
+ return { success: false, error: `retro-pending failed: ${err.message}` };
157
+ }
158
+ },
124
159
  /**
125
160
  * doc-update: Append to a configured documentation file.
126
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/events/event-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Shipped lifecycle actions installed by `aidlc init`/`update`
3
+ * (feedback-loop AC-4).
4
+ *
5
+ * Install rule is match-by-id (design F12): an existing action with the
6
+ * same id is never touched regardless of content — user edits win, and
7
+ * shipped-action upgrades are manual.
8
+ */
9
+ import { type InferredAction } from '../commands/add-action.js';
10
+ /** Actions shipped with the framework. */
11
+ export declare const SHIPPED_ACTIONS: InferredAction[];
12
+ /**
13
+ * Install shipped actions into actions.yaml, skipping any id that already
14
+ * exists. Returns the ids actually installed.
15
+ */
16
+ export declare function installShippedActions(actionsPath: string): string[];
17
+ //# sourceMappingURL=shipped-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipped-actions.d.ts","sourceRoot":"","sources":["../../src/events/shipped-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG9E,0CAA0C;AAC1C,eAAO,MAAM,eAAe,EAAE,cAAc,EAS3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAmBnE"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shipped lifecycle actions installed by `aidlc init`/`update`
3
+ * (feedback-loop AC-4).
4
+ *
5
+ * Install rule is match-by-id (design F12): an existing action with the
6
+ * same id is never touched regardless of content — user edits win, and
7
+ * shipped-action upgrades are manual.
8
+ */
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import { parse as parseYaml } from 'yaml';
11
+ import { appendAction } from '../commands/add-action.js';
12
+ /** Actions shipped with the framework. */
13
+ export const SHIPPED_ACTIONS = [
14
+ {
15
+ id: 'retrospective-on-complete',
16
+ event: 'on-instance-complete',
17
+ use: 'retro-pending',
18
+ blocking: false,
19
+ description: 'Marks the instance retro-pending in the git common dir; the aidlc-retrospective skill picks it up (feedback-loop AC-23).',
20
+ },
21
+ ];
22
+ /**
23
+ * Install shipped actions into actions.yaml, skipping any id that already
24
+ * exists. Returns the ids actually installed.
25
+ */
26
+ export function installShippedActions(actionsPath) {
27
+ let existingIds = new Set();
28
+ if (existsSync(actionsPath)) {
29
+ try {
30
+ const config = parseYaml(readFileSync(actionsPath, 'utf8'));
31
+ existingIds = new Set((config?.actions ?? []).map((a) => a.id));
32
+ }
33
+ catch {
34
+ // Malformed actions.yaml: do not risk clobbering it with an append.
35
+ return [];
36
+ }
37
+ }
38
+ const installed = [];
39
+ for (const action of SHIPPED_ACTIONS) {
40
+ if (existingIds.has(action.id))
41
+ continue;
42
+ appendAction(actionsPath, action);
43
+ installed.push(action.id);
44
+ }
45
+ return installed;
46
+ }
47
+ //# sourceMappingURL=shipped-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shipped-actions.js","sourceRoot":"","sources":["../../src/events/shipped-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAuB,MAAM,2BAA2B,CAAC;AAG9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,EAAE,EAAE,2BAA2B;QAC/B,KAAK,EAAE,sBAAsB;QAC7B,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,0HAA0H;KAC7H;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,IAAI,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAkB,CAAC;YAC7E,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,SAAS;QACzC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Feedback-loop metrics: DORA-style roll-ups computed from existing state.
3
+ *
4
+ * Reads transitions.log, instance.yaml, phase-*.yaml, and the cost ledger —
5
+ * no new ledger (AC-15). Read-only by construction: pure functions over
6
+ * projectRoot (AC-19). Missing data degrades to null, never zero-fill;
7
+ * empty denominators are null, not 0% (AC-17).
8
+ *
9
+ * Design: feedback-loop design.md §Metrics module (rev 2, F5/F11)
10
+ */
11
+ import { type InstanceCost } from '../cost/report.js';
12
+ import type { InstanceState, PhaseState, WorkflowTemplate } from '../core/types.js';
13
+ import type { CostConfig } from '../cost/types.js';
14
+ /** Attribution rule for multi-cause bugfixes (design DD-1, AC-18). */
15
+ export declare const ATTRIBUTION_RULE: "full-count-per-cause";
16
+ export interface TemplateMetrics {
17
+ template: string;
18
+ /** Completed instances of this template (AC-22 completion moment). */
19
+ completed: number;
20
+ /** Distinct completed instances named as a cause ÷ completed; null when completed = 0. */
21
+ change_failure_rate: number | null;
22
+ /** Mean created_at → completion across completed instances; null when no data. */
23
+ avg_lead_time_seconds: number | null;
24
+ /** Mean per-phase lead time across instances that ran the phase. */
25
+ phase_lead_times: Record<string, number | null>;
26
+ }
27
+ export interface InstanceMetrics {
28
+ name: string;
29
+ template: string;
30
+ completed: boolean;
31
+ /** created_at → completion moment; null while incomplete or on bad data. */
32
+ lead_time_seconds: number | null;
33
+ /** Bugfix instances whose caused_by names this instance. */
34
+ caused_bugfixes: string[];
35
+ /** null ⇔ no ledger data for the instance (F5: 0 means a priced $0, not absence). */
36
+ own_cost: InstanceCost | null;
37
+ /** own + one-level caused bugfix costs; null when own_cost is null. */
38
+ true_cost_micro_usd: number | null;
39
+ }
40
+ export interface MetricsReport {
41
+ generated_at: string;
42
+ attribution_rule: typeof ATTRIBUTION_RULE;
43
+ coverage: {
44
+ instances: number;
45
+ with_caused_by: number;
46
+ with_cost: number;
47
+ };
48
+ templates: TemplateMetrics[];
49
+ instances: InstanceMetrics[];
50
+ /** caused_by values resolving to no known instance (AC-17). */
51
+ unresolved_causes: {
52
+ bugfix: string;
53
+ name: string;
54
+ }[];
55
+ }
56
+ interface LoadedInstance {
57
+ state: InstanceState & {
58
+ caused_by?: string[];
59
+ };
60
+ phases: Map<string, PhaseState>;
61
+ dir: string;
62
+ }
63
+ /**
64
+ * The instance's final applicable phase (template × scope), or null when the
65
+ * template cannot be resolved. Maintenance-terminal instances complete on
66
+ * maintenance ENTRY; others when the final phase reaches status complete.
67
+ */
68
+ export declare function completionInfo(inst: LoadedInstance, templates: Map<string, WorkflowTemplate>): {
69
+ completed: boolean;
70
+ completedAt: string | null;
71
+ };
72
+ /**
73
+ * Per-phase lead seconds for one instance. Pairs transitions.log `to: X`
74
+ * with the next `from: X`; null-from/to records (scope upgrades) are
75
+ * skipped; unmatched intervals fall back to the phase YAML timestamps;
76
+ * the current open phase is excluded. Inconsistency → phase omitted (null
77
+ * downstream per AC-17).
78
+ */
79
+ export declare function phaseLeadSeconds(inst: LoadedInstance): Map<string, number>;
80
+ /** Compute the full metrics report. Read-only (AC-19). */
81
+ export declare function computeMetrics(projectRoot: string, config: CostConfig | null, now?: () => string): MetricsReport;
82
+ export {};
83
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/metrics/report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,EAAG,sBAA+B,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kFAAkF;IAClF,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4DAA4D;IAC5D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,+DAA+D;IAC/D,iBAAiB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAMD,UAAU,cAAc;IACtB,KAAK,EAAE,aAAa,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACb;AAuCD;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACvC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgCpD;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAqC1E;AAYD,0DAA0D;AAC1D,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,GAAG,GAAE,MAAM,MAAuC,GACjD,aAAa,CAwIf"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Feedback-loop metrics: DORA-style roll-ups computed from existing state.
3
+ *
4
+ * Reads transitions.log, instance.yaml, phase-*.yaml, and the cost ledger —
5
+ * no new ledger (AC-15). Read-only by construction: pure functions over
6
+ * projectRoot (AC-19). Missing data degrades to null, never zero-fill;
7
+ * empty denominators are null, not 0% (AC-17).
8
+ *
9
+ * Design: feedback-loop design.md §Metrics module (rev 2, F5/F11)
10
+ */
11
+ import { existsSync, readdirSync } from 'node:fs';
12
+ import { join } from 'node:path';
13
+ import { loadYaml } from '../state/yaml-helpers.js';
14
+ import { readTransitions } from '../state/transition-log.js';
15
+ import { readEntries, ledgerPath } from '../cost/ledger.js';
16
+ import { instanceCost, listInstances } from '../cost/report.js';
17
+ import { loadTemplates as loadCustomTemplates, resolveTemplate, phasesForScope } from '../core/template-resolver.js';
18
+ import { loadTemplates as loadBuiltInTemplates } from '@rasensio/aidlc-content';
19
+ // ---------------------------------------------------------------------------
20
+ // Report shapes (AC-16: stable field names)
21
+ // ---------------------------------------------------------------------------
22
+ /** Attribution rule for multi-cause bugfixes (design DD-1, AC-18). */
23
+ export const ATTRIBUTION_RULE = 'full-count-per-cause';
24
+ function loadInstance(projectRoot, name) {
25
+ const dir = join(projectRoot, '.aidlc', 'state', name);
26
+ let state;
27
+ try {
28
+ state = loadYaml(join(dir, 'instance.yaml'));
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ const phases = new Map();
34
+ for (const f of readdirSync(dir)) {
35
+ if (!f.startsWith('phase-') || !f.endsWith('.yaml'))
36
+ continue;
37
+ try {
38
+ const p = loadYaml(join(dir, f));
39
+ if (p?.phase)
40
+ phases.set(p.phase, p);
41
+ }
42
+ catch {
43
+ continue;
44
+ }
45
+ }
46
+ return { state, phases, dir };
47
+ }
48
+ function loadAllTemplates(projectRoot) {
49
+ const templates = new Map();
50
+ for (const tpl of loadBuiltInTemplates()) {
51
+ templates.set(tpl.name, tpl.raw);
52
+ }
53
+ const customDir = join(projectRoot, '.aidlc', 'templates');
54
+ if (existsSync(customDir)) {
55
+ for (const [name, tpl] of loadCustomTemplates(customDir))
56
+ templates.set(name, tpl);
57
+ }
58
+ return templates;
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Completion moment (AC-22, scope-aware per design F9)
62
+ // ---------------------------------------------------------------------------
63
+ /**
64
+ * The instance's final applicable phase (template × scope), or null when the
65
+ * template cannot be resolved. Maintenance-terminal instances complete on
66
+ * maintenance ENTRY; others when the final phase reaches status complete.
67
+ */
68
+ export function completionInfo(inst, templates) {
69
+ const raw = templates.get(inst.state.template);
70
+ if (!raw)
71
+ return { completed: false, completedAt: null };
72
+ let resolved;
73
+ try {
74
+ resolved = resolveTemplate(raw, templates);
75
+ }
76
+ catch {
77
+ return { completed: false, completedAt: null };
78
+ }
79
+ const applicable = phasesForScope(resolved, inst.state.scope);
80
+ if (applicable.length === 0)
81
+ return { completed: false, completedAt: null };
82
+ const finalPhase = applicable[applicable.length - 1].name;
83
+ if (finalPhase === 'maintenance') {
84
+ // Completion = maintenance entry (open-ended phase, historically pending).
85
+ const maint = inst.phases.get('maintenance');
86
+ const entered = Boolean(maint?.entered_at) ||
87
+ maint?.status === 'in-progress' ||
88
+ maint?.status === 'complete' ||
89
+ inst.state.current_phase === 'maintenance';
90
+ if (entered) {
91
+ return { completed: true, completedAt: maint?.entered_at ?? maint?.completed_at ?? null };
92
+ }
93
+ return { completed: false, completedAt: null };
94
+ }
95
+ const final = inst.phases.get(finalPhase);
96
+ if (final?.status === 'complete') {
97
+ return { completed: true, completedAt: final.completed_at ?? null };
98
+ }
99
+ return { completed: false, completedAt: null };
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // Lead times (design interval algorithm, F11)
103
+ // ---------------------------------------------------------------------------
104
+ /**
105
+ * Per-phase lead seconds for one instance. Pairs transitions.log `to: X`
106
+ * with the next `from: X`; null-from/to records (scope upgrades) are
107
+ * skipped; unmatched intervals fall back to the phase YAML timestamps;
108
+ * the current open phase is excluded. Inconsistency → phase omitted (null
109
+ * downstream per AC-17).
110
+ */
111
+ export function phaseLeadSeconds(inst) {
112
+ const out = new Map();
113
+ const records = readTransitions(join(inst.dir, 'transitions.log')).filter((r) => r.at && (r.from !== null || r.to !== null));
114
+ const opened = new Map(); // phase -> entered timestamp
115
+ for (const r of records) {
116
+ if (r.to)
117
+ opened.set(r.to, r.at);
118
+ if (r.from) {
119
+ const enter = opened.get(r.from);
120
+ if (enter) {
121
+ const secs = (Date.parse(r.at) - Date.parse(enter)) / 1000;
122
+ if (Number.isFinite(secs) && secs >= 0) {
123
+ out.set(r.from, (out.get(r.from) ?? 0) + secs);
124
+ }
125
+ opened.delete(r.from);
126
+ }
127
+ else {
128
+ // Exit with no logged enter — fall back to phase YAML for this phase.
129
+ const p = inst.phases.get(r.from);
130
+ if (p?.entered_at && p.completed_at) {
131
+ const secs = (Date.parse(p.completed_at) - Date.parse(p.entered_at)) / 1000;
132
+ if (Number.isFinite(secs) && secs >= 0)
133
+ out.set(r.from, secs);
134
+ }
135
+ }
136
+ }
137
+ }
138
+ // Phases completed per YAML but never logged at all (agent-managed).
139
+ for (const [name, p] of inst.phases) {
140
+ if (out.has(name))
141
+ continue;
142
+ if (p.status === 'complete' && p.entered_at && p.completed_at) {
143
+ const secs = (Date.parse(p.completed_at) - Date.parse(p.entered_at)) / 1000;
144
+ if (Number.isFinite(secs) && secs >= 0)
145
+ out.set(name, secs);
146
+ }
147
+ }
148
+ return out;
149
+ }
150
+ // ---------------------------------------------------------------------------
151
+ // Report computation
152
+ // ---------------------------------------------------------------------------
153
+ /** True when the instance has any cost ledger data at all (F5: absence ≠ $0). */
154
+ function hasCostData(projectRoot, name) {
155
+ const path = ledgerPath(projectRoot, name);
156
+ return existsSync(path) && readEntries(path).length > 0;
157
+ }
158
+ /** Compute the full metrics report. Read-only (AC-19). */
159
+ export function computeMetrics(projectRoot, config, now = () => new Date().toISOString()) {
160
+ const templates = loadAllTemplates(projectRoot);
161
+ const names = listInstances(projectRoot);
162
+ const loaded = new Map();
163
+ for (const name of names) {
164
+ const inst = loadInstance(projectRoot, name);
165
+ if (inst)
166
+ loaded.set(name, inst);
167
+ }
168
+ // Defect linkage: bugfix -> causes; cause -> bugfixes (full-count, DD-1).
169
+ const causedBy = new Map(); // cause instance -> bugfix names
170
+ const unresolved = [];
171
+ let withCausedBy = 0;
172
+ for (const [name, inst] of loaded) {
173
+ const causes = inst.state.caused_by;
174
+ if (!Array.isArray(causes) || causes.length === 0)
175
+ continue;
176
+ withCausedBy++;
177
+ for (const cause of causes) {
178
+ if (typeof cause !== 'string' || cause === name)
179
+ continue;
180
+ if (loaded.has(cause)) {
181
+ const list = causedBy.get(cause) ?? [];
182
+ list.push(name);
183
+ causedBy.set(cause, list);
184
+ }
185
+ else {
186
+ unresolved.push({ bugfix: name, name: cause });
187
+ }
188
+ }
189
+ }
190
+ // Per-instance metrics.
191
+ const instances = [];
192
+ const completion = new Map();
193
+ let withCost = 0;
194
+ const costCache = new Map();
195
+ const costOf = (name) => {
196
+ if (!costCache.has(name)) {
197
+ costCache.set(name, hasCostData(projectRoot, name) ? instanceCost(projectRoot, name, config) : null);
198
+ }
199
+ return costCache.get(name) ?? null;
200
+ };
201
+ for (const [name, inst] of loaded) {
202
+ const comp = completionInfo(inst, templates);
203
+ completion.set(name, comp);
204
+ let lead = null;
205
+ if (comp.completed && comp.completedAt && inst.state.created_at) {
206
+ const secs = (Date.parse(comp.completedAt) - Date.parse(inst.state.created_at)) / 1000;
207
+ if (Number.isFinite(secs) && secs >= 0)
208
+ lead = Math.round(secs);
209
+ }
210
+ const own = costOf(name);
211
+ if (own !== null)
212
+ withCost++;
213
+ // True cost: own + one-level caused bugfix costs (non-transitive by design).
214
+ let trueCost = null;
215
+ if (own?.microUsd != null) {
216
+ trueCost = own.microUsd;
217
+ for (const bugfix of causedBy.get(name) ?? []) {
218
+ const bc = costOf(bugfix);
219
+ if (bc?.microUsd != null)
220
+ trueCost += bc.microUsd;
221
+ }
222
+ }
223
+ instances.push({
224
+ name,
225
+ template: inst.state.template,
226
+ completed: comp.completed,
227
+ lead_time_seconds: lead,
228
+ caused_bugfixes: causedBy.get(name) ?? [],
229
+ own_cost: own,
230
+ true_cost_micro_usd: trueCost,
231
+ });
232
+ }
233
+ // Per-template roll-ups.
234
+ const byTemplate = new Map();
235
+ for (const [name, inst] of loaded) {
236
+ const list = byTemplate.get(inst.state.template) ?? [];
237
+ list.push(name);
238
+ byTemplate.set(inst.state.template, list);
239
+ }
240
+ const templateMetrics = [];
241
+ for (const [template, members] of byTemplate) {
242
+ const completedMembers = members.filter((m) => completion.get(m)?.completed);
243
+ const failed = completedMembers.filter((m) => (causedBy.get(m) ?? []).length > 0);
244
+ const leads = instances
245
+ .filter((i) => i.template === template && i.completed && i.lead_time_seconds !== null)
246
+ .map((i) => i.lead_time_seconds);
247
+ const phaseTotals = new Map();
248
+ for (const m of members) {
249
+ const inst = loaded.get(m);
250
+ if (!inst)
251
+ continue;
252
+ for (const [phase, secs] of phaseLeadSeconds(inst)) {
253
+ const list = phaseTotals.get(phase) ?? [];
254
+ list.push(secs);
255
+ phaseTotals.set(phase, list);
256
+ }
257
+ }
258
+ const phaseLead = {};
259
+ for (const [phase, values] of phaseTotals) {
260
+ phaseLead[phase] =
261
+ values.length > 0
262
+ ? Math.round(values.reduce((a, b) => a + b, 0) / values.length)
263
+ : null;
264
+ }
265
+ templateMetrics.push({
266
+ template,
267
+ completed: completedMembers.length,
268
+ change_failure_rate: completedMembers.length > 0 ? failed.length / completedMembers.length : null,
269
+ avg_lead_time_seconds: leads.length > 0
270
+ ? Math.round(leads.reduce((a, b) => a + b, 0) / leads.length)
271
+ : null,
272
+ phase_lead_times: phaseLead,
273
+ });
274
+ }
275
+ templateMetrics.sort((a, b) => a.template.localeCompare(b.template));
276
+ instances.sort((a, b) => a.name.localeCompare(b.name));
277
+ return {
278
+ generated_at: now(),
279
+ attribution_rule: ATTRIBUTION_RULE,
280
+ coverage: { instances: loaded.size, with_caused_by: withCausedBy, with_cost: withCost },
281
+ templates: templateMetrics,
282
+ instances,
283
+ unresolved_causes: unresolved,
284
+ };
285
+ }
286
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/metrics/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Tasks gate criterion (FR3): computed live at the command layer after
3
+ * `evaluateGate`, following the traceability precedent — it evaluates even
4
+ * when phase state is `complete` (AC-11) and never touches `evaluateGate`'s
5
+ * contract.
6
+ *
7
+ * Applicability tri-state (DD7):
8
+ * null phase ≠ implementation, phase-implementation.yaml
9
+ * absent (AC-30), or opt-in with no task-shaped
10
+ * lines / missing file (AC-6)
11
+ * result, empty entries only near-misses — warnings surface (AC-5), or
12
+ * the required-scope backstops fired (AC-17, AC-28)
13
+ * result with entries ≥1 valid task — full evaluation
14
+ *
15
+ * Bare AC refs resolve to the owning instance (DD8): a tasks file lives in
16
+ * one instance's state dir, so its bare `AC-n` means this instance's AC-n —
17
+ * traceability's cross-instance uniqueness rule (for free-floating test
18
+ * files) does not transfer.
19
+ *
20
+ * Requirements: task-breakdown/AC-6, AC-11..AC-17, AC-28, AC-30
21
+ */
22
+ import type { WorkflowTemplate } from '../core/types.js';
23
+ import type { TasksResult } from './types.js';
24
+ /** Message template for open tasks (DD6). */
25
+ export declare function openTaskMessage(id: number, title: string): string;
26
+ /** Message template for malformed deferrals (AC-2, DD6). */
27
+ export declare function malformedDeferralMessage(id: number): string;
28
+ /** Message for the missing/empty required-scope backstops (AC-17, AC-28). */
29
+ export declare function missingTasksMessage(kind: 'file' | 'empty'): string;
30
+ /**
31
+ * Evaluate the tasks criterion for one instance.
32
+ *
33
+ * @param template - Resolved template; null degrades to opt-in semantics
34
+ * with a warning (defensive — both CLI call sites early-exit before this
35
+ * on resolution failure).
36
+ * @returns null when the criterion does not evaluate (AC-6, AC-30);
37
+ * otherwise a result whose `openTasks`/`malformed`/`missing` the caller
38
+ * turns into unsatisfied criteria / gate violations via the message
39
+ * helpers above.
40
+ */
41
+ export declare function evaluateTasksCriterion(projectRoot: string, instanceName: string, phaseName: string, template: WorkflowTemplate | null): TasksResult | null;
42
+ //# sourceMappingURL=gate-criterion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-criterion.d.ts","sourceRoot":"","sources":["../../src/tasks/gate-criterion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzD,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAIlE;AAuBD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,WAAW,GAAG,IAAI,CAoHpB"}