instar 1.3.877 → 1.3.879

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 (65) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +8 -0
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/core/ApprenticeshipMatrixAcceptance.d.ts +124 -0
  5. package/dist/core/ApprenticeshipMatrixAcceptance.d.ts.map +1 -0
  6. package/dist/core/ApprenticeshipMatrixAcceptance.js +240 -0
  7. package/dist/core/ApprenticeshipMatrixAcceptance.js.map +1 -0
  8. package/dist/core/ApprenticeshipProgram.d.ts +25 -3
  9. package/dist/core/ApprenticeshipProgram.d.ts.map +1 -1
  10. package/dist/core/ApprenticeshipProgram.js +72 -25
  11. package/dist/core/ApprenticeshipProgram.js.map +1 -1
  12. package/dist/core/ApprenticeshipStallGate.d.ts +297 -0
  13. package/dist/core/ApprenticeshipStallGate.d.ts.map +1 -0
  14. package/dist/core/ApprenticeshipStallGate.js +935 -0
  15. package/dist/core/ApprenticeshipStallGate.js.map +1 -0
  16. package/dist/core/MessagingToneGate.d.ts +33 -1
  17. package/dist/core/MessagingToneGate.d.ts.map +1 -1
  18. package/dist/core/MessagingToneGate.js +47 -9
  19. package/dist/core/MessagingToneGate.js.map +1 -1
  20. package/dist/core/PostUpdateMigrator.d.ts +8 -0
  21. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  22. package/dist/core/PostUpdateMigrator.js +75 -0
  23. package/dist/core/PostUpdateMigrator.js.map +1 -1
  24. package/dist/core/apprenticeshipStallGate.worker.d.ts +13 -0
  25. package/dist/core/apprenticeshipStallGate.worker.d.ts.map +1 -0
  26. package/dist/core/apprenticeshipStallGate.worker.js +23 -0
  27. package/dist/core/apprenticeshipStallGate.worker.js.map +1 -0
  28. package/dist/core/types.d.ts +13 -0
  29. package/dist/core/types.d.ts.map +1 -1
  30. package/dist/core/types.js.map +1 -1
  31. package/dist/monitoring/SelfUnblockChecklist.d.ts +1 -1
  32. package/dist/monitoring/SelfUnblockChecklist.d.ts.map +1 -1
  33. package/dist/monitoring/SelfUnblockChecklist.js +2 -0
  34. package/dist/monitoring/SelfUnblockChecklist.js.map +1 -1
  35. package/dist/monitoring/SelfUnblockProbeProviders.d.ts +19 -1
  36. package/dist/monitoring/SelfUnblockProbeProviders.d.ts.map +1 -1
  37. package/dist/monitoring/SelfUnblockProbeProviders.js +187 -2
  38. package/dist/monitoring/SelfUnblockProbeProviders.js.map +1 -1
  39. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  40. package/dist/monitoring/guardManifest.js +22 -0
  41. package/dist/monitoring/guardManifest.js.map +1 -1
  42. package/dist/scaffold/templates.d.ts.map +1 -1
  43. package/dist/scaffold/templates.js +4 -2
  44. package/dist/scaffold/templates.js.map +1 -1
  45. package/dist/server/AgentServer.d.ts +1 -0
  46. package/dist/server/AgentServer.d.ts.map +1 -1
  47. package/dist/server/AgentServer.js +22 -0
  48. package/dist/server/AgentServer.js.map +1 -1
  49. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  50. package/dist/server/CapabilityIndex.js +2 -0
  51. package/dist/server/CapabilityIndex.js.map +1 -1
  52. package/dist/server/routes.d.ts +3 -0
  53. package/dist/server/routes.d.ts.map +1 -1
  54. package/dist/server/routes.js +281 -5
  55. package/dist/server/routes.js.map +1 -1
  56. package/package.json +1 -1
  57. package/scripts/stall-matrix-live-check.mjs +309 -0
  58. package/src/data/builtin-manifest.json +64 -64
  59. package/src/scaffold/templates/jobs/instar/stall-matrix-live-check.md +32 -0
  60. package/src/scaffold/templates.ts +4 -2
  61. package/upgrades/1.3.878.md +67 -0
  62. package/upgrades/1.3.879.md +62 -0
  63. package/upgrades/side-effects/correction-derived-hardening.md +188 -0
  64. package/upgrades/side-effects/stall-coverage-matrix-pr-b.md +154 -0
  65. package/upgrades/1.3.877.md +0 -53
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprenticeshipMatrixAcceptance.d.ts","sourceRoot":"","sources":["../../src/core/ApprenticeshipMatrixAcceptance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * ApprenticeshipMatrixAcceptance — the §2.2 acceptance-authority machinery for
3
+ * the stall-coverage matrix gate (PR-B).
4
+ *
5
+ * Spec: docs/specs/framework-stall-coverage-matrix.md §2.2, Frontloaded
6
+ * Decisions 14 + 20.
7
+ *
8
+ * ONE acceptance artifact shape everywhere:
9
+ * { contentHash, enumerated row ids, authenticated principal, challenge ref }
10
+ * minted via the SAME server-enumerates → operator-replies challenge mechanic
11
+ * as the existing autonomous ratify-deferral flow (ScopeAccretionRatifier):
12
+ * the server renders the exact enumerated set, the operator's authenticated
13
+ * reply (dashboard-PIN route OR a reply-anchored verified-operator Telegram
14
+ * confirmation) binds exactly that set, and the challenge is SINGLE-USE —
15
+ * replay refused.
16
+ *
17
+ * Binding granularity (Decision 20): a ROW-SCOPED acceptance binds its
18
+ * contentHash to the canonical serialization of exactly the accepted rows (a
19
+ * codemod adding UNRELATED rows does not void it); a WHOLE-SET transition
20
+ * acceptance binds the whole-matrix content hash (re-review on ANY change is
21
+ * the intent); a per-instance OVERRIDE additionally binds to the named
22
+ * rule/row and expires on any change to that row.
23
+ *
24
+ * Requester ≠ acceptor STRUCTURALLY (Decision 14): binding requires an
25
+ * authenticated principal kind — 'operator-pin' (the dashboard-PIN route) or
26
+ * 'verified-operator' (the reply-anchored Telegram path). A 'bearer' principal
27
+ * — the transition caller's own token — is REFUSED at the bind chokepoint, so
28
+ * self-approval cannot be recorded by construction.
29
+ *
30
+ * Persistence: pending challenges live in
31
+ * `.instar/apprenticeship/matrix-acceptance.json`; BOUND acceptance artifacts
32
+ * are appended tamper-evidently to logs/apprenticeship-decisions.jsonl (the
33
+ * gate machine's acceptance store — Decision 20).
34
+ */
35
+ import { randomBytes, createHash } from 'node:crypto';
36
+ import fs from 'node:fs';
37
+ import path from 'node:path';
38
+ import { appendTamperEvidentDecisionRow, readDecisionRows, rowIntegrityHash, } from './ApprenticeshipStallGate.js';
39
+ import { parseRatificationConfirmation } from './ScopeAccretionRatifier.js';
40
+ const CHALLENGE_CAP = 100;
41
+ const ACCEPTANCE_GATE = 'matrix-acceptance';
42
+ export class MatrixAcceptanceStore {
43
+ storePath;
44
+ decisionLogPath;
45
+ now;
46
+ log;
47
+ constructor(deps) {
48
+ this.storePath = path.join(deps.stateDir, 'apprenticeship', 'matrix-acceptance.json');
49
+ this.decisionLogPath =
50
+ deps.decisionLogPath ?? path.join(deps.stateDir, 'logs', 'apprenticeship-decisions.jsonl');
51
+ this.now = deps.now ?? (() => new Date());
52
+ this.log = deps.log;
53
+ }
54
+ // ── Challenge persistence ──
55
+ loadStore() {
56
+ try {
57
+ const raw = JSON.parse(fs.readFileSync(this.storePath, 'utf8'));
58
+ if (raw && raw.version === 1 && Array.isArray(raw.challenges))
59
+ return raw;
60
+ }
61
+ catch {
62
+ // fresh/corrupt store starts empty — challenges are short-lived mint
63
+ // records, never the acceptance artifacts themselves.
64
+ }
65
+ return { version: 1, challenges: [] };
66
+ }
67
+ saveStore(store) {
68
+ fs.mkdirSync(path.dirname(this.storePath), { recursive: true });
69
+ const tmp = `${this.storePath}.${process.pid}.tmp`;
70
+ fs.writeFileSync(tmp, JSON.stringify(store, null, 2) + '\n');
71
+ fs.renameSync(tmp, this.storePath);
72
+ }
73
+ // ── Mint (server-enumerates) ──
74
+ mintChallenge(input) {
75
+ const challenge = {
76
+ challengeId: `MAC-${randomBytes(8).toString('hex')}`,
77
+ instanceId: input.instanceId,
78
+ framework: input.framework,
79
+ scope: input.scope,
80
+ contentHash: input.contentHash,
81
+ rowIds: [...input.rowIds],
82
+ ...(input.rule ? { rule: input.rule } : {}),
83
+ createdAt: this.now().toISOString(),
84
+ used: false,
85
+ };
86
+ const store = this.loadStore();
87
+ store.challenges.push(challenge);
88
+ if (store.challenges.length > CHALLENGE_CAP) {
89
+ store.challenges = store.challenges.slice(-CHALLENGE_CAP);
90
+ }
91
+ this.saveStore(store);
92
+ return challenge;
93
+ }
94
+ getChallenge(challengeId) {
95
+ return this.loadStore().challenges.find((c) => c.challengeId === challengeId) ?? null;
96
+ }
97
+ /** Record where the conversational enumeration message landed (reply anchor). */
98
+ attachMessage(challengeId, ref) {
99
+ const store = this.loadStore();
100
+ const c = store.challenges.find((c) => c.challengeId === challengeId);
101
+ if (!c)
102
+ return;
103
+ c.topicId = ref.topicId;
104
+ c.messageId = ref.messageId;
105
+ this.saveStore(store);
106
+ }
107
+ // ── Bind (operator-replies; single-use; hash re-checked at bind time) ──
108
+ bind(input) {
109
+ // Requester ≠ acceptor, structurally (Decision 14): the transition caller
110
+ // holds the Bearer token, so a bearer-principal "acceptance" is
111
+ // self-approval and is refused at this single chokepoint.
112
+ if (input.principal.kind !== 'operator-pin' && input.principal.kind !== 'verified-operator') {
113
+ return { ok: false, reason: 'acceptance principal must be operator-pin or verified-operator (requester ≠ acceptor)' };
114
+ }
115
+ const store = this.loadStore();
116
+ const challenge = store.challenges.find((c) => c.challengeId === input.challengeId);
117
+ if (!challenge)
118
+ return { ok: false, reason: 'unknown challenge' };
119
+ if (challenge.used)
120
+ return { ok: false, reason: 'challenge already used (single-use — replay refused)' };
121
+ if (input.currentContentHash === null || input.currentContentHash !== challenge.contentHash) {
122
+ return { ok: false, reason: 'content hash mismatch — the enumerated content changed since the challenge was minted (accept-then-edit voids it)' };
123
+ }
124
+ challenge.used = true;
125
+ this.saveStore(store);
126
+ const artifact = {
127
+ ts: this.now().toISOString(),
128
+ gate: ACCEPTANCE_GATE,
129
+ instanceId: challenge.instanceId,
130
+ framework: challenge.framework,
131
+ scope: challenge.scope,
132
+ contentHash: challenge.contentHash,
133
+ rowIds: challenge.rowIds,
134
+ ...(challenge.rule ? { rule: challenge.rule } : {}),
135
+ principal: { kind: input.principal.kind, id: input.principal.id },
136
+ challengeRef: challenge.challengeId,
137
+ };
138
+ appendTamperEvidentDecisionRow(this.decisionLogPath, artifact);
139
+ return { ok: true, reason: 'acceptance recorded', artifact };
140
+ }
141
+ // ── Read side (the gate's AcceptanceChecker surface) ──
142
+ /** All integrity-valid acceptance artifacts (invalid-integrity rows are
143
+ * tamper-EVIDENT: skipped, never honored). */
144
+ listAcceptances() {
145
+ return readDecisionRows(this.decisionLogPath).filter((r) => {
146
+ if (r.gate !== ACCEPTANCE_GATE)
147
+ return false;
148
+ return typeof r.integrity === 'string' && r.integrity === rowIntegrityHash(r);
149
+ });
150
+ }
151
+ principalAuthorized(r) {
152
+ const p = r.principal;
153
+ return !!p && (p.kind === 'operator-pin' || p.kind === 'verified-operator');
154
+ }
155
+ hasWholeSetAcceptance(instanceId, contentHash) {
156
+ return this.listAcceptances().some((r) => (r.scope === 'whole-set' || r.scope === 'degraded') &&
157
+ r.instanceId === instanceId &&
158
+ r.contentHash === contentHash &&
159
+ this.principalAuthorized(r));
160
+ }
161
+ rowAcceptanceValid(ref, rowId, resolveRowSetHash) {
162
+ return this.listAcceptances().some((r) => {
163
+ if (r.challengeRef !== ref || r.scope !== 'rows')
164
+ return false;
165
+ if (!Array.isArray(r.rowIds) || !r.rowIds.includes(rowId))
166
+ return false;
167
+ if (!this.principalAuthorized(r))
168
+ return false;
169
+ // Re-derive the joint hash over exactly the ACCEPTED rowIds from the
170
+ // CURRENT matrix (Decision 20): unrelated codemod additions leave it
171
+ // unchanged; any change to an accepted row — or its removal — voids.
172
+ const current = resolveRowSetHash(r.rowIds.filter((x) => typeof x === 'string'));
173
+ return current !== null && current === r.contentHash;
174
+ });
175
+ }
176
+ overrideExcuses(instanceId, rule, rowId, rowHash) {
177
+ return this.listAcceptances().some((r) => r.scope === 'override' &&
178
+ r.instanceId === instanceId &&
179
+ r.rule === rule &&
180
+ Array.isArray(r.rowIds) &&
181
+ r.rowIds.includes(rowId) &&
182
+ r.contentHash === rowHash &&
183
+ this.principalAuthorized(r));
184
+ }
185
+ // ── Conversational arm (mirrors ScopeAccretionRatifier's reply-anchor) ──
186
+ /**
187
+ * Observe one inbound topic message from the LIVE receive path. When the
188
+ * VERIFIED operator reply-anchors an affirmative onto a recorded
189
+ * enumeration message, the corresponding challenge binds — with the current
190
+ * content hash re-resolved so accept-then-edit still voids it. Signal-only:
191
+ * never blocks the receive path; errors are swallowed after logging.
192
+ */
193
+ async observeInbound(evt, deps) {
194
+ try {
195
+ if (typeof evt.replyToMessageId !== 'number')
196
+ return;
197
+ const candidates = this.loadStore().challenges.filter((c) => !c.used && c.topicId === evt.topicId && typeof c.messageId === 'number');
198
+ if (candidates.length === 0)
199
+ return;
200
+ // Know Your Principal: only the VERIFIED operator of this topic binds.
201
+ const operatorUid = deps.getOperatorUid(evt.topicId);
202
+ if (!operatorUid || operatorUid !== String(evt.senderUid))
203
+ return;
204
+ const match = parseRatificationConfirmation({ text: evt.text, replyToMessageId: evt.replyToMessageId }, candidates.map((c) => ({ setHash: c.challengeId, messageId: c.messageId })));
205
+ if (!match.boundSetHash || !match.replyAnchored)
206
+ return;
207
+ const challenge = candidates.find((c) => c.challengeId === match.boundSetHash);
208
+ if (!challenge)
209
+ return;
210
+ const bound = this.bind({
211
+ challengeId: challenge.challengeId,
212
+ principal: {
213
+ kind: 'verified-operator',
214
+ id: createHash('sha256').update(String(evt.senderUid)).digest('hex'),
215
+ },
216
+ currentContentHash: deps.resolveCurrentContentHash(challenge),
217
+ });
218
+ if (bound.ok) {
219
+ await deps.ack?.(evt.topicId, `Stall-coverage matrix acceptance recorded for instance '${challenge.instanceId}' (${challenge.scope}, ${challenge.rowIds.length} row id(s)).`);
220
+ }
221
+ }
222
+ catch (err) {
223
+ this.log?.(`[matrix-acceptance] observe error (ignored): ${err instanceof Error ? err.message : String(err)}`);
224
+ }
225
+ }
226
+ // ── Enumeration rendering (server-authored — the operator approves EXACTLY this) ──
227
+ renderEnumeration(challenge) {
228
+ const lines = [
229
+ `Accept the stall-coverage matrix ${challenge.scope === 'degraded' ? 'DEGRADED verdict (matrix-unverifiable-no-source)' : `enumeration (${challenge.scope})`} for instance '${challenge.instanceId}' (framework ${challenge.framework})?`,
230
+ ...challenge.rowIds.slice(0, 50).map((id) => `- ${id}`),
231
+ ...(challenge.rowIds.length > 50 ? [`…and ${challenge.rowIds.length - 50} more`] : []),
232
+ ...(challenge.rule ? [`Override rule: ${challenge.rule}`] : []),
233
+ '',
234
+ `Content hash: ${challenge.contentHash.slice(0, 16)}… — challenge ${challenge.challengeId} (single-use).`,
235
+ 'Reply to THIS message with yes/approve, or bind via the dashboard-PIN acceptance route.',
236
+ ];
237
+ return lines.join('\n');
238
+ }
239
+ }
240
+ //# sourceMappingURL=ApprenticeshipMatrixAcceptance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprenticeshipMatrixAcceptance.js","sourceRoot":"","sources":["../../src/core/ApprenticeshipMatrixAcceptance.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@
30
30
  * `allow:false`, never "no prior instance → open the gate".
31
31
  */
32
32
  import { type ValidateResult } from './retroHarvestValidator.js';
33
+ import { ApprenticeshipStallGate, type StallGateReport } from './ApprenticeshipStallGate.js';
33
34
  export type InstanceType = 'apprenticeship' | 'mentorship';
34
35
  export type InstanceStatus = 'pending' | 'active' | 'complete' | 'blocked' | 'abandoned';
35
36
  /** A tracked program-need with its target step + a resolvable honoredBy slot (§4). */
@@ -104,6 +105,11 @@ export interface CompletionGateVerdict {
104
105
  allow: boolean;
105
106
  reason: string;
106
107
  missing: string[];
108
+ /** Non-blocking advisories (e.g. the grandfathered stall-matrix warning row
109
+ * on can-complete — stall-coverage spec Decision 10). */
110
+ warnings?: string[];
111
+ /** The stall-coverage matrix gate report (stall-coverage spec §3.2). */
112
+ stallMatrix?: StallGateReport;
107
113
  }
108
114
  /**
109
115
  * Injected dependencies for the gates (§3.3). Truth is re-derived from these
@@ -151,6 +157,12 @@ export interface ApprenticeshipProgramConfig {
151
157
  decisionLogPath?: string;
152
158
  /** Override gate deps (tests). Defaults read the real fs + validator. */
153
159
  deps?: Partial<GateDeps>;
160
+ /**
161
+ * The stall-coverage matrix gate (stall-coverage spec §2.3). `undefined` ⇒
162
+ * construct the default gate (live-read config, worker-bounded validation);
163
+ * explicit `null` disables the branch entirely (tests of the legacy gates).
164
+ */
165
+ stallGate?: ApprenticeshipStallGate | null;
154
166
  }
