@jevitate/cli 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/ai-cli.d.ts +3 -1
  2. package/dist/ai-cli.js +60 -16
  3. package/dist/ai-cli.js.map +1 -1
  4. package/dist/approval-provenance.d.ts +120 -0
  5. package/dist/approval-provenance.js +300 -0
  6. package/dist/approval-provenance.js.map +1 -0
  7. package/dist/author-journey-cli.js +4 -2
  8. package/dist/author-journey-cli.js.map +1 -1
  9. package/dist/bin.js +29019 -22450
  10. package/dist/build-info.generated.js +2 -2
  11. package/dist/builtin-analyzers.d.ts +7 -0
  12. package/dist/builtin-analyzers.js +19 -0
  13. package/dist/builtin-analyzers.js.map +1 -0
  14. package/dist/campaign-cli.d.ts +6 -0
  15. package/dist/campaign-cli.js +9 -4
  16. package/dist/campaign-cli.js.map +1 -1
  17. package/dist/catalog-analysis.d.ts +70 -0
  18. package/dist/catalog-analysis.js +507 -0
  19. package/dist/catalog-analysis.js.map +1 -0
  20. package/dist/catalog-api.d.ts +73 -0
  21. package/dist/catalog-api.js +97 -0
  22. package/dist/catalog-api.js.map +1 -0
  23. package/dist/catalog-cli.d.ts +12 -0
  24. package/dist/catalog-cli.js +224 -0
  25. package/dist/catalog-cli.js.map +1 -0
  26. package/dist/catalog-review.d.ts +29 -0
  27. package/dist/catalog-review.js +290 -0
  28. package/dist/catalog-review.js.map +1 -0
  29. package/dist/catalog.d.ts +133 -0
  30. package/dist/catalog.js +352 -0
  31. package/dist/catalog.js.map +1 -0
  32. package/dist/check-api.js +24 -2
  33. package/dist/check-api.js.map +1 -1
  34. package/dist/check-cli.d.ts +3 -0
  35. package/dist/check-cli.js +18 -4
  36. package/dist/check-cli.js.map +1 -1
  37. package/dist/check-execute.js +25 -9
  38. package/dist/check-execute.js.map +1 -1
  39. package/dist/check-plan.js +4 -1
  40. package/dist/check-plan.js.map +1 -1
  41. package/dist/check-suite.js +6 -3
  42. package/dist/check-suite.js.map +1 -1
  43. package/dist/check-types.d.ts +12 -1
  44. package/dist/check-types.js.map +1 -1
  45. package/dist/cli-output.js +82 -4
  46. package/dist/cli-output.js.map +1 -1
  47. package/dist/cli-shared.d.ts +22 -2
  48. package/dist/cli-shared.js +34 -5
  49. package/dist/cli-shared.js.map +1 -1
  50. package/dist/demo-aspect-api.d.ts +15 -0
  51. package/dist/demo-aspect-api.js +26 -1
  52. package/dist/demo-aspect-api.js.map +1 -1
  53. package/dist/demo-aspect-cli.js +64 -5
  54. package/dist/demo-aspect-cli.js.map +1 -1
  55. package/dist/exit-codes.js +4 -0
  56. package/dist/exit-codes.js.map +1 -1
  57. package/dist/explore-adversarial.d.ts +3 -1
  58. package/dist/explore-adversarial.js +2 -2
  59. package/dist/explore-adversarial.js.map +1 -1
  60. package/dist/explore-author.js +5 -2
  61. package/dist/explore-author.js.map +1 -1
  62. package/dist/explore-cli.js +144 -9
  63. package/dist/explore-cli.js.map +1 -1
  64. package/dist/explore-coverage.d.ts +6 -2
  65. package/dist/explore-coverage.js +4 -3
  66. package/dist/explore-coverage.js.map +1 -1
  67. package/dist/explore-feature.d.ts +3 -1
  68. package/dist/explore-feature.js +2 -2
  69. package/dist/explore-feature.js.map +1 -1
  70. package/dist/explore-goal.d.ts +37 -6
  71. package/dist/explore-goal.js +61 -48
  72. package/dist/explore-goal.js.map +1 -1
  73. package/dist/explore-shared.d.ts +12 -7
  74. package/dist/explore-shared.js +9 -1
  75. package/dist/explore-shared.js.map +1 -1
  76. package/dist/goal-run-flags.d.ts +2 -0
  77. package/dist/goal-run-flags.js +8 -1
  78. package/dist/goal-run-flags.js.map +1 -1
  79. package/dist/http-5xx-outcome.d.ts +8 -3
  80. package/dist/http-5xx-outcome.js +5 -15
  81. package/dist/http-5xx-outcome.js.map +1 -1
  82. package/dist/init-cli.d.ts +7 -0
  83. package/dist/init-cli.js +79 -9
  84. package/dist/init-cli.js.map +1 -1
  85. package/dist/init-codeowners.d.ts +39 -0
  86. package/dist/init-codeowners.js +91 -0
  87. package/dist/init-codeowners.js.map +1 -0
  88. package/dist/init-keys.d.ts +3 -1
  89. package/dist/init-keys.js +20 -8
  90. package/dist/init-keys.js.map +1 -1
  91. package/dist/init-skills.d.ts +85 -7
  92. package/dist/init-skills.js +303 -36
  93. package/dist/init-skills.js.map +1 -1
  94. package/dist/jev-advisor.d.ts +72 -0
  95. package/dist/jev-advisor.js +172 -0
  96. package/dist/jev-advisor.js.map +1 -0
  97. package/dist/journey-api.d.ts +34 -2
  98. package/dist/journey-api.js +51 -20
  99. package/dist/journey-api.js.map +1 -1
  100. package/dist/journey-cli.js +156 -12
  101. package/dist/journey-cli.js.map +1 -1
  102. package/dist/journey-review-api.d.ts +19 -0
  103. package/dist/journey-review-api.js +46 -0
  104. package/dist/journey-review-api.js.map +1 -0
  105. package/dist/journey-review-store.d.ts +16 -0
  106. package/dist/journey-review-store.js +95 -0
  107. package/dist/journey-review-store.js.map +1 -0
  108. package/dist/journey-review.d.ts +47 -0
  109. package/dist/journey-review.js +499 -0
  110. package/dist/journey-review.js.map +1 -0
  111. package/dist/journey-verify.js +14 -1
  112. package/dist/journey-verify.js.map +1 -1
  113. package/dist/key-report.d.ts +20 -5
  114. package/dist/key-report.js +32 -9
  115. package/dist/key-report.js.map +1 -1
  116. package/dist/kill-signal.js +10 -2
  117. package/dist/kill-signal.js.map +1 -1
  118. package/dist/load-cli.js +4 -2
  119. package/dist/load-cli.js.map +1 -1
  120. package/dist/log-classes.d.ts +73 -0
  121. package/dist/log-classes.js +167 -0
  122. package/dist/log-classes.js.map +1 -0
  123. package/dist/log-correlation.d.ts +29 -10
  124. package/dist/log-correlation.js +44 -21
  125. package/dist/log-correlation.js.map +1 -1
  126. package/dist/login-cli.d.ts +15 -0
  127. package/dist/login-cli.js +116 -0
  128. package/dist/login-cli.js.map +1 -0
  129. package/dist/logs-cli.js +3 -1
  130. package/dist/logs-cli.js.map +1 -1
  131. package/dist/mcp-api.d.ts +1 -0
  132. package/dist/mcp-api.js +61 -12
  133. package/dist/mcp-api.js.map +1 -1
  134. package/dist/mcp-cli-runner.d.ts +2 -0
  135. package/dist/mcp-cli-runner.js +3 -1
  136. package/dist/mcp-cli-runner.js.map +1 -1
  137. package/dist/mcp-cli-tools.d.ts +5 -0
  138. package/dist/mcp-cli-tools.js +158 -23
  139. package/dist/mcp-cli-tools.js.map +1 -1
  140. package/dist/mission-cli.js +8 -4
  141. package/dist/mission-cli.js.map +1 -1
  142. package/dist/mission-journal.d.ts +4 -1
  143. package/dist/mission-journal.js +9 -3
  144. package/dist/mission-journal.js.map +1 -1
  145. package/dist/mission-queue-cli.js +21 -2
  146. package/dist/mission-queue-cli.js.map +1 -1
  147. package/dist/mission-queue-runner.d.ts +6 -0
  148. package/dist/mission-queue-runner.js +33 -3
  149. package/dist/mission-queue-runner.js.map +1 -1
  150. package/dist/multi-run-cli.d.ts +7 -1
  151. package/dist/multi-run-cli.js +10 -3
  152. package/dist/multi-run-cli.js.map +1 -1
  153. package/dist/multi-run.d.ts +38 -3
  154. package/dist/multi-run.js +115 -23
  155. package/dist/multi-run.js.map +1 -1
  156. package/dist/persona-login.d.ts +199 -0
  157. package/dist/persona-login.js +574 -0
  158. package/dist/persona-login.js.map +1 -0
  159. package/dist/pre-approval.d.ts +98 -0
  160. package/dist/pre-approval.js +175 -0
  161. package/dist/pre-approval.js.map +1 -0
  162. package/dist/program.js +10 -0
  163. package/dist/program.js.map +1 -1
  164. package/dist/project-dir.d.ts +2 -1
  165. package/dist/project-dir.js +3 -1
  166. package/dist/project-dir.js.map +1 -1
  167. package/dist/readiness.d.ts +29 -0
  168. package/dist/readiness.js +291 -0
  169. package/dist/readiness.js.map +1 -0
  170. package/dist/regression-cli.js +4 -2
  171. package/dist/regression-cli.js.map +1 -1
  172. package/dist/report-api.d.ts +24 -2
  173. package/dist/report-api.js +33 -5
  174. package/dist/report-api.js.map +1 -1
  175. package/dist/report-cli.js +8 -1
  176. package/dist/report-cli.js.map +1 -1
  177. package/dist/result-schema.d.ts +12 -0
  178. package/dist/result-schema.js +8 -0
  179. package/dist/result-schema.js.map +1 -1
  180. package/dist/run-index.d.ts +4 -2
  181. package/dist/run-index.js +3 -1
  182. package/dist/run-index.js.map +1 -1
  183. package/dist/run-key-preflight.d.ts +2 -1
  184. package/dist/run-key-preflight.js +3 -2
  185. package/dist/run-key-preflight.js.map +1 -1
  186. package/dist/run-metadata.d.ts +26 -0
  187. package/dist/run-metadata.js +41 -0
  188. package/dist/run-metadata.js.map +1 -0
  189. package/dist/run-tags-cli.d.ts +12 -0
  190. package/dist/run-tags-cli.js +35 -0
  191. package/dist/run-tags-cli.js.map +1 -0
  192. package/dist/site-cli.d.ts +1 -1
  193. package/dist/site-cli.js +24 -1
  194. package/dist/site-cli.js.map +1 -1
  195. package/dist/source-cli.js +4 -2
  196. package/dist/source-cli.js.map +1 -1
  197. package/dist/suite-explore-options.d.ts +14 -0
  198. package/dist/suite-explore-options.js +7 -0
  199. package/dist/suite-explore-options.js.map +1 -1
  200. package/dist/sweep-api.d.ts +266 -0
  201. package/dist/sweep-api.js +828 -0
  202. package/dist/sweep-api.js.map +1 -0
  203. package/dist/sweep-cli.d.ts +9 -0
  204. package/dist/sweep-cli.js +115 -0
  205. package/dist/sweep-cli.js.map +1 -0
  206. package/dist/target-config.d.ts +5 -2
  207. package/dist/target-config.js +15 -0
  208. package/dist/target-config.js.map +1 -1
  209. package/dist/ux-cli.js +3 -1
  210. package/dist/ux-cli.js.map +1 -1
  211. package/dist/ux-usability.d.ts +9 -3
  212. package/dist/ux-usability.js +5 -3
  213. package/dist/ux-usability.js.map +1 -1
  214. package/dist/verify-fix-cli.js +4 -2
  215. package/dist/verify-fix-cli.js.map +1 -1
  216. package/package.json +12 -12
  217. package/skills/jevitate-demo/SKILL.md +5 -2
  218. package/skills/jevitate-getting-started/SKILL.md +12 -0
  219. package/skills/jevitate-run-journey/SKILL.md +17 -4
  220. package/skills/jevitate-test-campaign/SKILL.md +26 -5
