@jeger-ai/opengantry 2.2.0 → 2.2.2

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 (54) hide show
  1. package/README.md +9 -4
  2. package/dist/cli/lib/context-feed-remediation.d.ts +2 -2
  3. package/dist/cli/lib/context-feed-remediation.d.ts.map +1 -1
  4. package/dist/cli/lib/context-feed-remediation.js +13 -60
  5. package/dist/cli/lib/context-feed-remediation.js.map +1 -1
  6. package/dist/cli/lib/context-feed-store.d.ts +2 -0
  7. package/dist/cli/lib/context-feed-store.d.ts.map +1 -1
  8. package/dist/cli/lib/context-feed-store.js +8 -6
  9. package/dist/cli/lib/context-feed-store.js.map +1 -1
  10. package/dist/cli/lib/verify-failure-format.d.ts +2 -27
  11. package/dist/cli/lib/verify-failure-format.d.ts.map +1 -1
  12. package/dist/cli/lib/verify-failure-format.js +3 -65
  13. package/dist/cli/lib/verify-failure-format.js.map +1 -1
  14. package/dist/cli/lib/verify-failure-normalize-phases.d.ts +8 -0
  15. package/dist/cli/lib/verify-failure-normalize-phases.d.ts.map +1 -0
  16. package/dist/cli/lib/verify-failure-normalize-phases.js +70 -0
  17. package/dist/cli/lib/verify-failure-normalize-phases.js.map +1 -0
  18. package/dist/cli/lib/verify-failure-normalize-types.d.ts +32 -0
  19. package/dist/cli/lib/verify-failure-normalize-types.d.ts.map +1 -0
  20. package/dist/cli/lib/verify-failure-normalize-types.js +2 -0
  21. package/dist/cli/lib/verify-failure-normalize-types.js.map +1 -0
  22. package/dist/cli/lib/verify-failure-normalize.d.ts +28 -0
  23. package/dist/cli/lib/verify-failure-normalize.d.ts.map +1 -0
  24. package/dist/cli/lib/verify-failure-normalize.js +146 -0
  25. package/dist/cli/lib/verify-failure-normalize.js.map +1 -0
  26. package/dist/cli/lib/verify-failure-presentation-types.d.ts +29 -0
  27. package/dist/cli/lib/verify-failure-presentation-types.d.ts.map +1 -0
  28. package/dist/cli/lib/verify-failure-presentation-types.js +2 -0
  29. package/dist/cli/lib/verify-failure-presentation-types.js.map +1 -0
  30. package/dist/cli/lib/verify-payload-types.d.ts +33 -0
  31. package/dist/cli/lib/verify-payload-types.d.ts.map +1 -0
  32. package/dist/cli/lib/verify-payload-types.js +2 -0
  33. package/dist/cli/lib/verify-payload-types.js.map +1 -0
  34. package/dist/cli/lib/verify-payload.d.ts +2 -32
  35. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  36. package/dist/cli/lib/verify-payload.js +14 -65
  37. package/dist/cli/lib/verify-payload.js.map +1 -1
  38. package/dist/cli/lib/verify-presentation.d.ts +13 -6
  39. package/dist/cli/lib/verify-presentation.d.ts.map +1 -1
  40. package/dist/cli/lib/verify-presentation.js +6 -3
  41. package/dist/cli/lib/verify-presentation.js.map +1 -1
  42. package/dist/cli/lib/verify-presenters.d.ts.map +1 -1
  43. package/dist/cli/lib/verify-presenters.js +7 -6
  44. package/dist/cli/lib/verify-presenters.js.map +1 -1
  45. package/dist/cli/lib/verify-remediation.d.ts +1 -1
  46. package/dist/cli/lib/verify-remediation.d.ts.map +1 -1
  47. package/dist/cli/lib/version.gen.d.ts +1 -1
  48. package/dist/cli/lib/version.gen.js +1 -1
  49. package/package.json +3 -2
  50. package/templates/integrations/compatibility.json +1 -1
  51. package/dist/cli/lib/verify-present.d.ts +0 -7
  52. package/dist/cli/lib/verify-present.d.ts.map +0 -1
  53. package/dist/cli/lib/verify-present.js +0 -4
  54. package/dist/cli/lib/verify-present.js.map +0 -1