155
167
  export declare class ApprenticeshipProgram {
156
168
  private storePath;
@@ -160,6 +172,7 @@ export declare class ApprenticeshipProgram {
160
172
  /** True when the on-disk store was unparseable → gates fail closed. */
161
173
  private corrupt;
162
174
  private deps;
175
+ private stallGate;
163
176
  constructor(config: ApprenticeshipProgramConfig);
164
177
  /** Default harvest reader — resolves the confined relative path under projectDir. */
165
178
  private defaultReadHarvest;
@@ -177,6 +190,8 @@ export declare class ApprenticeshipProgram {
177
190
  get(id: string): ApprenticeshipInstance | null;
178
191
  /** True when the on-disk store was present but unparseable (gates fail closed). */
179
192
  isCorrupt(): boolean;
193
+ /** The stall-coverage matrix gate wired into this program (null = disabled). */
194
+ getStallGate(): ApprenticeshipStallGate | null;
180
195
  /**
181
196
  * Create an instance. Charset-clamps id/overseer/mentor/mentee/framework to
182
197
  * ^[a-z0-9-]+$, rejects a duplicate id, computes harvestFrom=mentor /
@@ -200,8 +215,15 @@ export declare class ApprenticeshipProgram {
200
215
  * harvestExists+validates, an instance-scoped ledger count ≥1, detectorAudit
201
216
  * present. A stored requiredArtifacts:true is NEVER treated as evidence of
202
217
  * presence.
218
+ *
219
+ * Async since PR-B: the stall-coverage matrix check (stall-coverage spec
220
+ * §2.3 — "a SINGLE new branch inside the existing completion gate") runs
221
+ * bounded validation + loopback liveness checks. The matrix requirement is
222
+ * derived from the canonical checklist function of (instanceType,
223
+ * createdAt) — deliberately NOT from the per-instance requiredArtifacts
224
+ * flags (spec §2.3's named design change for this artifact class).
203
225
  */
204
- evaluateCompletionGate(instance: ApprenticeshipInstance): CompletionGateVerdict;
226
+ evaluateCompletionGate(instance: ApprenticeshipInstance): Promise<CompletionGateVerdict>;
205
227
  /**
206
228
  * The ONLY way status changes (§3.4). pending→active runs evaluateStartGate
207
229
  * and refuses on !allow; active→complete runs evaluateCompletionGate;
@@ -211,11 +233,11 @@ export declare class ApprenticeshipProgram {
211
233
  * Any transition not in the table is rejected with a reason. Every gate
212
234
  * verdict is appended to the decision audit.
213
235
  */
214
- transition(id: string, to: InstanceStatus): {
236
+ transition(id: string, to: InstanceStatus): Promise<{
215
237
  ok: boolean;
216
238
  reason: string;
217
239
  instance?: ApprenticeshipInstance;
218
- };
240
+ }>;
219
241
  /** Evidence-gated, adjacent independence-ladder transition (§5.1). */
220
242
  transitionRung(id: string, to: number, evidenceRef: string): {
221
243
  ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ApprenticeshipProgram.d.ts","sourceRoot":"","sources":["../../src/core/ApprenticeshipProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApprenticeshipProgram.d.ts","sourceRoot":"","sources":["../../src/core/ApprenticeshipProgram.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@
32
32
  import fs from 'node:fs';
33
33
  import path from 'node:path';
34
34
  import { validateRetroHarvest, parseArtifact, safeArtifactPath, } from './retroHarvestValidator.js';
35
+ import { ApprenticeshipStallGate, appendApprenticeshipDecisionRow, } from './ApprenticeshipStallGate.js';
35
36
  /** The typed no-op overseer stub (§2). */
36
37
  export const noopApprenticeshipOverseer = {
37
38
  computeDifferential(_instance) {
@@ -56,11 +57,20 @@ export class ApprenticeshipProgram {
56
57
  /** True when the on-disk store was unparseable → gates fail closed. */
57
58
  corrupt = false;
58
59
  deps;
60
+ stallGate;
59
61
  constructor(config) {
60
62
  this.storePath = path.join(config.stateDir, 'apprenticeship', 'instances.json');
61
63
  this.decisionLogPath =
62
64
  config.decisionLogPath ?? path.join(config.stateDir, 'logs', 'apprenticeship-decisions.jsonl');
63
65
  this.projectDir = config.projectDir;
66
+ this.stallGate =
67
+ config.stallGate === undefined
68
+ ? new ApprenticeshipStallGate({
69
+ projectDir: config.projectDir,
70
+ stateDir: config.stateDir,
71
+ decisionLogPath: this.decisionLogPath,
72
+ })
73
+ : config.stallGate;
64
74
  this.deps = {
65
75
  readHarvest: config.deps?.readHarvest ?? ((rel) => this.defaultReadHarvest(rel)),
66
76
  validate: config.deps?.validate ?? validateRetroHarvest,
@@ -193,6 +203,10 @@ export class ApprenticeshipProgram {
193
203
  isCorrupt() {
194
204
  return this.corrupt;
195
205
  }
206
+ /** The stall-coverage matrix gate wired into this program (null = disabled). */
207
+ getStallGate() {
208
+ return this.stallGate;
209
+ }
196
210
  // ── Create ─────────────────────────────────────────────────────────
197
211
  /**
198
212
  * Create an instance. Charset-clamps id/overseer/mentor/mentee/framework to
@@ -354,8 +368,15 @@ export class ApprenticeshipProgram {
354
368
  * harvestExists+validates, an instance-scoped ledger count ≥1, detectorAudit
355
369
  * present. A stored requiredArtifacts:true is NEVER treated as evidence of
356
370
  * presence.
371
+ *
372
+ * Async since PR-B: the stall-coverage matrix check (stall-coverage spec
373
+ * §2.3 — "a SINGLE new branch inside the existing completion gate") runs
374
+ * bounded validation + loopback liveness checks. The matrix requirement is
375
+ * derived from the canonical checklist function of (instanceType,
376
+ * createdAt) — deliberately NOT from the per-instance requiredArtifacts
377
+ * flags (spec §2.3's named design change for this artifact class).
357
378
  */
358
- evaluateCompletionGate(instance) {
379
+ async evaluateCompletionGate(instance) {
359
380
  if (this.corrupt) {
360
381
  return { allow: false, reason: 'instance store is corrupt — fail closed', missing: ['store-corrupt'] };
361
382
  }
@@ -388,14 +409,36 @@ export class ApprenticeshipProgram {
388
409
  if (!this.deps.detectorAuditExists(instance))
389
410
  missing.push('detectorAudit:absent');
390
411
  }
412
+ // ── Stall-coverage matrix branch (stall-coverage spec §2.3 full gate) ──
413
+ let warnings;
414
+ let stallMatrix;
415
+ let stallReason = null;
416
+ if (this.stallGate) {
417
+ const verdict = await this.stallGate.evaluateForTransition(instance, 'full');
418
+ stallMatrix = verdict.report;
419
+ if (verdict.report.warnings.length > 0)
420
+ warnings = [...verdict.report.warnings];
421
+ if (!verdict.allow) {
422
+ missing.push(`stallMatrix:${verdict.report.verdict}`);
423
+ stallReason = verdict.reason; // class ids + rule names only (Decision 16)
424
+ }
425
+ }
391
426
  if (missing.length > 0) {
392
427
  return {
393
428
  allow: false,
394
- reason: `completion blocked — missing live artifacts: ${missing.join(', ')}`,
429
+ reason: `completion blocked — missing live artifacts: ${missing.join(', ')}${stallReason ? ` (stall-coverage: ${stallReason})` : ''}`,
395
430
  missing,
431
+ ...(warnings ? { warnings } : {}),
432
+ ...(stallMatrix ? { stallMatrix } : {}),
396
433
  };
397
434
  }
398
- return { allow: true, reason: 'all declared-required artifacts verified present from live state', missing: [] };
435
+ return {
436
+ allow: true,
437
+ reason: 'all declared-required artifacts verified present from live state',
438
+ missing: [],
439
+ ...(warnings ? { warnings } : {}),
440
+ ...(stallMatrix ? { stallMatrix } : {}),
441
+ };
399
442
  }
400
443
  // ── Status transitions (the gates are not advisory) ─────────────────
401
444
  /**
@@ -407,7 +450,7 @@ export class ApprenticeshipProgram {
407
450
  * Any transition not in the table is rejected with a reason. Every gate
408
451
  * verdict is appended to the decision audit.
409
452
  */
410
- transition(id, to) {
453
+ async transition(id, to) {
411
454
  if (this.corrupt) {
412
455
  return { ok: false, reason: 'instance store is corrupt — fail closed' };
413
456
  }
@@ -427,6 +470,16 @@ export class ApprenticeshipProgram {
427
470
  this.recordDecision({ gate: 'start', instanceId: id, allow: verdict.allow, reason: verdict.reason });
428
471
  if (!verdict.allow)
429
472
  return { ok: false, reason: `start gate refused: ${verdict.reason}` };
473
+ // Sibling branch (stall-coverage spec §2.3): a PROVISIONAL matrix must
474
+ // exist before live/on-task operation — hermetic depth only. dryRun
475
+ // suppresses identically to the completion arm (would-refuse logged by
476
+ // the gate itself).
477
+ if (this.stallGate) {
478
+ const matrix = await this.stallGate.evaluateForTransition(instance, 'provisional');
479
+ if (!matrix.allow) {
480
+ return { ok: false, reason: `provisional stall-coverage matrix gate refused: ${matrix.reason}` };
481
+ }
482
+ }
430
483
  }
431
484
  if (instance.status === 'blocked' && to === 'active') {
432
485
  // Re-gate on resume from blocked.
@@ -436,7 +489,7 @@ export class ApprenticeshipProgram {
436
489
  return { ok: false, reason: `start gate refused (re-gate): ${verdict.reason}` };
437
490
  }
438
491
  if (instance.status === 'active' && to === 'complete') {
439
- const verdict = this.evaluateCompletionGate(instance);
492
+ const verdict = await this.evaluateCompletionGate(instance);
440
493
  this.recordDecision({
441
494
  gate: 'completion',
442
495
  instanceId: id,
@@ -488,26 +541,20 @@ export class ApprenticeshipProgram {
488
541
  }
489
542
  // ── Decision audit (§3.6) ───────────────────────────────────────────
490
543
  recordDecision(entry) {
491
- try {
492
- const dir = path.dirname(this.decisionLogPath);
493
- fs.mkdirSync(dir, { recursive: true });
494
- const line = JSON.stringify({
495
- ts: new Date().toISOString(),
496
- gate: entry.gate,
497
- instanceId: entry.instanceId,
498
- allow: entry.allow,
499
- reason: entry.reason,
500
- ...(entry.missing && entry.missing.length ? { missing: entry.missing } : {}),
501
- ...(entry.fromRung !== undefined ? { fromRung: entry.fromRung } : {}),
502
- ...(entry.toRung !== undefined ? { toRung: entry.toRung } : {}),
503
- ...(entry.evidenceRef ? { evidenceRef: entry.evidenceRef } : {}),
504
- }) + '\n';
505
- fs.appendFileSync(this.decisionLogPath, line);
506
- }
507
- catch {
508
- // @silent-fallback-ok — the audit is observability; a write failure must
509
- // not block the (already-decided) transition.
510
- }
544
+ // Funnel through the shared recordDecision primitive (PR-B): the
545
+ // stall-matrix gate, acceptance artifacts, and install-provenance rows
546
+ // append through the same helper, so the audit has ONE write path.
547
+ appendApprenticeshipDecisionRow(this.decisionLogPath, {
548
+ ts: new Date().toISOString(),
549
+ gate: entry.gate,
550
+ instanceId: entry.instanceId,
551
+ allow: entry.allow,
552
+ reason: entry.reason,
553
+ ...(entry.missing && entry.missing.length ? { missing: entry.missing } : {}),
554
+ ...(entry.fromRung !== undefined ? { fromRung: entry.fromRung } : {}),
555
+ ...(entry.toRung !== undefined ? { toRung: entry.toRung } : {}),
556
+ ...(entry.evidenceRef ? { evidenceRef: entry.evidenceRef } : {}),
557
+ });
511
558
  }
512
559
  }
513
560
  //# sourceMappingURL=ApprenticeshipProgram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApprenticeshipProgram.js","sourceRoot":"","sources":["../../src/core/ApprenticeshipProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApprenticeshipProgram.js","sourceRoot":"","sources":["../../src/core/ApprenticeshipProgram.ts"],"names":[],"mappings":"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"}