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,297 @@
1
+ /**
2
+ * ApprenticeshipStallGate — the RUNTIME-GATE callsite of the framework
3
+ * stall-coverage matrix standard (PR-B).
4
+ *
5
+ * Spec: docs/specs/framework-stall-coverage-matrix.md (§2.3, §3.2 callsite 2,
6
+ * §3.4, Frontloaded Decisions 6, 10, 11, 16, 17, 21).
7
+ *
8
+ * ONE validator, TWO callsites: the hermetic half lives in
9
+ * stallCoverageValidator.ts (CI ratchet, PR-A). THIS module wires that same
10
+ * validator into the apprenticeship lifecycle transitions:
11
+ *
12
+ * - pending→active → PROVISIONAL check (hermetic depth ONLY — schema,
13
+ * complete enumeration, token legality, ref format; §2.3).
14
+ * - active→complete → FULL check: hermetic validation PLUS the non-hermetic
15
+ * checks CI cannot do — closePath LIVENESS against the commitments ledger
16
+ * and guardKey/posture cross-check against the live /guards inventory,
17
+ * both via loopback HTTP (Frontloaded Decision 17), plus the §2.2
18
+ * acceptance-authority requirement (whole-set operator sign-off).
19
+ *
20
+ * Bounded execution (Decision 6 / instar#1069): the full-matrix hermetic
21
+ * validation runs in a worker thread (apprenticeshipStallGate.worker.ts) with
22
+ * a 60s timeout; a timeout fails CLOSED for the transition with a reason that
23
+ * DISTINGUISHES "validator timed out (retry)" from "matrix invalid". The
24
+ * validation is single-read: the worker returns the validator's contentHash,
25
+ * and the decision record additionally carries the checkout HEAD SHA + dirty
26
+ * flag (no validate-then-decide TOCTOU).
27
+ *
28
+ * Refusal hygiene (Decision 16): every refusal reason names class id + rule
29
+ * name only — rejected raw matrix field content is NEVER echoed into 409
30
+ * bodies, audit rows, or reports.
31
+ *
32
+ * Rollout (§3.4 / Decision 11): gated ENTIRELY by
33
+ * `apprenticeship.stallCoverageGate` in `.instar/config.json`, read LIVE at
34
+ * the gate callsite (no restart; transitions are rare and human-paced). The
35
+ * default is inline in code — absence ⇒ {enabled: true, dryRun: true}; a
36
+ * malformed block resolves to the SAFE default (dry-run) with one loud log
37
+ * line. Under dryRun BOTH presence and validity refusals are suppressed and
38
+ * only a would-refuse verdict is logged to the decision audit.
39
+ */
40
+ import { type StallMatrixIssue, type StallMatrixResult, type StallMatrixRow } from './stallCoverageValidator.js';
41
+ /** Minor version from which the matrix is REQUIRED for pre-ship instances. */
42
+ export declare const STALL_MATRIX_REQUIRED_SINCE = "1.4.0";
43
+ /** ISO date the gate wiring ships (PR-B commit date). */
44
+ export declare const STALL_MATRIX_SHIP_DATE = "2026-07-18";
45
+ /**
46
+ * Classes with a named production incident in spec §1's table — these can
47
+ * never pass as declared-gap without explicit recorded acceptance (§2.2).
48
+ */
49
+ export declare const INCIDENT_NAMED_STALL_CLASSES: readonly string[];
50
+ /** True when `current`'s major.minor sorts below the required-since minor. */
51
+ export declare function versionBelowRequiredMinor(current: string, requiredSince?: string): boolean;
52
+ export type StallMatrixRequirement = 'required' | 'grandfathered-warning';
53
+ /**
54
+ * The canonical checklist function of (instanceType, createdAt) — Decision 10.
55
+ * Post-ship framework-onboarding instances (both instance types onboard a
56
+ * framework) read the requirement from HERE, never from the per-instance
57
+ * immutable requiredArtifacts flags. Pre-ship instances are grandfathered
58
+ * with a warning while the running version is below the required-since minor.
59
+ */
60
+ export declare function stallMatrixRequirement(_instanceType: string, createdAt: string, opts?: {
61
+ currentVersion?: string;
62
+ shipDate?: string;
63
+ requiredSince?: string;
64
+ }): StallMatrixRequirement;
65
+ export interface StallGateConfig {
66
+ enabled: boolean;
67
+ dryRun: boolean;
68
+ }
69
+ /** The inline code default — absence ⇒ enabled, dry-run (§3.4). */
70
+ export declare const STALL_GATE_DEFAULT: StallGateConfig;
71
+ /**
72
+ * Resolve the `apprenticeship.stallCoverageGate` block. A malformed block
73
+ * resolves to the SAFE default (dry-run) with one loud log line — mirroring
74
+ * MessagingToneGate.getConfig()'s never-throw shape, plus the log the spec
75
+ * requires.
76
+ */
77
+ export declare function resolveStallGateConfig(raw: unknown, log?: (msg: string) => void): StallGateConfig;
78
+ /**
79
+ * The recordDecision primitive: one JSON line appended to the apprenticeship
80
+ * decision audit. Never throws — the audit is observability; a write failure
81
+ * must not block an already-decided transition.
82
+ */
83
+ export declare function appendApprenticeshipDecisionRow(logPath: string, row: Record<string, unknown>): void;
84
+ /** sha256 over the canonical (sorted-key) serialization of a row sans `integrity`. */
85
+ export declare function rowIntegrityHash(row: Record<string, unknown>): string;
86
+ /** Append a row carrying a self-integrity hash (tamper-EVIDENT, not tamper-proof). */
87
+ export declare function appendTamperEvidentDecisionRow(logPath: string, row: Record<string, unknown>): void;
88
+ /** Read the decision log's parsed rows (bounded; tail-read past the cap). */
89
+ export declare function readDecisionRows(logPath: string): Array<Record<string, unknown>>;
90
+ export type InstallClass = 'source-carrying' | 'fleet';
91
+ export interface InstallProvenance {
92
+ installClass: InstallClass;
93
+ signals: {
94
+ developmentAgent: boolean;
95
+ frameworksDir: boolean;
96
+ specFile: boolean;
97
+ };
98
+ }
99
+ /**
100
+ * Classify the install at init time from the same signals the dev-agent gate
101
+ * uses (config.developmentAgent) plus presence of the analyzable tree —
102
+ * mirroring DoorwayRegistryReader's no-manifest pattern for source-absence
103
+ * (a pure npm-package install ships no docs/).
104
+ */
105
+ export declare function deriveInstallProvenance(projectDir: string, config?: {
106
+ developmentAgent?: boolean;
107
+ }): InstallProvenance;
108
+ export declare function hasInstallProvenanceRecord(logPath: string): boolean;
109
+ /**
110
+ * Record the install-provenance row ONCE (presence-scan idempotent) — the
111
+ * init-time derivation (§3.2) and the PostUpdateMigrator backfill both funnel
112
+ * through here. Tamper-evident append via the recordDecision primitive.
113
+ */
114
+ export declare function recordInstallProvenanceIfAbsent(projectDir: string, stateDir: string): 'recorded' | 'present' | 'error';
115
+ export type ProvenanceRead = {
116
+ ok: true;
117
+ installClass: InstallClass;
118
+ } | {
119
+ ok: false;
120
+ error: 'missing' | 'invalid';
121
+ };
122
+ /** Read the LATEST install-provenance row; verify its integrity hash. */
123
+ export declare function readInstallProvenance(logPath: string): ProvenanceRead;
124
+ export interface StallGateValidationInput {
125
+ repoRoot: string;
126
+ framework: string;
127
+ nowIso: string;
128
+ }
129
+ export interface StallGateValidationOutput {
130
+ fileMissing: boolean;
131
+ result?: StallMatrixResult;
132
+ /** Authored rows (known fields only, byte-capped) — consumed for the
133
+ * non-hermetic checks + canonical row hashing, never echoed into errors. */
134
+ rawRows?: StallMatrixRow[];
135
+ }
136
+ /**
137
+ * The pure validation unit: derives the matrix path EXCLUSIVELY from the
138
+ * registry's charset-clamped framework field, realpath-jailed to
139
+ * docs/frameworks/ (§3.2), runs the REAL hermetic validator (PR-A), and
140
+ * re-parses the front-matter for the raw row fields the non-hermetic checks
141
+ * need. Runs inside the worker thread; also callable in-process (the fallback
142
+ * when a worker cannot start, e.g. under vitest where the compiled worker
143
+ * file does not exist — behavior parity, never a silent skip).
144
+ */
145
+ export declare function runStallGateValidation(input: StallGateValidationInput): StallGateValidationOutput;
146
+ export type StallGateVerdictKind = 'skipped-disabled' | 'grandfathered-warning' | 'valid' | 'invalid' | 'would-refuse' | 'matrix-unverifiable-no-source' | 'provenance-record-missing' | 'provenance-record-invalid' | 'source-tree-unanalyzable' | 'validator-timeout' | 'validator-error' | 'ledger-unreachable' | 'acceptance-missing';
147
+ export interface StallGateGuardPair {
148
+ classId: string;
149
+ guardKey: string;
150
+ detector?: string;
151
+ effective: string | null;
152
+ check: 'ok' | 'contradicts' | 'vacuous-with-reason' | 'missing';
153
+ }
154
+ export interface StallGateReport {
155
+ phase: 'provisional' | 'full';
156
+ framework: string;
157
+ requirement: StallMatrixRequirement;
158
+ installClass?: InstallClass;
159
+ verdict: StallGateVerdictKind;
160
+ contentHash?: string;
161
+ headSha?: string | null;
162
+ dirty?: boolean | null;
163
+ /** class id + rule name ONLY (Decision 16). */
164
+ issues: StallMatrixIssue[];
165
+ /** Dead-closePath / liveness flags (rule names + class ids + the clamped ref). */
166
+ flaggedRows: Array<{
167
+ classId: string;
168
+ rule: string;
169
+ ref?: string;
170
+ }>;
171
+ guardPairs: StallGateGuardPair[];
172
+ /** Enumerations for recorded acceptance (spec §3.2 — covered rows included:
173
+ * the path of least scrutiny must not be the strongest claim). */
174
+ enumerated: {
175
+ covered: Array<{
176
+ classId: string;
177
+ evidence?: string;
178
+ }>;
179
+ coveredDark: string[];
180
+ declaredGaps: string[];
181
+ notApplicable: string[];
182
+ };
183
+ acceptance: {
184
+ wholeSetValid: boolean;
185
+ checkedRefs: number;
186
+ invalidRefs: number;
187
+ };
188
+ warnings: string[];
189
+ }
190
+ export interface StallGateVerdict {
191
+ allow: boolean;
192
+ /** Named reason (class ids + rule names only). */
193
+ reason: string;
194
+ /** True when a refusal was suppressed by dryRun (would-refuse logged). */
195
+ dryRunSuppressed: boolean;
196
+ report: StallGateReport;
197
+ }
198
+ /** Structural slice of an ApprenticeshipInstance the gate consumes. */
199
+ export interface StallGateInstanceRef {
200
+ id: string;
201
+ instanceType: string;
202
+ framework: string;
203
+ createdAt: string;
204
+ }
205
+ export interface AcceptanceChecker {
206
+ /** A valid whole-set acceptance for this instance bound to EXACTLY this
207
+ * content hash, recorded by a principal distinct from the transition
208
+ * caller (never a bearer principal). */
209
+ hasWholeSetAcceptance(instanceId: string, contentHash: string): boolean;
210
+ /** Row-scoped acceptanceRef authenticity: the ref resolves to an artifact
211
+ * covering this rowId whose bound hash matches the CURRENT joint canonical
212
+ * hash of ALL the rowIds the artifact enumerates (canonicalRowSetHash) —
213
+ * the caller resolves that set against the live matrix (null = a named row
214
+ * no longer exists ⇒ invalid). */
215
+ rowAcceptanceValid(ref: string, rowId: string, resolveRowSetHash: (rowIds: string[]) => string | null): boolean;
216
+ /** Per-instance recorded override: excuses (rule, rowId) while the row's
217
+ * canonical content hash is unchanged (§3.4 rollback relief). */
218
+ overrideExcuses(instanceId: string, rule: string, rowId: string, rowHash: string): boolean;
219
+ }
220
+ export interface ApprenticeshipStallGateDeps {
221
+ /** Project root — matrices + git checkout live here. */
222
+ projectDir: string;
223
+ /** Agent state dir (`.instar`) — config.json + the decision log live here. */
224
+ stateDir: string;
225
+ /** Decision-audit path (default `<stateDir>/logs/apprenticeship-decisions.jsonl`). */
226
+ decisionLogPath?: string;
227
+ /** Loopback HTTP target for the non-hermetic checks (Decision 17). Absent ⇒
228
+ * the non-hermetic checks refuse `ledger-unreachable (retry)` — named,
229
+ * never silently skipped. */
230
+ loopback?: {
231
+ port: number;
232
+ authToken?: string;
233
+ } | null;
234
+ /** Acceptance machinery (§2.2). Absent ⇒ acceptance cannot be verified ⇒
235
+ * the full gate refuses `acceptance-missing`. */
236
+ acceptance?: AcceptanceChecker | null;
237
+ /** Injectable bounded validation runner (tests). Default: worker thread
238
+ * with in-process fallback on worker-start failure. */
239
+ runValidation?: (input: StallGateValidationInput) => Promise<{
240
+ ok: true;
241
+ output: StallGateValidationOutput;
242
+ } | {
243
+ ok: false;
244
+ timedOut?: boolean;
245
+ error?: string;
246
+ }>;
247
+ fetchImpl?: typeof fetch;
248
+ getCurrentVersion?: () => string;
249
+ now?: () => Date;
250
+ log?: (msg: string) => void;
251
+ /** Worker timeout (default 60_000ms — Decision 6). */
252
+ validatorTimeoutMs?: number;
253
+ }
254
+ export declare class ApprenticeshipStallGate {
255
+ private readonly d;
256
+ private readonly decisionLogPath;
257
+ constructor(deps: ApprenticeshipStallGateDeps);
258
+ /** Live config read at the callsite — no restart (§3.4). */
259
+ getConfig(): StallGateConfig;
260
+ /**
261
+ * Evaluate the matrix gate for a lifecycle transition. NEVER throws — every
262
+ * failure mode maps to a named verdict (fail closed under enforce, logged
263
+ * would-refuse under dryRun).
264
+ */
265
+ evaluateForTransition(instance: StallGateInstanceRef, phase: 'provisional' | 'full'): Promise<StallGateVerdict>;
266
+ /** Returns null when the gate passes, else the named refusal reason. */
267
+ private evaluateRequired;
268
+ /** closePath liveness + guardKey/posture cross-check. Null = pass. */
269
+ private nonHermeticChecks;
270
+ private runValidationBounded;
271
+ private runInProcess;
272
+ private gitState;
273
+ private loopbackJson;
274
+ private postAggregatedAttention;
275
+ private recordGateDecision;
276
+ }
277
+ /**
278
+ * Canonical serialization of one authored matrix row: known fields only,
279
+ * sorted keys, stable JSON. Row-scoped acceptances/overrides hash EXACTLY
280
+ * this — a codemod adding UNRELATED rows does not void them; ANY change to
281
+ * the row itself does.
282
+ */
283
+ export declare function canonicalRowSerialization(row: StallMatrixRow): string;
284
+ export declare function canonicalRowHash(row: StallMatrixRow): string;
285
+ /**
286
+ * Joint hash over a SET of accepted rows (rows-scope challenges, Decision 20):
287
+ * sorted by rowId, each entry [rowId, canonical serialization]. Adding
288
+ * UNRELATED rows to the matrix leaves this hash untouched; ANY change to an
289
+ * accepted row changes it.
290
+ */
291
+ export declare function canonicalRowSetHash(entries: Array<{
292
+ rowId: string;
293
+ row: StallMatrixRow;
294
+ }>): string;
295
+ /** The bound content for a fleet-install (no-source) whole-set acceptance. */
296
+ export declare function degradedAcceptanceHash(instanceId: string, framework: string): string;
297
+ //# sourceMappingURL=ApprenticeshipStallGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApprenticeshipStallGate.d.ts","sourceRoot":"","sources":["../../src/core/ApprenticeshipStallGate.ts"],"names":[],"mappings":"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"}