instar 0.28.85 → 0.28.86

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.
@@ -13,7 +13,35 @@ export interface InitiativePhase {
13
13
  /** ISO timestamp when status first became 'done'. */
14
14
  completedAt?: string;
15
15
  }
16
- export type InitiativeStatus = 'active' | 'completed' | 'archived' | 'abandoned';
16
+ export type InitiativeStatus = 'active' | 'completed' | 'archived' | 'abandoned' | 'paused' | 'halted' | 'awaiting-user';
17
+ export type InitiativeKind = 'task' | 'project';
18
+ export type PipelineStage = 'outline' | 'spec-drafted' | 'spec-converged' | 'approved' | 'building' | 'merged' | 'regressed' | 'skipped';
19
+ export type RoundStatus = 'pending' | 'ready' | 'in-progress' | 'partially-complete' | 'complete' | 'complete-with-skips' | 'failed' | 'regressed';
20
+ export interface InitiativeRound {
21
+ name: string;
22
+ /** Child initiative IDs in this round. */
23
+ itemIds: string[];
24
+ status: RoundStatus;
25
+ /** ISO; populated when prior round completes and this one becomes ready. */
26
+ autoAdvanceAt?: string;
27
+ completedAt?: string;
28
+ haltedAt?: string;
29
+ haltReason?: string;
30
+ /** Counter; round-runner caps this at 3. */
31
+ resumeAttempts?: number;
32
+ /** Cached drift verdict from the most recent attempt. Typed in Phase 1b. */
33
+ lastDriftVerdict?: unknown;
34
+ }
35
+ export interface InitiativeConflictPatch {
36
+ patchId: string;
37
+ recordId: string;
38
+ path: string;
39
+ oursValue: unknown;
40
+ theirsValue: unknown;
41
+ baseValue?: unknown;
42
+ losingMachineId: string;
43
+ capturedAt: string;
44
+ }
17
45
  export interface InitiativeLink {
18
46
  type: 'spec' | 'pr' | 'commit' | 'topic' | 'doc' | 'other';
19
47
  label: string;
@@ -43,6 +71,53 @@ export interface Initiative {
43
71
  links: InitiativeLink[];
44
72
  createdAt: string;
45
73
  updatedAt: string;
74
+ /** Distinguishes leaf work items ('task') from rollups ('project').
75
+ * Immutable after creation. Defaults to 'task' when omitted. */
76
+ kind?: InitiativeKind;
77
+ /** Bumped on backfill / migration. */
78
+ schemaVersion?: number;
79
+ /** Optimistic concurrency counter. Increments on every successful write.
80
+ * Starts at 1 on create. */
81
+ version?: number;
82
+ /** Back-pointer to a project that lists this child in `rounds[].itemIds`. */
83
+ parentProjectId?: string;
84
+ pipelineStage?: PipelineStage;
85
+ /** Relative to repo root; required for stages ≥ 'spec-drafted'. */
86
+ specPath?: string;
87
+ /** Required for stages = 'building' or 'merged'. */
88
+ prNumber?: number;
89
+ /** GitHub-reported merge commit; recorded at building → merged. */
90
+ mergeCommitOid?: string;
91
+ /** ISO; last revalidation against origin/main. */
92
+ ciCheckedAt?: string;
93
+ skippedAt?: string;
94
+ skippedBy?: string;
95
+ skippedReason?: string;
96
+ /** Recorded on skipped → outline reverse transition. */
97
+ unskippedAt?: string;
98
+ /** Default true at runtime; false marks infrastructure-of-tracker specs. */
99
+ driftCheck?: boolean;
100
+ rounds?: InitiativeRound[];
101
+ /** Paths jailed to project-root allowlist. */
102
+ sourceDocs?: string[];
103
+ /** Default true at runtime. */
104
+ autoAdvance?: boolean;
105
+ /** For round-complete and halt notifications. */
106
+ telegramTopicId?: string;
107
+ /** Current round owner (Phase 1.5). */
108
+ ownerMachineId?: string;
109
+ /** Absolute path to the target source repo; required for projects. */
110
+ targetRepoPath?: string;
111
+ /** Increments on each auto-advance without ack; pauses project at ≥ 2. */
112
+ unacknowledgedAdvanceCount?: number;
113
+ /** Populated when user acks the first-launch digest. */
114
+ firstLaunchAckAt?: string;
115
+ /** Highest round index acked. */
116
+ lastAckedRoundIndex?: number;
117
+ /** Populated by git-sync conflict handler (Phase 1.12). */
118
+ awaitingReconciliation?: InitiativeConflictPatch[];
119
+ /** For cache invalidation on drift-prompt edits. */
120
+ driftPromptTemplateVersion?: number;
46
121
  }
47
122
  export interface InitiativeCreateInput {
48
123
  id: string;
@@ -59,6 +134,22 @@ export interface InitiativeCreateInput {
59
134
  needsUser?: boolean;
60
135
  needsUserReason?: string;
61
136
  blockers?: string[];
137
+ /** Defaults to 'task' if omitted. Immutable after creation. */
138
+ kind?: InitiativeKind;
139
+ parentProjectId?: string;
140
+ pipelineStage?: PipelineStage;
141
+ specPath?: string;
142
+ prNumber?: number;
143
+ mergeCommitOid?: string;
144
+ ciCheckedAt?: string;
145
+ driftCheck?: boolean;
146
+ rounds?: InitiativeRound[];
147
+ sourceDocs?: string[];
148
+ autoAdvance?: boolean;
149
+ telegramTopicId?: string;
150
+ ownerMachineId?: string;
151
+ targetRepoPath?: string;
152
+ driftPromptTemplateVersion?: number;
62
153
  }
63
154
  export interface InitiativeUpdateInput {
64
155
  title?: string;
@@ -69,6 +160,62 @@ export interface InitiativeUpdateInput {
69
160
  needsUserReason?: string | null;
70
161
  blockers?: string[];
71
162
  links?: InitiativeLink[];
163
+ /** Optimistic concurrency guard. When provided, must equal the current
164
+ * `version` or update() throws `OccVersionMismatchError`. Backward
165
+ * compatible: callers that omit ifMatch get unconditional writes. */
166
+ ifMatch?: number;
167
+ /** Presence triggers immutability check: any value that differs from
168
+ * the current `kind` throws `KindImmutableError`. */
169
+ kind?: InitiativeKind;
170
+ /** Set to a project id to attach; set to null to clear. Bidirectional
171
+ * validation against the named project's `rounds[].itemIds` runs on set. */
172
+ parentProjectId?: string | null;
173
+ pipelineStage?: PipelineStage;
174
+ specPath?: string | null;
175
+ prNumber?: number | null;
176
+ mergeCommitOid?: string | null;
177
+ ciCheckedAt?: string | null;
178
+ skippedAt?: string | null;
179
+ skippedBy?: string | null;
180
+ skippedReason?: string | null;
181
+ unskippedAt?: string | null;
182
+ driftCheck?: boolean;
183
+ rounds?: InitiativeRound[];
184
+ sourceDocs?: string[];
185
+ autoAdvance?: boolean;
186
+ telegramTopicId?: string | null;
187
+ ownerMachineId?: string | null;
188
+ targetRepoPath?: string;
189
+ unacknowledgedAdvanceCount?: number;
190
+ firstLaunchAckAt?: string | null;
191
+ lastAckedRoundIndex?: number;
192
+ awaitingReconciliation?: InitiativeConflictPatch[];
193
+ driftPromptTemplateVersion?: number;
194
+ }
195
+ /**
196
+ * Thrown by `update()` when the caller supplied `ifMatch` and it didn't
197
+ * equal the current `version`. The HTTP layer (Phase 1.3) translates this
198
+ * to a 409 response with body `{ currentVersion }`.
199
+ */
200
+ export declare class OccVersionMismatchError extends Error {
201
+ readonly currentVersion: number;
202
+ constructor(message: string, currentVersion: number);
203
+ }
204
+ /**
205
+ * Thrown by `update()` when the caller attempted to change `kind`. The
206
+ * `kind` field is set at creation time and never changes thereafter.
207
+ */
208
+ export declare class KindImmutableError extends Error {
209
+ constructor(message?: string);
210
+ }
211
+ /**
212
+ * Thrown by `update()` when setting `parentProjectId` and the named parent
213
+ * either doesn't exist, isn't a `kind: 'project'` initiative, or doesn't
214
+ * list this child in any of its `rounds[].itemIds`. Bidirectional check
215
+ * keeps the parent/child relationship internally consistent.
216
+ */
217
+ export declare class InvalidParentProjectError extends Error {
218
+ constructor(message: string);
72
219
  }
73
220
  export interface DigestItem {
74
221
  initiativeId: string;
@@ -98,7 +245,15 @@ export declare class InitiativeTracker {
98
245
  private readonly initiatives;
99
246
  private taskFlowRegistry;
100
247
  private taskFlowControllerInstanceId;
248
+ private digestCacheInvalidator;
101
249
  constructor(stateDir: string);
250
+ /**
251
+ * Register a callback invoked once after every successful mutating call
252
+ * (`create`, `update`, `setPhaseStatus`, `remove`). The default is a
253
+ * no-op so legacy callers see no change. PR 3 wires the real cache
254
+ * invalidator.
255
+ */
256
+ setDigestCacheInvalidator(fn: () => void): void;
102
257
  /**
103
258
  * Wire a TaskFlow registry to make TaskFlow the source of truth.
104
259
  * Idempotent — safe to call multiple times. After wiring, all reads come
@@ -170,8 +325,28 @@ export declare class InitiativeTracker {
170
325
  get(id: string): Initiative | undefined;
171
326
  create(input: InitiativeCreateInput): Promise<Initiative>;
172
327
  update(id: string, input: InitiativeUpdateInput): Promise<Initiative>;
328
+ /**
329
+ * Verify that `parentId` names an existing `kind: 'project'` initiative
330
+ * AND that one of its rounds lists `childId` in itemIds. Throws
331
+ * `InvalidParentProjectError` on any failure. Used by `update()` when
332
+ * a child's `parentProjectId` is set to a non-null value.
333
+ */
334
+ private assertValidParentProject;
173
335
  setPhaseStatus(id: string, phaseId: string, status: InitiativePhaseStatus): Promise<Initiative>;
174
336
  remove(id: string): Promise<boolean>;
337
+ /**
338
+ * One-time backfill helper for TaskFlow-enabled installs: scans all
339
+ * records, identifies those missing `kind`, and updates them through
340
+ * TaskFlow. Idempotent — running twice produces no change after the
341
+ * first pass. The legacy-JSON path runs an equivalent backfill inside
342
+ * `loadFromDisk()` on first load.
343
+ *
344
+ * Returns counts so callers can log/observe what happened.
345
+ */
346
+ backfillKindAndSchema(): Promise<{
347
+ backfilled: number;
348
+ scanned: number;
349
+ }>;
175
350
  /**
176
351
  * Scan active initiatives for anything actionable. Empty items[] means
177
352
  * "quiet day, don't spam the user."
@@ -1 +1 @@
1
- {"version":3,"file":"InitiativeTracker.d.ts","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InitiativeTracker.d.ts","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,41 @@
37
37
  import fs from 'node:fs';
38
38
  import path from 'node:path';
39
39
  import { TaskFlowError } from '../tasks/task-flow-types.js';
40
+ /**
41
+ * Thrown by `update()` when the caller supplied `ifMatch` and it didn't
42
+ * equal the current `version`. The HTTP layer (Phase 1.3) translates this
43
+ * to a 409 response with body `{ currentVersion }`.
44
+ */
45
+ export class OccVersionMismatchError extends Error {
46
+ currentVersion;
47
+ constructor(message, currentVersion) {
48
+ super(message);
49
+ this.name = 'OccVersionMismatchError';
50
+ this.currentVersion = currentVersion;
51
+ }
52
+ }
53
+ /**
54
+ * Thrown by `update()` when the caller attempted to change `kind`. The
55
+ * `kind` field is set at creation time and never changes thereafter.
56
+ */
57
+ export class KindImmutableError extends Error {
58
+ constructor(message = '`kind` is immutable after initiative creation') {
59
+ super(message);
60
+ this.name = 'KindImmutableError';
61
+ }
62
+ }
63
+ /**
64
+ * Thrown by `update()` when setting `parentProjectId` and the named parent
65
+ * either doesn't exist, isn't a `kind: 'project'` initiative, or doesn't
66
+ * list this child in any of its `rounds[].itemIds`. Bidirectional check
67
+ * keeps the parent/child relationship internally consistent.
68
+ */
69
+ export class InvalidParentProjectError extends Error {
70
+ constructor(message) {
71
+ super(message);
72
+ this.name = 'InvalidParentProjectError';
73
+ }
74
+ }
40
75
  /**
41
76
  * Staleness threshold for the digest scan (7 days without an update on an
42
77
  * active initiative triggers a 'stale' flag).
@@ -48,6 +83,49 @@ export const STALE_THRESHOLD_MS = 7 * 24 * 60 * 60 * 1000;
48
83
  * it for OCC scope checks. Single instance per server process.
49
84
  */
50
85
  export const INITIATIVE_TASKFLOW_CONTROLLER_ID = 'InitiativeTracker';
86
+ /**
87
+ * JSON.stringify replacer that omits any property whose value is exactly
88
+ * `undefined`. Native JSON.stringify already drops undefined object values,
89
+ * but using an explicit replacer makes intent visible AND ensures we never
90
+ * accidentally serialize a `null` for an optional field — the runtime
91
+ * guards in `update()` already reject `null`, so this is belt-and-braces.
92
+ *
93
+ * Round-trip stability: a record loaded and saved without mutation
94
+ * produces byte-identical output (asserted by the unit tests).
95
+ */
96
+ function omitUndefinedReplacer(_key, value) {
97
+ return value === undefined ? undefined : value;
98
+ }
99
+ /**
100
+ * Reject `null` for any of the project-scope optional fields when supplied
101
+ * via `InitiativeCreateInput`. (Update inputs are field-by-field; null
102
+ * means "clear" for nullable fields and "reject" for the rest, enforced
103
+ * inline in `update()`.)
104
+ */
105
+ function rejectNullCreateInput(input) {
106
+ const forbiddenNullKeys = [
107
+ 'kind',
108
+ 'parentProjectId',
109
+ 'pipelineStage',
110
+ 'specPath',
111
+ 'prNumber',
112
+ 'mergeCommitOid',
113
+ 'ciCheckedAt',
114
+ 'driftCheck',
115
+ 'rounds',
116
+ 'sourceDocs',
117
+ 'autoAdvance',
118
+ 'telegramTopicId',
119
+ 'ownerMachineId',
120
+ 'targetRepoPath',
121
+ 'driftPromptTemplateVersion',
122
+ ];
123
+ for (const k of forbiddenNullKeys) {
124
+ if (input[k] === null) {
125
+ throw new Error(`Initiative create input field "${k}" must not be null`);
126
+ }
127
+ }
128
+ }
51
129
  function ownerKeyForInitiative(initiativeId) {
52
130
  return `initiative:${initiativeId}`;
53
131
  }
@@ -62,10 +140,24 @@ export class InitiativeTracker {
62
140
  // ── TaskFlow Phase 4 wiring ────────────────────────────────────
63
141
  taskFlowRegistry = null;
64
142
  taskFlowControllerInstanceId = null;
143
+ // ── Digest cache invalidator hook (Phase 1.1) ──────────────────
144
+ // PR 3 wires the real invalidator (clears the project-scope digest cache
145
+ // so the next read recomputes). Until then this is a no-op. The hook
146
+ // fires after every successful mutating call.
147
+ digestCacheInvalidator = () => { };
65
148
  constructor(stateDir) {
66
149
  this.filePath = path.join(stateDir, 'initiatives.json');
67
150
  this.loadFromDisk();
68
151
  }
152
+ /**
153
+ * Register a callback invoked once after every successful mutating call
154
+ * (`create`, `update`, `setPhaseStatus`, `remove`). The default is a
155
+ * no-op so legacy callers see no change. PR 3 wires the real cache
156
+ * invalidator.
157
+ */
158
+ setDigestCacheInvalidator(fn) {
159
+ this.digestCacheInvalidator = typeof fn === 'function' ? fn : () => { };
160
+ }
69
161
  /**
70
162
  * Wire a TaskFlow registry to make TaskFlow the source of truth.
71
163
  * Idempotent — safe to call multiple times. After wiring, all reads come
@@ -103,11 +195,28 @@ export class InitiativeTracker {
103
195
  return;
104
196
  const raw = JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
105
197
  if (Array.isArray(raw?.initiatives)) {
198
+ let backfilled = 0;
106
199
  for (const item of raw.initiatives) {
107
200
  if (item && typeof item.id === 'string') {
201
+ // Phase 1.1 idempotent backfill: legacy records (missing `kind`)
202
+ // get `kind: 'task'` + `schemaVersion: 1`. Records that already
203
+ // carry `kind` are untouched. Second load is a no-op because
204
+ // nothing changes after the first pass.
205
+ if (item.kind === undefined) {
206
+ item.kind = 'task';
207
+ if (item.schemaVersion === undefined)
208
+ item.schemaVersion = 1;
209
+ backfilled++;
210
+ }
108
211
  this.initiatives.set(item.id, item);
109
212
  }
110
213
  }
214
+ // Rewrite the file exactly once if any record was backfilled. The
215
+ // rewrite uses the same omit-undefined replacer as `saveToDisk()`
216
+ // so the file is stable on a subsequent load.
217
+ if (backfilled > 0) {
218
+ this.saveToDisk();
219
+ }
111
220
  }
112
221
  }
113
222
  catch (err) {
@@ -121,7 +230,7 @@ export class InitiativeTracker {
121
230
  fs.mkdirSync(dir, { recursive: true });
122
231
  const payload = { initiatives: Array.from(this.initiatives.values()) };
123
232
  const tmp = `${this.filePath}.${process.pid}.tmp`;
124
- fs.writeFileSync(tmp, JSON.stringify(payload, null, 2));
233
+ fs.writeFileSync(tmp, JSON.stringify(payload, omitUndefinedReplacer, 2));
125
234
  fs.renameSync(tmp, this.filePath);
126
235
  }
127
236
  // ── TaskFlow ↔ Initiative serialization ─────────────────────────
@@ -472,6 +581,7 @@ export class InitiativeTracker {
472
581
  if (!input.phases.length) {
473
582
  throw new Error('Initiative must have at least one phase');
474
583
  }
584
+ rejectNullCreateInput(input);
475
585
  if (this.isTaskFlowEnabled()) {
476
586
  if (this.findFlowIdForInitiative(input.id)) {
477
587
  throw new Error(`Initiative "${input.id}" already exists`);
@@ -505,18 +615,76 @@ export class InitiativeTracker {
505
615
  links: input.links ?? [],
506
616
  createdAt: now,
507
617
  updatedAt: now,
618
+ // Project-scope: default kind to 'task' and start version at 1. Both
619
+ // are persisted from create-time so subsequent backfill is a no-op.
620
+ kind: input.kind ?? 'task',
621
+ schemaVersion: 1,
622
+ version: 1,
508
623
  };
624
+ // Optional project-layer fields are passed through if present. Stored
625
+ // as-is; runtime validation (parentProjectId existence, etc.) happens
626
+ // on subsequent updates that mutate the relationship.
627
+ if (input.parentProjectId !== undefined)
628
+ initiative.parentProjectId = input.parentProjectId;
629
+ if (input.pipelineStage !== undefined)
630
+ initiative.pipelineStage = input.pipelineStage;
631
+ if (input.specPath !== undefined)
632
+ initiative.specPath = input.specPath;
633
+ if (input.prNumber !== undefined)
634
+ initiative.prNumber = input.prNumber;
635
+ if (input.mergeCommitOid !== undefined)
636
+ initiative.mergeCommitOid = input.mergeCommitOid;
637
+ if (input.ciCheckedAt !== undefined)
638
+ initiative.ciCheckedAt = input.ciCheckedAt;
639
+ if (input.driftCheck !== undefined)
640
+ initiative.driftCheck = input.driftCheck;
641
+ if (input.rounds !== undefined)
642
+ initiative.rounds = input.rounds;
643
+ if (input.sourceDocs !== undefined)
644
+ initiative.sourceDocs = input.sourceDocs;
645
+ if (input.autoAdvance !== undefined)
646
+ initiative.autoAdvance = input.autoAdvance;
647
+ if (input.telegramTopicId !== undefined)
648
+ initiative.telegramTopicId = input.telegramTopicId;
649
+ if (input.ownerMachineId !== undefined)
650
+ initiative.ownerMachineId = input.ownerMachineId;
651
+ if (input.targetRepoPath !== undefined)
652
+ initiative.targetRepoPath = input.targetRepoPath;
653
+ if (input.driftPromptTemplateVersion !== undefined) {
654
+ initiative.driftPromptTemplateVersion = input.driftPromptTemplateVersion;
655
+ }
509
656
  this.initiatives.set(initiative.id, initiative);
657
+ let result;
510
658
  if (this.isTaskFlowEnabled()) {
511
- return await this.persistThroughTaskFlow(initiative);
659
+ result = await this.persistThroughTaskFlow(initiative);
660
+ }
661
+ else {
662
+ this.saveToDisk();
663
+ result = initiative;
512
664
  }
513
- this.saveToDisk();
514
- return initiative;
665
+ this.digestCacheInvalidator();
666
+ return result;
515
667
  }
516
668
  async update(id, input) {
517
669
  const existing = this.get(id);
518
670
  if (!existing)
519
671
  throw new Error(`Initiative "${id}" not found`);
672
+ // ── kind immutability check (Phase 1.1) ────────────────────────
673
+ // The `kind` field is set at creation and never mutates. We treat the
674
+ // current kind as 'task' when undefined (legacy records pre-backfill).
675
+ if (input.kind !== undefined) {
676
+ const currentKind = existing.kind ?? 'task';
677
+ if (input.kind !== currentKind) {
678
+ throw new KindImmutableError(`Cannot change kind from "${currentKind}" to "${input.kind}"`);
679
+ }
680
+ }
681
+ // ── OCC version check (Phase 1.1) ──────────────────────────────
682
+ // Only enforce when caller supplied ifMatch — preserves backward
683
+ // compatibility for legacy callers that never knew about versioning.
684
+ const currentVersion = existing.version ?? 1;
685
+ if (input.ifMatch !== undefined && input.ifMatch !== currentVersion) {
686
+ throw new OccVersionMismatchError(`Initiative "${id}" version mismatch: expected ${input.ifMatch}, current ${currentVersion}`, currentVersion);
687
+ }
520
688
  const now = new Date().toISOString();
521
689
  const next = { ...existing, updatedAt: now, lastTouchedAt: now };
522
690
  if (input.title !== undefined)
@@ -537,12 +705,110 @@ export class InitiativeTracker {
537
705
  next.blockers = input.blockers;
538
706
  if (input.links !== undefined)
539
707
  next.links = input.links;
708
+ // ── Project-scope field updates ────────────────────────────────
709
+ // Bidirectional parentProjectId validation: when setting (not clearing),
710
+ // the named parent must exist as kind:'project' AND list this child in
711
+ // rounds[].itemIds. Clearing (null) skips validation.
712
+ if (input.parentProjectId !== undefined) {
713
+ if (input.parentProjectId === null) {
714
+ next.parentProjectId = undefined;
715
+ }
716
+ else {
717
+ this.assertValidParentProject(input.parentProjectId, id);
718
+ next.parentProjectId = input.parentProjectId;
719
+ }
720
+ }
721
+ if (input.pipelineStage !== undefined)
722
+ next.pipelineStage = input.pipelineStage;
723
+ if (input.specPath !== undefined) {
724
+ next.specPath = input.specPath === null ? undefined : input.specPath;
725
+ }
726
+ if (input.prNumber !== undefined) {
727
+ next.prNumber = input.prNumber === null ? undefined : input.prNumber;
728
+ }
729
+ if (input.mergeCommitOid !== undefined) {
730
+ next.mergeCommitOid = input.mergeCommitOid === null ? undefined : input.mergeCommitOid;
731
+ }
732
+ if (input.ciCheckedAt !== undefined) {
733
+ next.ciCheckedAt = input.ciCheckedAt === null ? undefined : input.ciCheckedAt;
734
+ }
735
+ if (input.skippedAt !== undefined) {
736
+ next.skippedAt = input.skippedAt === null ? undefined : input.skippedAt;
737
+ }
738
+ if (input.skippedBy !== undefined) {
739
+ next.skippedBy = input.skippedBy === null ? undefined : input.skippedBy;
740
+ }
741
+ if (input.skippedReason !== undefined) {
742
+ next.skippedReason = input.skippedReason === null ? undefined : input.skippedReason;
743
+ }
744
+ if (input.unskippedAt !== undefined) {
745
+ next.unskippedAt = input.unskippedAt === null ? undefined : input.unskippedAt;
746
+ }
747
+ if (input.driftCheck !== undefined)
748
+ next.driftCheck = input.driftCheck;
749
+ if (input.rounds !== undefined)
750
+ next.rounds = input.rounds;
751
+ if (input.sourceDocs !== undefined)
752
+ next.sourceDocs = input.sourceDocs;
753
+ if (input.autoAdvance !== undefined)
754
+ next.autoAdvance = input.autoAdvance;
755
+ if (input.telegramTopicId !== undefined) {
756
+ next.telegramTopicId = input.telegramTopicId === null ? undefined : input.telegramTopicId;
757
+ }
758
+ if (input.ownerMachineId !== undefined) {
759
+ next.ownerMachineId = input.ownerMachineId === null ? undefined : input.ownerMachineId;
760
+ }
761
+ if (input.targetRepoPath !== undefined)
762
+ next.targetRepoPath = input.targetRepoPath;
763
+ if (input.unacknowledgedAdvanceCount !== undefined) {
764
+ next.unacknowledgedAdvanceCount = input.unacknowledgedAdvanceCount;
765
+ }
766
+ if (input.firstLaunchAckAt !== undefined) {
767
+ next.firstLaunchAckAt =
768
+ input.firstLaunchAckAt === null ? undefined : input.firstLaunchAckAt;
769
+ }
770
+ if (input.lastAckedRoundIndex !== undefined) {
771
+ next.lastAckedRoundIndex = input.lastAckedRoundIndex;
772
+ }
773
+ if (input.awaitingReconciliation !== undefined) {
774
+ next.awaitingReconciliation = input.awaitingReconciliation;
775
+ }
776
+ if (input.driftPromptTemplateVersion !== undefined) {
777
+ next.driftPromptTemplateVersion = input.driftPromptTemplateVersion;
778
+ }
779
+ // Bump version on every successful write.
780
+ next.version = currentVersion + 1;
540
781
  this.initiatives.set(id, next);
782
+ let result;
541
783
  if (this.isTaskFlowEnabled()) {
542
- return await this.persistThroughTaskFlow(next);
784
+ result = await this.persistThroughTaskFlow(next);
785
+ }
786
+ else {
787
+ this.saveToDisk();
788
+ result = next;
789
+ }
790
+ this.digestCacheInvalidator();
791
+ return result;
792
+ }
793
+ /**
794
+ * Verify that `parentId` names an existing `kind: 'project'` initiative
795
+ * AND that one of its rounds lists `childId` in itemIds. Throws
796
+ * `InvalidParentProjectError` on any failure. Used by `update()` when
797
+ * a child's `parentProjectId` is set to a non-null value.
798
+ */
799
+ assertValidParentProject(parentId, childId) {
800
+ const parent = this.get(parentId);
801
+ if (!parent) {
802
+ throw new InvalidParentProjectError(`Parent project "${parentId}" not found`);
803
+ }
804
+ if ((parent.kind ?? 'task') !== 'project') {
805
+ throw new InvalidParentProjectError(`Initiative "${parentId}" is not a project (kind="${parent.kind ?? 'task'}")`);
806
+ }
807
+ const rounds = parent.rounds ?? [];
808
+ const listed = rounds.some((r) => Array.isArray(r.itemIds) && r.itemIds.includes(childId));
809
+ if (!listed) {
810
+ throw new InvalidParentProjectError(`Project "${parentId}" does not list child "${childId}" in any round`);
543
811
  }
544
- this.saveToDisk();
545
- return next;
546
812
  }
547
813
  async setPhaseStatus(id, phaseId, status) {
548
814
  const existing = this.get(id);
@@ -567,19 +833,28 @@ export class InitiativeTracker {
567
833
  status: allDone ? 'completed' : existing.status === 'completed' ? 'active' : existing.status,
568
834
  updatedAt: now,
569
835
  lastTouchedAt: now,
836
+ version: (existing.version ?? 1) + 1,
570
837
  };
571
838
  this.initiatives.set(id, next);
839
+ let result;
572
840
  if (this.isTaskFlowEnabled()) {
573
- return await this.persistThroughTaskFlow(next);
841
+ result = await this.persistThroughTaskFlow(next);
574
842
  }
575
- this.saveToDisk();
576
- return next;
843
+ else {
844
+ this.saveToDisk();
845
+ result = next;
846
+ }
847
+ this.digestCacheInvalidator();
848
+ return result;
577
849
  }
578
850
  async remove(id) {
579
851
  if (this.isTaskFlowEnabled()) {
580
852
  const fid = this.findFlowIdForInitiative(id);
581
853
  if (!fid) {
582
- return this.initiatives.delete(id);
854
+ const removed = this.initiatives.delete(id);
855
+ if (removed)
856
+ this.digestCacheInvalidator();
857
+ return removed;
583
858
  }
584
859
  const registry = this.taskFlowRegistry;
585
860
  const principal = this.taskFlowPrincipal();
@@ -633,13 +908,59 @@ export class InitiativeTracker {
633
908
  }
634
909
  }
635
910
  this.initiatives.delete(id);
911
+ this.digestCacheInvalidator();
636
912
  return true;
637
913
  }
638
914
  const removed = this.initiatives.delete(id);
639
- if (removed)
915
+ if (removed) {
640
916
  this.saveToDisk();
917
+ this.digestCacheInvalidator();
918
+ }
641
919
  return removed;
642
920
  }
921
+ /**
922
+ * One-time backfill helper for TaskFlow-enabled installs: scans all
923
+ * records, identifies those missing `kind`, and updates them through
924
+ * TaskFlow. Idempotent — running twice produces no change after the
925
+ * first pass. The legacy-JSON path runs an equivalent backfill inside
926
+ * `loadFromDisk()` on first load.
927
+ *
928
+ * Returns counts so callers can log/observe what happened.
929
+ */
930
+ async backfillKindAndSchema() {
931
+ if (!this.isTaskFlowEnabled()) {
932
+ // Legacy path is backfilled during load. A no-op here is correct
933
+ // because the in-memory cache already reflects the backfill.
934
+ let backfilled = 0;
935
+ for (const init of this.initiatives.values()) {
936
+ if (init.kind === undefined) {
937
+ init.kind = 'task';
938
+ if (init.schemaVersion === undefined)
939
+ init.schemaVersion = 1;
940
+ backfilled++;
941
+ }
942
+ }
943
+ if (backfilled > 0)
944
+ this.saveToDisk();
945
+ return { backfilled, scanned: this.initiatives.size };
946
+ }
947
+ this.refreshCacheFromTaskFlow();
948
+ let backfilled = 0;
949
+ const records = Array.from(this.initiatives.values());
950
+ for (const init of records) {
951
+ if (init.kind !== undefined)
952
+ continue;
953
+ const patched = {
954
+ ...init,
955
+ kind: 'task',
956
+ schemaVersion: init.schemaVersion ?? 1,
957
+ };
958
+ this.initiatives.set(init.id, patched);
959
+ await this.persistThroughTaskFlow(patched);
960
+ backfilled++;
961
+ }
962
+ return { backfilled, scanned: records.length };
963
+ }
643
964
  /**
644
965
  * Scan active initiatives for anything actionable. Empty items[] means
645
966
  * "quiet day, don't spam the user."
@@ -1 +1 @@
1
- {"version":3,"file":"InitiativeTracker.js","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InitiativeTracker.js","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "0.28.85",
3
+ "version": "0.28.86",
4
4
  "description": "Persistent autonomy infrastructure for AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-05-11T17:55:05.993Z",
5
- "instarVersion": "0.28.85",
4
+ "generatedAt": "2026-05-11T19:04:47.355Z",
5
+ "instarVersion": "0.28.86",
6
6
  "entryCount": 187,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -0,0 +1,86 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- bump: minor -->
4
+ <!-- Valid values: patch, minor, major -->
5
+ <!-- patch = bug fixes, refactors, test additions, doc updates -->
6
+ <!-- minor = new features, new APIs, new capabilities (backwards-compatible) -->
7
+ <!-- major = breaking changes to existing APIs or behavior -->
8
+
9
+ ## What Changed
10
+
11
+ ### Project-scope Phase 1a PR 1 — Initiative type extension
12
+
13
+ First of three PRs scaffolding the project-scope feature. This PR adds the
14
+ type-level surface that the round-runner, drift checker, and HTTP routes
15
+ will rely on in PR 2/3.
16
+
17
+ Spec source: `docs/specs/PROJECT-SCOPE-SPEC.md` § Phase 1.1.
18
+
19
+ - `Initiative` gains optional project-layer fields: `kind` (`'task' |
20
+ 'project'`, immutable after creation, defaults to `'task'`),
21
+ `schemaVersion`, `version` (OCC counter), `parentProjectId`, plus
22
+ child-only fields (`pipelineStage`, `specPath`, `prNumber`,
23
+ `mergeCommitOid`, `ciCheckedAt`, `skipped*`, `unskippedAt`,
24
+ `driftCheck`) and project-only fields (`rounds[]`, `sourceDocs`,
25
+ `autoAdvance`, `telegramTopicId`, `ownerMachineId`, `targetRepoPath`,
26
+ `unacknowledgedAdvanceCount`, `firstLaunchAckAt`,
27
+ `lastAckedRoundIndex`, `awaitingReconciliation`,
28
+ `driftPromptTemplateVersion`). All optional → fully backward compatible.
29
+ - `InitiativeStatus` is extended with `'paused' | 'halted' |
30
+ 'awaiting-user'`. Existing four values unchanged.
31
+ - New error classes for structural validators:
32
+ - `OccVersionMismatchError extends Error` (carries `currentVersion`)
33
+ - `KindImmutableError extends Error`
34
+ - `InvalidParentProjectError extends Error`
35
+ - `InitiativeTracker.update()` accepts `ifMatch?: number` for optimistic
36
+ concurrency. When provided and stale, throws `OccVersionMismatchError`
37
+ (the HTTP layer in PR 2 will translate this to 409 with body
38
+ `{currentVersion}`). When omitted, last-write-wins — backward compatible.
39
+ - `update()` rejects mutations of `kind` (`KindImmutableError`).
40
+ - Setting `parentProjectId` requires a bidirectional match: the named
41
+ parent must exist, be `kind: 'project'`, and list this child in one of
42
+ its `rounds[].itemIds`. Clearing (`null`) skips validation.
43
+ - One-time idempotent backfill: `loadFromDisk()` writes
44
+ `kind: 'task' + schemaVersion: 1` to legacy records on first load and
45
+ rewrites the file. Second load is a byte-identical no-op. A parallel
46
+ `backfillKindAndSchema()` public method handles TaskFlow-enabled installs.
47
+ - Serialization rule: `saveToDisk()` omits any field whose value is
48
+ `undefined`. Round-trip stability asserted in tests.
49
+ - New `setDigestCacheInvalidator(fn)` hook fires after every successful
50
+ mutation (`create`, `update`, `setPhaseStatus`, `remove`). Default is a
51
+ no-op; PR 3 wires the real invalidator for the project-scope digest cache.
52
+
53
+ ## What to Tell Your User
54
+
55
+ Your agent now has the type-level scaffolding for multi-spec projects.
56
+ This PR alone doesn't change anything visible — no new commands, no new
57
+ dashboard tab, no new behavior on existing endpoints. It lays the
58
+ foundation so PR 2 can expose the projects HTTP routes and PR 3 can wire
59
+ the project skill and the session-start digest.
60
+
61
+ The only thing you might notice is a very small one-time write at server
62
+ startup if your initiatives file predates this version — your agent will
63
+ quietly mark existing records as task-type and add a schema version marker
64
+ so they work correctly alongside new project records.
65
+
66
+ ## Summary of New Capabilities
67
+
68
+ | Capability | How to Use |
69
+ |-----------|-----------|
70
+ | Optional project-layer fields on `Initiative` | additive; existing callers unaffected |
71
+ | OCC on initiative updates | pass `ifMatch: <currentVersion>` in `InitiativeUpdateInput` to enforce |
72
+ | `kind` immutability gate | automatic — `update()` rejects `kind` mutation |
73
+ | Bidirectional `parentProjectId` validation | automatic on `update({ parentProjectId })` |
74
+ | Backfill of legacy initiative records | automatic on server start; idempotent |
75
+ | Digest-cache invalidator hook | `tracker.setDigestCacheInvalidator(fn)` (PR 3 wires it) |
76
+
77
+ ## Evidence
78
+
79
+ Spec: `docs/specs/PROJECT-SCOPE-SPEC.md` § Phase 1.1.
80
+
81
+ - `tests/unit/InitiativeTracker.project.test.ts` — 26 new tests covering
82
+ backfill, kind immutability, parent validation, OCC, serialization
83
+ round-trip, status enum extension, and the invalidator hook.
84
+ - Full InitiativeTracker test sweep (87 tests across 4 suites) passes
85
+ unchanged.
86
+ - Side-effects review: `upgrades/side-effects/project-scope-phase1a-pr1.md`.
@@ -0,0 +1,232 @@
1
+ # Side-Effects Review — project-scope Phase 1a PR 1 (Initiative type extension)
2
+
3
+ **Version / slug:** `project-scope-phase1a-pr1`
4
+ **Date:** `2026-05-11`
5
+ **Author:** `echo`
6
+ **Second-pass reviewer:** `not required`
7
+
8
+ ## Summary of the change
9
+
10
+ Extends `src/core/InitiativeTracker.ts` with the project-layer scaffolding
11
+ called for by `docs/specs/PROJECT-SCOPE-SPEC.md` Phase 1.1: optional `kind`,
12
+ `schemaVersion`, `version` (OCC counter), `parentProjectId`, child-only
13
+ fields (`pipelineStage`, `specPath`, `prNumber`, `mergeCommitOid`,
14
+ `ciCheckedAt`, `skip*`, `unskippedAt`, `driftCheck`), and project-only
15
+ fields (`rounds[]`, `sourceDocs`, `autoAdvance`, `telegramTopicId`,
16
+ `ownerMachineId`, `targetRepoPath`, `unacknowledgedAdvanceCount`,
17
+ `firstLaunchAckAt`, `lastAckedRoundIndex`, `awaitingReconciliation`,
18
+ `driftPromptTemplateVersion`). The `InitiativeStatus` union is extended
19
+ with `'paused' | 'halted' | 'awaiting-user'` — pre-project-scope records
20
+ continue to use the original four values. Three new error classes
21
+ (`OccVersionMismatchError`, `KindImmutableError`,
22
+ `InvalidParentProjectError`) cover the validation paths; an
23
+ `omitUndefinedReplacer` and `null`-rejection guards keep serialization
24
+ stable; a digest-cache-invalidator hook (`setDigestCacheInvalidator`)
25
+ fires after every successful mutation (no-op default until PR 3 wires it).
26
+ A one-time idempotent backfill in `loadFromDisk()` writes
27
+ `kind: 'task' + schemaVersion: 1` to legacy records; the parallel
28
+ `backfillKindAndSchema()` public method handles the TaskFlow-enabled
29
+ install path. Tests: `tests/unit/InitiativeTracker.project.test.ts` (26
30
+ new tests).
31
+
32
+ ## Decision-point inventory
33
+
34
+ - `Initiative.kind` immutability — **add** — `update()` throws
35
+ `KindImmutableError` if the caller tries to change `kind` away from its
36
+ current value.
37
+ - `InitiativeUpdateInput.ifMatch` (OCC) — **add** — when provided, must
38
+ equal current `version` or `OccVersionMismatchError` is thrown.
39
+ - `parentProjectId` bidirectional validator — **add** — `update()` rejects
40
+ attaching a child to a parent that doesn't exist, isn't `kind: 'project'`,
41
+ or doesn't list this child in any of its `rounds[].itemIds`.
42
+
43
+ No other decision points are touched. The new validators sit at the
44
+ persistence-layer edge and are structural — they accept/reject based on
45
+ type and reference integrity, not on conversational context.
46
+
47
+ ---
48
+
49
+ ## 1. Over-block
50
+
51
+ **What legitimate inputs does this change reject that it shouldn't?**
52
+
53
+ No new rejections for legitimate input shapes. The new fields are all
54
+ optional and additive — pre-existing callers that don't touch them are
55
+ not affected. The OCC check only fires when `ifMatch` is explicitly
56
+ provided, so backward-compatible callers continue to enjoy unconditional
57
+ writes. The `parentProjectId` validator only fires when the caller is
58
+ actually setting that field; clearing (set to null) skips validation.
59
+ The `kind` immutability check only rejects values that differ from the
60
+ current kind — passing the same kind value is accepted as a no-op.
61
+
62
+ ---
63
+
64
+ ## 2. Under-block
65
+
66
+ **What failure modes does this still miss?**
67
+
68
+ The OCC check is opt-in — old callers that don't provide `ifMatch` still
69
+ get last-write-wins semantics. This is intentional for backward
70
+ compatibility. The HTTP layer (PR 2) will enforce `If-Match` on the
71
+ project-kind `PATCH /projects/:id` endpoint specifically, where staleness
72
+ matters; legacy `/initiatives/*` keeps current semantics.
73
+
74
+ `parentProjectId` validation only fires inside `update()`. A caller
75
+ that sets `parentProjectId` at create time (via
76
+ `InitiativeCreateInput.parentProjectId`) bypasses the bidirectional
77
+ check. This is acceptable for Phase 1.1 because the round-runner and HTTP
78
+ layer (PR 2 / Phase 1.5) construct child initiatives and then attach them
79
+ in a separate update — the create-time field exists for migration/testing
80
+ shapes only. PR 2 may tighten this if the create flow uses it directly.
81
+
82
+ ---
83
+
84
+ ## 3. Level-of-abstraction fit
85
+
86
+ **Is this at the right layer?**
87
+
88
+ Yes. Type extension, OCC counter, `kind` immutability, and the
89
+ `parentProjectId` bidirectional check all live at the persistence layer,
90
+ which is correct because the tracker is the single source of truth for
91
+ both project and task initiative records. The validators compare to
92
+ fields already owned by the tracker (`rounds[].itemIds`, `kind`,
93
+ `version`), so reaching outside the tracker would only add coupling, not
94
+ clarity. The HTTP layer (PR 2) will map the three error classes to 4xx
95
+ responses; that's a thin translation, not a re-implementation.
96
+
97
+ The digest-cache-invalidator hook is a deliberate inversion of
98
+ dependency — the tracker doesn't know about the cache (which is owned by
99
+ PR 3's project-scope digest), it just signals "something changed." This
100
+ keeps the layering clean.
101
+
102
+ ---
103
+
104
+ ## 4. Signal vs authority compliance
105
+
106
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
107
+
108
+ **Does this change hold blocking authority with brittle logic?**
109
+
110
+ - [x] No — this change has no block/allow surface in the
111
+ conversational-content sense.
112
+
113
+ The three new validators (`KindImmutableError`,
114
+ `OccVersionMismatchError`, `InvalidParentProjectError`) are structural
115
+ schema/reference checks, not behavioral content gates. They fall under
116
+ the "When this principle does NOT apply" carve-out in
117
+ `docs/signal-vs-authority.md`: schema validators, type guards, and
118
+ referential-integrity checks at API edges are expected to be structural
119
+ and brittle by design — the right answer to "does this PATCH change an
120
+ immutable field?" is a deterministic yes/no, not an LLM judgment. The
121
+ spec calls this out explicitly in Phase 1.1.
122
+
123
+ ---
124
+
125
+ ## 5. Interactions
126
+
127
+ **Does this interact with existing checks, recovery paths, or infrastructure?**
128
+
129
+ - **Shadowing:** The backfill in `loadFromDisk()` runs once at construction
130
+ time. It does not shadow other checks because it operates on raw JSON
131
+ before the cache is populated. The version-bump in `update()` runs
132
+ after all field assignments and before the persistence call; it
133
+ doesn't shadow any existing check.
134
+ - **Double-fire:** `setPhaseStatus()` and `update()` both bump `version`
135
+ and both call the digest-cache invalidator. They're separate code
136
+ paths called by different callers, never on the same logical write.
137
+ `create()` and `remove()` likewise each invalidate exactly once per
138
+ successful mutation. No double-fire.
139
+ - **Races:** The legacy-JSON path is single-process (one server, one
140
+ tracker instance). The TaskFlow path inherits TaskFlow's existing
141
+ concurrency model (controllerInstanceId + expectedRevision). PR 4 will
142
+ add multi-machine reconciliation via `awaitingReconciliation`; the
143
+ field is present in this PR but unused.
144
+ - **Feedback loops:** The digest cache invalidator hook is a one-way
145
+ signal; no feedback path is created. The default no-op cannot loop.
146
+
147
+ The backfill rewrite happens inside `loadFromDisk()`. The constructor
148
+ runs `loadFromDisk()` synchronously before any caller can touch the
149
+ tracker, so there's no race between backfill and the first read. If
150
+ `fs.writeFileSync` fails, the cache still reflects the backfilled shape
151
+ (in-memory) and the next mutation will rewrite to disk — the legacy
152
+ file remains valid because `kind`/`schemaVersion` are optional.
153
+
154
+ ---
155
+
156
+ ## 6. External surfaces
157
+
158
+ **Does this change anything visible outside the immediate code path?**
159
+
160
+ - **Other agents on the same machine:** No. The new fields are all
161
+ optional; agents that read `Initiative` records without expecting them
162
+ see the same shape as before.
163
+ - **Other users of the install base:** No HTTP changes in this PR.
164
+ Endpoints in `routes-initiatives.ts` continue to operate on the
165
+ pre-existing field set. PR 2 will introduce `/projects` routes.
166
+ - **External systems:** None.
167
+ - **Persistent state:** Legacy `initiatives.json` files gain a one-time
168
+ backfill: each record acquires `kind: 'task'` and `schemaVersion: 1`.
169
+ This is forward-compatible — old code reading the file ignores the
170
+ new fields. The TaskFlow path stores the same shape in `stateJson`.
171
+ No schema migration is required for rollback (see § 7).
172
+ - **Timing / runtime conditions:** The backfill adds a small write at
173
+ startup the first time a server boots with this code on a legacy
174
+ install. Bounded by the number of legacy records; in practice
175
+ microseconds.
176
+
177
+ ---
178
+
179
+ ## 7. Rollback cost
180
+
181
+ **If this turns out wrong in production, what's the back-out?**
182
+
183
+ - **Hot-fix release:** Revert the commit. All new fields are optional;
184
+ rollback restores the original behavior.
185
+ - **Data migration:** None required. Records that received
186
+ `kind: 'task' + schemaVersion: 1` from the backfill simply carry
187
+ those extra fields after rollback — old code ignores them. The
188
+ `version` field was added to in-memory records during this PR's
189
+ lifetime; if it survives the rollback in the on-disk file, old code
190
+ ignores it.
191
+ - **Agent state repair:** Not needed. The legacy JSON path tolerates
192
+ unknown extra fields. TaskFlow's `stateJson` is opaque to TaskFlow
193
+ itself; only the projector cares.
194
+ - **User visibility:** No user-visible regression during rollback. No
195
+ HTTP responses or dashboard surfaces change in this PR.
196
+
197
+ Rollback is a single `git revert` with no follow-up.
198
+
199
+ ---
200
+
201
+ ## Conclusion
202
+
203
+ PR 1 of 3 for the project-scope Phase 1a build. All changes are
204
+ additive and structural: optional type fields, three error classes for
205
+ structural validators, a one-time idempotent backfill, and a no-op
206
+ digest-cache hook. The 26 new tests in
207
+ `tests/unit/InitiativeTracker.project.test.ts` cover backfill,
208
+ immutability, OCC, parent validation, serialization stability, the
209
+ extended status enum, and the invalidator hook. The full existing
210
+ InitiativeTracker suite (87 tests across 4 files) continues to pass.
211
+ Clear to ship.
212
+
213
+ ---
214
+
215
+ ## Second-pass review (if required)
216
+
217
+ Not required. No new decision points, no sentinel/gate/watchdog
218
+ touched, no externally-visible behavior change. Per the
219
+ `/instar-dev` rubric in `skills/instar-dev/SKILL.md` § Phase 5, a
220
+ second-pass review is reserved for changes that alter conversational
221
+ gates or recovery infrastructure.
222
+
223
+ ---
224
+
225
+ ## Evidence pointers
226
+
227
+ - `tests/unit/InitiativeTracker.project.test.ts` — 26 new tests, all
228
+ passing.
229
+ - Full InitiativeTracker test sweep:
230
+ `node node_modules/vitest/vitest.mjs run tests/unit/InitiativeTracker tests/unit/initiative-tracker-taskflow tests/unit/routes-initiatives` → 87 tests, all passing.
231
+ - `node_modules/typescript/bin/tsc --noEmit` → clean.
232
+ - Spec: `docs/specs/PROJECT-SCOPE-SPEC.md` Phase 1.1.