package/README.md CHANGED
@@ -35,11 +35,14 @@ npx @jeger-ai/opengantry init --tutorial
35
35
 
36
36
  Developing this repository from source: `npm ci && npm run build` — see [gapman CLI](#gapman-cli) and [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
37
37
 
38
+ *Want to see the ROI? Run `npm run examples:benchmark` to compare an orchestrator specimen (improvised agent glue) against OpenGantry's TMVC protocol.* (Requires clone + `npm run build` — see [`docs/ADOPTION.md`](docs/ADOPTION.md).)
39
+
38
40
  ## Documentation map (start here)
39
41
 
40
42
  | Goal | Read first |
41
43
  |------|------------|
42
- | **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
44
+ | **Adopt in your repo (5 min)** | This README → [`docs/ADOPTION.md`](docs/ADOPTION.md) → [`docs/KATA.md`](docs/KATA.md) |
45
+ | **See benchmark ROI (3 min)** | [`examples/benchmark-agent/`](examples/benchmark-agent/) → [`docs/ADOPTION.md`](docs/ADOPTION.md) |
43
46
  | **Wire IDE agents** | [`docs/INTEGRATIONS.md`](docs/INTEGRATIONS.md) |
44
47
  | **Contribute / dogfood** | [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) |
45
48
  | **Governance law + workflow** | [`.gitagent/README.md`](.gitagent/README.md) · [`.gitagent/teacher/RULES.md`](.gitagent/teacher/RULES.md) |
@@ -57,14 +60,16 @@ Developing this repository from source: `npm ci && npm run build` — see [gapma
57
60
  | **Regulated / ISO-aligned workflows** | SOD, mission authorization, and Git-native trace — see [`docs/COMPLIANCE-ISO.md`](docs/COMPLIANCE-ISO.md) (27001 change control, 42001 AI governance) |
58
61
  | **Faster recovery from failure** | Stable `GXT_*` error codes, `gapman verify --fix`, role output via `--audience worker\|teacher\|verifier` |
59
62
 
60
- **Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.0** — diagnostic context feed, meta-governance audit, ephemeral virtualization (`virtual_capture`), adoption UX. Current npm publish: **v2.2.0**. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
63
+ **Protocol maturity:** substrate law **v0.5.0**; **`gapman` v2.2.2** — Time-to-Scaffold public benchmark, measured LOC matrix. Current npm publish: **v2.2.2**. See [.gitagent/teacher/RUNTIME.md](.gitagent/teacher/RUNTIME.md).
61
64
 
62
65
  ## Release timeline (latest first)
63
66
 
64
- Current npm release in this repository: **`gapman` v2.2.0**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
67
+ Current npm release in this repository: **`gapman` v2.2.2**. Use [`docs/ADOPTION.md`](docs/ADOPTION.md) for the ordered runbook.
65
68
 
66
69
  | Release | Highlights |
67
70
  |---------|------------|
71
+ | **v2.2.2** | Time-to-Scaffold benchmark — `npm run examples:benchmark`, measured LOC matrix, adoption discovery ([#79](https://github.com/jeger-ai/opengantry/issues/79)) |
72
+ | **v2.2.1** | Thermo remediation — unified `NormalizedVerifyFailure` contract across JSON/human/context-feed; race-safe remediation snapshot writes; canonical `verify-presentation` entrypoint |
68
73
  | **v2.2.0** | `gapman context-feed`, `gapman audit-rigor`, `virtual_capture` ephemeral virtualization ([#68](https://github.com/jeger-ai/opengantry/issues/68)), product positioning, docs quality ([#66](https://github.com/jeger-ai/opengantry/issues/66)–[#69](https://github.com/jeger-ai/opengantry/issues/69), [#76](https://github.com/jeger-ai/opengantry/issues/76)) |
69
74
  | **v2.1.0** | Import-layer Code Surgeon (`check-import-layers.mjs --json`, AST quarantine, `GXT_IMPORT_LAYER_VIOLATION`); workspace-resolved optional TypeScript for surgeons |
70
75
  | **v2.0.0** | `gapman scan` + KPI gate, `register`, `check-imports`, `perimeter`; BYO `llm_verifiers`; KPI stale binding on `--pre-push`/`--ci` |
@@ -363,7 +368,7 @@ GXT deliberately trades "always-on improvisation" for a **narrow, inspectable en
363
368
 
364
369
  ## Relationship to this repository
365
370
 
366
- **jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.0** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
371
+ **jeger-ai/opengantry** is the **canonical reference tree** for **GXT** (manifest `schema_version` **v0.5.0** law + **`gapman` v2.2.2** CLI). Install the CLI with `npm install -g @jeger-ai/opengantry`, or fork this repo and run `gapman init` in your project.
367
372
 
368
373
  ## Security
369
374
 
@@ -1,8 +1,8 @@
1
- import type { VerifyFailedPayload } from "./verify-payload.js";
1
+ import type { VerifyFailedPayload } from "./verify-payload-types.js";
2
2
  import type { ParsedMission } from "./types.js";
3
3
  import type { VerifyPhaseFailure } from "./verify-engine.js";
4
- import { readRemediationSnapshot, type RemediationSnapshot } from "./context-feed-store.js";
5
4
  import type { VerifyOptions } from "./verify-engine.js";
5
+ import { readRemediationSnapshot, type RemediationSnapshot } from "./context-feed-store.js";
6
6
  export declare function remediationFromFailedPayload(root: string, mission: ParsedMission | null, missionArg: string | undefined, payload: VerifyFailedPayload): RemediationSnapshot;
7
7
  export declare function remediationFromPhaseFailure(root: string, mission: ParsedMission, missionArg: string, options: VerifyOptions, failure: VerifyPhaseFailure): RemediationSnapshot;
8
8
  export declare function persistRemediationSnapshot(root: string, snapshot: RemediationSnapshot): void;
@@ -1 +1 @@
1
- {"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EACL,uBAAuB,EAEvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAuBrB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CA4CrB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAM5F;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"context-feed-remediation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EACL,uBAAuB,EAEvB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAOjC,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAUrB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAUrB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAM5F;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,GAAG,IAAI,EAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,kBAAkB,GAC1B,IAAI,CAKN;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1,74 +1,27 @@
1
1
  import { toPosixRel } from "./cli-io.js";
2
2
  import { readRemediationSnapshot, writeRemediationSnapshot, } from "./context-feed-store.js";
3
- import { verifyFailurePresentation } from "./verify-failure-format.js";
3
+ import { normalizeFromFailedPayload, normalizeVerifyPhaseFailure, toRemediationSnapshot, } from "./verify-failure-normalize.js";
4
4
  export function remediationFromFailedPayload(root, mission, missionArg, payload) {
5
- return {
6
- schema_version: 1,
7
- written_at: new Date().toISOString(),
8
- source: "gapman verify",
9
- phase: payload.phase,
10
- error_code: payload.error_code,
11
- message: payload.message,
12
- ...(mission ? { mission_file_path: toPosixRel(root, mission.rawPath) } : {}),
13
- ...(mission?.msnId ? { msn_id: mission.msnId } : {}),
14
- ...(missionArg && !mission ? { mission_file_path: missionArg } : {}),
15
- fix_hints: payload.fix_hints,
16
- next_actions: payload.next_actions,
17
- ...(payload.failures ? { failures: payload.failures } : {}),
18
- ...(payload.stdout !== undefined || payload.stderr !== undefined
19
- ? {
20
- gate: {
21
- ...(payload.stdout !== undefined ? { stdout: payload.stdout } : {}),
22
- ...(payload.stderr !== undefined ? { stderr: payload.stderr } : {}),
23
- },
24
- }
25
- : {}),
26
- };
5
+ const meta = mission
6
+ ? {
7
+ mission_file_path: toPosixRel(root, mission.rawPath),
8
+ ...(mission.msnId ? { msn_id: mission.msnId } : {}),
9
+ }
10
+ : missionArg
11
+ ? { mission_file_path: missionArg }
12
+ : {};
13
+ return toRemediationSnapshot(normalizeFromFailedPayload(payload, meta));
27
14
  }
28
15
  export function remediationFromPhaseFailure(root, mission, missionArg, options, failure) {
29
- const presentation = verifyFailurePresentation({
16
+ const normalized = normalizeVerifyPhaseFailure({
30
17
  failure,
31
18
  missionArg,
32
19
  options,
33
20
  root,
34
21
  msnId: mission.msnId ?? undefined,
22
+ mission,
35
23
  });
36
- return {
37
- schema_version: 1,
38
- written_at: new Date().toISOString(),
39
- source: "gapman verify",
40
- phase: failure.phase,
41
- error_code: presentation.error_code,
42
- message: failure.message,
43
- mission_file_path: toPosixRel(root, mission.rawPath),
44
- ...(mission.msnId ? { msn_id: mission.msnId } : {}),
45
- fix_hints: presentation.fix_hints,
46
- next_actions: presentation.next_actions,
47
- ...(failure.phase === "gate"
48
- ? {
49
- gate: {
50
- ...(failure.gateStdout !== undefined ? { stdout: failure.gateStdout } : {}),
51
- ...(failure.gateStderr !== undefined ? { stderr: failure.gateStderr } : {}),
52
- ...(failure.gateExitCode !== undefined ? { exit_code: failure.gateExitCode } : {}),
53
- },
54
- }
55
- : {}),
56
- ...(failure.phase === "kpi"
57
- ? {
58
- failures: [failure.kpiReason ?? failure.message],
59
- kpi: {
60
- ...(failure.kpiMetric ? { metric: failure.kpiMetric } : {}),
61
- ...(failure.kpiOp ? { op: failure.kpiOp } : {}),
62
- ...(failure.kpiExpected !== undefined ? { expected: failure.kpiExpected } : {}),
63
- ...(failure.kpiActual !== undefined ? { actual: failure.kpiActual } : {}),
64
- ...(failure.kpiReportPath ? { report_path: failure.kpiReportPath } : {}),
65
- },
66
- }
67
- : {}),
68
- ...(failure.phase === "trace" && failure.traceReason
69
- ? { failures: [`DoD trace: ${failure.traceReason}`] }
70
- : {}),
71
- };
24
+ return toRemediationSnapshot(normalized);
72
25
  }
73
26
  export function persistRemediationSnapshot(root, snapshot) {
74
27
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"context-feed-remediation.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-feed-remediation.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-remediation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,UAAU,4BAA4B,CAC1C,IAAY,EACZ,OAA6B,EAC7B,UAA8B,EAC9B,OAA4B;IAE5B,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC;YACE,iBAAiB,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;YACpD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;QACH,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,EAAE,iBAAiB,EAAE,UAAU,EAAE;YACnC,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,qBAAqB,CAAC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,OAAsB,EACtB,UAAkB,EAClB,OAAsB,EACtB,OAA2B;IAE3B,MAAM,UAAU,GAAG,2BAA2B,CAAC;QAC7C,OAAO;QACP,UAAU;QACV,OAAO;QACP,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;QACjC,OAAO;KACR,CAAC,CAAC;IACH,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAY,EAAE,QAA6B;IACpF,IAAI,CAAC;QACH,wBAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,IAAY,EACZ,OAA6B,EAC7B,UAA8B,EAC9B,OAA4B;IAE5B,0BAA0B,CAAC,IAAI,EAAE,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,IAAY,EACZ,OAAsB,EACtB,UAAkB,EAClB,OAAsB,EACtB,OAA2B;IAE3B,0BAA0B,CACxB,IAAI,EACJ,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -25,6 +25,8 @@ export interface RemediationSnapshot {
25
25
  report_path?: string;
26
26
  };
27
27
  }
28
+ /** Remove abandoned temp files older than maxAgeMs (optional scavenger — not on hot write path). */
29
+ export declare function scavengerStaleRemediationTemps(repoRoot: string, maxAgeMs?: number): void;
28
30
  /** Atomic replace: write temp file in same directory, then rename onto target. */
29
31
  export declare function writeRemediationSnapshot(repoRoot: string, snapshot: RemediationSnapshot): void;
30
32
  export declare function readRemediationSnapshot(repoRoot: string): RemediationSnapshot | null;
@@ -1 +1 @@
1
- {"version":3,"file":"context-feed-store.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,OAAO,0BAA0B,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAmCD,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAkB9F;AAmBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAWpF;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAa/D"}
1
+ {"version":3,"file":"context-feed-store.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,EAAG,CAAU,CAAC;AAErD,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,OAAO,0BAA0B,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAqBD,oGAAoG;AACpG,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAU,GAAG,IAAI,CAgBzF;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAgB9F;AAmBD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAWpF;AAED,sEAAsE;AACtE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAa/D"}
@@ -17,19 +17,24 @@ function tempRemediationPath(repoRoot) {
17
17
  function ensureRemediationDir(repoRoot) {
18
18
  fs.mkdirSync(remediationDir(repoRoot), { recursive: true });
19
19
  }
20
- function bestEffortCleanupStaleTemps(repoRoot) {
20
+ /** Remove abandoned temp files older than maxAgeMs (optional scavenger — not on hot write path). */
21
+ export function scavengerStaleRemediationTemps(repoRoot, maxAgeMs = 300_000) {
21
22
  const dir = remediationDir(repoRoot);
22
23
  if (!fs.existsSync(dir))
23
24
  return;
25
+ const now = Date.now();
24
26
  for (const entry of fs.readdirSync(dir)) {
25
27
  if (!entry.startsWith(TMP_PREFIX))
26
28
  continue;
27
29
  const full = path.join(dir, entry);
28
30
  try {
29
- fs.unlinkSync(full);
31
+ const stat = fs.statSync(full);
32
+ if (now - stat.mtimeMs > maxAgeMs) {
33
+ fs.unlinkSync(full);
34
+ }
30
35
  }
31
36
  catch {
32
- // abandoned temp from crashed writer — ignore
37
+ // ignore per-file errors
33
38
  }
34
39
  }
35
40
  }
@@ -53,9 +58,6 @@ export function writeRemediationSnapshot(repoRoot, snapshot) {
53
58
  }
54
59
  throw e;
55
60
  }
56
- finally {
57
- bestEffortCleanupStaleTemps(repoRoot);
58
- }
59
61
  }
60
62
  function readFileWithRetry(absPath, attempts = 3) {
61
63
  for (let i = 0; i < attempts; i += 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"context-feed-store.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-feed-store.js","sourceRoot":"","sources":["../../../src/cli/lib/context-feed-store.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,4 @@
1
- import type { GxtErrorCode } from "./gxt-error-codes.js";
2
- import type { VerifyOptions, VerifyPhaseFailure } from "./verify-engine.js";
3
- import { type AudienceTaggedStep } from "./verify-hints.js";
4
- export interface VerifyFailurePresentationInput {
5
- failure: VerifyPhaseFailure;
6
- missionArg: string;
7
- options: Pick<VerifyOptions, "strictTrace" | "audience">;
8
- root?: string;
9
- msnId?: string;
10
- }
11
- export interface VerifyFailurePresentation {
12
- error_code: GxtErrorCode;
13
- headline: string;
14
- detail_lines: string[];
15
- fix_hints: string[];
16
- next_actions: string[];
17
- tagged_steps?: AudienceTaggedStep[];
18
- exit_code: number;
19
- gate?: {
20
- stdout?: string;
21
- stderr?: string;
22
- exitCode?: number;
23
- };
24
- trace?: {
25
- failures?: string[];
26
- };
27
- }
1
+ import type { VerifyFailurePresentation, VerifyFailurePresentationInput } from "./verify-failure-presentation-types.js";
2
+ export type { AudienceTaggedStep, VerifyFailurePresentation, VerifyFailurePresentationInput, } from "./verify-failure-presentation-types.js";
28
3
  export declare function verifyFailurePresentation(input: VerifyFailurePresentationInput): VerifyFailurePresentation;
29
4
  //# sourceMappingURL=verify-failure-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-failure-format.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjC;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,CAoE3B"}
1
+ {"version":3,"file":"verify-failure-format.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,wCAAwC,CAAC;AAEhD,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,wCAAwC,CAAC;AAEhD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,yBAAyB,CAG3B"}
@@ -1,68 +1,6 @@
1
- import { CLI_NAME } from "./constants.js";
2
- import { buildVerifyHintContext, hintsForVerifyPhase, } from "./verify-hints.js";
1
+ import { normalizeVerifyPhaseFailure, toFailurePresentation, } from "./verify-failure-normalize.js";
3
2
  export function verifyFailurePresentation(input) {
4
- const { failure, missionArg, root, msnId, options } = input;
5
- const remediation = hintsForVerifyPhase(failure.phase, buildVerifyHintContext(failure, missionArg, options, root, msnId));
6
- const base = {
7
- error_code: remediation.error_code,
8
- fix_hints: remediation.fix_hints,
9
- next_actions: remediation.next_actions,
10
- tagged_steps: remediation.tagged_steps,
11
- exit_code: failure.exitCode,
12
- };
13
- switch (failure.phase) {
14
- case "git_proof":
15
- return {
16
- ...base,
17
- headline: failure.message,
18
- detail_lines: [],
19
- };
20
- case "gate":
21
- return {
22
- ...base,
23
- headline: "verify: GATE FAILED",
24
- detail_lines: [
25
- ...(failure.gateStdout !== undefined ? [`--- stdout ---\n${failure.gateStdout}`] : []),
26
- ...(failure.gateStderr !== undefined ? [`--- stderr ---\n${failure.gateStderr}`] : []),
27
- ...(failure.gateExitCode !== undefined ? [`exit code: ${String(failure.gateExitCode)}`] : []),
28
- ],
29
- gate: {
30
- stdout: failure.gateStdout,
31
- stderr: failure.gateStderr,
32
- exitCode: failure.gateExitCode,
33
- },
34
- };
35
- case "kpi":
36
- return {
37
- ...base,
38
- headline: "verify: KPI GATE FAILED",
39
- detail_lines: [
40
- failure.kpiReason ?? failure.message,
41
- ...(failure.kpiMetric
42
- ? [`metric: ${failure.kpiMetric} ${failure.kpiOp ?? ""} ${String(failure.kpiExpected ?? "")} (actual: ${String(failure.kpiActual ?? "missing")})`]
43
- : []),
44
- ...(failure.kpiReportPath ? [`report: ${failure.kpiReportPath}`] : []),
45
- ],
46
- };
47
- case "trace_pending":
48
- return {
49
- ...base,
50
- headline: `${CLI_NAME} verify: legislative stub complete (git-proof OK) — worker must execute, append ${failure.workerLogPath}, set trace row PASS, then re-verify`,
51
- detail_lines: [],
52
- };
53
- case "trace":
54
- return {
55
- ...base,
56
- headline: "verify: TRACE MAPPING FAILED (Evidence Tampering / missing evidence)",
57
- detail_lines: [`DoD trace failure: ${failure.traceReason ?? failure.message}`],
58
- trace: failure.traceReason
59
- ? { failures: [`DoD trace: ${failure.traceReason}`] }
60
- : undefined,
61
- };
62
- default: {
63
- const _exhaustive = failure.phase;
64
- return _exhaustive;
65
- }
66
- }
3
+ const normalized = normalizeVerifyPhaseFailure(input);
4
+ return toFailurePresentation(normalized);
67
5
  }
68
6
  //# sourceMappingURL=verify-failure-format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-failure-format.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-failure-format.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-format.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,+BAA+B,CAAC;AAYvC,MAAM,UAAU,yBAAyB,CACvC,KAAqC;IAErC,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAA0C,CAAC,CAAC;IAC3F,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { VerifyPhaseFailure } from "./verify-engine.js";
2
+ import type { NormalizedVerifyFailure, NormalizedVerifyFailureBase } from "./verify-failure-normalize-types.js";
3
+ export declare function normalizeGitProofPhase(base: NormalizedVerifyFailureBase): NormalizedVerifyFailure;
4
+ export declare function normalizeGatePhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
5
+ export declare function normalizeKpiPhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
6
+ export declare function normalizeTracePendingPhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
7
+ export declare function normalizeTracePhase(base: NormalizedVerifyFailureBase, failure: VerifyPhaseFailure): NormalizedVerifyFailure;
8
+ //# sourceMappingURL=verify-failure-normalize-phases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-failure-normalize-phases.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-phases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,2BAA2B,GAAG,uBAAuB,CAEjG;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAsBzB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAqBzB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAMzB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,2BAA2B,EACjC,OAAO,EAAE,kBAAkB,GAC1B,uBAAuB,CAYzB"}
@@ -0,0 +1,70 @@
1
+ import { CLI_NAME } from "./constants.js";
2
+ export function normalizeGitProofPhase(base) {
3
+ return { ...base, headline: base.message, detail_lines: [] };
4
+ }
5
+ export function normalizeGatePhase(base, failure) {
6
+ return {
7
+ ...base,
8
+ headline: "verify: GATE FAILED",
9
+ detail_lines: [
10
+ ...(failure.gateStdout !== undefined ? [`--- stdout ---\n${failure.gateStdout}`] : []),
11
+ ...(failure.gateStderr !== undefined ? [`--- stderr ---\n${failure.gateStderr}`] : []),
12
+ ...(failure.gateExitCode !== undefined ? [`exit code: ${String(failure.gateExitCode)}`] : []),
13
+ ],
14
+ stdout: failure.gateStdout,
15
+ stderr: failure.gateStderr,
16
+ gate: {
17
+ ...(failure.gateStdout !== undefined ? { stdout: failure.gateStdout } : {}),
18
+ ...(failure.gateStderr !== undefined ? { stderr: failure.gateStderr } : {}),
19
+ ...(failure.gateExitCode !== undefined ? { exit_code: failure.gateExitCode } : {}),
20
+ },
21
+ presentation_gate: {
22
+ stdout: failure.gateStdout,
23
+ stderr: failure.gateStderr,
24
+ exitCode: failure.gateExitCode,
25
+ },
26
+ };
27
+ }
28
+ export function normalizeKpiPhase(base, failure) {
29
+ const reason = failure.kpiReason ?? failure.message;
30
+ return {
31
+ ...base,
32
+ headline: "verify: KPI GATE FAILED",
33
+ detail_lines: [
34
+ reason,
35
+ ...(failure.kpiMetric
36
+ ? [`metric: ${failure.kpiMetric} ${failure.kpiOp ?? ""} ${String(failure.kpiExpected ?? "")} (actual: ${String(failure.kpiActual ?? "missing")})`]
37
+ : []),
38
+ ...(failure.kpiReportPath ? [`report: ${failure.kpiReportPath}`] : []),
39
+ ],
40
+ failures: [reason],
41
+ kpi: {
42
+ ...(failure.kpiMetric ? { metric: failure.kpiMetric } : {}),
43
+ ...(failure.kpiOp ? { op: failure.kpiOp } : {}),
44
+ ...(failure.kpiExpected !== undefined ? { expected: failure.kpiExpected } : {}),
45
+ ...(failure.kpiActual !== undefined ? { actual: failure.kpiActual } : {}),
46
+ ...(failure.kpiReportPath ? { report_path: failure.kpiReportPath } : {}),
47
+ },
48
+ };
49
+ }
50
+ export function normalizeTracePendingPhase(base, failure) {
51
+ return {
52
+ ...base,
53
+ headline: `${CLI_NAME} verify: legislative stub complete (git-proof OK) — worker must execute, append ${failure.workerLogPath}, set trace row PASS, then re-verify`,
54
+ detail_lines: [],
55
+ };
56
+ }
57
+ export function normalizeTracePhase(base, failure) {
58
+ return {
59
+ ...base,
60
+ headline: "verify: TRACE MAPPING FAILED (Evidence Tampering / missing evidence)",
61
+ detail_lines: [`DoD trace failure: ${failure.traceReason ?? failure.message}`],
62
+ ...(failure.traceReason
63
+ ? {
64
+ failures: [`DoD trace: ${failure.traceReason}`],
65
+ trace: { failures: [`DoD trace: ${failure.traceReason}`] },
66
+ }
67
+ : {}),
68
+ };
69
+ }
70
+ //# sourceMappingURL=verify-failure-normalize-phases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-failure-normalize-phases.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-phases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { GxtErrorCode } from "./gxt-error-codes.js";
2
+ import type { AudienceTaggedStep } from "./verify-hints.js";
3
+ import type { RemediationSnapshot } from "./context-feed-store.js";
4
+ /** Canonical verify-failure contract — single mapping for all sinks. */
5
+ export interface NormalizedVerifyFailure {
6
+ phase: string;
7
+ message: string;
8
+ exit_code: number;
9
+ error_code: GxtErrorCode;
10
+ fix_hints: string[];
11
+ next_actions: string[];
12
+ tagged_steps?: AudienceTaggedStep[];
13
+ headline: string;
14
+ detail_lines: string[];
15
+ stdout?: string;
16
+ stderr?: string;
17
+ failures?: string[];
18
+ gate?: RemediationSnapshot["gate"];
19
+ kpi?: RemediationSnapshot["kpi"];
20
+ presentation_gate?: {
21
+ stdout?: string;
22
+ stderr?: string;
23
+ exitCode?: number;
24
+ };
25
+ trace?: {
26
+ failures?: string[];
27
+ };
28
+ mission_file_path?: string;
29
+ msn_id?: string;
30
+ }
31
+ export type NormalizedVerifyFailureBase = Pick<NormalizedVerifyFailure, "phase" | "message" | "exit_code" | "error_code" | "fix_hints" | "next_actions" | "tagged_steps" | "mission_file_path" | "msn_id">;
32
+ //# sourceMappingURL=verify-failure-normalize-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-failure-normalize-types.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,wEAAwE;AACxE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,YAAY,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACjC,iBAAiB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,uBAAuB,EACrB,OAAO,GACP,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,QAAQ,CACX,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=verify-failure-normalize-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-failure-normalize-types.js","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import type { ParsedMission } from "./types.js";
2
+ import type { VerifyOptions, VerifyPhaseFailure } from "./verify-engine.js";
3
+ import { type RemediationSnapshot } from "./context-feed-store.js";
4
+ import type { VerifyFailurePresentation } from "./verify-failure-presentation-types.js";
5
+ import type { VerifyFailedPayload } from "./verify-payload-types.js";
6
+ import type { NormalizedVerifyFailure } from "./verify-failure-normalize-types.js";
7
+ export type { NormalizedVerifyFailure } from "./verify-failure-normalize-types.js";
8
+ export interface NormalizePhaseFailureInput {
9
+ failure: VerifyPhaseFailure;
10
+ missionArg: string;
11
+ options: Pick<VerifyOptions, "strictTrace" | "audience">;
12
+ root?: string;
13
+ msnId?: string;
14
+ mission?: ParsedMission | null;
15
+ }
16
+ /** Map engine phase failure to canonical contract (hints + phase artifacts in one switch). */
17
+ export declare function normalizeVerifyPhaseFailure(input: NormalizePhaseFailureInput): NormalizedVerifyFailure;
18
+ /** Map init/pre-phase errors to canonical contract. */
19
+ export declare function normalizeInitFailure(error: unknown): NormalizedVerifyFailure;
20
+ export declare function toVerifyFailedPayload(normalized: NormalizedVerifyFailure): VerifyFailedPayload;
21
+ export declare function toFailurePresentation(normalized: NormalizedVerifyFailure): VerifyFailurePresentation;
22
+ export declare function toRemediationSnapshot(normalized: NormalizedVerifyFailure): RemediationSnapshot;
23
+ /** Project an existing JSON failure payload into remediation snapshot (init / replay paths). */
24
+ export declare function normalizeFromFailedPayload(payload: VerifyFailedPayload, meta?: {
25
+ mission_file_path?: string;
26
+ msn_id?: string;
27
+ }): NormalizedVerifyFailure;
28
+ //# sourceMappingURL=verify-failure-normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-failure-normalize.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/verify-failure-normalize.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK5E,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,YAAY,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAChC;AAoBD,8FAA8F;AAC9F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,0BAA0B,GAAG,uBAAuB,CAiCtG;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAyB5E;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,mBAAmB,CAa9F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,yBAAyB,CAYpG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,uBAAuB,GAAG,mBAAmB,CAgB9F;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,uBAAuB,CAuBzB"}