@@ -0,0 +1,98 @@
1
+ import type { AcceptedFindings, Finding, Journey } from "@jevitate/journey";
2
+ import type { JevSetup } from "./jev-advisor.js";
3
+ import { type Catalog } from "./catalog.js";
4
+ /**
5
+ * #433 — THE pre-approval pipeline. Every human approval — `persona approve`, `job approve`,
6
+ * `journey promote`, `demo approve` — asks `preApprovalFindings(subject, catalog, ctx)` for the
7
+ * findings about the item being approved, renders them in its review sheet before approving, and
8
+ * passes them through `acknowledgeFindings`: when any finding `requiresAcknowledgment`, the approval
9
+ * is refused (`ApprovalFindingsError`, E_APPROVAL_FINDINGS, exit 1) unless the approver gives
10
+ * `--accept-findings "<reason>"`, which is recorded with the approval (`acceptedFindings`).
11
+ *
12
+ * ── Writing an analyzer (#434 readiness / GtWR checks + Jev, #435 conflicts / duplicates) ──────
13
+ *
14
+ * import { registerPreApprovalAnalyzer, type PreApprovalAnalyzer } from "./pre-approval.js";
15
+ * const readiness: PreApprovalAnalyzer = {
16
+ * id: "readiness", // unique; prefixes every finding's acknowledgment key
17
+ * appliesTo: ["job", "persona", "journey"], // the subject kinds it analyzes
18
+ * async analyze(subject, catalog, ctx) { // the item, the whole catalog, the approval context
19
+ * return [{ analyzer: "readiness", code: "job.vague-term", severity: "warn", message: "…",
20
+ * requiresAcknowledgment: false, characteristic: "unambiguous" }];
21
+ * },
22
+ * };
23
+ * registerPreApprovalAnalyzer(readiness); // once, at startup (program wiring)
24
+ *
25
+ * Rules an analyzer keeps:
26
+ * - It only READS: it never changes the catalog, a Journey or an approval.
27
+ * - Advisory judgments (Jev) report a probability and leave `requiresAcknowledgment` to a rule in
28
+ * code over the typed answer (e.g. #435: a `conflicting` / `duplicate` classification) — the
29
+ * model never decides an approval. Without a judgment key it returns its deterministic findings
30
+ * (and an `info` "skipped" finding), never an error.
31
+ * - It is cheap to re-run: the review sheets (`journey|persona|job review`, MCP `review_*`) run
32
+ * the same pipeline, so an expensive analyzer caches by the items' content hashes.
33
+ * - A thrown error does not wave the approval through: it becomes a finding that requires an
34
+ * acknowledgment (fail closed), naming the analyzer.
35
+ */
36
+ /** What is being approved: a catalog persona or job, or a Journey (promote / demo approve). */
37
+ export type ApprovalSubject = {
38
+ readonly kind: "persona";
39
+ readonly id: string;
40
+ } | {
41
+ readonly kind: "job";
42
+ readonly id: string;
43
+ } | {
44
+ readonly kind: "journey";
45
+ readonly id: string;
46
+ };
47
+ /** The approval path asking. */
48
+ export type ApprovalAction = "persona approve" | "job approve" | "journey promote" | "demo approve" | "review";
49
+ export interface PreApprovalContext {
50
+ readonly action: ApprovalAction;
51
+ /**
52
+ * The Journey as it will be approved, when it differs from the catalog's copy (demo approve
53
+ * applies its annotations first). Absent: the catalog's copy.
54
+ */
55
+ readonly journey?: Journey;
56
+ /**
57
+ * #434: include the readiness section (deterministic checks + GtWR rules, and the advisory Jev
58
+ * questions). Every approval sets it; a review sheet sets it with `--readiness`.
59
+ */
60
+ readonly readiness?: boolean;
61
+ /**
62
+ * #434/#435: the advisory Jev layer — an advisor (the command was given `--real` and a judgment
63
+ * key is configured), or why it was skipped. Absent: skipped ("pass --real").
64
+ */
65
+ readonly jev?: JevSetup;
66
+ }
67
+ export interface PreApprovalAnalyzer {
68
+ /** Unique. Each finding's `analyzer` is this id. */
69
+ readonly id: string;
70
+ /** The subject kinds it analyzes (it is not called for the others). */
71
+ readonly appliesTo: readonly ApprovalSubject["kind"][];
72
+ analyze(subject: ApprovalSubject, catalog: Catalog, ctx: PreApprovalContext): readonly Finding[] | Promise<readonly Finding[]>;
73
+ }
74
+ /**
75
+ * Registers an analyzer for every approval path and review sheet. Returns its unregister (tests).
76
+ * A second analyzer with the same id is refused (one id, one meaning in recorded acknowledgments).
77
+ */
78
+ export declare function registerPreApprovalAnalyzer(analyzer: PreApprovalAnalyzer): () => void;
79
+ /** The analyzers every approval runs: the built-in deterministic catalog-link checks, then the registered ones. */
80
+ export declare function preApprovalAnalyzers(): readonly PreApprovalAnalyzer[];
81
+ /** #433: the findings about `subject` from every analyzer that applies — acknowledgment-requiring first. */
82
+ export declare function preApprovalFindings(subject: ApprovalSubject, catalog: Catalog, ctx: PreApprovalContext, analyzers?: readonly PreApprovalAnalyzer[]): Promise<Finding[]>;
83
+ /** The key an acknowledgment records a finding by: `<analyzer>/<code>`. */
84
+ export declare function findingKey(f: Finding): string;
85
+ /** #433: findings that require an acknowledgment were present and no `--accept-findings` reason was given. */
86
+ export declare class ApprovalFindingsError extends Error {
87
+ readonly findings: readonly Finding[];
88
+ readonly code = "E_APPROVAL_FINDINGS";
89
+ constructor(message: string, findings: readonly Finding[]);
90
+ }
91
+ /**
92
+ * #433: the acknowledgment rule, in code. Findings requiring an acknowledgment refuse the approval
93
+ * unless `acceptFindings` (a non-empty reason) is given; then they are what the approval records.
94
+ * Returns undefined when nothing needed acknowledging.
95
+ */
96
+ export declare function acknowledgeFindings(what: string, findings: readonly Finding[], acceptFindings: string | undefined): AcceptedFindings | undefined;
97
+ /** #433: the deterministic link and staleness checks every approval starts with. */
98
+ export declare const catalogLinkAnalyzer: PreApprovalAnalyzer;
@@ -0,0 +1,175 @@
1
+ import { findJob, findPersona, journeyLinks, journeysForJob, journeysForPersona, personaLinkId, catalogJourney } from "./catalog.js";
2
+ const registry = [];
3
+ /**
4
+ * Registers an analyzer for every approval path and review sheet. Returns its unregister (tests).
5
+ * A second analyzer with the same id is refused (one id, one meaning in recorded acknowledgments).
6
+ */
7
+ export function registerPreApprovalAnalyzer(analyzer) {
8
+ if (registry.some((a) => a.id === analyzer.id))
9
+ throw new Error(`a pre-approval analyzer '${analyzer.id}' is already registered`);
10
+ registry.push(analyzer);
11
+ return () => {
12
+ const i = registry.indexOf(analyzer);
13
+ if (i !== -1)
14
+ registry.splice(i, 1);
15
+ };
16
+ }
17
+ /** The analyzers every approval runs: the built-in deterministic catalog-link checks, then the registered ones. */
18
+ export function preApprovalAnalyzers() {
19
+ return [catalogLinkAnalyzer, ...registry];
20
+ }
21
+ const SEVERITY_ORDER = { fail: 0, warn: 1, info: 2 };
22
+ /** #433: the findings about `subject` from every analyzer that applies — acknowledgment-requiring first. */
23
+ export async function preApprovalFindings(subject, catalog, ctx, analyzers = preApprovalAnalyzers()) {
24
+ const out = [];
25
+ for (const analyzer of analyzers) {
26
+ if (!analyzer.appliesTo.includes(subject.kind))
27
+ continue;
28
+ try {
29
+ out.push(...(await analyzer.analyze(subject, catalog, ctx)));
30
+ }
31
+ catch (err) {
32
+ out.push({
33
+ analyzer: analyzer.id,
34
+ code: "analyzer.error",
35
+ severity: "fail",
36
+ message: `the ${analyzer.id} analysis could not run: ${err instanceof Error ? err.message : String(err)}`,
37
+ fix: "fix the cause and review again, or acknowledge with --accept-findings \"<reason>\"",
38
+ requiresAcknowledgment: true,
39
+ });
40
+ }
41
+ }
42
+ return out
43
+ .map((f, i) => ({ f, i }))
44
+ .sort((a, b) => Number(b.f.requiresAcknowledgment) - Number(a.f.requiresAcknowledgment) || SEVERITY_ORDER[a.f.severity] - SEVERITY_ORDER[b.f.severity] || a.i - b.i)
45
+ .map(({ f }) => f);
46
+ }
47
+ /** The key an acknowledgment records a finding by: `<analyzer>/<code>`. */
48
+ export function findingKey(f) {
49
+ return `${f.analyzer}/${f.code}`;
50
+ }
51
+ /** #433: findings that require an acknowledgment were present and no `--accept-findings` reason was given. */
52
+ export class ApprovalFindingsError extends Error {
53
+ findings;
54
+ code = "E_APPROVAL_FINDINGS";
55
+ constructor(message, findings) {
56
+ super(message);
57
+ this.findings = findings;
58
+ }
59
+ }
60
+ /**
61
+ * #433: the acknowledgment rule, in code. Findings requiring an acknowledgment refuse the approval
62
+ * unless `acceptFindings` (a non-empty reason) is given; then they are what the approval records.
63
+ * Returns undefined when nothing needed acknowledging.
64
+ */
65
+ export function acknowledgeFindings(what, findings, acceptFindings) {
66
+ const blocking = findings.filter((f) => f.requiresAcknowledgment);
67
+ if (blocking.length === 0)
68
+ return undefined;
69
+ const reason = acceptFindings?.trim() ?? "";
70
+ if (reason === "") {
71
+ throw new ApprovalFindingsError(`${what}: ${blocking.length} pre-approval finding(s) need an acknowledgment — ${blocking.map((f) => `${findingKey(f)}: ${f.message}`).join("; ")}. ` +
72
+ `Fix them, or approve anyway with --accept-findings "<reason>" (recorded with the approval)`, blocking);
73
+ }
74
+ return { reason, findings: [...new Set(blocking.map(findingKey))] };
75
+ }
76
+ // ── The built-in analyzer: deterministic catalog links and staleness ──────────────────────────
77
+ const ANALYZER = "catalog-links";
78
+ function finding(code, severity, message, opts = {}) {
79
+ return {
80
+ analyzer: ANALYZER,
81
+ code,
82
+ severity,
83
+ message,
84
+ ...(opts.fix === undefined ? {} : { fix: opts.fix }),
85
+ requiresAcknowledgment: opts.ack === true,
86
+ ...(opts.items === undefined || opts.items.length === 0 ? {} : { items: opts.items }),
87
+ };
88
+ }
89
+ function personaFindings(id, catalog) {
90
+ const persona = findPersona(catalog, id);
91
+ if (persona === undefined)
92
+ return [];
93
+ const out = [];
94
+ if (persona.status === "stale")
95
+ out.push(finding("persona.changed", "warn", `persona '${id}' changed since its approval; approving re-vets it and clears "needs re-review" on its Journeys`));
96
+ const jobs = catalog.jobs.filter((j) => j.personas.includes(id));
97
+ if (jobs.length === 0)
98
+ out.push(finding("persona.no-job", "info", `no job in the catalog serves persona '${id}'`, { fix: `list it in a job's "personas" (.jevitate/jobs.json)` }));
99
+ const stale = journeysForPersona(catalog, id).filter((j) => j.promoted && persona.status === "stale");
100
+ if (stale.length > 0)
101
+ out.push(finding("persona.journeys-need-re-review", "info", `${stale.length} promoted Journey(s) linked to it show "needs re-review" until it is approved again`, { items: stale.map((j) => `journey:${j.id}`) }));
102
+ return out;
103
+ }
104
+ function jobFindings(id, catalog) {
105
+ const job = findJob(catalog, id);
106
+ if (job === undefined)
107
+ return [];
108
+ const out = [];
109
+ if (job.status === "stale")
110
+ out.push(finding("job.changed", "warn", `job '${id}' changed since its approval; approving re-vets it and clears "needs re-review" on its Journeys`));
111
+ if (job.personas.length === 0)
112
+ out.push(finding("job.no-persona", "warn", `job '${id}' serves no persona`, { fix: `add the persona ids it serves to its "personas"` }));
113
+ for (const pid of job.personas) {
114
+ const persona = findPersona(catalog, pid);
115
+ if (persona === undefined) {
116
+ out.push(finding("job.unknown-persona", "fail", `job '${id}' serves persona '${pid}', which .jevitate/personas.json does not declare`, {
117
+ fix: `declare persona '${pid}' in .jevitate/personas.json, or remove it from the job's "personas"`,
118
+ ack: true,
119
+ items: [`persona:${pid}`],
120
+ }));
121
+ }
122
+ else if (persona.status !== "approved") {
123
+ out.push(finding("job.unvetted-persona", "warn", `job '${id}' serves persona '${pid}', which is ${persona.status === "draft" ? "not approved yet" : "stale (changed since its approval)"}`, { fix: `jevitate persona review ${pid}, then persona approve ${pid}`, items: [`persona:${pid}`] }));
124
+ }
125
+ }
126
+ const journeys = journeysForJob(catalog, id);
127
+ for (const pid of job.personas) {
128
+ if (!journeys.some((j) => j.promoted && personaLinkId(catalog, j) === pid)) {
129
+ out.push(finding("job.gap", "info", `no promoted Journey does job '${id}' as persona '${pid}'`, { items: [`persona:${pid}`] }));
130
+ }
131
+ }
132
+ return out;
133
+ }
134
+ function journeyFindings(j, catalog) {
135
+ const links = journeyLinks(catalog, j);
136
+ if (!links.linked) {
137
+ return [finding("journey.unlinked", "info", `not linked to a job/persona — it promotes as before (opt-in: set metadata.job and metadata.persona to catalog ids)`)];
138
+ }
139
+ const out = [];
140
+ if (links.job?.status === "unknown")
141
+ out.push(finding("journey.unknown-job", "fail", `links job '${links.job.id}', which the catalog does not declare`, { fix: "fix metadata.job, or declare the job in .jevitate/jobs.json", items: [`job:${links.job.id}`] }));
142
+ if (links.persona?.status === "unknown") {
143
+ out.push(finding("journey.unknown-persona", "fail", `links persona '${links.persona.id}', which .jevitate/personas.json does not declare (a Journey with a job names a catalog persona id)`, { fix: "set metadata.persona to a persona id, or declare it", items: [`persona:${links.persona.id}`] }));
144
+ }
145
+ if (links.job !== undefined && links.persona === undefined)
146
+ out.push(finding("journey.no-persona", "warn", `links job '${links.job.id}' but no persona`, { fix: "set metadata.persona to the id of the persona doing the job" }));
147
+ if (links.unvetted.length > 0) {
148
+ out.push(finding("journey.unvetted", "warn", `its links are not approved: ${links.unvetted.join(", ")} — promote needs them approved, or --accept-unvetted "<reason>"`, { items: links.unvetted.map((u) => u.replace(/ \(.*\)$/, "")) }));
149
+ }
150
+ const job = links.job === undefined ? undefined : findJob(catalog, links.job.id);
151
+ if (job !== undefined && links.persona !== undefined && links.persona.status !== "unknown" && !job.personas.includes(links.persona.id)) {
152
+ out.push(finding("journey.persona-not-served", "fail", `persona '${links.persona.id}' does the job, but job '${job.id}' does not list that persona (it serves: ${job.personas.join(", ") || "none"})`, {
153
+ fix: `add '${links.persona.id}' to the job's "personas", or link the persona the job serves`,
154
+ ack: true,
155
+ items: [`job:${job.id}`, `persona:${links.persona.id}`],
156
+ }));
157
+ }
158
+ for (const why of links.needsReReview)
159
+ out.push(finding("journey.needs-re-review", "warn", `needs re-review: ${why}`));
160
+ return out;
161
+ }
162
+ /** #433: the deterministic link and staleness checks every approval starts with. */
163
+ export const catalogLinkAnalyzer = {
164
+ id: ANALYZER,
165
+ appliesTo: ["persona", "job", "journey"],
166
+ analyze(subject, catalog, ctx) {
167
+ if (subject.kind === "persona")
168
+ return personaFindings(subject.id, catalog);
169
+ if (subject.kind === "job")
170
+ return jobFindings(subject.id, catalog);
171
+ const j = ctx.journey === undefined ? catalog.journeys.find((x) => x.id === subject.id) : catalogJourney(ctx.journey);
172
+ return j === undefined ? [] : journeyFindings(j, catalog);
173
+ },
174
+ };
175
+ //# sourceMappingURL=pre-approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-approval.js","sourceRoot":"","sources":["../src/pre-approval.ts"],"names":[],"mappings":"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"}
package/dist/program.js CHANGED
@@ -15,10 +15,14 @@ import { registerProfileCommands } from "./profile-cli.js";
15
15
  import { registerSiteCommands } from "./site-cli.js";
16
16
  import { registerRecordingCommands } from "./recording-cli.js";
17
17
  import { registerJourneyCommands } from "./journey-cli.js";
18
+ import { registerCatalogCommands } from "./catalog-cli.js";
19
+ import { registerBuiltinAnalyzers } from "./builtin-analyzers.js";
18
20
  import { registerSourceCommands } from "./source-cli.js";
19
21
  import { registerLoadCommands } from "./load-cli.js";
20
22
  import { registerExploreCommands } from "./explore-cli.js";
23
+ import { registerLoginCommand } from "./login-cli.js";
21
24
  import { registerCampaignCommands } from "./campaign-cli.js";
25
+ import { registerSweepCommand } from "./sweep-cli.js";
22
26
  import { registerVerifyFixCommands } from "./verify-fix-cli.js";
23
27
  import { registerAuthorJourneyCommands } from "./author-journey-cli.js";
24
28
  import { registerDemoCommands } from "./demo-aspect-cli.js";
@@ -48,15 +52,20 @@ export function buildProgram(deps) {
48
52
  program.name("jevitate").description("Autonomous browser testing that turns discovered bugs into deterministic regression tests").version(versionString());
49
53
  // #218: the shared refusal path (cli-refusal.ts) needs to know which command is running.
50
54
  trackActionCommand(program);
55
+ // #434/#435: the readiness and catalog-analysis pre-approval analyzers (once per process).
56
+ registerBuiltinAnalyzers();
51
57
  registerInitCommands(program, deps);
52
58
  registerProfileCommands(program, deps);
53
59
  registerSiteCommands(program, deps);
54
60
  registerRecordingCommands(program, deps);
55
61
  registerJourneyCommands(program, deps);
62
+ registerCatalogCommands(program, deps); // #433: persona/job review|approve, catalog status
56
63
  registerSourceCommands(program, deps);
57
64
  registerLoadCommands(program, deps);
58
65
  registerExploreCommands(program, deps, buildProgram);
66
+ registerLoginCommand(program, deps); // #427: mint a persona's storage state from env credentials
59
67
  registerCampaignCommands(program, deps, buildProgram); // #293: journey-anchored campaigns
68
+ registerSweepCommand(program, deps, buildProgram); // #425: many targets × personas, one aggregate
60
69
  registerVerifyFixCommands(program, deps);
61
70
  // `ledger add|verify|list` (#195 part 6): the repro material verify-fix needs, kept by fingerprint.
62
71
  registerLedgerCommands(program, {
@@ -80,6 +89,7 @@ export function buildProgram(deps) {
80
89
  sitePolicyDbPath: resolveDbPath(deps),
81
90
  ...(deps.explore?.targetsConfigPath === undefined ? {} : { targetsConfigPath: deps.explore.targetsConfigPath }),
82
91
  ...(deps.environmentsFile === undefined ? {} : { environmentsFile: deps.environmentsFile }),
92
+ ...(deps.catalogDir === undefined ? {} : { catalogDir: deps.catalogDir }),
83
93
  ...(deps.explore?.browserPortFactory === undefined ? {} : { browserPortFactory: deps.explore.browserPortFactory }),
84
94
  browserLaunch: (flags) => browserLaunchFromFlags(flags),
85
95
  }, withBrowserLaunchFlags);
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAGL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EAExB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;GAMG;AACH,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACvF,OAAO,GAAG,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,2FAA2F,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3J,yFAAyF;IACzF,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5B,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,mCAAmC;IAC1F,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEzC,oGAAoG;IACpG,sBAAsB,CACpB,OAAO,EACP;QACE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/G,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClH,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAA2B,CAAC;KAC9E,EACD,sBAAsB,CACvB,CAAC;IAEF,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,qCAAqC;IAC3E,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElC,8FAA8F;IAC9F,oBAAoB,CAClB,OAAO,EACP;QACE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;QACvD,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACrC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/G,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3F,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClH,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAA2B,CAAC;KAC9E,EACD,sBAAsB,CACvB,CAAC;IACF,sBAAsB,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,wEAAwE;IACxG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAe,EAAE,YAAmD,EAAS,EAAE;QAC1F,6FAA6F;QAC7F,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,KAAK,2BAA2B,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACtI,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC7C,iGAAiG;QACjG,+FAA+F;QAC/F,IAAI,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,kGAAkG;QAClG,2FAA2F;QAC3F,wDAAwD;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI,oBAAoB,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5J,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ;QAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC;AAC1F,CAAC;AAED,2EAA2E;AAC3E,SAAS,SAAS,CAAC,IAAa;IAC9B,MAAM,GAAG,GAAI,IAAyC,CAAC,OAAO,CAAC;IAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,GAAY;IAC1B,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI;QAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAGL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EAExB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GAErB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;;GAMG;AACH,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACvF,OAAO,GAAG,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,OAAO,GAAG,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,2FAA2F,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3J,yFAAyF;IACzF,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,2FAA2F;IAC3F,wBAAwB,EAAE,CAAC;IAE3B,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,mDAAmD;IAC3F,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrD,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,4DAA4D;IACjG,wBAAwB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,mCAAmC;IAC1F,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,+CAA+C;IAClG,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEzC,oGAAoG;IACpG,sBAAsB,CACpB,OAAO,EACP;QACE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/G,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClH,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAA2B,CAAC;KAC9E,EACD,sBAAsB,CACvB,CAAC;IAEF,6BAA6B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,0BAA0B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,qCAAqC;IAC3E,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAElC,8FAA8F;IAC9F,oBAAoB,CAClB,OAAO,EACP;QACE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC;QACvD,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACrC,gBAAgB,EAAE,aAAa,CAAC,IAAI,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC/G,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3F,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAClH,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAA2B,CAAC;KAC9E,EACD,sBAAsB,CACvB,CAAC;IACF,sBAAsB,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,wEAAwE;IACxG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAe,EAAE,YAAmD,EAAS,EAAE;QAC1F,6FAA6F;QAC7F,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,KAAK,2BAA2B,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QACtI,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC7C,iGAAiG;QACjG,+FAA+F;QAC/F,IAAI,QAAQ,KAAK,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,kGAAkG;QAClG,2FAA2F;QAC3F,wDAAwD;QACxD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,mBAAmB,CAAC,GAAG,CAAC,KAAK,IAAI,oBAAoB,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5J,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ;QAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC;AAC1F,CAAC;AAED,2EAA2E;AAC3E,SAAS,SAAS,CAAC,IAAa;IAC9B,MAAM,GAAG,GAAI,IAAyC,CAAC,OAAO,CAAC;IAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,MAAM,CAAC,GAAY;IAC1B,IAAI,CAAC,GAAG,GAAG,CAAC;IACZ,OAAO,CAAC,CAAC,MAAM,KAAK,IAAI;QAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -61,7 +61,8 @@ export interface ProjectInitReport {
61
61
  /**
62
62
  * What the repo's `.jevitate/.gitignore` keeps out of git: run output (`logs/`, pruned by
63
63
  * retention), unapproved model-drafted Journey annotations (`journeys/.drafts/`, #246: a draft
64
- * reaches the repo only through `journey annotate --approve`, as part of its Journey), and every secret or machine-local file jevitate keeps in `~/.jevitate`, in case one
64
+ * reaches the repo only through `journey annotate --approve`, as part of its Journey), the Jev answer cache (`cache/`, #434/#435:
65
+ * answers keyed by content hash — never a secret, but machine-local), and every secret or machine-local file jevitate keeps in `~/.jevitate`, in case one
65
66
  * is ever copied or written here — credentials, config, targets, the policy database, browser
66
67
  * profiles and sessions (storage states hold live cookies), the inbox, the mission queue, trust
67
68
  * decisions, source clones, env files, HAR captures and traces. Journeys, regressions and
@@ -115,7 +115,8 @@ const GITIGNORE_HEADER = "# jevitate: local run output and anything secret or ma
115
115
  /**
116
116
  * What the repo's `.jevitate/.gitignore` keeps out of git: run output (`logs/`, pruned by
117
117
  * retention), unapproved model-drafted Journey annotations (`journeys/.drafts/`, #246: a draft
118
- * reaches the repo only through `journey annotate --approve`, as part of its Journey), and every secret or machine-local file jevitate keeps in `~/.jevitate`, in case one
118
+ * reaches the repo only through `journey annotate --approve`, as part of its Journey), the Jev answer cache (`cache/`, #434/#435:
119
+ * answers keyed by content hash — never a secret, but machine-local), and every secret or machine-local file jevitate keeps in `~/.jevitate`, in case one
119
120
  * is ever copied or written here — credentials, config, targets, the policy database, browser
120
121
  * profiles and sessions (storage states hold live cookies), the inbox, the mission queue, trust
121
122
  * decisions, source clones, env files, HAR captures and traces. Journeys, regressions and
@@ -124,6 +125,7 @@ const GITIGNORE_HEADER = "# jevitate: local run output and anything secret or ma
124
125
  export const PROJECT_GITIGNORE = [
125
126
  "logs/",
126
127
  "journeys/.drafts/",
128
+ "cache/",
127
129
  "/credentials.json",
128
130
  "/config.json",
129
131
  "/targets.json",
@@ -1 +1 @@
1
- {"version":3,"file":"project-dir.js","sourceRoot":"","sources":["../src/project-dir.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-dir.js","sourceRoot":"","sources":["../src/project-dir.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type Finding, type QualityFinding } from "@jevitate/journey";
2
+ import type { PreApprovalAnalyzer } from "./pre-approval.js";
3
+ /**
4
+ * #434 — the Readiness section of every review sheet (`journey|job|persona review --readiness`, and
5
+ * every approval: `persona approve`, `job approve`, `journey promote`, `demo approve`), as two
6
+ * pre-approval analyzers kept visibly apart:
7
+ *
8
+ * 1. `readiness` — deterministic checks, each pass / warn / fail with a fix-it line: the links
9
+ * exist and are approved, the intent is complete, the lint passes, the mutation proof is known
10
+ * and current; a job's story parts; and the INCOSE GtWR writing rules (gtwr-rules.ts) on job
11
+ * stories and personas, each citing its rule id and characteristic. Blocking stays with the
12
+ * gates that already exist (lint errors → `--accept-weak`, unapproved links →
13
+ * `--accept-unvetted`, broken links → the catalog-links acknowledgment), so readiness never
14
+ * double-gates: none of its findings requires an acknowledgment.
15
+ * 2. `readiness-jev` — advisory Jev questions (typed Noul answers, each with its probability)
16
+ * through the judgment gateway. A low probability becomes "not ready because … (GtWR:
17
+ * <characteristic>)". Jev never decides: none of these findings requires an acknowledgment, and
18
+ * none changes an exit code. Without an advisor (no `--real`, no key) it reports why it skipped.
19
+ */
20
+ export declare const READINESS = "readiness";
21
+ export declare const READINESS_JEV = "readiness-jev";
22
+ /** A Jev probability below this is "not ready because …". */
23
+ export declare const READINESS_LOW_PROBABILITY = 0.5;
24
+ /** #434: one GtWR rule finding as a readiness finding (`gtwr:<rule>@<field>`), citing the rule and characteristic. */
25
+ export declare function gtwrFinding(q: QualityFinding): Finding;
26
+ /** #434: the deterministic readiness checks and GtWR rule findings. */
27
+ export declare const readinessAnalyzer: PreApprovalAnalyzer;
28
+ /** #434: the advisory Jev readiness questions (Noul, with probabilities). */
29
+ export declare const jevReadinessAnalyzer: PreApprovalAnalyzer;