opencode-plugin-flow 8.1.1 → 8.1.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  One short entry per release, written for users deciding whether to upgrade.
4
4
 
5
+ ## [8.1.2] - 2026-08-26
6
+
7
+ Long Grok eval turns no longer fail at Bun's implicit five-minute fetch cutoff.
8
+
9
+ - Eval OpenCode requests keep their cancellation and stall guards without Bun's
10
+ five-minute fetch cutoff.
11
+ - Hidden benchmark graders ignore property order and cover sparse, blank, or
12
+ empty Markdown.
13
+ - Release matrices now predeclare three attempts for 100% cases and ten for 90%
14
+ cases. They refuse an unpinned Bun before model calls and pass their measured
15
+ artifact directly to canary preparation. Windows handoff grading accepts the
16
+ exact command in natural instructions, not one fixed sentence shape.
17
+ - Inspect evals require one exact finding certificate in durable review state and
18
+ the final response.
19
+ - A final run with unsatisfied extra evidence now projects
20
+ `await-user-direction` before review and offers the declared environment,
21
+ deferred closure, or abandoned closure as explicit next moves.
22
+ - **Session v5 schema:** unchanged. Runtime commands and tools are unchanged.
23
+
24
+ Install or update:
25
+
26
+ ```bash
27
+ opencode plugin opencode-plugin-flow@8.1.2 --global --force
28
+ ```
29
+
5
30
  ## [8.1.1] - 2026-08-21
6
31
 
7
32
  A crashed host no longer wedges the session lock.
package/README.md CHANGED
@@ -40,7 +40,7 @@ expensive, and it is overhead when it is not.
40
40
  Install the exact npm release through OpenCode:
41
41
 
42
42
  ```bash
43
- opencode plugin opencode-plugin-flow@8.1.1 --global --force
43
+ opencode plugin opencode-plugin-flow@8.1.2 --global --force
44
44
  ```
45
45
 
46
46
  Omit `--global` for project scope. Version pins are exact and never update on
@@ -51,7 +51,7 @@ The equivalent manual project configuration is:
51
51
  ```json
52
52
  {
53
53
  "$schema": "https://opencode.ai/config.json",
54
- "plugin": ["opencode-plugin-flow@8.1.1"]
54
+ "plugin": ["opencode-plugin-flow@8.1.2"]
55
55
  }
56
56
  ```
57
57
 
package/dist/index.js CHANGED
@@ -468,9 +468,8 @@ Follow compact \`nextAction\` in this order:
468
468
  - \`flow_review_start\`: read execution status and continue at **Review**.
469
469
  - Any other action: report it and stop.
470
470
 
471
- Use execution status for active scope and revision. Stay inside the feature.
472
- Out-of-plan work stops. Use \`flow_feature_reset\` for a wrong design; do not
473
- layer retries.
471
+ Use execution status for scope and revision. Stay in the feature; reset a wrong
472
+ design instead of layering retries.
474
473
 
475
474
  ## Implement
476
475
 
@@ -495,6 +494,8 @@ A failed, incomplete, or source-drifted observation of a plan-listed command or
495
494
  of the declared gate command blocks review until that same command passes for
496
495
  current source.
497
496
 
497
+ A gate that cannot pass must ask the user to defer or abandon before returning.
498
+
498
499
  Every host-observed validation advances revision. The \`[flow-validation]\`
499
500
  marker reports \`passed\`, \`recordedRevision\`, and declared \`assertions\`. Use
500
501
  \`recordedRevision\` for the next \`flow_validation_start\`, or for
@@ -504,9 +505,6 @@ compact status before mutating.
504
505
  For the final feature, run the plan's gate command at broad scope after the
505
506
  last relevant edit.
506
507
 
507
- An evidence command that cannot pass withholds completed closure. Reach the
508
- passing command, or ask the user to choose deferred or abandoned closure.
509
-
510
508
  ## Review
511
509
 
512
510
  After successful applicable validation, call \`flow_review_start\` with a fresh
@@ -526,6 +524,9 @@ Follow \`nextAction\` with the one detail projection for routing, then print
526
524
  compact \`findingsDigest\` as the user-facing list. The runtime already weighs
527
525
  \`failedReviewCount\` and \`blockedFeature.scopeBlocker\`.
528
526
 
527
+ - Running \`await-user-direction\` means plan evidence is unsatisfied. Offer its
528
+ command byte-for-byte and environment, defer, or abandon. Do not review or reset.
529
+
529
530
  - Ready \`await-user-direction\` has no blocked run left to reset. Identify the
530
531
  planned feature whose latest relevant reviewed outcome remains failed and
531
532
  checkpoint unless the current aligned request explicitly authorizes its
@@ -1449,10 +1450,14 @@ function assertDeclaredEvidence(plan) {
1449
1450
  fail('A saved plan must declare exactly one `evidence` entry with `scope: "gate"`: the exact canonical command every broad observation then has to run.');
1450
1451
  }
1451
1452
  if (plan.evidence.some((entry) => entry.platform === undefined)) {
1452
- fail("Every `evidence` entry must declare `platform`: the operating system that can observe it (`win32`, `darwin`, or `linux`), or `other` when the missing environment is a service, credential, setting, or device rather than an OS.");
1453
+ fail("Every `evidence` entry must declare `platform`: `win32`, `darwin`, `linux`, or `other` for non-OS evidence.");
1453
1454
  }
1454
1455
  if (plan.evidence.some((entry) => entry.assertions === undefined)) {
1455
- fail("Every `evidence` entry must declare `assertions`: the test case names whose passing is that observation. Declare an empty list when the evidence is not a test result.");
1456
+ fail("Every `evidence` entry must declare `assertions`; use an empty list for non-test evidence.");
1457
+ }
1458
+ const gatePlatform = gates[0]?.platform;
1459
+ if (gatePlatform !== "other" && plan.evidence.some((entry) => entry.scope === "extra" && entry.platform === gatePlatform)) {
1460
+ fail("Extra OS evidence must use a different platform from the gate.");
1456
1461
  }
1457
1462
  }
1458
1463
  function assertArtifacts(artifacts) {
@@ -2524,12 +2529,14 @@ function nextAction(session, pendingReviewSourceStale = false, blockedFeature =
2524
2529
  return pendingReviewSourceStale ? "flow_feature_reset" : "dispatch-flow-reviewer";
2525
2530
  }
2526
2531
  const finalRun = session.plan?.features.every((feature) => feature.id === run.featureId || isFeatureComplete(session, feature.id)) ?? false;
2527
- const hasPassingValidation = run.validations.some((validation) => isValidationEligible(validation) && isValidationFresh(session, run, validation) && (!finalRun || validation.scope === "broad"));
2528
- if (!hasPassingValidation)
2532
+ const passingValidation = run.validations.findLast((validation) => isValidationEligible(validation) && isValidationFresh(session, run, validation) && (!finalRun || validation.scope === "broad"));
2533
+ if (!passingValidation)
2529
2534
  return "flow_validation_start";
2530
2535
  if (unresolvedVetoedCommands(session, run).length > 0) {
2531
2536
  return "flow_validation_start";
2532
2537
  }
2538
+ if (finalRun && unsatisfiedExtraEvidence(session, passingValidation.sourceDigest).length > 0)
2539
+ return "await-user-direction";
2533
2540
  return "flow_review_start";
2534
2541
  }
2535
2542
  function compactProjection(session, pendingReviewSourceStale = false) {
@@ -5203,4 +5210,4 @@ export {
5203
5210
  plugin_default as default
5204
5211
  };
5205
5212
 
5206
- //# debugId=619D876FEF6BBFAE64756E2164756E21
5213
+ //# debugId=11B6FFCD0C7840CD64756E2164756E21
package/dist/index.js.map CHANGED
@@ -17,13 +17,13 @@
17
17
  "import { MAX_VALIDATION_ID_LENGTH, MAX_VALIDATIONS_PER_RUN } from \"./limits.js\";\nimport type {\n\tEvidenceEntry,\n\tEvidencePlatform,\n\tFeatureId,\n\tFeatureRun,\n\tObservedAssertion,\n\tSession,\n\tSourceDigest,\n\tValidationIneligibleReason,\n\tValidationObservation,\n\tValidationScope,\n} from \"./session.js\";\nimport { planEvidence, planGate } from \"./session.js\";\nimport { assertionsSatisfied, unmetAssertions } from \"./test-results.js\";\nimport { FlowTransitionError } from \"./transition-error.js\";\n\nexport const VALIDATION_INELIGIBLE_REASONS = [\n\t\"source-drift\",\n\t\"exit-code-unavailable\",\n\t\"output-completeness-unknown\",\n] as const satisfies readonly ValidationIneligibleReason[];\n\n/**\n * The longest reason, so a capacity probe built from it stays an upper bound on\n * the serialized size of any real observation.\n */\nexport const LONGEST_VALIDATION_INELIGIBLE_REASON =\n\tVALIDATION_INELIGIBLE_REASONS.reduce((longest, reason) =>\n\t\treason.length > longest.length ? reason : longest,\n\t);\n\n/** Comparable host identities; `other` retains the command-only rule. */\nexport const EVIDENCE_PLATFORMS = [\n\t\"win32\",\n\t\"darwin\",\n\t\"linux\",\n\t\"other\",\n] as const satisfies readonly EvidencePlatform[];\n\n/** The longest platform, for the same capacity-probe reason. */\nexport const LONGEST_EVIDENCE_PLATFORM = EVIDENCE_PLATFORMS.reduce(\n\t(longest, platform) =>\n\t\tplatform.length > longest.length ? platform : longest,\n);\n\n/** Unknown hosts normalize to `other` and never match a declared OS. */\nexport function normalizeEvidencePlatform(value: string): EvidencePlatform {\n\treturn (\n\t\tEVIDENCE_PLATFORMS.find(\n\t\t\t(platform) => platform !== \"other\" && platform === value,\n\t\t) ?? \"other\"\n\t);\n}\n\nexport function isValidationEligible(\n\tobservation: ValidationObservation,\n\tsourceDigest?: SourceDigest,\n): boolean {\n\treturn (\n\t\tobservation.ineligibleReason === undefined &&\n\t\tobservation.exitCode === 0 &&\n\t\tobservation.outputComplete &&\n\t\t(sourceDigest === undefined || observation.sourceDigest === sourceDigest)\n\t);\n}\n\n/** Explicit file/name filters contradict a `broad` claim (ADR 0009). */\nconst NARROWING_FLAGS = new Set([\n\t\"-t\",\n\t\"--test-name-pattern\",\n\t\"--testNamePattern\",\n\t\"-k\",\n\t\"-run\",\n\t\"--grep\",\n\t\"--filter\",\n]);\n\nexport function narrowingArguments(command: string): string[] {\n\treturn command\n\t\t.split(/\\s+/)\n\t\t.slice(1)\n\t\t.filter((token) => {\n\t\t\tif (token.startsWith(\"-\")) {\n\t\t\t\treturn NARROWING_FLAGS.has(token.split(\"=\")[0] ?? token);\n\t\t\t}\n\t\t\tconst file = token.split(\"/\").pop() ?? \"\";\n\t\t\treturn (\n\t\t\t\t/\\.(?:test|spec)\\./.test(file) ||\n\t\t\t\t/_test\\.[a-z]+$/.test(file) ||\n\t\t\t\t/^test_.+\\.py$/.test(file)\n\t\t\t);\n\t\t});\n}\n\n/** Case names come only from the approved plan (ADR 0012). */\nexport function declaredAssertions(\n\tsession: Session,\n\tcommand: string,\n): string[] {\n\treturn [\n\t\t...new Set(\n\t\t\tplanEvidence(session.plan)\n\t\t\t\t.filter((entry) => entry.command === command)\n\t\t\t\t.flatMap((entry) => entry.assertions ?? []),\n\t\t),\n\t];\n}\n\nfunction sameAssertions(\n\tleft: readonly ObservedAssertion[] | undefined,\n\tright: readonly ObservedAssertion[] | undefined,\n): boolean {\n\tconst serialize = (value: readonly ObservedAssertion[] | undefined) =>\n\t\tJSON.stringify(\n\t\t\t(value ?? []).map((assertion) => [assertion.name, assertion.status]),\n\t\t);\n\treturn serialize(left) === serialize(right);\n}\n\nexport function recordValidation(\n\tsession: Session,\n\tinput: Readonly<{\n\t\tcaptureId: string;\n\t\tfeatureId: FeatureId;\n\t\trunId: string;\n\t\tscope: ValidationScope;\n\t\tcommand: string;\n\t\tsourceDigest: SourceDigest;\n\t\texitCode: number | null;\n\t\toutputDigest: SourceDigest;\n\t\toutputComplete: boolean;\n\t\thostPlatform?: EvidencePlatform | undefined;\n\t\tresultsPath?: string | undefined;\n\t\tobservedAssertions?: ObservedAssertion[] | undefined;\n\t\tineligibleReason?: ValidationObservation[\"ineligibleReason\"];\n\t}>,\n): Readonly<{\n\tsession: Session;\n\tvalue: ValidationObservation;\n\treplayed: boolean;\n}> {\n\tif (\n\t\tinput.captureId.length < 1 ||\n\t\tinput.captureId.length > MAX_VALIDATION_ID_LENGTH\n\t) {\n\t\tthrow new FlowTransitionError(\n\t\t\t`Validation capture id must contain 1-${MAX_VALIDATION_ID_LENGTH} characters.`,\n\t\t);\n\t}\n\tif (input.exitCode === null && input.ineligibleReason === undefined) {\n\t\tthrow new FlowTransitionError(\n\t\t\t\"An observation without an exit code must record an ineligible reason.\",\n\t\t);\n\t}\n\tconst prior = session.runs\n\t\t.flatMap((run) => run.validations)\n\t\t.find((validation) => validation.id === input.captureId);\n\tif (prior) {\n\t\tif (\n\t\t\tprior.featureId !== input.featureId ||\n\t\t\tprior.runId !== input.runId ||\n\t\t\tprior.scope !== input.scope ||\n\t\t\tprior.command !== input.command ||\n\t\t\tprior.sourceDigest !== input.sourceDigest ||\n\t\t\tprior.exitCode !== input.exitCode ||\n\t\t\tprior.outputDigest !== input.outputDigest ||\n\t\t\tprior.outputComplete !== input.outputComplete ||\n\t\t\tprior.hostPlatform !== input.hostPlatform ||\n\t\t\tprior.resultsPath !== input.resultsPath ||\n\t\t\t!sameAssertions(prior.observedAssertions, input.observedAssertions) ||\n\t\t\tprior.ineligibleReason !== input.ineligibleReason\n\t\t) {\n\t\t\tthrow new FlowTransitionError(\n\t\t\t\t\"Validation capture id was already used for a different observation.\",\n\t\t\t);\n\t\t}\n\t\treturn { session, value: prior, replayed: true };\n\t}\n\tif (session.closure) {\n\t\tthrow new FlowTransitionError(\n\t\t\t\"This Flow session is closed and archive-only.\",\n\t\t);\n\t}\n\tconst run = session.runs.find((candidate) => candidate.state === \"active\");\n\tif (!run || run.id !== input.runId || run.featureId !== input.featureId) {\n\t\tthrow new FlowTransitionError(\n\t\t\t\"Validation no longer belongs to the active feature run.\",\n\t\t);\n\t}\n\tif (run.reviews.length > 0) {\n\t\tthrow new FlowTransitionError(\n\t\t\t\"Validation cannot be recorded after review has begun.\",\n\t\t);\n\t}\n\tif (run.validations.length >= MAX_VALIDATIONS_PER_RUN) {\n\t\tthrow new FlowTransitionError(\n\t\t\t`A feature run may contain at most ${MAX_VALIDATIONS_PER_RUN} validation observations.`,\n\t\t);\n\t}\n\tif (input.scope === \"broad\") {\n\t\tconst narrowing = narrowingArguments(input.command);\n\t\tif (narrowing.length > 0) {\n\t\t\tthrow new FlowTransitionError(\n\t\t\t\t`A broad observation cannot select which tests it runs (${narrowing.join(\", \")}). Arm the repository's canonical gate, or record this command as focused.`,\n\t\t\t);\n\t\t}\n\t\tconst gate = planGate(session.plan);\n\t\tif (gate !== undefined && input.command !== gate) {\n\t\t\tthrow new FlowTransitionError(\n\t\t\t\t`A broad observation must run the plan-declared canonical gate (${gate}). Arm that exact command, or record this one as focused.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst revision = session.revision + 1;\n\tconst observation: ValidationObservation = {\n\t\tid: input.captureId,\n\t\tfeatureId: input.featureId,\n\t\trunId: input.runId,\n\t\tscope: input.scope,\n\t\tcommand: input.command,\n\t\tsourceDigest: input.sourceDigest,\n\t\texitCode: input.exitCode,\n\t\toutputDigest: input.outputDigest,\n\t\toutputComplete: input.outputComplete,\n\t\trecordedRevision: revision,\n\t\t...(input.hostPlatform ? { hostPlatform: input.hostPlatform } : {}),\n\t\t...(input.resultsPath ? { resultsPath: input.resultsPath } : {}),\n\t\t...(input.observedAssertions && input.observedAssertions.length > 0\n\t\t\t? { observedAssertions: input.observedAssertions }\n\t\t\t: {}),\n\t\t...(input.ineligibleReason\n\t\t\t? { ineligibleReason: input.ineligibleReason }\n\t\t\t: {}),\n\t};\n\tconst draft = structuredClone(session);\n\treturn {\n\t\tsession: {\n\t\t\t...draft,\n\t\t\trevision,\n\t\t\truns: draft.runs.map((candidate) =>\n\t\t\t\tcandidate.id === run.id\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...candidate,\n\t\t\t\t\t\t\tvalidations: [...candidate.validations, observation],\n\t\t\t\t\t\t}\n\t\t\t\t\t: candidate,\n\t\t\t),\n\t\t},\n\t\tvalue: observation,\n\t\treplayed: false,\n\t};\n}\n\n/** `other` and legacy entries retain the command-only rule. */\nfunction isObservedOnDeclaredPlatform(\n\tentry: EvidenceEntry,\n\tobservation: ValidationObservation,\n): boolean {\n\tif (entry.platform === undefined || entry.platform === \"other\") return true;\n\treturn observation.hostPlatform === entry.platform;\n}\n\n/** Distinguishes missing, wrong-host, and named-case evidence for recovery. */\nexport function evidenceRefusal(\n\tsession: Session,\n\tentry: EvidenceEntry,\n\tsourceDigest?: SourceDigest,\n): string {\n\tconst eligible = session.runs\n\t\t.flatMap((run) => run.validations)\n\t\t.filter(\n\t\t\t(observation) =>\n\t\t\t\tobservation.command === entry.command &&\n\t\t\t\tisValidationEligible(observation, sourceDigest),\n\t\t);\n\tconst wrongHosts = [\n\t\t...new Set(\n\t\t\teligible\n\t\t\t\t.filter(\n\t\t\t\t\t(observation) => !isObservedOnDeclaredPlatform(entry, observation),\n\t\t\t\t)\n\t\t\t\t.map((observation) => observation.hostPlatform ?? \"an unrecorded host\"),\n\t\t),\n\t];\n\t// Latest right-host result determines which declared cases remain unmet.\n\tconst unmet = eligible\n\t\t.filter((observation) => isObservedOnDeclaredPlatform(entry, observation))\n\t\t.toSorted((left, right) => left.recordedRevision - right.recordedRevision)\n\t\t.map((observation) =>\n\t\t\tunmetAssertions(entry.assertions ?? [], observation.observedAssertions),\n\t\t)\n\t\t.filter((names) => names.length > 0)\n\t\t.at(-1);\n\tconst needs =\n\t\tentry.platform === undefined || entry.platform === \"other\"\n\t\t\t? entry.environment\n\t\t\t: `${entry.environment} on ${entry.platform}`;\n\tconst detail =\n\t\twrongHosts.length > 0\n\t\t\t? `passed on ${wrongHosts.join(\", \")} but this entry declares ${entry.platform}, so that run observed something else — a skipped case exits zero too`\n\t\t\t: unmet\n\t\t\t\t? `passed on ${entry.platform ?? \"the declared host\"} but reported no passing result for ${unmet.join(\", \")}; arm it again with \\`resultsPath\\` naming the report the command writes, and make those cases run`\n\t\t\t\t: `needs ${needs}`;\n\treturn `${JSON.stringify(entry.command)} (${detail}, for ${entry.requirement})`;\n}\n\n/** Exact command, host, named-case, eligibility, and optional-source check. */\nexport function unsatisfiedEvidence(\n\tsession: Session,\n\tsourceDigest?: SourceDigest,\n): EvidenceEntry[] {\n\tconst declared = planEvidence(session.plan);\n\tif (declared.length === 0) return [];\n\tconst observed = session.runs.flatMap((run) => run.validations);\n\treturn declared.filter(\n\t\t(entry) =>\n\t\t\t!observed.some(\n\t\t\t\t(observation) =>\n\t\t\t\t\tobservation.command === entry.command &&\n\t\t\t\t\tisObservedOnDeclaredPlatform(entry, observation) &&\n\t\t\t\t\tassertionsSatisfied(\n\t\t\t\t\t\tentry.assertions ?? [],\n\t\t\t\t\t\tobservation.observedAssertions,\n\t\t\t\t\t) &&\n\t\t\t\t\tisValidationEligible(observation, sourceDigest),\n\t\t\t),\n\t);\n}\n\nexport function unsatisfiedExtraEvidence(\n\tsession: Session,\n\tsourceDigest?: SourceDigest,\n): EvidenceEntry[] {\n\treturn unsatisfiedEvidence(session, sourceDigest).filter(\n\t\t(entry) => entry.scope === \"extra\",\n\t);\n}\n\nexport function isValidationFresh(\n\tsession: Session,\n\trun: FeatureRun,\n\tobservation: ValidationObservation,\n): boolean {\n\treturn session.runs\n\t\t.filter((candidate) => candidate.featureId === run.featureId)\n\t\t.flatMap((candidate) => candidate.validations)\n\t\t.every(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.command !== observation.command ||\n\t\t\t\tisValidationEligible(candidate) ||\n\t\t\t\tcandidate.recordedRevision < observation.recordedRevision,\n\t\t);\n}\n\n/**\n * Commands whose latest evidence blocks review until that exact command passes\n * again for the current workspace content.\n *\n * Three sets qualify. A plan-listed command is matched against `feature.validation`\n * by exact string; that field is free-form text and models write prose in it,\n * matching no command, so this half often does not engage although its tests,\n * which pass bare commands, do (`PROSE_VALIDATION` in\n * `tests/domain-transitions.test.ts`). The `scope: \"gate\"` command is the same\n * rule on a field that is always a command, so the plan half now engages for the\n * one command that matters most, whatever scope its observation was labelled.\n *\n * A command an observation claimed at `broad` scope qualifies whatever the plan\n * says, because `scope` is the one field in a recorded observation that nothing\n * corroborates: capture byte-matches the armed command and takes the exit code\n * from the host, so a caller cannot misreport either, but it can label a narrow\n * command `broad`. Without this, a failing repository gate was discharged by\n * arming something smaller under the same label -- every field of the resulting\n * record true, and the gate never passed. Review only ever needed *a* broad pass,\n * so it accepted that one.\n *\n * Only the reviewed feature's runs are searched, and that is enough: every review\n * consults this, an approved plan is immutable, and `completed` closure needs a\n * passing run for every feature. So a red gate observed under one feature blocks\n * that feature until the same command passes -- it cannot be walked away from by\n * moving to another.\n */\nexport function unresolvedVetoedCommands(\n\tsession: Session,\n\trun: FeatureRun,\n\tsourceDigest?: SourceDigest,\n): string[] {\n\tconst gate = planGate(session.plan);\n\tconst planned =\n\t\tsession.approval === \"approved\"\n\t\t\t? [\n\t\t\t\t\t...(session.plan?.features.find(\n\t\t\t\t\t\t(candidate) => candidate.id === run.featureId,\n\t\t\t\t\t)?.validation ?? []),\n\t\t\t\t\t...(gate === undefined ? [] : [gate]),\n\t\t\t\t]\n\t\t\t: [];\n\tconst failed = session.runs\n\t\t.filter((candidate) => candidate.featureId === run.featureId)\n\t\t.flatMap((candidate) => candidate.validations)\n\t\t.filter((observation) => !isValidationEligible(observation));\n\tconst commands = [\n\t\t...new Set(\n\t\t\tfailed\n\t\t\t\t.filter(\n\t\t\t\t\t(observation) =>\n\t\t\t\t\t\tobservation.scope === \"broad\" ||\n\t\t\t\t\t\tplanned.includes(observation.command),\n\t\t\t\t)\n\t\t\t\t.map((observation) => observation.command),\n\t\t),\n\t];\n\treturn commands.filter(\n\t\t(command) =>\n\t\t\t!run.validations.some(\n\t\t\t\t(observation) =>\n\t\t\t\t\tobservation.command === command &&\n\t\t\t\t\tisValidationEligible(observation, sourceDigest) &&\n\t\t\t\t\tisValidationFresh(session, run, observation),\n\t\t\t),\n\t);\n}\n",
18
18
  "import { isFeatureId } from \"./feature-id.js\";\nimport { MAX_PLAN_BYTES, MAX_PLAN_FEATURES } from \"./limits.js\";\nimport type { Plan } from \"./session.js\";\nimport { planGate } from \"./session.js\";\nimport { narrowingArguments } from \"./validation.js\";\n\nfunction gateIssue(gate: string): string | null {\n\tconst narrowing = narrowingArguments(gate);\n\treturn narrowing.length === 0\n\t\t? null\n\t\t: `The plan's canonical gate cannot select which tests it runs (${narrowing.join(\", \")}).`;\n}\n\nexport function planIssue(plan: Plan): string | null {\n\tconst gate = planGate(plan);\n\tif (gate !== undefined) {\n\t\tconst issue = gateIssue(gate);\n\t\tif (issue) return issue;\n\t}\n\tif (Buffer.byteLength(JSON.stringify(plan), \"utf8\") > MAX_PLAN_BYTES) {\n\t\treturn `A plan may contain at most ${MAX_PLAN_BYTES} UTF-8 bytes.`;\n\t}\n\tif (plan.features.length < 1 || plan.features.length > MAX_PLAN_FEATURES) {\n\t\treturn `A plan must contain 1-${MAX_PLAN_FEATURES} features.`;\n\t}\n\tconst ids = new Set<string>();\n\tfor (const feature of plan.features) {\n\t\tif (!isFeatureId(feature.id)) return `Invalid feature id '${feature.id}'.`;\n\t\tif (ids.has(feature.id)) return `Duplicate feature id '${feature.id}'.`;\n\t\tids.add(feature.id);\n\t}\n\tfor (const feature of plan.features) {\n\t\tfor (const dependency of feature.dependsOn) {\n\t\t\tif (!ids.has(dependency)) {\n\t\t\t\treturn `Feature '${feature.id}' depends on unknown feature '${dependency}'.`;\n\t\t\t}\n\t\t\tif (dependency === feature.id) {\n\t\t\t\treturn `Feature '${feature.id}' cannot depend on itself.`;\n\t\t\t}\n\t\t}\n\t}\n\tconst indegree = new Map(plan.features.map((feature) => [feature.id, 0]));\n\tconst children = new Map(\n\t\tplan.features.map((feature) => [feature.id, [] as string[]]),\n\t);\n\tfor (const feature of plan.features) {\n\t\tfor (const dependency of new Set(feature.dependsOn)) {\n\t\t\tindegree.set(feature.id, (indegree.get(feature.id) ?? 0) + 1);\n\t\t\tchildren.get(dependency)?.push(feature.id);\n\t\t}\n\t}\n\tconst queue = [...indegree.entries()]\n\t\t.filter(([, degree]) => degree === 0)\n\t\t.map(([id]) => id);\n\tlet visited = 0;\n\twhile (queue.length > 0) {\n\t\tconst id = queue.shift();\n\t\tif (!id) continue;\n\t\tvisited += 1;\n\t\tfor (const child of children.get(id) ?? []) {\n\t\t\tconst next = (indegree.get(child) ?? 0) - 1;\n\t\t\tindegree.set(child, next);\n\t\t\tif (next === 0) queue.push(child);\n\t\t}\n\t}\n\treturn visited === plan.features.length\n\t\t? null\n\t\t: \"The plan dependency graph is cyclic.\";\n}\n",
19
19
  "import type { FeatureId, ReviewFinding, Session } from \"./session.js\";\n\n/**\n * `<feature-id>.R<assignment-createdRevision>-<NN>`.\n *\n * This grammar used to live only in reviewer prose, hand-assembled into each\n * finding summary, with no code that produced or read it. Recurrence tracking\n * therefore depended entirely on a model reproducing a string convention. The\n * runtime now issues and checks these ids.\n */\nexport const FINDING_ID_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*\\.R\\d+-\\d{2,4}$/;\nexport const FINDING_ID_MESSAGE =\n\t\"Finding ids look like 'feature-id.R12-01'; omit the field for a new issue and the runtime assigns one.\";\n\nexport function findingIdPrefix(\n\tfeatureId: FeatureId,\n\tcreatedRevision: number,\n): string {\n\treturn `${featureId}.R${createdRevision}`;\n}\n\nfunction sequence(index: number): string {\n\treturn String(index).padStart(2, \"0\");\n}\n\n/**\n * Fills in an id for every finding that does not carry one, continuing after the\n * highest sequence already used under this prefix so a reused prior id can never\n * collide with a freshly issued one.\n */\nexport function assignFindingIds(\n\tfindings: readonly ReviewFinding[],\n\tprefix: string,\n): ReviewFinding[] {\n\tlet next = findings.reduce((highest, finding) => {\n\t\tif (!finding.findingId?.startsWith(`${prefix}-`)) return highest;\n\t\tconst used = Number(finding.findingId.slice(prefix.length + 1));\n\t\treturn Number.isSafeInteger(used) && used > highest ? used : highest;\n\t}, 0);\n\treturn findings.map((finding) => {\n\t\tif (finding.findingId) return { ...finding };\n\t\tnext += 1;\n\t\treturn { ...finding, findingId: `${prefix}-${sequence(next)}` };\n\t});\n}\n\n/** A live prior finding, carrying the text the next reviewer has to re-check. */\nexport type LivePriorFinding = Readonly<{\n\tfindingId: string;\n\tseverity: ReviewFinding[\"severity\"];\n\tsummary: string;\n\tevidence?: string | undefined;\n}>;\n\n/**\n * Prior findings this feature must still carry forward.\n *\n * A failed review keeps every finding already live and adds its own. A passing\n * review proves the repair of anything it does not repeat, so only what it\n * reports stays live. Where a later review restates a live id, its wording and\n * severity win, because that is the disposition the next reviewer must check.\n * Nothing here depends on the manager restating history in prose.\n */\nexport function livePriorFindings(\n\tsession: Session,\n\tfeatureId: FeatureId,\n): LivePriorFinding[] {\n\tlet live: LivePriorFinding[] = [];\n\tfor (const run of session.runs) {\n\t\tif (run.featureId !== featureId) continue;\n\t\tfor (const review of run.reviews) {\n\t\t\tconst result = review.result;\n\t\t\tif (!result) continue;\n\t\t\tconst reported = result.findings.flatMap((finding) =>\n\t\t\t\tfinding.findingId\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfindingId: finding.findingId,\n\t\t\t\t\t\t\t\tseverity: finding.severity,\n\t\t\t\t\t\t\t\tsummary: finding.summary,\n\t\t\t\t\t\t\t\tevidence: finding.evidence,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]\n\t\t\t\t\t: [],\n\t\t\t);\n\t\t\tif (result.verdict !== \"failed\") {\n\t\t\t\tlive = reported;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst restated = new Map(\n\t\t\t\treported.map((finding) => [finding.findingId, finding]),\n\t\t\t);\n\t\t\tlive = [\n\t\t\t\t...live.map((finding) => restated.get(finding.findingId) ?? finding),\n\t\t\t\t...reported.filter(\n\t\t\t\t\t(finding) =>\n\t\t\t\t\t\t!live.some((held) => held.findingId === finding.findingId),\n\t\t\t\t),\n\t\t\t];\n\t\t}\n\t}\n\treturn live;\n}\n\n/** Live prior finding ids, in the order they first became live. */\nexport function liveFindingIds(\n\tsession: Session,\n\tfeatureId: FeatureId,\n): string[] {\n\treturn livePriorFindings(session, featureId).map(\n\t\t(finding) => finding.findingId,\n\t);\n}\n\n/** Live prior ids missing from a submitted failed result. */\nexport function droppedFindingIds(\n\tsession: Session,\n\tfeatureId: FeatureId,\n\tfindings: readonly ReviewFinding[],\n): string[] {\n\tconst submitted = new Set(\n\t\tfindings.flatMap((finding) =>\n\t\t\tfinding.findingId ? [finding.findingId] : [],\n\t\t),\n\t);\n\treturn liveFindingIds(session, featureId).filter((id) => !submitted.has(id));\n}\n",
20
- "import { artifactIssues } from \"./artifact.js\";\nimport { MAX_REVIEW_FINDINGS, MAX_SESSION_ID_LENGTH } from \"./limits.js\";\nimport { operationInputDigest } from \"./operation.js\";\nimport { planIssue } from \"./plan.js\";\nimport {\n\tassignFindingIds,\n\tdroppedFindingIds,\n\tfindingIdPrefix,\n} from \"./review-findings.js\";\nimport type {\n\tArtifact,\n\tFeatureId,\n\tFeatureRun,\n\tOperationKind,\n\tOperationRecord,\n\tPlan,\n\tReviewAssignment,\n\tReviewResult,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tSourceDigest,\n} from \"./session.js\";\nimport {\n\tcurrentRun,\n\tfeatureKind,\n\tfirstBlockedRun,\n\tplanEvidence,\n\treviewResultSemanticIssues,\n} from \"./session.js\";\nimport { FlowTransitionError } from \"./transition-error.js\";\nimport {\n\tevidenceRefusal,\n\tisValidationEligible,\n\tisValidationFresh,\n\tunresolvedVetoedCommands,\n\tunsatisfiedExtraEvidence,\n} from \"./validation.js\";\n\nexport { FlowTransitionError } from \"./transition-error.js\";\nexport { recordValidation } from \"./validation.js\";\nexport type TransitionEnvironment = Readonly<{\n\tnewId: (kind: \"session\" | \"run\" | \"validation\" | \"review\") => string;\n}>;\ntype MutationResult<T> = Readonly<{\n\tsession: Session;\n\tvalue: T;\n\treplayed: boolean;\n}>;\ntype PlanSaveInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tgoal: string;\n\tplan: Plan;\n}>;\ntype GuardedFeatureInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tfeatureId: FeatureId;\n}>;\ntype FeatureResetInput = GuardedFeatureInput &\n\tReadonly<{ nextFeatureId?: FeatureId | undefined }>;\ntype ReviewStartInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tsourceDigest: SourceDigest;\n\t\tartifactsChanged: Artifact[];\n\t\tpacket: Readonly<{\n\t\t\tsummary: string;\n\t\t\triskLenses: string[];\n\t\t}>;\n\t}>;\nexport type FeatureCompleteInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tassignmentId: string;\n\t\tsummary: string;\n\t\tresult: Omit<ReviewResult, \"recordedRevision\">;\n\t}>;\ntype SessionCloseInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tsessionId: string;\n\tkind: SessionClosure[\"kind\"];\n\tsummary: string;\n}>;\n\nfunction fail(message: string): never {\n\tthrow new FlowTransitionError(message);\n}\n\nfunction copy<T>(value: T): T {\n\treturn structuredClone(value);\n}\n\nfunction assertOperationId(operationId: string): void {\n\tif (!/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/.test(operationId)) {\n\t\tfail(\"operationId must be 1-128 stable identifier characters.\");\n\t}\n}\n\nfunction existingOperation(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n): OperationRecord | null {\n\tassertOperationId(operationId);\n\tconst existing = session.operations.find((item) => item.id === operationId);\n\tif (!existing) return null;\n\tif (\n\t\texisting.kind !== kind ||\n\t\texisting.inputDigest !== operationInputDigest(input)\n\t) {\n\t\tfail(\"operationId was already used for different work.\");\n\t}\n\treturn existing;\n}\n\nfunction assertRevision(session: Session, expectedRevision: number): void {\n\tif (expectedRevision !== session.revision) {\n\t\tfail(\n\t\t\t`Stale revision ${expectedRevision}; refresh Flow status and use revision ${session.revision}.`,\n\t\t);\n\t}\n}\n\nfunction commit(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n\tchange: (draft: Session, revision: number) => Session,\n\tentityId?: string,\n): Session {\n\tconst revision = session.revision + 1;\n\tconst draft = copy(session);\n\tconst changed = change(draft, revision);\n\treturn {\n\t\t...changed,\n\t\trevision,\n\t\toperations: [\n\t\t\t...changed.operations,\n\t\t\t{\n\t\t\t\tid: operationId,\n\t\t\t\tkind,\n\t\t\t\tinputDigest: operationInputDigest(input),\n\t\t\t\tcommittedRevision: revision,\n\t\t\t\t...(entityId ? { entityId } : {}),\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction assertMutable(session: Session): void {\n\tif (session.closure) fail(\"This Flow session is closed and archive-only.\");\n}\n\nfunction assertPlan(plan: Plan): void {\n\tconst issue = planIssue(plan);\n\tif (issue) fail(issue);\n}\n\nfunction assertDeclaredEvidence(plan: Plan): void {\n\tif (plan.evidence === undefined) {\n\t\tfail(\n\t\t\t'A saved plan must declare `evidence`: one `scope: \"gate\"` command that validates the whole repository, plus every extra observation this host may be unable to produce. Extra entries may be an empty list when the goal is fully observable here.',\n\t\t);\n\t}\n\tconst gates = planEvidence(plan).filter((entry) => entry.scope === \"gate\");\n\tif (gates.length !== 1) {\n\t\tfail(\n\t\t\t'A saved plan must declare exactly one `evidence` entry with `scope: \"gate\"`: the exact canonical command every broad observation then has to run.',\n\t\t);\n\t}\n\tif (plan.evidence.some((entry) => entry.platform === undefined)) {\n\t\tfail(\n\t\t\t\"Every `evidence` entry must declare `platform`: the operating system that can observe it (`win32`, `darwin`, or `linux`), or `other` when the missing environment is a service, credential, setting, or device rather than an OS.\",\n\t\t);\n\t}\n\tif (plan.evidence.some((entry) => entry.assertions === undefined)) {\n\t\tfail(\n\t\t\t\"Every `evidence` entry must declare `assertions`: the test case names whose passing is that observation. Declare an empty list when the evidence is not a test result.\",\n\t\t);\n\t}\n}\n\nfunction assertArtifacts(artifacts: readonly Artifact[]): void {\n\tconst issue = artifactIssues(artifacts)[0];\n\tif (issue) fail(issue);\n}\n\nexport function activeRun(session: Session): FeatureRun | null {\n\treturn session.runs.find((run) => run.state === \"active\") ?? null;\n}\n\nexport function isFeatureComplete(\n\tsession: Session,\n\tfeatureId: string,\n): boolean {\n\treturn currentRun(session, featureId)?.state === \"completed\";\n}\n\nexport function sessionStatus(session: Session): SessionStatus {\n\tif (session.closure) return \"closed\";\n\tif (!session.plan || session.approval === \"pending\") return \"planning\";\n\tif (activeRun(session)) return \"running\";\n\tif (\n\t\tsession.plan.features.some(\n\t\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t\t)\n\t) {\n\t\treturn \"blocked\";\n\t}\n\tif (\n\t\tsession.plan.features.every((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t)\n\t) {\n\t\treturn \"completed\";\n\t}\n\treturn \"ready\";\n}\n\nexport function savePlan(\n\tsession: Session | null,\n\tinput: PlanSaveInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<null> {\n\tassertPlan(input.plan);\n\tif (!session) {\n\t\tassertDeclaredEvidence(input.plan);\n\t\tif (input.expectedRevision !== 0) {\n\t\t\tfail(\"A new Flow session must start from expectedRevision 0.\");\n\t\t}\n\t\tconst sessionId = environment.newId(\"session\");\n\t\tif (sessionId.length > MAX_SESSION_ID_LENGTH)\n\t\t\tfail(\"Generated session id is too long.\");\n\t\tconst initial: Session = {\n\t\t\tversion: 5,\n\t\t\tid: sessionId,\n\t\t\trevision: 0,\n\t\t\tgoal: input.goal,\n\t\t\tapproval: \"pending\",\n\t\t\tplan: null,\n\t\t\truns: [],\n\t\t\toperations: [],\n\t\t\tclosure: null,\n\t\t};\n\t\treturn {\n\t\t\tsession: commit(\n\t\t\t\tinitial,\n\t\t\t\t\"plan-save\",\n\t\t\t\tinput.operationId,\n\t\t\t\tinput,\n\t\t\t\t(draft) => ({\n\t\t\t\t\t...draft,\n\t\t\t\t\tplan: copy(input.plan),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvalue: null,\n\t\t\treplayed: false,\n\t\t};\n\t}\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-save\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertDeclaredEvidence(input.plan);\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (session.approval === \"approved\") fail(\"An approved plan is immutable.\");\n\tif (session.goal !== input.goal) {\n\t\tfail(\"Close the active session before starting a different goal.\");\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-save\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tplan: copy(input.plan),\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nexport function approvePlan(\n\tsession: Session,\n\tinput: Readonly<{ operationId: string; expectedRevision: number }>,\n): MutationResult<null> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-approve\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan) fail(\"Save a plan before approving it.\");\n\tif (session.approval === \"approved\") fail(\"The plan is already approved.\");\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-approve\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tapproval: \"approved\",\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nfunction requiresExplicitRetry(\n\tsession: Session,\n\tfeatureId: FeatureId,\n): boolean {\n\tconst reviewed = session.runs.findLast(\n\t\t(run) => run.featureId === featureId && run.reviews.at(-1)?.result,\n\t);\n\treturn reviewed?.reviews.at(-1)?.result?.verdict === \"failed\";\n}\n\nexport function nextRunnableFeature(session: Session): FeatureId | null {\n\tif (!session.plan) return null;\n\tfor (const feature of session.plan.features) {\n\t\tconst state = currentRun(session, feature.id)?.state;\n\t\tif (state === \"completed\") continue;\n\t\tif (state === \"blocked\") continue;\n\t\tif (requiresExplicitRetry(session, feature.id)) continue;\n\t\tif (feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\t\treturn feature.id;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction assertFeatureRunnable(session: Session, featureId: FeatureId): void {\n\tconst feature = session.plan?.features.find((item) => item.id === featureId);\n\tif (!feature) fail(`Unknown feature '${featureId}'.`);\n\tconst existing = currentRun(session, featureId);\n\tif (existing?.state === \"completed\")\n\t\tfail(`Feature '${featureId}' is complete.`);\n\tif (existing?.state === \"blocked\") {\n\t\tfail(`Reset blocked feature '${featureId}' before retrying it.`);\n\t}\n\tif (!feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\tfail(`Feature '${featureId}' has incomplete dependencies.`);\n\t}\n}\n\nfunction createRun(\n\tsession: Session,\n\tfeatureId: FeatureId,\n\tenvironment: TransitionEnvironment,\n): FeatureRun {\n\treturn {\n\t\tid: environment.newId(\"run\"),\n\t\tfeatureId,\n\t\tattempt:\n\t\t\tsession.runs.filter((run) => run.featureId === featureId).length + 1,\n\t\tstate: \"active\",\n\t\tstartedRevision: session.revision + 1,\n\t\tsummary: null,\n\t\tartifactsChanged: [],\n\t\tvalidations: [],\n\t\treviews: [],\n\t};\n}\n\nexport function startRun(\n\tsession: Session,\n\tinput: Readonly<{\n\t\toperationId: string;\n\t\texpectedRevision: number;\n\t\tfeatureId?: FeatureId | undefined;\n\t}>,\n\tenvironment: TransitionEnvironment,\n): MutationResult<FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Approve a plan before starting execution.\");\n\t}\n\tif (activeRun(session)) fail(\"Only one feature run may be active.\");\n\tconst blocked = firstBlockedRun(session);\n\tif (blocked) {\n\t\tfail(\n\t\t\t`Reset blocked feature '${blocked.featureId}' before starting another run.`,\n\t\t);\n\t}\n\tconst featureId = input.featureId ?? nextRunnableFeature(session);\n\tif (!featureId) fail(\"No runnable feature is available.\");\n\tassertFeatureRunnable(session, featureId);\n\tconst created = createRun(session, featureId, environment);\n\tconst next = commit(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft) => ({ ...draft, runs: [...draft.runs, created] }),\n\t\tcreated.id,\n\t);\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction isFinalFeatureRun(session: Session, run: FeatureRun): boolean {\n\tif (!session.plan) return false;\n\treturn session.plan.features.every(\n\t\t(feature) =>\n\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t);\n}\n\nexport function startReview(\n\tsession: Session,\n\tinput: ReviewStartInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<ReviewAssignment> {\n\tassertArtifacts(input.artifactsChanged);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst assignment = session.runs\n\t\t\t.flatMap((run) => run.reviews)\n\t\t\t.find((review) => review.id === replay.entityId);\n\t\tif (!assignment) fail(\"The replayed review assignment no longer exists.\");\n\t\treturn { session, value: assignment, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Review must target the active feature run.\");\n\t}\n\tif (run.reviews.some((review) => review.result === null)) {\n\t\tfail(\"The active run already has a pending review assignment.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Reset the feature before starting another full review.\");\n\t}\n\tconst unresolved = unresolvedVetoedCommands(session, run, input.sourceDigest);\n\tif (unresolved.length > 0) {\n\t\tfail(\n\t\t\t`Review requires passing these exact commands for the current workspace content: ${unresolved.map((command) => JSON.stringify(command)).join(\", \")}. A different command cannot discharge one that failed.`,\n\t\t);\n\t}\n\tconst kind = isFinalFeatureRun(session, run) ? \"final\" : \"feature\";\n\tif (kind === \"final\") {\n\t\tconst unsatisfied = unsatisfiedExtraEvidence(session, input.sourceDigest);\n\t\tif (unsatisfied.length > 0) {\n\t\t\tfail(\n\t\t\t\t`Final review requires the plan's declared evidence to pass for the current workspace content: ${unsatisfied\n\t\t\t\t\t.map((entry) => evidenceRefusal(session, entry, input.sourceDigest))\n\t\t\t\t\t.join(\n\t\t\t\t\t\t\", \",\n\t\t\t\t\t)}. A substitute observation cannot discharge it. If the environment is unavailable, ask the user to choose deferred or abandoned closure.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst applicable = run.validations.filter(\n\t\t(validation) =>\n\t\t\tisValidationEligible(validation, input.sourceDigest) &&\n\t\t\tisValidationFresh(session, run, validation),\n\t);\n\tconst hasRequiredValidation =\n\t\tkind === \"feature\"\n\t\t\t? applicable.length > 0\n\t\t\t: applicable.some((validation) => validation.scope === \"broad\");\n\tif (!hasRequiredValidation) {\n\t\tfail(\n\t\t\tkind === \"final\"\n\t\t\t\t? \"Final review requires passing broad validation for the current workspace content.\"\n\t\t\t\t: \"Review requires passing validation for the current workspace content.\",\n\t\t);\n\t}\n\tconst assignmentId = environment.newId(\"review\");\n\tlet created: ReviewAssignment | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: assignmentId,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\tfeatureId: input.featureId,\n\t\t\t\trunId: run.id,\n\t\t\t\tkind,\n\t\t\t\tsourceDigest: input.sourceDigest,\n\t\t\t\tvalidationIds: applicable.map((validation) => validation.id),\n\t\t\t\tpacket: {\n\t\t\t\t\tsummary: input.packet.summary,\n\t\t\t\t\triskLenses: [...input.packet.riskLenses],\n\t\t\t\t},\n\t\t\t\tcreatedRevision: revision,\n\t\t\t\tresult: null,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((item) =>\n\t\t\t\t\titem.id === run.id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\tartifactsChanged: input.artifactsChanged.map((artifact) => ({\n\t\t\t\t\t\t\t\t\t...artifact,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\treviews: [...item.reviews, created as ReviewAssignment],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: item,\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\tassignmentId,\n\t);\n\tif (!created) fail(\"Flow could not create the review assignment.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction assertReviewResult(\n\tresult: Omit<ReviewResult, \"recordedRevision\">,\n): void {\n\tif (result.findings.length > MAX_REVIEW_FINDINGS) {\n\t\tfail(`A review may contain at most ${MAX_REVIEW_FINDINGS} findings.`);\n\t}\n\tconst issue = reviewResultSemanticIssues(result)[0];\n\tif (issue) fail(issue.message);\n}\n\nexport function completeFeature(\n\tsession: Session,\n\tinput: FeatureCompleteInput,\n): MutationResult<FeatureRun> {\n\tassertReviewResult(input.result);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed feature run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Completion must target the active feature run.\");\n\t}\n\tconst assignment = run.reviews.find(\n\t\t(review) => review.id === input.assignmentId,\n\t);\n\tif (!assignment || assignment.result) {\n\t\tfail(\"Completion requires the active pending review assignment.\");\n\t}\n\t// A failed verdict must carry every still-live prior id, so recurrence history\n\t// survives a retry without the manager restating it in packet prose.\n\tif (input.result.verdict === \"failed\") {\n\t\tconst dropped = droppedFindingIds(\n\t\t\tsession,\n\t\t\trun.featureId,\n\t\t\tinput.result.findings,\n\t\t);\n\t\tif (dropped.length > 0) {\n\t\t\tfail(\n\t\t\t\t`A failed result must carry every live prior finding id forward; missing ${dropped.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst findings = assignFindingIds(\n\t\tinput.result.findings,\n\t\tfindingIdPrefix(run.featureId, assignment.createdRevision),\n\t);\n\tconst inspect =\n\t\tfeatureKind(\n\t\t\tsession.plan?.features.find((feature) => feature.id === run.featureId),\n\t\t) === \"inspect\";\n\tconst next = commit(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => ({\n\t\t\t...draft,\n\t\t\truns: draft.runs.map((item) => {\n\t\t\t\tif (item.id !== run.id) return item;\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tstate:\n\t\t\t\t\t\tinput.result.verdict === \"passed\" || inspect\n\t\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t\t: \"blocked\",\n\t\t\t\t\tsummary: input.summary,\n\t\t\t\t\treviews: item.reviews.map((review) =>\n\t\t\t\t\t\treview.id === assignment.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...review,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t...input.result,\n\t\t\t\t\t\t\t\t\t\tfindings,\n\t\t\t\t\t\t\t\t\t\trecordedRevision: revision,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: review,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t}),\n\t\trun.id,\n\t);\n\tconst completed = next.runs.find((item) => item.id === run.id);\n\tif (!completed) fail(\"Flow could not update the feature run.\");\n\treturn { session: next, value: completed, replayed: false };\n}\n\nfunction dependentClosure(plan: Plan, featureId: string): Set<string> {\n\tconst affected = new Set([featureId]);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const feature of plan.features) {\n\t\t\tif (\n\t\t\t\t!affected.has(feature.id) &&\n\t\t\t\tfeature.dependsOn.some((dependency) => affected.has(dependency))\n\t\t\t) {\n\t\t\t\taffected.add(feature.id);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn affected;\n}\n\nexport function resetFeature(\n\tsession: Session,\n\tinput: FeatureResetInput,\n\tenvironment?: TransitionEnvironment,\n): MutationResult<string[] | FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-reset\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.plan) fail(\"The replayed reset has no approved plan.\");\n\t\tif (replay.entityId) {\n\t\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\t\tif (!run) fail(\"The replayed reset run no longer exists.\");\n\t\t\treturn { session, value: run, replayed: true };\n\t\t}\n\t\treturn {\n\t\t\tsession,\n\t\t\tvalue: [...dependentClosure(session.plan, input.featureId)],\n\t\t\treplayed: true,\n\t\t};\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Reset requires an approved plan.\");\n\t}\n\tif (\n\t\t!session.plan.features.some((feature) => feature.id === input.featureId)\n\t) {\n\t\tfail(`Unknown feature '${input.featureId}'.`);\n\t}\n\tconst selected = currentRun(session, input.featureId);\n\tif (\n\t\t!selected ||\n\t\t(selected.state !== \"active\" && selected.state !== \"blocked\")\n\t) {\n\t\tfail(\"Reset requires an active or blocked feature run.\");\n\t}\n\tconst affected = dependentClosure(session.plan, input.featureId);\n\tconst runs = copy(session.runs).map((run) =>\n\t\taffected.has(run.featureId) && run.state !== \"superseded\"\n\t\t\t? { ...run, state: \"superseded\" as const }\n\t\t\t: run,\n\t);\n\tlet created: FeatureRun | null = null;\n\tif (input.nextFeatureId !== undefined) {\n\t\tif (!environment)\n\t\t\tfail(\"Atomic reset and run start requires an environment.\");\n\t\tconst reset = { ...session, runs };\n\t\tif (\n\t\t\tsession.plan.features.some(\n\t\t\t\t(feature) => currentRun(reset, feature.id)?.state === \"blocked\",\n\t\t\t)\n\t\t) {\n\t\t\tfail(\"Reset remaining blocked features before starting another run.\");\n\t\t}\n\t\tassertFeatureRunnable(reset, input.nextFeatureId);\n\t\tcreated = createRun(reset, input.nextFeatureId, environment);\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"feature-reset\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\truns: created ? [...runs, created] : runs,\n\t\t\t}),\n\t\t\tcreated?.id,\n\t\t),\n\t\tvalue: created ?? [...affected],\n\t\treplayed: false,\n\t};\n}\n\nexport function closeSession(\n\tsession: Session,\n\tinput: SessionCloseInput,\n): MutationResult<SessionClosure> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.closure) fail(\"The replayed closure is missing.\");\n\t\treturn { session, value: session.closure, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tif (session.id !== input.sessionId)\n\t\tfail(\"sessionId does not match active state.\");\n\tassertMutable(session);\n\tif (input.kind === \"completed\" && sessionStatus(session) !== \"completed\") {\n\t\tfail(\"A completed close requires every planned feature to be complete.\");\n\t}\n\tif (input.kind === \"completed\") {\n\t\tconst unsatisfied = unsatisfiedExtraEvidence(session);\n\t\tif (unsatisfied.length > 0) {\n\t\t\tfail(\n\t\t\t\t`A completed close requires the plan's declared evidence to have passed: ${unsatisfied\n\t\t\t\t\t.map((entry) => evidenceRefusal(session, entry))\n\t\t\t\t\t.join(\", \")}. Close deferred or abandoned instead.`,\n\t\t\t);\n\t\t}\n\t}\n\tlet closure: SessionClosure | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tclosure = {\n\t\t\t\tkind: input.kind,\n\t\t\t\tsummary: input.summary,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\trecordedRevision: revision,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\trun.state === \"active\" ? { ...run, state: \"superseded\" } : run,\n\t\t\t\t),\n\t\t\t\tclosure,\n\t\t\t};\n\t\t},\n\t);\n\tif (!closure) fail(\"Flow could not record the closure.\");\n\treturn { session: next, value: closure, replayed: false };\n}\n",
20
+ "import { artifactIssues } from \"./artifact.js\";\nimport { MAX_REVIEW_FINDINGS, MAX_SESSION_ID_LENGTH } from \"./limits.js\";\nimport { operationInputDigest } from \"./operation.js\";\nimport { planIssue } from \"./plan.js\";\nimport {\n\tassignFindingIds,\n\tdroppedFindingIds,\n\tfindingIdPrefix,\n} from \"./review-findings.js\";\nimport type {\n\tArtifact,\n\tFeatureId,\n\tFeatureRun,\n\tOperationKind,\n\tOperationRecord,\n\tPlan,\n\tReviewAssignment,\n\tReviewResult,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tSourceDigest,\n} from \"./session.js\";\nimport {\n\tcurrentRun,\n\tfeatureKind,\n\tfirstBlockedRun,\n\tplanEvidence,\n\treviewResultSemanticIssues,\n} from \"./session.js\";\nimport { FlowTransitionError } from \"./transition-error.js\";\nimport {\n\tevidenceRefusal,\n\tisValidationEligible,\n\tisValidationFresh,\n\tunresolvedVetoedCommands,\n\tunsatisfiedExtraEvidence,\n} from \"./validation.js\";\n\nexport { FlowTransitionError } from \"./transition-error.js\";\nexport { recordValidation } from \"./validation.js\";\nexport type TransitionEnvironment = Readonly<{\n\tnewId: (kind: \"session\" | \"run\" | \"validation\" | \"review\") => string;\n}>;\ntype MutationResult<T> = Readonly<{\n\tsession: Session;\n\tvalue: T;\n\treplayed: boolean;\n}>;\ntype PlanSaveInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tgoal: string;\n\tplan: Plan;\n}>;\ntype GuardedFeatureInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tfeatureId: FeatureId;\n}>;\ntype FeatureResetInput = GuardedFeatureInput &\n\tReadonly<{ nextFeatureId?: FeatureId | undefined }>;\ntype ReviewStartInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tsourceDigest: SourceDigest;\n\t\tartifactsChanged: Artifact[];\n\t\tpacket: Readonly<{\n\t\t\tsummary: string;\n\t\t\triskLenses: string[];\n\t\t}>;\n\t}>;\nexport type FeatureCompleteInput = GuardedFeatureInput &\n\tReadonly<{\n\t\tassignmentId: string;\n\t\tsummary: string;\n\t\tresult: Omit<ReviewResult, \"recordedRevision\">;\n\t}>;\ntype SessionCloseInput = Readonly<{\n\toperationId: string;\n\texpectedRevision: number;\n\tsessionId: string;\n\tkind: SessionClosure[\"kind\"];\n\tsummary: string;\n}>;\n\nfunction fail(message: string): never {\n\tthrow new FlowTransitionError(message);\n}\n\nfunction copy<T>(value: T): T {\n\treturn structuredClone(value);\n}\n\nfunction assertOperationId(operationId: string): void {\n\tif (!/^[a-zA-Z0-9][a-zA-Z0-9._:-]{0,127}$/.test(operationId)) {\n\t\tfail(\"operationId must be 1-128 stable identifier characters.\");\n\t}\n}\n\nfunction existingOperation(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n): OperationRecord | null {\n\tassertOperationId(operationId);\n\tconst existing = session.operations.find((item) => item.id === operationId);\n\tif (!existing) return null;\n\tif (\n\t\texisting.kind !== kind ||\n\t\texisting.inputDigest !== operationInputDigest(input)\n\t) {\n\t\tfail(\"operationId was already used for different work.\");\n\t}\n\treturn existing;\n}\n\nfunction assertRevision(session: Session, expectedRevision: number): void {\n\tif (expectedRevision !== session.revision) {\n\t\tfail(\n\t\t\t`Stale revision ${expectedRevision}; refresh Flow status and use revision ${session.revision}.`,\n\t\t);\n\t}\n}\n\nfunction commit(\n\tsession: Session,\n\tkind: OperationKind,\n\toperationId: string,\n\tinput: unknown,\n\tchange: (draft: Session, revision: number) => Session,\n\tentityId?: string,\n): Session {\n\tconst revision = session.revision + 1;\n\tconst draft = copy(session);\n\tconst changed = change(draft, revision);\n\treturn {\n\t\t...changed,\n\t\trevision,\n\t\toperations: [\n\t\t\t...changed.operations,\n\t\t\t{\n\t\t\t\tid: operationId,\n\t\t\t\tkind,\n\t\t\t\tinputDigest: operationInputDigest(input),\n\t\t\t\tcommittedRevision: revision,\n\t\t\t\t...(entityId ? { entityId } : {}),\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction assertMutable(session: Session): void {\n\tif (session.closure) fail(\"This Flow session is closed and archive-only.\");\n}\n\nfunction assertPlan(plan: Plan): void {\n\tconst issue = planIssue(plan);\n\tif (issue) fail(issue);\n}\n\nfunction assertDeclaredEvidence(plan: Plan): void {\n\tif (plan.evidence === undefined) {\n\t\tfail(\n\t\t\t'A saved plan must declare `evidence`: one `scope: \"gate\"` command that validates the whole repository, plus every extra observation this host may be unable to produce. Extra entries may be an empty list when the goal is fully observable here.',\n\t\t);\n\t}\n\tconst gates = planEvidence(plan).filter((entry) => entry.scope === \"gate\");\n\tif (gates.length !== 1) {\n\t\tfail(\n\t\t\t'A saved plan must declare exactly one `evidence` entry with `scope: \"gate\"`: the exact canonical command every broad observation then has to run.',\n\t\t);\n\t}\n\tif (plan.evidence.some((entry) => entry.platform === undefined)) {\n\t\tfail(\n\t\t\t\"Every `evidence` entry must declare `platform`: `win32`, `darwin`, `linux`, or `other` for non-OS evidence.\",\n\t\t);\n\t}\n\tif (plan.evidence.some((entry) => entry.assertions === undefined)) {\n\t\tfail(\n\t\t\t\"Every `evidence` entry must declare `assertions`; use an empty list for non-test evidence.\",\n\t\t);\n\t}\n\tconst gatePlatform = gates[0]?.platform;\n\tif (\n\t\tgatePlatform !== \"other\" &&\n\t\tplan.evidence.some(\n\t\t\t(entry) => entry.scope === \"extra\" && entry.platform === gatePlatform,\n\t\t)\n\t) {\n\t\tfail(\"Extra OS evidence must use a different platform from the gate.\");\n\t}\n}\n\nfunction assertArtifacts(artifacts: readonly Artifact[]): void {\n\tconst issue = artifactIssues(artifacts)[0];\n\tif (issue) fail(issue);\n}\n\nexport function activeRun(session: Session): FeatureRun | null {\n\treturn session.runs.find((run) => run.state === \"active\") ?? null;\n}\n\nexport function isFeatureComplete(\n\tsession: Session,\n\tfeatureId: string,\n): boolean {\n\treturn currentRun(session, featureId)?.state === \"completed\";\n}\n\nexport function sessionStatus(session: Session): SessionStatus {\n\tif (session.closure) return \"closed\";\n\tif (!session.plan || session.approval === \"pending\") return \"planning\";\n\tif (activeRun(session)) return \"running\";\n\tif (\n\t\tsession.plan.features.some(\n\t\t\t(feature) => currentRun(session, feature.id)?.state === \"blocked\",\n\t\t)\n\t) {\n\t\treturn \"blocked\";\n\t}\n\tif (\n\t\tsession.plan.features.every((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t)\n\t) {\n\t\treturn \"completed\";\n\t}\n\treturn \"ready\";\n}\n\nexport function savePlan(\n\tsession: Session | null,\n\tinput: PlanSaveInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<null> {\n\tassertPlan(input.plan);\n\tif (!session) {\n\t\tassertDeclaredEvidence(input.plan);\n\t\tif (input.expectedRevision !== 0) {\n\t\t\tfail(\"A new Flow session must start from expectedRevision 0.\");\n\t\t}\n\t\tconst sessionId = environment.newId(\"session\");\n\t\tif (sessionId.length > MAX_SESSION_ID_LENGTH)\n\t\t\tfail(\"Generated session id is too long.\");\n\t\tconst initial: Session = {\n\t\t\tversion: 5,\n\t\t\tid: sessionId,\n\t\t\trevision: 0,\n\t\t\tgoal: input.goal,\n\t\t\tapproval: \"pending\",\n\t\t\tplan: null,\n\t\t\truns: [],\n\t\t\toperations: [],\n\t\t\tclosure: null,\n\t\t};\n\t\treturn {\n\t\t\tsession: commit(\n\t\t\t\tinitial,\n\t\t\t\t\"plan-save\",\n\t\t\t\tinput.operationId,\n\t\t\t\tinput,\n\t\t\t\t(draft) => ({\n\t\t\t\t\t...draft,\n\t\t\t\t\tplan: copy(input.plan),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tvalue: null,\n\t\t\treplayed: false,\n\t\t};\n\t}\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-save\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertDeclaredEvidence(input.plan);\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (session.approval === \"approved\") fail(\"An approved plan is immutable.\");\n\tif (session.goal !== input.goal) {\n\t\tfail(\"Close the active session before starting a different goal.\");\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-save\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tplan: copy(input.plan),\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nexport function approvePlan(\n\tsession: Session,\n\tinput: Readonly<{ operationId: string; expectedRevision: number }>,\n): MutationResult<null> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"plan-approve\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) return { session, value: null, replayed: true };\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan) fail(\"Save a plan before approving it.\");\n\tif (session.approval === \"approved\") fail(\"The plan is already approved.\");\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"plan-approve\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\tapproval: \"approved\",\n\t\t\t}),\n\t\t),\n\t\tvalue: null,\n\t\treplayed: false,\n\t};\n}\n\nfunction requiresExplicitRetry(\n\tsession: Session,\n\tfeatureId: FeatureId,\n): boolean {\n\tconst reviewed = session.runs.findLast(\n\t\t(run) => run.featureId === featureId && run.reviews.at(-1)?.result,\n\t);\n\treturn reviewed?.reviews.at(-1)?.result?.verdict === \"failed\";\n}\n\nexport function nextRunnableFeature(session: Session): FeatureId | null {\n\tif (!session.plan) return null;\n\tfor (const feature of session.plan.features) {\n\t\tconst state = currentRun(session, feature.id)?.state;\n\t\tif (state === \"completed\") continue;\n\t\tif (state === \"blocked\") continue;\n\t\tif (requiresExplicitRetry(session, feature.id)) continue;\n\t\tif (feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\t\treturn feature.id;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction assertFeatureRunnable(session: Session, featureId: FeatureId): void {\n\tconst feature = session.plan?.features.find((item) => item.id === featureId);\n\tif (!feature) fail(`Unknown feature '${featureId}'.`);\n\tconst existing = currentRun(session, featureId);\n\tif (existing?.state === \"completed\")\n\t\tfail(`Feature '${featureId}' is complete.`);\n\tif (existing?.state === \"blocked\") {\n\t\tfail(`Reset blocked feature '${featureId}' before retrying it.`);\n\t}\n\tif (!feature.dependsOn.every((id) => isFeatureComplete(session, id))) {\n\t\tfail(`Feature '${featureId}' has incomplete dependencies.`);\n\t}\n}\n\nfunction createRun(\n\tsession: Session,\n\tfeatureId: FeatureId,\n\tenvironment: TransitionEnvironment,\n): FeatureRun {\n\treturn {\n\t\tid: environment.newId(\"run\"),\n\t\tfeatureId,\n\t\tattempt:\n\t\t\tsession.runs.filter((run) => run.featureId === featureId).length + 1,\n\t\tstate: \"active\",\n\t\tstartedRevision: session.revision + 1,\n\t\tsummary: null,\n\t\tartifactsChanged: [],\n\t\tvalidations: [],\n\t\treviews: [],\n\t};\n}\n\nexport function startRun(\n\tsession: Session,\n\tinput: Readonly<{\n\t\toperationId: string;\n\t\texpectedRevision: number;\n\t\tfeatureId?: FeatureId | undefined;\n\t}>,\n\tenvironment: TransitionEnvironment,\n): MutationResult<FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Approve a plan before starting execution.\");\n\t}\n\tif (activeRun(session)) fail(\"Only one feature run may be active.\");\n\tconst blocked = firstBlockedRun(session);\n\tif (blocked) {\n\t\tfail(\n\t\t\t`Reset blocked feature '${blocked.featureId}' before starting another run.`,\n\t\t);\n\t}\n\tconst featureId = input.featureId ?? nextRunnableFeature(session);\n\tif (!featureId) fail(\"No runnable feature is available.\");\n\tassertFeatureRunnable(session, featureId);\n\tconst created = createRun(session, featureId, environment);\n\tconst next = commit(\n\t\tsession,\n\t\t\"run-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft) => ({ ...draft, runs: [...draft.runs, created] }),\n\t\tcreated.id,\n\t);\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction isFinalFeatureRun(session: Session, run: FeatureRun): boolean {\n\tif (!session.plan) return false;\n\treturn session.plan.features.every(\n\t\t(feature) =>\n\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t);\n}\n\nexport function startReview(\n\tsession: Session,\n\tinput: ReviewStartInput,\n\tenvironment: TransitionEnvironment,\n): MutationResult<ReviewAssignment> {\n\tassertArtifacts(input.artifactsChanged);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst assignment = session.runs\n\t\t\t.flatMap((run) => run.reviews)\n\t\t\t.find((review) => review.id === replay.entityId);\n\t\tif (!assignment) fail(\"The replayed review assignment no longer exists.\");\n\t\treturn { session, value: assignment, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Review must target the active feature run.\");\n\t}\n\tif (run.reviews.some((review) => review.result === null)) {\n\t\tfail(\"The active run already has a pending review assignment.\");\n\t}\n\tif (run.reviews.length > 0) {\n\t\tfail(\"Reset the feature before starting another full review.\");\n\t}\n\tconst unresolved = unresolvedVetoedCommands(session, run, input.sourceDigest);\n\tif (unresolved.length > 0) {\n\t\tfail(\n\t\t\t`Review requires passing these exact commands for the current workspace content: ${unresolved.map((command) => JSON.stringify(command)).join(\", \")}. A different command cannot discharge one that failed.`,\n\t\t);\n\t}\n\tconst kind = isFinalFeatureRun(session, run) ? \"final\" : \"feature\";\n\tif (kind === \"final\") {\n\t\tconst unsatisfied = unsatisfiedExtraEvidence(session, input.sourceDigest);\n\t\tif (unsatisfied.length > 0) {\n\t\t\tfail(\n\t\t\t\t`Final review requires the plan's declared evidence to pass for the current workspace content: ${unsatisfied\n\t\t\t\t\t.map((entry) => evidenceRefusal(session, entry, input.sourceDigest))\n\t\t\t\t\t.join(\n\t\t\t\t\t\t\", \",\n\t\t\t\t\t)}. A substitute observation cannot discharge it. If the environment is unavailable, ask the user to choose deferred or abandoned closure.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst applicable = run.validations.filter(\n\t\t(validation) =>\n\t\t\tisValidationEligible(validation, input.sourceDigest) &&\n\t\t\tisValidationFresh(session, run, validation),\n\t);\n\tconst hasRequiredValidation =\n\t\tkind === \"feature\"\n\t\t\t? applicable.length > 0\n\t\t\t: applicable.some((validation) => validation.scope === \"broad\");\n\tif (!hasRequiredValidation) {\n\t\tfail(\n\t\t\tkind === \"final\"\n\t\t\t\t? \"Final review requires passing broad validation for the current workspace content.\"\n\t\t\t\t: \"Review requires passing validation for the current workspace content.\",\n\t\t);\n\t}\n\tconst assignmentId = environment.newId(\"review\");\n\tlet created: ReviewAssignment | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"review-start\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tcreated = {\n\t\t\t\tid: assignmentId,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\tfeatureId: input.featureId,\n\t\t\t\trunId: run.id,\n\t\t\t\tkind,\n\t\t\t\tsourceDigest: input.sourceDigest,\n\t\t\t\tvalidationIds: applicable.map((validation) => validation.id),\n\t\t\t\tpacket: {\n\t\t\t\t\tsummary: input.packet.summary,\n\t\t\t\t\triskLenses: [...input.packet.riskLenses],\n\t\t\t\t},\n\t\t\t\tcreatedRevision: revision,\n\t\t\t\tresult: null,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((item) =>\n\t\t\t\t\titem.id === run.id\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...item,\n\t\t\t\t\t\t\t\tartifactsChanged: input.artifactsChanged.map((artifact) => ({\n\t\t\t\t\t\t\t\t\t...artifact,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t\treviews: [...item.reviews, created as ReviewAssignment],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: item,\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\tassignmentId,\n\t);\n\tif (!created) fail(\"Flow could not create the review assignment.\");\n\treturn { session: next, value: created, replayed: false };\n}\n\nfunction assertReviewResult(\n\tresult: Omit<ReviewResult, \"recordedRevision\">,\n): void {\n\tif (result.findings.length > MAX_REVIEW_FINDINGS) {\n\t\tfail(`A review may contain at most ${MAX_REVIEW_FINDINGS} findings.`);\n\t}\n\tconst issue = reviewResultSemanticIssues(result)[0];\n\tif (issue) fail(issue.message);\n}\n\nexport function completeFeature(\n\tsession: Session,\n\tinput: FeatureCompleteInput,\n): MutationResult<FeatureRun> {\n\tassertReviewResult(input.result);\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\tif (!run) fail(\"The replayed feature run no longer exists.\");\n\t\treturn { session, value: run, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tconst run = activeRun(session);\n\tif (!run || run.featureId !== input.featureId) {\n\t\tfail(\"Completion must target the active feature run.\");\n\t}\n\tconst assignment = run.reviews.find(\n\t\t(review) => review.id === input.assignmentId,\n\t);\n\tif (!assignment || assignment.result) {\n\t\tfail(\"Completion requires the active pending review assignment.\");\n\t}\n\t// A failed verdict must carry every still-live prior id, so recurrence history\n\t// survives a retry without the manager restating it in packet prose.\n\tif (input.result.verdict === \"failed\") {\n\t\tconst dropped = droppedFindingIds(\n\t\t\tsession,\n\t\t\trun.featureId,\n\t\t\tinput.result.findings,\n\t\t);\n\t\tif (dropped.length > 0) {\n\t\t\tfail(\n\t\t\t\t`A failed result must carry every live prior finding id forward; missing ${dropped.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t}\n\tconst findings = assignFindingIds(\n\t\tinput.result.findings,\n\t\tfindingIdPrefix(run.featureId, assignment.createdRevision),\n\t);\n\tconst inspect =\n\t\tfeatureKind(\n\t\t\tsession.plan?.features.find((feature) => feature.id === run.featureId),\n\t\t) === \"inspect\";\n\tconst next = commit(\n\t\tsession,\n\t\t\"feature-complete\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => ({\n\t\t\t...draft,\n\t\t\truns: draft.runs.map((item) => {\n\t\t\t\tif (item.id !== run.id) return item;\n\t\t\t\treturn {\n\t\t\t\t\t...item,\n\t\t\t\t\tstate:\n\t\t\t\t\t\tinput.result.verdict === \"passed\" || inspect\n\t\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t\t: \"blocked\",\n\t\t\t\t\tsummary: input.summary,\n\t\t\t\t\treviews: item.reviews.map((review) =>\n\t\t\t\t\t\treview.id === assignment.id\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...review,\n\t\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t\t...input.result,\n\t\t\t\t\t\t\t\t\t\tfindings,\n\t\t\t\t\t\t\t\t\t\trecordedRevision: revision,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: review,\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t}),\n\t\t}),\n\t\trun.id,\n\t);\n\tconst completed = next.runs.find((item) => item.id === run.id);\n\tif (!completed) fail(\"Flow could not update the feature run.\");\n\treturn { session: next, value: completed, replayed: false };\n}\n\nfunction dependentClosure(plan: Plan, featureId: string): Set<string> {\n\tconst affected = new Set([featureId]);\n\tlet changed = true;\n\twhile (changed) {\n\t\tchanged = false;\n\t\tfor (const feature of plan.features) {\n\t\t\tif (\n\t\t\t\t!affected.has(feature.id) &&\n\t\t\t\tfeature.dependsOn.some((dependency) => affected.has(dependency))\n\t\t\t) {\n\t\t\t\taffected.add(feature.id);\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn affected;\n}\n\nexport function resetFeature(\n\tsession: Session,\n\tinput: FeatureResetInput,\n\tenvironment?: TransitionEnvironment,\n): MutationResult<string[] | FeatureRun> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"feature-reset\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.plan) fail(\"The replayed reset has no approved plan.\");\n\t\tif (replay.entityId) {\n\t\t\tconst run = session.runs.find((item) => item.id === replay.entityId);\n\t\t\tif (!run) fail(\"The replayed reset run no longer exists.\");\n\t\t\treturn { session, value: run, replayed: true };\n\t\t}\n\t\treturn {\n\t\t\tsession,\n\t\t\tvalue: [...dependentClosure(session.plan, input.featureId)],\n\t\t\treplayed: true,\n\t\t};\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tassertMutable(session);\n\tif (!session.plan || session.approval !== \"approved\") {\n\t\tfail(\"Reset requires an approved plan.\");\n\t}\n\tif (\n\t\t!session.plan.features.some((feature) => feature.id === input.featureId)\n\t) {\n\t\tfail(`Unknown feature '${input.featureId}'.`);\n\t}\n\tconst selected = currentRun(session, input.featureId);\n\tif (\n\t\t!selected ||\n\t\t(selected.state !== \"active\" && selected.state !== \"blocked\")\n\t) {\n\t\tfail(\"Reset requires an active or blocked feature run.\");\n\t}\n\tconst affected = dependentClosure(session.plan, input.featureId);\n\tconst runs = copy(session.runs).map((run) =>\n\t\taffected.has(run.featureId) && run.state !== \"superseded\"\n\t\t\t? { ...run, state: \"superseded\" as const }\n\t\t\t: run,\n\t);\n\tlet created: FeatureRun | null = null;\n\tif (input.nextFeatureId !== undefined) {\n\t\tif (!environment)\n\t\t\tfail(\"Atomic reset and run start requires an environment.\");\n\t\tconst reset = { ...session, runs };\n\t\tif (\n\t\t\tsession.plan.features.some(\n\t\t\t\t(feature) => currentRun(reset, feature.id)?.state === \"blocked\",\n\t\t\t)\n\t\t) {\n\t\t\tfail(\"Reset remaining blocked features before starting another run.\");\n\t\t}\n\t\tassertFeatureRunnable(reset, input.nextFeatureId);\n\t\tcreated = createRun(reset, input.nextFeatureId, environment);\n\t}\n\treturn {\n\t\tsession: commit(\n\t\t\tsession,\n\t\t\t\"feature-reset\",\n\t\t\tinput.operationId,\n\t\t\tinput,\n\t\t\t(draft) => ({\n\t\t\t\t...draft,\n\t\t\t\truns: created ? [...runs, created] : runs,\n\t\t\t}),\n\t\t\tcreated?.id,\n\t\t),\n\t\tvalue: created ?? [...affected],\n\t\treplayed: false,\n\t};\n}\n\nexport function closeSession(\n\tsession: Session,\n\tinput: SessionCloseInput,\n): MutationResult<SessionClosure> {\n\tconst replay = existingOperation(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t);\n\tif (replay) {\n\t\tif (!session.closure) fail(\"The replayed closure is missing.\");\n\t\treturn { session, value: session.closure, replayed: true };\n\t}\n\tassertRevision(session, input.expectedRevision);\n\tif (session.id !== input.sessionId)\n\t\tfail(\"sessionId does not match active state.\");\n\tassertMutable(session);\n\tif (input.kind === \"completed\" && sessionStatus(session) !== \"completed\") {\n\t\tfail(\"A completed close requires every planned feature to be complete.\");\n\t}\n\tif (input.kind === \"completed\") {\n\t\tconst unsatisfied = unsatisfiedExtraEvidence(session);\n\t\tif (unsatisfied.length > 0) {\n\t\t\tfail(\n\t\t\t\t`A completed close requires the plan's declared evidence to have passed: ${unsatisfied\n\t\t\t\t\t.map((entry) => evidenceRefusal(session, entry))\n\t\t\t\t\t.join(\", \")}. Close deferred or abandoned instead.`,\n\t\t\t);\n\t\t}\n\t}\n\tlet closure: SessionClosure | null = null;\n\tconst next = commit(\n\t\tsession,\n\t\t\"session-close\",\n\t\tinput.operationId,\n\t\tinput,\n\t\t(draft, revision) => {\n\t\t\tclosure = {\n\t\t\t\tkind: input.kind,\n\t\t\t\tsummary: input.summary,\n\t\t\t\toperationId: input.operationId,\n\t\t\t\trecordedRevision: revision,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...draft,\n\t\t\t\truns: draft.runs.map((run) =>\n\t\t\t\t\trun.state === \"active\" ? { ...run, state: \"superseded\" } : run,\n\t\t\t\t),\n\t\t\t\tclosure,\n\t\t\t};\n\t\t},\n\t);\n\tif (!closure) fail(\"Flow could not record the closure.\");\n\treturn { session: next, value: closure, replayed: false };\n}\n",
21
21
  "export class UnreadableFlowSessionError extends Error {\n\treadonly code = \"UNREADABLE_FLOW_SESSION\";\n\treadonly reason: string;\n\tconstructor(message: string, reason: string) {\n\t\tsuper(message);\n\t\tthis.name = \"UnreadableFlowSessionError\";\n\t\tthis.reason = reason;\n\t}\n}\n\nexport class UnsupportedFlowSessionVersionError extends Error {\n\treadonly code = \"UNSUPPORTED_FLOW_SESSION_VERSION\";\n\treadonly actualVersion: unknown;\n\tconstructor(actualVersion: unknown) {\n\t\tsuper(\n\t\t\t\"This Flow build supports only Session v5 active state. Close active older sessions before upgrading; archived history remains inert.\",\n\t\t);\n\t\tthis.name = \"UnsupportedFlowSessionVersionError\";\n\t\tthis.actualVersion = actualVersion;\n\t}\n}\n\nexport class ArchiveCollisionError extends Error {\n\treadonly code = \"FLOW_ARCHIVE_COLLISION\";\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"ArchiveCollisionError\";\n\t}\n}\n",
22
22
  "import { z } from \"zod\";\nimport { ARTIFACT_PATH_MESSAGE, isArtifactPath } from \"../domain/artifact.js\";\nimport {\n\tFEATURE_ID_MESSAGE,\n\tFEATURE_ID_PATTERN,\n} from \"../domain/feature-id.js\";\nimport {\n\tMAX_ARTIFACTS,\n\tMAX_DECLARED_ASSERTIONS,\n\tMAX_PATH_BYTES,\n\tMAX_PLAN_BYTES,\n\tMAX_PLAN_FEATURES,\n\tMAX_REVIEW_FINDINGS,\n\tMAX_SESSION_BYTES,\n\tMAX_SESSION_ID_LENGTH,\n\tMAX_TEXT_BYTES,\n\tMAX_VALIDATION_ID_LENGTH,\n\tMAX_VALIDATIONS_PER_RUN,\n} from \"../domain/limits.js\";\nimport {\n\tFINDING_ID_MESSAGE,\n\tFINDING_ID_PATTERN,\n} from \"../domain/review-findings.js\";\nimport type { Session, SourceDigest } from \"../domain/session.js\";\nimport { reviewResultSemanticIssues } from \"../domain/session.js\";\nimport { sessionInvariantIssues } from \"../domain/session-invariants.js\";\nimport {\n\tEVIDENCE_PLATFORMS,\n\tVALIDATION_INELIGIBLE_REASONS,\n} from \"../domain/validation.js\";\n\nconst encoder = new TextEncoder();\n\nfunction boundedText(\n\tlabel: string,\n\toptions?: { allowEmpty?: boolean; maxBytes?: number },\n) {\n\tconst maxBytes = options?.maxBytes ?? MAX_TEXT_BYTES;\n\treturn z\n\t\t.string()\n\t\t.trim()\n\t\t.refine(\n\t\t\t(value) => options?.allowEmpty || value.length > 0,\n\t\t\t`${label} cannot be empty.`,\n\t\t)\n\t\t.refine(\n\t\t\t(value) => encoder.encode(value).byteLength <= maxBytes,\n\t\t\t`${label} cannot exceed ${maxBytes} UTF-8 bytes.`,\n\t\t);\n}\n\nconst FeatureIdSchema = z\n\t.string()\n\t.max(MAX_SESSION_ID_LENGTH)\n\t.regex(FEATURE_ID_PATTERN, FEATURE_ID_MESSAGE);\nconst OperationIdSchema = z\n\t.string()\n\t.min(1)\n\t.max(128)\n\t.regex(/^[a-zA-Z0-9][a-zA-Z0-9._:-]*$/);\nconst ReviewAssignmentIdSchema = z.string().min(1).max(256);\nconst RunIdSchema = z.string().min(1).max(256);\nconst RevisionSchema = z.number().int().safe().nonnegative();\nconst SourceDigestSchema = z.custom<SourceDigest>(\n\t(value) => typeof value === \"string\" && /^sha256:[a-f0-9]{64}$/.test(value),\n\t\"Expected a sha256: content digest.\",\n);\n\nconst PlanFeatureSchema = z\n\t.object({\n\t\tid: FeatureIdSchema,\n\t\ttitle: boundedText(\"Feature title\"),\n\t\tsummary: boundedText(\"Feature summary\"),\n\t\ttargets: z\n\t\t\t.array(boundedText(\"Feature target\"))\n\t\t\t.max(MAX_PLAN_FEATURES)\n\t\t\t.default([]),\n\t\tvalidation: z\n\t\t\t.array(boundedText(\"Feature validation\"))\n\t\t\t.max(MAX_PLAN_FEATURES)\n\t\t\t.default([]),\n\t\tdependsOn: z.array(FeatureIdSchema).max(MAX_PLAN_FEATURES).default([]),\n\t\tkind: z.enum([\"change\", \"inspect\"]).optional(),\n\t})\n\t.strict();\n\nconst EvidenceEntrySchema = z\n\t.object({\n\t\trequirement: boundedText(\"Evidence requirement\"),\n\t\tenvironment: boundedText(\"Evidence environment\"),\n\t\tcommand: boundedText(\"Evidence command\"),\n\t\tscope: z.enum([\"gate\", \"extra\"]),\n\t\tplatform: z.enum(EVIDENCE_PLATFORMS).optional(),\n\t\tassertions: z\n\t\t\t.array(boundedText(\"Evidence assertion\"))\n\t\t\t.max(MAX_DECLARED_ASSERTIONS)\n\t\t\t.optional(),\n\t})\n\t.strict();\n\nconst ObservedAssertionSchema = z\n\t.object({\n\t\tname: boundedText(\"Observed assertion name\"),\n\t\tstatus: z.enum([\"passed\", \"failed\", \"skipped\", \"absent\"]),\n\t})\n\t.strict();\n\nconst PlanSchema = z\n\t.object({\n\t\tsummary: boundedText(\"Plan summary\"),\n\t\toverview: boundedText(\"Plan overview\"),\n\t\trequirements: z\n\t\t\t.array(boundedText(\"Plan requirement\"))\n\t\t\t.max(MAX_PLAN_FEATURES)\n\t\t\t.default([]),\n\t\tdecisions: z\n\t\t\t.array(boundedText(\"Plan decision\"))\n\t\t\t.max(MAX_PLAN_FEATURES)\n\t\t\t.default([]),\n\t\tfeatures: z.array(PlanFeatureSchema).min(1).max(MAX_PLAN_FEATURES),\n\t\tevidence: z.array(EvidenceEntrySchema).max(MAX_PLAN_FEATURES).optional(),\n\t})\n\t.strict()\n\t.superRefine((plan, context) => {\n\t\tif (encoder.encode(JSON.stringify(plan)).byteLength > MAX_PLAN_BYTES) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Plan cannot exceed ${MAX_PLAN_BYTES} UTF-8 bytes.`,\n\t\t\t});\n\t\t}\n\t});\n\nconst ReviewFindingSchema = z\n\t.object({\n\t\tseverity: z.enum([\"blocking\", \"advisory\"]),\n\t\tsummary: boundedText(\"Review finding summary\"),\n\t\tevidence: boundedText(\"Review finding evidence\").optional(),\n\t\t/** True when the repair needs work outside the approved plan. */\n\t\tscopeBlocker: z.boolean().optional(),\n\t\t/** Prior id for a recurrence; omitted for a new issue the runtime numbers. */\n\t\tfindingId: z\n\t\t\t.string()\n\t\t\t.max(MAX_SESSION_ID_LENGTH)\n\t\t\t.regex(FINDING_ID_PATTERN, FINDING_ID_MESSAGE)\n\t\t\t.optional(),\n\t})\n\t.strict();\n\nconst PublicReviewResultSchema = z\n\t.object({\n\t\tverdict: z.enum([\"passed\", \"failed\"]),\n\t\tfindings: z.array(ReviewFindingSchema).max(MAX_REVIEW_FINDINGS).default([]),\n\t\tterminalDisposition: z.enum([\"submitted\", \"observed_unsubmitted\"]),\n\t})\n\t.strict()\n\t.superRefine((result, context) => {\n\t\tfor (const issue of reviewResultSemanticIssues(result)) {\n\t\t\tcontext.addIssue({ code: \"custom\", ...issue });\n\t\t}\n\t});\n\nconst ReviewPacketSchema = z\n\t.object({\n\t\tsummary: boundedText(\"Review packet summary\"),\n\t\triskLenses: z.array(boundedText(\"Review risk lens\")).max(16).default([]),\n\t})\n\t.strict();\n\nconst ValidationObservationSchema = z\n\t.object({\n\t\tid: z.string().min(1).max(MAX_VALIDATION_ID_LENGTH),\n\t\tfeatureId: FeatureIdSchema,\n\t\trunId: RunIdSchema,\n\t\tscope: z.enum([\"focused\", \"broad\"]),\n\t\tcommand: boundedText(\"Validation command\"),\n\t\tsourceDigest: SourceDigestSchema,\n\t\texitCode: z.number().int().safe().nullable(),\n\t\toutputDigest: SourceDigestSchema,\n\t\toutputComplete: z.boolean(),\n\t\trecordedRevision: RevisionSchema,\n\t\t/** The host this command ran on; absent in documents written before it existed. */\n\t\thostPlatform: z.enum(EVIDENCE_PLATFORMS).optional(),\n\t\t/** Where the command wrote a report, and what it said about each declared case. */\n\t\tresultsPath: boundedText(\"Validation results path\", {\n\t\t\tmaxBytes: MAX_PATH_BYTES,\n\t\t}).optional(),\n\t\tobservedAssertions: z\n\t\t\t.array(ObservedAssertionSchema)\n\t\t\t.max(MAX_DECLARED_ASSERTIONS)\n\t\t\t.optional(),\n\t\tineligibleReason: z.enum(VALIDATION_INELIGIBLE_REASONS).optional(),\n\t})\n\t.strict()\n\t.refine(\n\t\t(observation) =>\n\t\t\tobservation.exitCode !== null ||\n\t\t\tobservation.ineligibleReason !== undefined,\n\t\t{\n\t\t\terror:\n\t\t\t\t\"An observation without an exit code must record an ineligible reason.\",\n\t\t\tpath: [\"ineligibleReason\"],\n\t\t},\n\t);\n\nconst PersistedReviewResultSchema = PublicReviewResultSchema.and(\n\tz.object({ recordedRevision: RevisionSchema }).strict(),\n);\n\nconst ArtifactSchema = z\n\t.object({\n\t\tpath: boundedText(\"Artifact path\", { maxBytes: MAX_PATH_BYTES }).refine(\n\t\t\tisArtifactPath,\n\t\t\tARTIFACT_PATH_MESSAGE,\n\t\t),\n\t})\n\t.strict();\n\nconst ReviewAssignmentSchema = z\n\t.object({\n\t\tid: ReviewAssignmentIdSchema,\n\t\toperationId: OperationIdSchema,\n\t\tfeatureId: FeatureIdSchema,\n\t\trunId: RunIdSchema,\n\t\tkind: z.enum([\"feature\", \"final\"]),\n\t\tsourceDigest: SourceDigestSchema,\n\t\tvalidationIds: z\n\t\t\t.array(z.string().min(1).max(MAX_VALIDATION_ID_LENGTH))\n\t\t\t.min(1)\n\t\t\t.max(MAX_VALIDATIONS_PER_RUN),\n\t\tpacket: ReviewPacketSchema,\n\t\tcreatedRevision: RevisionSchema,\n\t\tresult: PersistedReviewResultSchema.nullable(),\n\t})\n\t.strict();\n\nconst FeatureRunSchema = z\n\t.object({\n\t\tid: RunIdSchema,\n\t\tfeatureId: FeatureIdSchema,\n\t\tattempt: z.number().int().safe().positive(),\n\t\tstate: z.enum([\"active\", \"completed\", \"blocked\", \"superseded\"]),\n\t\tstartedRevision: RevisionSchema,\n\t\tsummary: boundedText(\"Feature result summary\").nullable(),\n\t\tartifactsChanged: z.array(ArtifactSchema).max(MAX_ARTIFACTS),\n\t\tvalidations: z\n\t\t\t.array(ValidationObservationSchema)\n\t\t\t.max(MAX_VALIDATIONS_PER_RUN),\n\t\treviews: z.array(ReviewAssignmentSchema).max(1),\n\t})\n\t.strict();\n\nconst OperationRecordSchema = z\n\t.object({\n\t\tid: OperationIdSchema,\n\t\tkind: z.enum([\n\t\t\t\"plan-save\",\n\t\t\t\"plan-approve\",\n\t\t\t\"run-start\",\n\t\t\t\"review-start\",\n\t\t\t\"feature-complete\",\n\t\t\t\"feature-reset\",\n\t\t\t\"session-close\",\n\t\t]),\n\t\tinputDigest: SourceDigestSchema,\n\t\tcommittedRevision: RevisionSchema,\n\t\tentityId: z.string().min(1).max(1024).optional(),\n\t})\n\t.strict();\n\nconst ClosureSchema = z\n\t.object({\n\t\tkind: z.enum([\"completed\", \"deferred\", \"abandoned\"]),\n\t\tsummary: boundedText(\"Closure summary\", { allowEmpty: true }),\n\t\toperationId: OperationIdSchema,\n\t\trecordedRevision: RevisionSchema,\n\t})\n\t.strict();\n\nexport const SessionSchema: z.ZodType<Session> = z\n\t.object({\n\t\tversion: z.literal(5),\n\t\tid: z.string().min(1).max(MAX_SESSION_ID_LENGTH),\n\t\trevision: RevisionSchema,\n\t\tgoal: boundedText(\"Goal\"),\n\t\tapproval: z.enum([\"pending\", \"approved\"]),\n\t\tplan: PlanSchema.nullable(),\n\t\truns: z.array(FeatureRunSchema).max(512),\n\t\toperations: z.array(OperationRecordSchema).max(4096),\n\t\tclosure: ClosureSchema.nullable(),\n\t})\n\t.strict()\n\t.superRefine((session, context) => {\n\t\tconst bytes = encoder.encode(JSON.stringify(session)).byteLength;\n\t\tif (bytes > MAX_SESSION_BYTES) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: \"custom\",\n\t\t\t\tmessage: `Session cannot exceed ${MAX_SESSION_BYTES} UTF-8 bytes.`,\n\t\t\t});\n\t\t}\n\t\tfor (const issue of sessionInvariantIssues(session)) {\n\t\t\tcontext.addIssue({ code: \"custom\", message: issue });\n\t\t}\n\t});\n\nconst guarded = {\n\toperationId: OperationIdSchema,\n\texpectedRevision: RevisionSchema,\n} as const;\n\nexport const PlanSaveInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\t...guarded,\n\t\t\t\tgoal: boundedText(\"Goal\"),\n\t\t\t\tplan: PlanSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const PlanApproveInputSchema = z\n\t.object({ request: z.object(guarded).strict() })\n\t.strict();\n\nexport const RunStartInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({ ...guarded, featureId: FeatureIdSchema.optional() })\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const ReviewStartInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\t...guarded,\n\t\t\t\tfeatureId: FeatureIdSchema,\n\t\t\t\tartifactsChanged: z.array(ArtifactSchema).max(MAX_ARTIFACTS),\n\t\t\t\tpacket: ReviewPacketSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const FeatureCompleteInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\t...guarded,\n\t\t\t\tfeatureId: FeatureIdSchema,\n\t\t\t\tassignmentId: ReviewAssignmentIdSchema,\n\t\t\t\tsummary: boundedText(\"Feature result summary\"),\n\t\t\t\tresult: PublicReviewResultSchema,\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const FeatureResetInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\t...guarded,\n\t\t\t\tfeatureId: FeatureIdSchema,\n\t\t\t\tnextFeatureId: FeatureIdSchema.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const SessionCloseInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\t...guarded,\n\t\t\t\tsessionId: z.string().min(1).max(MAX_SESSION_ID_LENGTH),\n\t\t\t\tkind: z.enum([\"completed\", \"deferred\", \"abandoned\"]),\n\t\t\t\tsummary: boundedText(\"Closure summary\", { allowEmpty: true }).default(\n\t\t\t\t\t\"\",\n\t\t\t\t),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const ValidationStartInputSchema = z\n\t.object({\n\t\trequest: z\n\t\t\t.object({\n\t\t\t\texpectedRevision: RevisionSchema,\n\t\t\t\tfeatureId: FeatureIdSchema,\n\t\t\t\tcommand: boundedText(\"Validation command\"),\n\t\t\t\tscope: z.enum([\"focused\", \"broad\"]),\n\t\t\t\t/**\n\t\t\t\t * Repository-relative JUnit XML the command writes, when the plan declared\n\t\t\t\t * test names for it. Only the caller knows where its own command reports,\n\t\t\t\t * which is why this is a parameter — and why the file has to be written\n\t\t\t\t * after the command is armed to count for anything.\n\t\t\t\t */\n\t\t\t\tresultsPath: boundedText(\"Validation results path\", {\n\t\t\t\t\tmaxBytes: MAX_PATH_BYTES,\n\t\t\t\t}).optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict();\n\nexport const StatusInputSchema = z\n\t.object({\n\t\trequest: z.discriminatedUnion(\"view\", [\n\t\t\tz.object({ view: z.literal(\"compact\") }).strict(),\n\t\t\tz.object({ view: z.literal(\"detail\") }).strict(),\n\t\t\tz.object({ view: z.literal(\"execution\") }).strict(),\n\t\t\tz\n\t\t\t\t.object({\n\t\t\t\t\tview: z.literal(\"reviewer\"),\n\t\t\t\t\tassignmentId: ReviewAssignmentIdSchema,\n\t\t\t\t})\n\t\t\t\t.strict(),\n\t\t]),\n\t})\n\t.strict();\n\nexport type FeatureCompleteRequest = z.infer<\n\ttypeof FeatureCompleteInputSchema\n>[\"request\"];\nexport type SessionCloseRequest = z.infer<\n\ttypeof SessionCloseInputSchema\n>[\"request\"];\nexport type ValidationStartRequest = z.infer<\n\ttypeof ValidationStartInputSchema\n>[\"request\"];\nexport type StatusRequest = z.infer<typeof StatusInputSchema>[\"request\"];\n",
23
23
  "import { artifactIssues } from \"./artifact.js\";\nimport { MAX_REVIEW_FINDINGS, MAX_VALIDATIONS_PER_RUN } from \"./limits.js\";\nimport { closureOperationIssue } from \"./operation.js\";\nimport { planIssue } from \"./plan.js\";\nimport type { Session } from \"./session.js\";\nimport { featureKind, reviewResultSemanticIssues } from \"./session.js\";\nimport { isFeatureComplete } from \"./transitions.js\";\nimport { isValidationEligible } from \"./validation.js\";\n\n/**\n * Whether the feature was already settled before the given revision.\n *\n * Used only to re-derive a review's `kind`. A review is `final` when it is the\n * last feature still outstanding. Change features settle on a passing review.\n * Inspect features settle on any recorded result, including a failed survey.\n */\nfunction featureSettledBefore(\n\tsession: Session,\n\tfeatureId: string,\n\trevision: number,\n): boolean {\n\tconst inspect =\n\t\tfeatureKind(\n\t\t\tsession.plan?.features.find((feature) => feature.id === featureId),\n\t\t) === \"inspect\";\n\treturn session.runs.some(\n\t\t(run) =>\n\t\t\trun.featureId === featureId &&\n\t\t\trun.reviews.some((review) => {\n\t\t\t\tconst result = review.result;\n\t\t\t\tif (!result || result.recordedRevision >= revision) return false;\n\t\t\t\treturn result.verdict === \"passed\" || inspect;\n\t\t\t}),\n\t);\n}\n\n/**\n * Whether a durable session document is internally consistent.\n *\n * Flow's second defence, answering a different question from the first. The\n * transitions in `transitions.js` guard the step being taken: they see the current\n * session and the requested change, and refuse the ones that do not follow. This\n * sees a finished document with no idea how it got there, and asks whether any\n * legal sequence of steps could have produced it.\n *\n * That is needed because `.flow/session.json` is a file on disk: it survives\n * crashes mid-write, hand edits, git merges, and older builds of this plugin. So\n * `src/application/schema.ts` runs this on load and refuses a document that fails\n * rather than repairing it -- guessing what a broken document meant is how one\n * inconsistency becomes several.\n *\n * Every issue is returned rather than the first thrown, because a corrupt document\n * usually violates several invariants and the first is rarely the informative one.\n * No rule here may consult anything outside the document; at load time there is\n * nothing else to consult. The cost of the duality is that most rules restate a\n * transition guard from the other side, and the two must not drift: a new\n * transition rule a hand-edited document could violate belongs in both places.\n */\nexport function sessionInvariantIssues(session: Session): string[] {\n\tconst issues: string[] = [];\n\t// First, because every rule below assumes the v5 shape; a v4 document is not a\n\t// broken v5 one.\n\tif (session.version !== 5) issues.push(\"Session version must be 5.\");\n\tif (!Number.isSafeInteger(session.revision) || session.revision < 0) {\n\t\tissues.push(\"Session revision must be a nonnegative safe integer.\");\n\t}\n\t// Operation ledger. Ids are the idempotency keys every mutation replays against,\n\t// so a duplicate would make two different operations indistinguishable, and a\n\t// revision beyond the session's own means the ledger outran the state it records.\n\tconst operationIds = new Set<string>();\n\tfor (const operation of session.operations) {\n\t\tif (operationIds.has(operation.id)) {\n\t\t\tissues.push(`Duplicate operation id '${operation.id}'.`);\n\t\t}\n\t\toperationIds.add(operation.id);\n\t\tif (\n\t\t\toperation.committedRevision < 1 ||\n\t\t\toperation.committedRevision > session.revision\n\t\t) {\n\t\t\tissues.push(`Operation '${operation.id}' has an invalid revision.`);\n\t\t}\n\t}\n\tif (session.closure) {\n\t\tconst closureIssue = closureOperationIssue(session);\n\t\tif (closureIssue) issues.push(closureIssue);\n\t\tif (session.closure.kind === \"completed\" && !session.plan) {\n\t\t\tissues.push(\"A completed closure requires a plan.\");\n\t\t}\n\t}\n\t// Without a plan there is nothing further to check, and the two rules that still\n\t// apply are the ones a plan would have anchored: approval and runs are both\n\t// approval of, and work on, specific features.\n\tif (!session.plan) {\n\t\tif (session.approval === \"approved\")\n\t\t\tissues.push(\"Approval requires a plan.\");\n\t\tif (session.runs.length > 0) issues.push(\"Runs require a plan.\");\n\t\treturn issues;\n\t}\n\t// The plan's own rules are shared with `savePlan`, which throws the first issue\n\t// while this collects them, so both read the same primitive rather than one\n\t// catching what the other threw.\n\tconst planProblem = planIssue(session.plan);\n\tif (planProblem) issues.push(planProblem);\n\t// An approved plan is immutable, so it is the fixed frame the rest of the\n\t// document has to fit. Ids are unique across the whole session rather than per\n\t// run, so a document cannot reuse one and rely on nesting to disambiguate.\n\tconst featureIds = new Set(\n\t\tsession.plan.features.map((feature) => feature.id),\n\t);\n\tconst runIds = new Set<string>();\n\tconst validationIds = new Set<string>();\n\tconst reviewIds = new Set<string>();\n\tlet activeCount = 0;\n\tlet previousRunStartedRevision = 0;\n\tfor (const run of session.runs) {\n\t\tif (runIds.has(run.id)) issues.push(`Duplicate run id '${run.id}'.`);\n\t\trunIds.add(run.id);\n\t\tif (!featureIds.has(run.featureId))\n\t\t\tissues.push(`Run '${run.id}' has unknown feature.`);\n\t\tif (run.startedRevision < 1 || run.startedRevision > session.revision) {\n\t\t\tissues.push(`Run '${run.id}' has an invalid start revision.`);\n\t\t}\n\t\t// Runs are stored in the order they started, so a later run appearing earlier\n\t\t// in the array would make the retry lineage unreadable.\n\t\tif (run.startedRevision <= previousRunStartedRevision) {\n\t\t\tissues.push(\"Runs must remain in their durable start order.\");\n\t\t}\n\t\tpreviousRunStartedRevision = Math.max(\n\t\t\tpreviousRunStartedRevision,\n\t\t\trun.startedRevision,\n\t\t);\n\t\tif (run.validations.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\tissues.push(\n\t\t\t\t`Run '${run.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validations.`,\n\t\t\t);\n\t\t}\n\t\tfor (const issue of artifactIssues(run.artifactsChanged)) {\n\t\t\tissues.push(`Run '${run.id}': ${issue}`);\n\t\t}\n\t\tif (run.state === \"active\") activeCount += 1;\n\t\tconst runValidationIds = new Set<string>();\n\t\tfor (const validation of run.validations) {\n\t\t\tif (validationIds.has(validation.id)) {\n\t\t\t\tissues.push(`Duplicate validation id '${validation.id}'.`);\n\t\t\t}\n\t\t\tvalidationIds.add(validation.id);\n\t\t\trunValidationIds.add(validation.id);\n\t\t\tif (\n\t\t\t\tvalidation.runId !== run.id ||\n\t\t\t\tvalidation.featureId !== run.featureId\n\t\t\t) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Validation '${validation.id}' is attached to the wrong run.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (validation.recordedRevision > session.revision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' is from a future revision.`);\n\t\t\t}\n\t\t\t// Evidence has to postdate the run it vouches for. A validation recorded\n\t\t\t// before its run started describes a workspace that run had not touched yet.\n\t\t\tif (validation.recordedRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Validation '${validation.id}' predates its run.`);\n\t\t\t}\n\t\t}\n\t\tfor (const review of run.reviews) {\n\t\t\tif (reviewIds.has(review.id))\n\t\t\t\tissues.push(`Duplicate review id '${review.id}'.`);\n\t\t\treviewIds.add(review.id);\n\t\t\tif (review.runId !== run.id || review.featureId !== run.featureId) {\n\t\t\t\tissues.push(`Review '${review.id}' is attached to the wrong run.`);\n\t\t\t}\n\t\t\tconst uniqueReferences = new Set(review.validationIds);\n\t\t\tif (review.validationIds.length > MAX_VALIDATIONS_PER_RUN) {\n\t\t\t\tissues.push(\n\t\t\t\t\t`Review '${review.id}' has more than ${MAX_VALIDATIONS_PER_RUN} validation references.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (uniqueReferences.size !== review.validationIds.length) {\n\t\t\t\tissues.push(`Review '${review.id}' repeats validation references.`);\n\t\t\t}\n\t\t\tif (review.validationIds.some((id) => !runValidationIds.has(id))) {\n\t\t\t\tissues.push(`Review '${review.id}' references unknown validation.`);\n\t\t\t}\n\t\t\tconst referenced = run.validations.filter((validation) =>\n\t\t\t\tuniqueReferences.has(validation.id),\n\t\t\t);\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) =>\n\t\t\t\t\t\t!isValidationEligible(validation, review.sourceDigest),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' uses inapplicable validation.`);\n\t\t\t}\n\t\t\t// A final review is what `completed` closure rests on, so it must cite\n\t\t\t// whole-repository evidence rather than only the feature's own tests\n\t\t\t// (`docs/adr/0009-scope-keyed-validation-veto.md`).\n\t\t\tif (\n\t\t\t\treview.kind === \"final\" &&\n\t\t\t\t!referenced.some((validation) => validation.scope === \"broad\")\n\t\t\t) {\n\t\t\t\tissues.push(`Final review '${review.id}' lacks broad validation.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treview.createdRevision < 1 ||\n\t\t\t\treview.createdRevision > session.revision\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' has an invalid creation revision.`);\n\t\t\t}\n\t\t\tif (review.createdRevision <= run.startedRevision) {\n\t\t\t\tissues.push(`Review '${review.id}' predates its run.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\treferenced.some(\n\t\t\t\t\t(validation) => validation.recordedRevision >= review.createdRevision,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tissues.push(`Review '${review.id}' references later validation.`);\n\t\t\t}\n\t\t\tconst expectedKind = session.plan.features.every(\n\t\t\t\t(feature) =>\n\t\t\t\t\tfeature.id === run.featureId ||\n\t\t\t\t\tfeatureSettledBefore(session, feature.id, review.createdRevision),\n\t\t\t)\n\t\t\t\t? \"final\"\n\t\t\t\t: \"feature\";\n\t\t\tif (review.kind !== expectedKind) {\n\t\t\t\tissues.push(`Review '${review.id}' has the wrong derived kind.`);\n\t\t\t}\n\t\t\tif (review.result) {\n\t\t\t\tif (\n\t\t\t\t\treview.result.recordedRevision <= review.createdRevision ||\n\t\t\t\t\treview.result.recordedRevision > session.revision\n\t\t\t\t) {\n\t\t\t\t\tissues.push(`Review '${review.id}' has an invalid result revision.`);\n\t\t\t\t}\n\t\t\t\t// Reported first-issue-only, matching what `completeFeature` would have\n\t\t\t\t// refused at the time.\n\t\t\t\tconst resultProblem =\n\t\t\t\t\treview.result.findings.length > MAX_REVIEW_FINDINGS\n\t\t\t\t\t\t? `A review may contain at most ${MAX_REVIEW_FINDINGS} findings.`\n\t\t\t\t\t\t: reviewResultSemanticIssues(review.result)[0]?.message;\n\t\t\t\tif (resultProblem) issues.push(resultProblem);\n\t\t\t}\n\t\t}\n\t\t// Run state must agree with the review that produced it. These four are the\n\t\t// only place a state can be checked at all: `state` is a stored field, so a\n\t\t// document can claim `completed` with no passing review, and every reader\n\t\t// downstream -- closure, retry eligibility, the projection -- trusts it.\n\t\tconst last = run.reviews.at(-1);\n\t\tif (run.state === \"active\" && (run.summary !== null || last?.result)) {\n\t\t\tissues.push(`Active run '${run.id}' contains a recorded outcome.`);\n\t\t}\n\t\tif (run.state === \"completed\" && last?.result?.verdict !== \"passed\") {\n\t\t\tconst inspect =\n\t\t\t\tfeatureKind(\n\t\t\t\t\tsession.plan?.features.find(\n\t\t\t\t\t\t(feature) => feature.id === run.featureId,\n\t\t\t\t\t),\n\t\t\t\t) === \"inspect\";\n\t\t\tif (!(inspect && last?.result?.verdict === \"failed\")) {\n\t\t\t\tissues.push(`Completed run '${run.id}' lacks a passing review.`);\n\t\t\t}\n\t\t}\n\t\tif (run.state === \"blocked\" && last?.result?.verdict !== \"failed\") {\n\t\t\tissues.push(`Blocked run '${run.id}' lacks a failed review.`);\n\t\t}\n\t\tif (run.state === \"superseded\" && last?.result?.verdict === \"passed\") {\n\t\t\tissues.push(`Superseded run '${run.id}' cannot retain a passing review.`);\n\t\t}\n\t}\n\t// Checkable only once every run has been seen.\n\tif (activeCount > 1) issues.push(\"Only one run may be active.\");\n\tif (session.closure) {\n\t\tif (activeCount > 0)\n\t\t\tissues.push(\"A closed session cannot retain active work.\");\n\t\tif (\n\t\t\tsession.closure.kind === \"completed\" &&\n\t\t\tsession.plan.features.some(\n\t\t\t\t(feature) => !isFeatureComplete(session, feature.id),\n\t\t\t)\n\t\t) {\n\t\t\tissues.push(\"A completed closure requires every feature to be complete.\");\n\t\t}\n\t}\n\treturn issues;\n}\n",
24
24
  "import { liveFindingIds } from \"../domain/review-findings.js\";\nimport type { ReviewFinding, Session } from \"../domain/session.js\";\n\ntype FindingsDigestRow = Readonly<{\n\tfeatureId: string;\n\tfindingId: string;\n\tseverity: ReviewFinding[\"severity\"];\n\tsummary: string;\n\tevidence?: string | undefined;\n\tattempt: number;\n\tverdict: \"passed\" | \"failed\";\n\tlive: boolean;\n}>;\n\nexport type FindingsDigest = ReadonlyArray<FindingsDigestRow>;\n\nfunction plannedFeatureIds(session: Session): string[] {\n\tif (session.plan) return session.plan.features.map((feature) => feature.id);\n\tconst ids: string[] = [];\n\tfor (const run of session.runs) {\n\t\tif (ids.includes(run.featureId)) continue;\n\t\tids.push(run.featureId);\n\t}\n\treturn ids;\n}\n\n/**\n * Every finding that has an id, across every attempt of every planned feature.\n *\n * Last statement wins for text and verdict. `live` is the carry-forward set\n * `livePriorFindings` already computes: a later pass that omits an id keeps the\n * row with `live: false`. No persist. No closure required.\n */\nexport function findingsDigest(session: Session): FindingsDigest {\n\tconst rows: FindingsDigestRow[] = [];\n\tconst indexById = new Map<string, number>();\n\tfor (const featureId of plannedFeatureIds(session)) {\n\t\tfor (const run of session.runs) {\n\t\t\tif (run.featureId !== featureId) continue;\n\t\t\tfor (const review of run.reviews) {\n\t\t\t\tconst result = review.result;\n\t\t\t\tif (!result) continue;\n\t\t\t\tfor (const finding of result.findings) {\n\t\t\t\t\tif (!finding.findingId) continue;\n\t\t\t\t\tconst row: FindingsDigestRow = {\n\t\t\t\t\t\tfeatureId,\n\t\t\t\t\t\tfindingId: finding.findingId,\n\t\t\t\t\t\tseverity: finding.severity,\n\t\t\t\t\t\tsummary: finding.summary,\n\t\t\t\t\t\tattempt: run.attempt,\n\t\t\t\t\t\tverdict: result.verdict,\n\t\t\t\t\t\tlive: false,\n\t\t\t\t\t\t...(finding.evidence === undefined\n\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t: { evidence: finding.evidence }),\n\t\t\t\t\t};\n\t\t\t\t\tconst existing = indexById.get(finding.findingId);\n\t\t\t\t\tif (existing === undefined) {\n\t\t\t\t\t\tindexById.set(finding.findingId, rows.length);\n\t\t\t\t\t\trows.push(row);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trows[existing] = row;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn rows.map((row) => ({\n\t\t...row,\n\t\tlive: liveFindingIds(session, row.featureId).includes(row.findingId),\n\t}));\n}\n\nexport function digestReportLines(digest: FindingsDigest): string[] {\n\tif (digest.length === 0) return [\"Findings digest: none\"];\n\tconst line = (row: FindingsDigestRow, kind: \"live\" | \"historical\") =>\n\t\t`- ${kind} ${row.featureId} ${row.findingId} ${row.severity}: ${row.summary}`;\n\treturn [\n\t\t\"Findings digest:\",\n\t\t...digest.filter((row) => row.live).map((row) => line(row, \"live\")),\n\t\t...digest.filter((row) => !row.live).map((row) => line(row, \"historical\")),\n\t];\n}\n",
25
25
  "import type {\n\tFeatureRun,\n\tReviewFinding,\n\tSession,\n\tSessionClosure,\n} from \"../domain/session.js\";\nimport { currentRun, planGate } from \"../domain/session.js\";\nimport { isFeatureComplete } from \"../domain/transitions.js\";\nimport {\n\tisValidationEligible,\n\tunsatisfiedEvidence,\n} from \"../domain/validation.js\";\nimport {\n\tdigestReportLines,\n\ttype FindingsDigest,\n\tfindingsDigest,\n} from \"./findings-digest.js\";\n\ntype AssuranceCheck = Readonly<{\n\tid: string;\n\tlabel: string;\n\tstatus: \"satisfied\" | \"unsatisfied\" | \"not-applicable\";\n\ttier: \"ts-enforced\" | \"host-attested\" | \"caller-declared\";\n\texplanation: string;\n}>;\n\ntype AssuranceProjection = Readonly<{\n\tconclusion:\n\t\t| \"completion-supported\"\n\t\t| \"completion-unsupported\"\n\t\t| \"completion-not-claimed\";\n\tchecks: ReadonlyArray<AssuranceCheck>;\n\tlimitations: ReadonlyArray<string>;\n}>;\n\ntype DeliveryFeatureProjection = Readonly<{\n\tid: string;\n\ttitle: string;\n\tattempts: number;\n\tlatestState: FeatureRun[\"state\"] | \"not-started\";\n\toutcomeSummary: string | null;\n\tterminalFindings: ReadonlyArray<\n\t\tReadonly<Pick<ReviewFinding, \"severity\" | \"summary\">>\n\t>;\n}>;\n\nexport type DeliveryProjection = Readonly<{\n\tgoal: string;\n\tclosure: Readonly<{ kind: SessionClosure[\"kind\"]; summary: string }>;\n\tprogress: Readonly<{ completed: number; total: number }>;\n\tfeatures: ReadonlyArray<DeliveryFeatureProjection>;\n\treportedArtifacts: Readonly<{\n\t\tlatestAttempts: ReadonlyArray<string>;\n\t\tsupersededAttemptsOnly: ReadonlyArray<string>;\n\t}>;\n\tassurance: AssuranceProjection;\n\tfindingsDigest: FindingsDigest;\n\treport: ReadonlyArray<string>;\n}>;\n\nconst LIMITATIONS = [\n\t\"Artifact paths and the canonical gate are caller declarations; Flow validates binding, not completeness or fitness.\",\n\t\"Goal alignment, scope discipline, evidence completeness, requirement coverage, test adequacy, and review substance remain model judgments.\",\n\t\"Freshness holds when review is accepted; an archive does not attest the current workspace.\",\n] as const;\n\n/** Tiered support for a recorded closure, derived rather than persisted. */\nexport function assuranceProjection(session: Session): AssuranceProjection {\n\tif (!session.closure)\n\t\tthrow new Error(\"Assurance requires a recorded closure.\");\n\tconst complete = session.closure.kind === \"completed\";\n\tconst features = session.plan?.features ?? [];\n\tconst runs = features.flatMap((feature) => {\n\t\tconst run = currentRun(session, feature.id);\n\t\treturn run ? [run] : [];\n\t});\n\tconst accepted = runs.flatMap((run) => {\n\t\tconst ids = new Set(\n\t\t\trun.reviews\n\t\t\t\t.filter((review) => review.result?.verdict === \"passed\")\n\t\t\t\t.flatMap((review) => review.validationIds),\n\t\t);\n\t\treturn run.validations.filter(\n\t\t\t(observation) =>\n\t\t\t\tids.has(observation.id) && isValidationEligible(observation),\n\t\t);\n\t});\n\tconst check = (\n\t\tid: string,\n\t\tlabel: string,\n\t\ttier: AssuranceCheck[\"tier\"],\n\t\tsatisfied: boolean,\n\t\texplanation: string,\n\t): AssuranceCheck => ({\n\t\tid,\n\t\tlabel,\n\t\ttier,\n\t\tstatus: complete\n\t\t\t? satisfied\n\t\t\t\t? \"satisfied\"\n\t\t\t\t: \"unsatisfied\"\n\t\t\t: \"not-applicable\",\n\t\texplanation: complete\n\t\t\t? explanation\n\t\t\t: `${session.closure?.kind} closure makes no completion claim.`,\n\t});\n\tconst completed = features.filter((feature) =>\n\t\tisFeatureComplete(session, feature.id),\n\t).length;\n\tconst passing = runs.filter((run) =>\n\t\trun.reviews.some((review) => review.result?.verdict === \"passed\"),\n\t).length;\n\tconst structural =\n\t\tsession.plan !== null &&\n\t\tfeatures.length > 0 &&\n\t\tcompleted === features.length &&\n\t\tpassing === features.length &&\n\t\truns.some((run) =>\n\t\t\trun.reviews.some(\n\t\t\t\t(review) =>\n\t\t\t\t\treview.kind === \"final\" && review.result?.verdict === \"passed\",\n\t\t\t),\n\t\t) &&\n\t\t!runs.some((run) =>\n\t\t\t(run.reviews.at(-1)?.result?.findings ?? []).some(\n\t\t\t\t(finding) => finding.severity === \"blocking\",\n\t\t\t),\n\t\t);\n\tconst checks: AssuranceCheck[] = [\n\t\tcheck(\n\t\t\t\"recorded-completion\",\n\t\t\t\"Recorded completion\",\n\t\t\t\"ts-enforced\",\n\t\t\tstructural,\n\t\t\t`${completed}/${features.length} features and ${passing}/${features.length} independent reviews pass, including a final review with no terminal blocker.`,\n\t\t),\n\t\tcheck(\n\t\t\t\"accepted-validation\",\n\t\t\t\"Accepted validation\",\n\t\t\t\"host-attested\",\n\t\t\truns.length === features.length &&\n\t\t\t\truns.every((run) =>\n\t\t\t\t\taccepted.some((observation) => observation.runId === run.id),\n\t\t\t\t),\n\t\t\t`${runs.filter((run) => accepted.some((item) => item.runId === run.id)).length}/${features.length} terminal runs have eligible host evidence accepted by review.`,\n\t\t),\n\t];\n\tconst gate = planGate(session.plan);\n\tchecks.push(\n\t\tgate === undefined\n\t\t\t? {\n\t\t\t\t\tid: \"canonical-gate\",\n\t\t\t\t\tlabel: \"Canonical gate\",\n\t\t\t\t\ttier: \"caller-declared\",\n\t\t\t\t\tstatus: \"not-applicable\",\n\t\t\t\t\texplanation: \"This plan declared no canonical gate.\",\n\t\t\t\t}\n\t\t\t: check(\n\t\t\t\t\t\"canonical-gate\",\n\t\t\t\t\t\"Canonical gate\",\n\t\t\t\t\t\"host-attested\",\n\t\t\t\t\taccepted.some(\n\t\t\t\t\t\t(observation) =>\n\t\t\t\t\t\t\tobservation.command === gate && observation.scope === \"broad\",\n\t\t\t\t\t),\n\t\t\t\t\t`${JSON.stringify(gate)} must have eligible broad evidence accepted by review.`,\n\t\t\t\t),\n\t);\n\tconst declared = session.plan?.evidence;\n\tconst missing = unsatisfiedEvidence(session).length;\n\tchecks.push(\n\t\tdeclared === undefined\n\t\t\t? {\n\t\t\t\t\tid: \"declared-evidence\",\n\t\t\t\t\tlabel: \"Declared evidence\",\n\t\t\t\t\ttier: \"caller-declared\",\n\t\t\t\t\tstatus: \"not-applicable\",\n\t\t\t\t\texplanation: \"This plan declared no evidence obligations.\",\n\t\t\t\t}\n\t\t\t: check(\n\t\t\t\t\t\"declared-evidence\",\n\t\t\t\t\t\"Declared evidence\",\n\t\t\t\t\tdeclared.length === 0 ? \"caller-declared\" : \"host-attested\",\n\t\t\t\t\tmissing === 0,\n\t\t\t\t\t`${declared.length - missing}/${declared.length} declared obligations have eligible evidence on their declared host with named cases passing.`,\n\t\t\t\t),\n\t);\n\treturn {\n\t\tconclusion: !complete\n\t\t\t? \"completion-not-claimed\"\n\t\t\t: checks.some((item) => item.status === \"unsatisfied\")\n\t\t\t\t? \"completion-unsupported\"\n\t\t\t\t: \"completion-supported\",\n\t\tchecks,\n\t\tlimitations: [...LIMITATIONS],\n\t};\n}\n\nconst TIER_LABELS = {\n\t\"ts-enforced\": \"TS-enforced\",\n\t\"host-attested\": \"host-attested\",\n\t\"caller-declared\": \"caller-declared\",\n} as const;\n\nfunction formatReport(delivery: Omit<DeliveryProjection, \"report\">): string[] {\n\tconst lines = delivery.features.flatMap((feature) => [\n\t\t`- ${feature.id} — ${feature.title}`,\n\t\t` attempts: ${feature.attempts}; latest state: ${feature.latestState}`,\n\t\t` outcome: ${feature.outcomeSummary ?? \"none recorded\"}`,\n\t\t...(feature.terminalFindings.length === 0\n\t\t\t? [\" terminal findings: none\"]\n\t\t\t: [\n\t\t\t\t\t\" terminal findings:\",\n\t\t\t\t\t...feature.terminalFindings.map(\n\t\t\t\t\t\t(finding) => ` - ${finding.severity}: ${finding.summary}`,\n\t\t\t\t\t),\n\t\t\t\t]),\n\t]);\n\treturn [\n\t\t`Goal: ${delivery.goal}`,\n\t\t`Closure: ${delivery.closure.kind}${delivery.closure.summary ? ` — ${delivery.closure.summary}` : \"\"}`,\n\t\t`Progress: ${delivery.progress.completed} of ${delivery.progress.total} features complete`,\n\t\t\"Features:\",\n\t\t...lines,\n\t\t...digestReportLines(delivery.findingsDigest),\n\t\t`Assurance: ${delivery.assurance.conclusion.replaceAll(\"-\", \" \")}`,\n\t\t\"Assurance checks:\",\n\t\t...delivery.assurance.checks.map(\n\t\t\t(item) =>\n\t\t\t\t`- ${item.status} [${TIER_LABELS[item.tier]}] ${item.label}: ${item.explanation}`,\n\t\t),\n\t\t\"Assurance limitations:\",\n\t\t...delivery.assurance.limitations.map((item) => `- ${item}`),\n\t\t\"Artifacts as reported by Flow from caller declarations, not an exact or exhaustive Git delta:\",\n\t\t`- latest attempts: ${delivery.reportedArtifacts.latestAttempts.join(\", \") || \"none reported\"}`,\n\t\t`- superseded attempts only: ${delivery.reportedArtifacts.supersededAttemptsOnly.join(\", \") || \"none reported\"}`,\n\t];\n}\n\nexport function deliveryProjection(session: Session): DeliveryProjection {\n\tif (!session.closure)\n\t\tthrow new Error(\"Delivery requires a recorded closure.\");\n\tconst features = session.plan?.features ?? [];\n\tconst grouped = features.map((feature) => ({\n\t\tfeature,\n\t\truns: session.runs.filter((run) => run.featureId === feature.id),\n\t}));\n\tconst latest = grouped.flatMap(({ runs }) => runs.slice(-1));\n\tconst latestArtifacts = new Set(\n\t\tlatest.flatMap((run) => run.artifactsChanged.map((item) => item.path)),\n\t);\n\tconst allArtifacts = new Set(\n\t\tsession.runs.flatMap((run) =>\n\t\t\trun.artifactsChanged.map((item) => item.path),\n\t\t),\n\t);\n\tconst digest = findingsDigest(session);\n\tconst delivery = {\n\t\tgoal: session.goal,\n\t\tclosure: { kind: session.closure.kind, summary: session.closure.summary },\n\t\tprogress: {\n\t\t\tcompleted: features.filter((feature) =>\n\t\t\t\tisFeatureComplete(session, feature.id),\n\t\t\t).length,\n\t\t\ttotal: features.length,\n\t\t},\n\t\tfeatures: grouped.map(({ feature, runs }) => {\n\t\t\tconst run = runs.at(-1);\n\t\t\treturn {\n\t\t\t\tid: feature.id,\n\t\t\t\ttitle: feature.title,\n\t\t\t\tattempts: runs.length,\n\t\t\t\tlatestState: run?.state ?? \"not-started\",\n\t\t\t\toutcomeSummary: run?.summary ?? null,\n\t\t\t\tterminalFindings: digest\n\t\t\t\t\t.filter((row) => row.featureId === feature.id && row.live)\n\t\t\t\t\t.map(({ severity, summary }) => ({ severity, summary })),\n\t\t\t};\n\t\t}),\n\t\treportedArtifacts: {\n\t\t\tlatestAttempts: [...latestArtifacts].sort(),\n\t\t\tsupersededAttemptsOnly: [...allArtifacts]\n\t\t\t\t.filter((path) => !latestArtifacts.has(path))\n\t\t\t\t.sort(),\n\t\t},\n\t\tassurance: assuranceProjection(session),\n\t\tfindingsDigest: digest,\n\t} satisfies Omit<DeliveryProjection, \"report\">;\n\treturn { ...delivery, report: formatReport(delivery) };\n}\n",
26
- "import {\n\ttype ClosureRetryRequest,\n\tclosureRetryRequest,\n} from \"../domain/operation.js\";\nimport {\n\tfindingIdPrefix,\n\ttype LivePriorFinding,\n\tlivePriorFindings,\n} from \"../domain/review-findings.js\";\nimport type {\n\tFeatureRun,\n\tOperationRecord,\n\tPlan,\n\tPlanFeature,\n\tReviewAssignment,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tValidationObservation,\n} from \"../domain/session.js\";\nimport { firstBlockedRun } from \"../domain/session.js\";\nimport {\n\tactiveRun,\n\tisFeatureComplete,\n\tnextRunnableFeature,\n\tsessionStatus,\n} from \"../domain/transitions.js\";\nimport {\n\tisValidationEligible,\n\tisValidationFresh,\n\tunresolvedVetoedCommands,\n} from \"../domain/validation.js\";\nimport { type FindingsDigest, findingsDigest } from \"./findings-digest.js\";\nimport type { StatusRequest } from \"./schema.js\";\n\ntype FlowNextAction =\n\t| \"flow_plan_save\"\n\t| \"flow_plan_approve\"\n\t| \"flow_run_start\"\n\t| \"flow_feature_reset\"\n\t| \"await-user-direction\"\n\t| \"flow_session_close\"\n\t| \"flow_status\"\n\t| \"dispatch-flow-reviewer\"\n\t| \"flow_validation_start\"\n\t| \"flow_review_start\";\n\ntype FeatureProgress = Readonly<{\n\tcompleted: number;\n\ttotal: number;\n\tremaining: number;\n}>;\n\ntype BlockedFeatureProjection = Readonly<{\n\tfeatureId: string;\n\tattempt: number;\n\tfailedReviewCount: number;\n\t/**\n\t * True when any failed review of this feature raised a scope blocker, which\n\t * makes the feature ineligible for automatic retry regardless of the count.\n\t */\n\tscopeBlocker: boolean;\n}>;\n\ntype ArchiveRetryProjection = Readonly<{\n\trequest: ClosureRetryRequest;\n}>;\n\nexport type CompactProjection = Readonly<{\n\tview: \"compact\";\n\tsessionId: string;\n\trevision: number;\n\tgoal: string;\n\tstatus: SessionStatus;\n\tapproval: Session[\"approval\"];\n\tactiveFeatureId: string | null;\n\tactiveRunId: string | null;\n\tblockedFeature: BlockedFeatureProjection | null;\n\tprogress: FeatureProgress;\n\tnextAction: FlowNextAction;\n\tarchiveRetry: ArchiveRetryProjection | null;\n\tfindingsDigest: FindingsDigest;\n}>;\n\nexport type ArchivedProjection = Readonly<\n\tOmit<CompactProjection, \"nextAction\" | \"archiveRetry\"> & {\n\t\tnextAction: null;\n\t\tarchiveRetry: null;\n\t\tarchived: true;\n\t}\n>;\n\nexport type ExecutionProjection = Readonly<\n\tOmit<CompactProjection, \"view\"> & {\n\t\tview: \"execution\";\n\t\tfeature: PlanFeature | null;\n\t\trun: FeatureRun | null;\n\t}\n>;\n\ntype DetailProjection = Readonly<\n\tOmit<CompactProjection, \"view\"> & {\n\t\tview: \"detail\";\n\t\tplan: Plan | null;\n\t\truns: FeatureRun[];\n\t\tclosure: SessionClosure | null;\n\t\toperations: OperationRecord[];\n\t}\n>;\n\nexport type ReviewerProjection = Readonly<{\n\tview: \"reviewer\";\n\tsessionId: string;\n\trevision: number;\n\tgoal: string;\n\tplanContext: Plan | null;\n\tfeature: PlanFeature | null;\n\tassignment: ReviewAssignment;\n\tartifactsChanged: FeatureRun[\"artifactsChanged\"];\n\tvalidations: ValidationObservation[];\n\tcompletedFeatureIds: string[];\n\t/**\n\t * Prior findings this review must still account for, carrying the text the\n\t * reviewer has to re-check, computed from durable state rather than recovered\n\t * from the manager's packet prose.\n\t */\n\tpriorFindings: ReadonlyArray<LivePriorFinding>;\n\t/** Prefix the runtime uses when it numbers a new finding of this assignment. */\n\tnextFindingIdPrefix: string;\n}>;\n\ntype IdleProjection = Readonly<{\n\tview: StatusRequest[\"view\"];\n\tstatus: \"idle\";\n\trevision: 0;\n\tnextAction: \"flow_plan_save\";\n\tfindingsDigest: FindingsDigest;\n}>;\n\nexport type ActiveSessionProjection =\n\t| CompactProjection\n\t| DetailProjection\n\t| ExecutionProjection\n\t| ReviewerProjection;\n\nexport type StatusProjection = ActiveSessionProjection | IdleProjection;\n\nfunction featureProgress(session: Session): FeatureProgress {\n\tconst total = session.plan?.features.length ?? 0;\n\tconst completed =\n\t\tsession.plan?.features.filter((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t).length ?? 0;\n\treturn { completed, total, remaining: total - completed };\n}\n\nexport function activePendingReview(session: Session): ReviewAssignment | null {\n\treturn (\n\t\tactiveRun(session)?.reviews.find((review) => review.result === null) ?? null\n\t);\n}\n\nfunction blockedFeatureProjection(\n\tsession: Session,\n): BlockedFeatureProjection | null {\n\tconst blockedRun = firstBlockedRun(session);\n\tif (!blockedRun) return null;\n\tconst featureRuns = session.runs.filter(\n\t\t(run) => run.featureId === blockedRun.featureId,\n\t);\n\treturn {\n\t\tfeatureId: blockedRun.featureId,\n\t\tattempt: blockedRun.attempt,\n\t\tfailedReviewCount: featureRuns.filter((run) =>\n\t\t\trun.reviews.some((review) => review.result?.verdict === \"failed\"),\n\t\t).length,\n\t\tscopeBlocker: featureRuns.some((run) =>\n\t\t\trun.reviews.some(\n\t\t\t\t(review) =>\n\t\t\t\t\treview.result?.verdict === \"failed\" &&\n\t\t\t\t\treview.result.findings.some((finding) => finding.scopeBlocker),\n\t\t\t),\n\t\t),\n\t};\n}\n\nfunction nextAction(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n\tblockedFeature = blockedFeatureProjection(session),\n): FlowNextAction {\n\tconst status = sessionStatus(session);\n\tif (status === \"planning\") {\n\t\treturn session.plan ? \"flow_plan_approve\" : \"flow_plan_save\";\n\t}\n\tif (status === \"ready\" && !nextRunnableFeature(session))\n\t\treturn \"await-user-direction\";\n\tif (status === \"ready\") return \"flow_run_start\";\n\tif (status === \"blocked\") {\n\t\t// A scope blocker or a second failure means the user decides, not the loop.\n\t\t// Both halves of this rule are now enforced here; the scope-blocker half\n\t\t// used to rely on the manager noticing a marker in free-text prose.\n\t\treturn (blockedFeature?.failedReviewCount ?? 0) >= 2 ||\n\t\t\tblockedFeature?.scopeBlocker === true\n\t\t\t? \"await-user-direction\"\n\t\t\t: \"flow_feature_reset\";\n\t}\n\tif (status === \"completed\") return \"flow_session_close\";\n\tif (status === \"closed\") return \"flow_session_close\";\n\tconst run = activeRun(session);\n\tif (!run) return \"flow_status\";\n\tif (activePendingReview(session)) {\n\t\treturn pendingReviewSourceStale\n\t\t\t? \"flow_feature_reset\"\n\t\t\t: \"dispatch-flow-reviewer\";\n\t}\n\tconst finalRun =\n\t\tsession.plan?.features.every(\n\t\t\t(feature) =>\n\t\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t\t) ?? false;\n\tconst hasPassingValidation = run.validations.some(\n\t\t(validation) =>\n\t\t\tisValidationEligible(validation) &&\n\t\t\tisValidationFresh(session, run, validation) &&\n\t\t\t(!finalRun || validation.scope === \"broad\"),\n\t);\n\tif (!hasPassingValidation) return \"flow_validation_start\";\n\tif (unresolvedVetoedCommands(session, run).length > 0) {\n\t\treturn \"flow_validation_start\";\n\t}\n\treturn \"flow_review_start\";\n}\n\nexport function compactProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): CompactProjection {\n\tconst run = activeRun(session);\n\tconst blockedFeature = blockedFeatureProjection(session);\n\tconst retryRequest = closureRetryRequest(session);\n\tif (session.closure && !retryRequest) {\n\t\tthrow new Error(\"Session closure is not bound to a valid close operation.\");\n\t}\n\treturn {\n\t\tview: \"compact\",\n\t\tsessionId: session.id,\n\t\trevision: session.revision,\n\t\tgoal: session.goal,\n\t\tstatus: sessionStatus(session),\n\t\tapproval: session.approval,\n\t\tactiveFeatureId: run?.featureId ?? null,\n\t\tactiveRunId: run?.id ?? null,\n\t\tblockedFeature,\n\t\tprogress: featureProgress(session),\n\t\tnextAction: nextAction(session, pendingReviewSourceStale, blockedFeature),\n\t\tarchiveRetry: retryRequest ? { request: retryRequest } : null,\n\t\tfindingsDigest: findingsDigest(session),\n\t};\n}\n\nexport function archivedProjection(session: Session): ArchivedProjection {\n\treturn {\n\t\t...compactProjection(session),\n\t\tnextAction: null,\n\t\tarchiveRetry: null,\n\t\tarchived: true,\n\t};\n}\n\nexport function executionProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): ExecutionProjection {\n\tconst run = activeRun(session);\n\tconst feature = session.plan?.features.find(\n\t\t(item) => item.id === run?.featureId,\n\t);\n\treturn {\n\t\t...compactProjection(session, pendingReviewSourceStale),\n\t\tview: \"execution\",\n\t\tfeature: feature ?? null,\n\t\trun: run ?? null,\n\t};\n}\n\nexport function reviewerProjection(\n\tsession: Session,\n\tassignmentId: string,\n): ReviewerProjection {\n\tlet assignment: ReviewAssignment | null = null;\n\tlet run: FeatureRun | null = null;\n\tfor (const candidate of session.runs) {\n\t\tconst found = candidate.reviews.find(\n\t\t\t(review) => review.id === assignmentId,\n\t\t);\n\t\tif (found) {\n\t\t\tassignment = found;\n\t\t\trun = candidate;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!assignment || !run) throw new Error(\"Unknown review assignment.\");\n\tif (activeRun(session)?.id !== run.id || assignment.result !== null) {\n\t\tthrow new Error(\n\t\t\t\"Review assignment is no longer pending on the active feature run.\",\n\t\t);\n\t}\n\tconst feature = session.plan?.features.find(\n\t\t(item) => item.id === assignment?.featureId,\n\t);\n\tconst plan = session.plan;\n\tconst assignedValidationIds = new Set(assignment.validationIds);\n\treturn {\n\t\tview: \"reviewer\",\n\t\tsessionId: session.id,\n\t\trevision: session.revision,\n\t\tgoal: session.goal,\n\t\tplanContext: plan\n\t\t\t? {\n\t\t\t\t\tsummary: plan.summary,\n\t\t\t\t\toverview: plan.overview,\n\t\t\t\t\trequirements: [...plan.requirements],\n\t\t\t\t\tdecisions: [...plan.decisions],\n\t\t\t\t\tfeatures: plan.features.map((candidate) => ({\n\t\t\t\t\t\tid: candidate.id,\n\t\t\t\t\t\ttitle: candidate.title,\n\t\t\t\t\t\tsummary: candidate.summary,\n\t\t\t\t\t\ttargets: [...candidate.targets],\n\t\t\t\t\t\tvalidation: [...candidate.validation],\n\t\t\t\t\t\tdependsOn: [...candidate.dependsOn],\n\t\t\t\t\t})),\n\t\t\t\t\t...(plan.evidence === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tevidence: plan.evidence.map((entry) => ({\n\t\t\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t: null,\n\t\tfeature: feature ?? null,\n\t\tassignment,\n\t\tartifactsChanged: run.artifactsChanged,\n\t\tvalidations: run.validations.filter((validation) =>\n\t\t\tassignedValidationIds.has(validation.id),\n\t\t),\n\t\tcompletedFeatureIds:\n\t\t\tplan?.features\n\t\t\t\t.filter((candidate) => isFeatureComplete(session, candidate.id))\n\t\t\t\t.map((candidate) => candidate.id) ?? [],\n\t\tpriorFindings: livePriorFindings(session, assignment.featureId),\n\t\tnextFindingIdPrefix: findingIdPrefix(\n\t\t\tassignment.featureId,\n\t\t\tassignment.createdRevision,\n\t\t),\n\t};\n}\n\nfunction detailProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): DetailProjection {\n\treturn {\n\t\t...compactProjection(session, pendingReviewSourceStale),\n\t\tview: \"detail\",\n\t\tplan: session.plan,\n\t\truns: session.runs,\n\t\tclosure: session.closure,\n\t\toperations: session.operations,\n\t};\n}\n\nexport function idleProjection(view: StatusRequest[\"view\"]): IdleProjection {\n\treturn {\n\t\tview,\n\t\tstatus: \"idle\",\n\t\trevision: 0,\n\t\tnextAction: \"flow_plan_save\",\n\t\tfindingsDigest: [],\n\t};\n}\n\nexport function project(\n\tsession: Session,\n\trequest: StatusRequest,\n\tpendingReviewSourceStale = false,\n): ActiveSessionProjection {\n\tswitch (request.view) {\n\t\tcase \"compact\":\n\t\t\treturn compactProjection(session, pendingReviewSourceStale);\n\t\tcase \"detail\":\n\t\t\treturn detailProjection(session, pendingReviewSourceStale);\n\t\tcase \"execution\":\n\t\t\treturn executionProjection(session, pendingReviewSourceStale);\n\t\tcase \"reviewer\":\n\t\t\treturn reviewerProjection(session, request.assignmentId);\n\t}\n}\n",
26
+ "import {\n\ttype ClosureRetryRequest,\n\tclosureRetryRequest,\n} from \"../domain/operation.js\";\nimport {\n\tfindingIdPrefix,\n\ttype LivePriorFinding,\n\tlivePriorFindings,\n} from \"../domain/review-findings.js\";\nimport type {\n\tFeatureRun,\n\tOperationRecord,\n\tPlan,\n\tPlanFeature,\n\tReviewAssignment,\n\tSession,\n\tSessionClosure,\n\tSessionStatus,\n\tValidationObservation,\n} from \"../domain/session.js\";\nimport { firstBlockedRun } from \"../domain/session.js\";\nimport {\n\tactiveRun,\n\tisFeatureComplete,\n\tnextRunnableFeature,\n\tsessionStatus,\n} from \"../domain/transitions.js\";\nimport {\n\tisValidationEligible,\n\tisValidationFresh,\n\tunresolvedVetoedCommands,\n\tunsatisfiedExtraEvidence,\n} from \"../domain/validation.js\";\nimport { type FindingsDigest, findingsDigest } from \"./findings-digest.js\";\nimport type { StatusRequest } from \"./schema.js\";\n\ntype FlowNextAction =\n\t| \"flow_plan_save\"\n\t| \"flow_plan_approve\"\n\t| \"flow_run_start\"\n\t| \"flow_feature_reset\"\n\t| \"await-user-direction\"\n\t| \"flow_session_close\"\n\t| \"flow_status\"\n\t| \"dispatch-flow-reviewer\"\n\t| \"flow_validation_start\"\n\t| \"flow_review_start\";\n\ntype FeatureProgress = Readonly<{\n\tcompleted: number;\n\ttotal: number;\n\tremaining: number;\n}>;\n\ntype BlockedFeatureProjection = Readonly<{\n\tfeatureId: string;\n\tattempt: number;\n\tfailedReviewCount: number;\n\t/**\n\t * True when any failed review of this feature raised a scope blocker, which\n\t * makes the feature ineligible for automatic retry regardless of the count.\n\t */\n\tscopeBlocker: boolean;\n}>;\n\ntype ArchiveRetryProjection = Readonly<{\n\trequest: ClosureRetryRequest;\n}>;\n\nexport type CompactProjection = Readonly<{\n\tview: \"compact\";\n\tsessionId: string;\n\trevision: number;\n\tgoal: string;\n\tstatus: SessionStatus;\n\tapproval: Session[\"approval\"];\n\tactiveFeatureId: string | null;\n\tactiveRunId: string | null;\n\tblockedFeature: BlockedFeatureProjection | null;\n\tprogress: FeatureProgress;\n\tnextAction: FlowNextAction;\n\tarchiveRetry: ArchiveRetryProjection | null;\n\tfindingsDigest: FindingsDigest;\n}>;\n\nexport type ArchivedProjection = Readonly<\n\tOmit<CompactProjection, \"nextAction\" | \"archiveRetry\"> & {\n\t\tnextAction: null;\n\t\tarchiveRetry: null;\n\t\tarchived: true;\n\t}\n>;\n\nexport type ExecutionProjection = Readonly<\n\tOmit<CompactProjection, \"view\"> & {\n\t\tview: \"execution\";\n\t\tfeature: PlanFeature | null;\n\t\trun: FeatureRun | null;\n\t}\n>;\n\ntype DetailProjection = Readonly<\n\tOmit<CompactProjection, \"view\"> & {\n\t\tview: \"detail\";\n\t\tplan: Plan | null;\n\t\truns: FeatureRun[];\n\t\tclosure: SessionClosure | null;\n\t\toperations: OperationRecord[];\n\t}\n>;\n\nexport type ReviewerProjection = Readonly<{\n\tview: \"reviewer\";\n\tsessionId: string;\n\trevision: number;\n\tgoal: string;\n\tplanContext: Plan | null;\n\tfeature: PlanFeature | null;\n\tassignment: ReviewAssignment;\n\tartifactsChanged: FeatureRun[\"artifactsChanged\"];\n\tvalidations: ValidationObservation[];\n\tcompletedFeatureIds: string[];\n\t/**\n\t * Prior findings this review must still account for, carrying the text the\n\t * reviewer has to re-check, computed from durable state rather than recovered\n\t * from the manager's packet prose.\n\t */\n\tpriorFindings: ReadonlyArray<LivePriorFinding>;\n\t/** Prefix the runtime uses when it numbers a new finding of this assignment. */\n\tnextFindingIdPrefix: string;\n}>;\n\ntype IdleProjection = Readonly<{\n\tview: StatusRequest[\"view\"];\n\tstatus: \"idle\";\n\trevision: 0;\n\tnextAction: \"flow_plan_save\";\n\tfindingsDigest: FindingsDigest;\n}>;\n\nexport type ActiveSessionProjection =\n\t| CompactProjection\n\t| DetailProjection\n\t| ExecutionProjection\n\t| ReviewerProjection;\n\nexport type StatusProjection = ActiveSessionProjection | IdleProjection;\n\nfunction featureProgress(session: Session): FeatureProgress {\n\tconst total = session.plan?.features.length ?? 0;\n\tconst completed =\n\t\tsession.plan?.features.filter((feature) =>\n\t\t\tisFeatureComplete(session, feature.id),\n\t\t).length ?? 0;\n\treturn { completed, total, remaining: total - completed };\n}\n\nexport function activePendingReview(session: Session): ReviewAssignment | null {\n\treturn (\n\t\tactiveRun(session)?.reviews.find((review) => review.result === null) ?? null\n\t);\n}\n\nfunction blockedFeatureProjection(\n\tsession: Session,\n): BlockedFeatureProjection | null {\n\tconst blockedRun = firstBlockedRun(session);\n\tif (!blockedRun) return null;\n\tconst featureRuns = session.runs.filter(\n\t\t(run) => run.featureId === blockedRun.featureId,\n\t);\n\treturn {\n\t\tfeatureId: blockedRun.featureId,\n\t\tattempt: blockedRun.attempt,\n\t\tfailedReviewCount: featureRuns.filter((run) =>\n\t\t\trun.reviews.some((review) => review.result?.verdict === \"failed\"),\n\t\t).length,\n\t\tscopeBlocker: featureRuns.some((run) =>\n\t\t\trun.reviews.some(\n\t\t\t\t(review) =>\n\t\t\t\t\treview.result?.verdict === \"failed\" &&\n\t\t\t\t\treview.result.findings.some((finding) => finding.scopeBlocker),\n\t\t\t),\n\t\t),\n\t};\n}\n\nfunction nextAction(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n\tblockedFeature = blockedFeatureProjection(session),\n): FlowNextAction {\n\tconst status = sessionStatus(session);\n\tif (status === \"planning\") {\n\t\treturn session.plan ? \"flow_plan_approve\" : \"flow_plan_save\";\n\t}\n\tif (status === \"ready\" && !nextRunnableFeature(session))\n\t\treturn \"await-user-direction\";\n\tif (status === \"ready\") return \"flow_run_start\";\n\tif (status === \"blocked\") {\n\t\t// A scope blocker or second failure requires user direction.\n\t\treturn (blockedFeature?.failedReviewCount ?? 0) >= 2 ||\n\t\t\tblockedFeature?.scopeBlocker === true\n\t\t\t? \"await-user-direction\"\n\t\t\t: \"flow_feature_reset\";\n\t}\n\tif (status === \"completed\") return \"flow_session_close\";\n\tif (status === \"closed\") return \"flow_session_close\";\n\tconst run = activeRun(session);\n\tif (!run) return \"flow_status\";\n\tif (activePendingReview(session)) {\n\t\treturn pendingReviewSourceStale\n\t\t\t? \"flow_feature_reset\"\n\t\t\t: \"dispatch-flow-reviewer\";\n\t}\n\tconst finalRun =\n\t\tsession.plan?.features.every(\n\t\t\t(feature) =>\n\t\t\t\tfeature.id === run.featureId || isFeatureComplete(session, feature.id),\n\t\t) ?? false;\n\tconst passingValidation = run.validations.findLast(\n\t\t(validation) =>\n\t\t\tisValidationEligible(validation) &&\n\t\t\tisValidationFresh(session, run, validation) &&\n\t\t\t(!finalRun || validation.scope === \"broad\"),\n\t);\n\tif (!passingValidation) return \"flow_validation_start\";\n\tif (unresolvedVetoedCommands(session, run).length > 0) {\n\t\treturn \"flow_validation_start\";\n\t}\n\tif (\n\t\tfinalRun &&\n\t\tunsatisfiedExtraEvidence(session, passingValidation.sourceDigest).length > 0\n\t)\n\t\treturn \"await-user-direction\";\n\treturn \"flow_review_start\";\n}\n\nexport function compactProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): CompactProjection {\n\tconst run = activeRun(session);\n\tconst blockedFeature = blockedFeatureProjection(session);\n\tconst retryRequest = closureRetryRequest(session);\n\tif (session.closure && !retryRequest) {\n\t\tthrow new Error(\"Session closure is not bound to a valid close operation.\");\n\t}\n\treturn {\n\t\tview: \"compact\",\n\t\tsessionId: session.id,\n\t\trevision: session.revision,\n\t\tgoal: session.goal,\n\t\tstatus: sessionStatus(session),\n\t\tapproval: session.approval,\n\t\tactiveFeatureId: run?.featureId ?? null,\n\t\tactiveRunId: run?.id ?? null,\n\t\tblockedFeature,\n\t\tprogress: featureProgress(session),\n\t\tnextAction: nextAction(session, pendingReviewSourceStale, blockedFeature),\n\t\tarchiveRetry: retryRequest ? { request: retryRequest } : null,\n\t\tfindingsDigest: findingsDigest(session),\n\t};\n}\n\nexport function archivedProjection(session: Session): ArchivedProjection {\n\treturn {\n\t\t...compactProjection(session),\n\t\tnextAction: null,\n\t\tarchiveRetry: null,\n\t\tarchived: true,\n\t};\n}\n\nexport function executionProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): ExecutionProjection {\n\tconst run = activeRun(session);\n\tconst feature = session.plan?.features.find(\n\t\t(item) => item.id === run?.featureId,\n\t);\n\treturn {\n\t\t...compactProjection(session, pendingReviewSourceStale),\n\t\tview: \"execution\",\n\t\tfeature: feature ?? null,\n\t\trun: run ?? null,\n\t};\n}\n\nexport function reviewerProjection(\n\tsession: Session,\n\tassignmentId: string,\n): ReviewerProjection {\n\tlet assignment: ReviewAssignment | null = null;\n\tlet run: FeatureRun | null = null;\n\tfor (const candidate of session.runs) {\n\t\tconst found = candidate.reviews.find(\n\t\t\t(review) => review.id === assignmentId,\n\t\t);\n\t\tif (found) {\n\t\t\tassignment = found;\n\t\t\trun = candidate;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!assignment || !run) throw new Error(\"Unknown review assignment.\");\n\tif (activeRun(session)?.id !== run.id || assignment.result !== null) {\n\t\tthrow new Error(\n\t\t\t\"Review assignment is no longer pending on the active feature run.\",\n\t\t);\n\t}\n\tconst feature = session.plan?.features.find(\n\t\t(item) => item.id === assignment?.featureId,\n\t);\n\tconst plan = session.plan;\n\tconst assignedValidationIds = new Set(assignment.validationIds);\n\treturn {\n\t\tview: \"reviewer\",\n\t\tsessionId: session.id,\n\t\trevision: session.revision,\n\t\tgoal: session.goal,\n\t\tplanContext: plan\n\t\t\t? {\n\t\t\t\t\tsummary: plan.summary,\n\t\t\t\t\toverview: plan.overview,\n\t\t\t\t\trequirements: [...plan.requirements],\n\t\t\t\t\tdecisions: [...plan.decisions],\n\t\t\t\t\tfeatures: plan.features.map((candidate) => ({\n\t\t\t\t\t\tid: candidate.id,\n\t\t\t\t\t\ttitle: candidate.title,\n\t\t\t\t\t\tsummary: candidate.summary,\n\t\t\t\t\t\ttargets: [...candidate.targets],\n\t\t\t\t\t\tvalidation: [...candidate.validation],\n\t\t\t\t\t\tdependsOn: [...candidate.dependsOn],\n\t\t\t\t\t})),\n\t\t\t\t\t...(plan.evidence === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tevidence: plan.evidence.map((entry) => ({\n\t\t\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t: null,\n\t\tfeature: feature ?? null,\n\t\tassignment,\n\t\tartifactsChanged: run.artifactsChanged,\n\t\tvalidations: run.validations.filter((validation) =>\n\t\t\tassignedValidationIds.has(validation.id),\n\t\t),\n\t\tcompletedFeatureIds:\n\t\t\tplan?.features\n\t\t\t\t.filter((candidate) => isFeatureComplete(session, candidate.id))\n\t\t\t\t.map((candidate) => candidate.id) ?? [],\n\t\tpriorFindings: livePriorFindings(session, assignment.featureId),\n\t\tnextFindingIdPrefix: findingIdPrefix(\n\t\t\tassignment.featureId,\n\t\t\tassignment.createdRevision,\n\t\t),\n\t};\n}\n\nfunction detailProjection(\n\tsession: Session,\n\tpendingReviewSourceStale = false,\n): DetailProjection {\n\treturn {\n\t\t...compactProjection(session, pendingReviewSourceStale),\n\t\tview: \"detail\",\n\t\tplan: session.plan,\n\t\truns: session.runs,\n\t\tclosure: session.closure,\n\t\toperations: session.operations,\n\t};\n}\n\nexport function idleProjection(view: StatusRequest[\"view\"]): IdleProjection {\n\treturn {\n\t\tview,\n\t\tstatus: \"idle\",\n\t\trevision: 0,\n\t\tnextAction: \"flow_plan_save\",\n\t\tfindingsDigest: [],\n\t};\n}\n\nexport function project(\n\tsession: Session,\n\trequest: StatusRequest,\n\tpendingReviewSourceStale = false,\n): ActiveSessionProjection {\n\tswitch (request.view) {\n\t\tcase \"compact\":\n\t\t\treturn compactProjection(session, pendingReviewSourceStale);\n\t\tcase \"detail\":\n\t\t\treturn detailProjection(session, pendingReviewSourceStale);\n\t\tcase \"execution\":\n\t\t\treturn executionProjection(session, pendingReviewSourceStale);\n\t\tcase \"reviewer\":\n\t\t\treturn reviewerProjection(session, request.assignmentId);\n\t}\n}\n",
27
27
  "import { operationInputDigest } from \"../domain/operation.js\";\nimport type { Session } from \"../domain/session.js\";\nimport { closeSession } from \"../domain/transitions.js\";\nimport { type DeliveryProjection, deliveryProjection } from \"./delivery.js\";\nimport { ArchiveCollisionError } from \"./errors.js\";\nimport {\n\tdataNote,\n\ttype FailureWorkflowData,\n\ttype FlowErrorResponse,\n\ttype FlowResponse,\n\ttype OperationResult,\n\tok,\n\toperationResult,\n} from \"./flow-response.js\";\nimport type { SessionTransaction } from \"./ports/session-repository.js\";\nimport type { SessionCloseRequest, StatusRequest } from \"./schema.js\";\nimport {\n\ttype ActiveSessionProjection,\n\ttype ArchivedProjection,\n\tarchivedProjection,\n\ttype CompactProjection,\n\tcompactProjection,\n\tproject,\n} from \"./session-projection.js\";\n\ntype ArchivePendingCloseState = Readonly<{\n\tdurableAccepted: true;\n\tarchiveConfirmed: false;\n\tretryExactRequest: true;\n\tretryRequest: SessionCloseRequest;\n}>;\n\ntype ManualRecoveryCloseState<DurableAccepted extends boolean> = Readonly<{\n\tdurableAccepted: DurableAccepted;\n\tarchiveConfirmed: false;\n\tretryExactRequest: false;\n\tmanualRecoveryRequired: true;\n}>;\n\ntype ManualRecoveryProjection<T extends object> = Readonly<\n\tT & {\n\t\tnextAction: \"await-user-direction\";\n\t\tarchiveRetry: null;\n\t}\n>;\n\ntype ArchiveLookupProjection = Readonly<{\n\tview: \"compact\";\n\tsessionId: string;\n\tstatus: \"unknown\";\n\tnextAction: \"await-user-direction\";\n\tarchiveRetry: null;\n}>;\n\ntype SuccessfulCloseWorkflowData = Readonly<{\n\toperation: OperationResult;\n\tprojection: ArchivedProjection;\n\tdelivery: DeliveryProjection;\n}>;\n\ntype ArchivePendingCloseWorkflowData = FailureWorkflowData &\n\tReadonly<{\n\t\toperation: OperationResult;\n\t\tcloseState: ArchivePendingCloseState;\n\t\tprojection: CompactProjection;\n\t\tdelivery: DeliveryProjection;\n\t}>;\n\ntype AcceptedManualRecoveryWorkflowData = FailureWorkflowData &\n\tReadonly<{\n\t\toperation: OperationResult;\n\t\tcloseState: ManualRecoveryCloseState<true>;\n\t\tprojection: ManualRecoveryProjection<CompactProjection>;\n\t\tdelivery: DeliveryProjection;\n\t}>;\n\ntype UnconfirmedManualRecoveryWorkflowData = FailureWorkflowData &\n\tReadonly<{\n\t\toperation: OperationResult;\n\t\tcloseState: ManualRecoveryCloseState<false>;\n\t\tprojection: ManualRecoveryProjection<CompactProjection>;\n\t\tdelivery?: never;\n\t}>;\n\ntype ArchiveLookupRecoveryWorkflowData = FailureWorkflowData &\n\tReadonly<{\n\t\toperation?: never;\n\t\tcloseState: ManualRecoveryCloseState<false>;\n\t\tprojection: ArchiveLookupProjection;\n\t\tdelivery?: never;\n\t}>;\n\ntype CloseRecoveryWorkflowData =\n\t| ArchivePendingCloseWorkflowData\n\t| AcceptedManualRecoveryWorkflowData\n\t| UnconfirmedManualRecoveryWorkflowData\n\t| ArchiveLookupRecoveryWorkflowData;\n\ntype StatusRecoveryWorkflowData = FailureWorkflowData &\n\tReadonly<{\n\t\toperation?: never;\n\t\tcloseState: ManualRecoveryCloseState<true>;\n\t\tprojection: ManualRecoveryProjection<ActiveSessionProjection>;\n\t\tdelivery: DeliveryProjection;\n\t}>;\n\nexport type ArchiveCollisionStatusResponse =\n\tFlowErrorResponse<StatusRecoveryWorkflowData>;\n\nexport type CloseSessionResponse =\n\t| FlowResponse<SuccessfulCloseWorkflowData>\n\t| FlowErrorResponse<CloseRecoveryWorkflowData>;\n\nasync function loadExactArchivedClose(\n\ttransaction: SessionTransaction,\n\trequest: SessionCloseRequest,\n): Promise<Session | null> {\n\tconst archived = await transaction.loadArchive(request.sessionId);\n\tconst operation = archived?.operations.find(\n\t\t(item) => item.id === request.operationId,\n\t);\n\tif (\n\t\t!archived?.closure ||\n\t\toperation?.kind !== \"session-close\" ||\n\t\toperation.inputDigest !== operationInputDigest(request)\n\t) {\n\t\treturn null;\n\t}\n\treturn archived;\n}\n\nasync function archivedStateCollision(\n\ttransaction: SessionTransaction,\n\tsession: Session,\n): Promise<ArchiveCollisionError | null> {\n\tif (!session.closure) return null;\n\tlet archived: Session | null;\n\ttry {\n\t\tarchived = await transaction.loadArchive(session.id);\n\t} catch (error) {\n\t\tif (error instanceof ArchiveCollisionError) return error;\n\t\tthrow error;\n\t}\n\tif (!archived || JSON.stringify(archived) === JSON.stringify(session)) {\n\t\treturn null;\n\t}\n\treturn new ArchiveCollisionError(\n\t\t\"Flow found a different archive for the closed active session.\",\n\t);\n}\n\nfunction successfulCloseResponse(\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n\tsummary: string,\n): Extract<CloseSessionResponse, { status: \"ok\" }> {\n\treturn ok(summary, {\n\t\toperation: operationResult(\n\t\t\tsession,\n\t\t\trequest.operationId,\n\t\t\treplayed,\n\t\t\tsession.closure,\n\t\t),\n\t\tprojection: archivedProjection(session),\n\t\tdelivery: deliveryProjection(session),\n\t});\n}\n\nfunction archivePendingResponse(\n\terror: unknown,\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n): FlowErrorResponse<ArchivePendingCloseWorkflowData> {\n\tconst failure = error instanceof Error ? error.message : String(error);\n\tconst closeState: ArchivePendingCloseState = {\n\t\tdurableAccepted: true,\n\t\tarchiveConfirmed: false,\n\t\tretryExactRequest: true,\n\t\tretryRequest: request,\n\t};\n\treturn {\n\t\tstatus: \"error\",\n\t\tsummary:\n\t\t\t\"Session close was durably accepted, but archive publication was not confirmed.\",\n\t\tworkflowData: {\n\t\t\tdataNote: dataNote(),\n\t\t\toperation: operationResult(\n\t\t\t\tsession,\n\t\t\t\trequest.operationId,\n\t\t\t\treplayed,\n\t\t\t\tsession.closure,\n\t\t\t),\n\t\t\tcloseState,\n\t\t\tprojection: compactProjection(session),\n\t\t\tdelivery: deliveryProjection(session),\n\t\t\tfailure: {\n\t\t\t\tsummary: failure,\n\t\t\t\trecovery:\n\t\t\t\t\t\"Retry this exact flow_session_close request with the same operation ID and payload.\",\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction manualRecoveryCloseState<DurableAccepted extends boolean>(\n\tdurableAccepted: DurableAccepted,\n): ManualRecoveryCloseState<DurableAccepted> {\n\treturn {\n\t\tdurableAccepted,\n\t\tarchiveConfirmed: false,\n\t\tretryExactRequest: false,\n\t\tmanualRecoveryRequired: true,\n\t};\n}\n\nfunction manualRecoveryProjection<T extends object>(\n\tprojection: T,\n): ManualRecoveryProjection<T> {\n\treturn {\n\t\t...projection,\n\t\tnextAction: \"await-user-direction\",\n\t\tarchiveRetry: null,\n\t};\n}\n\nfunction archiveCollisionResponse(\n\terror: ArchiveCollisionError,\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n\tdurableAccepted?: true,\n): FlowErrorResponse<AcceptedManualRecoveryWorkflowData>;\nfunction archiveCollisionResponse(\n\terror: ArchiveCollisionError,\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n\tdurableAccepted: false,\n): FlowErrorResponse<UnconfirmedManualRecoveryWorkflowData>;\nfunction archiveCollisionResponse(\n\terror: ArchiveCollisionError,\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n\tdurableAccepted = true,\n): FlowErrorResponse<\n\tAcceptedManualRecoveryWorkflowData | UnconfirmedManualRecoveryWorkflowData\n> {\n\tconst operation = operationResult(\n\t\tsession,\n\t\trequest.operationId,\n\t\treplayed,\n\t\tsession.closure,\n\t);\n\tconst projection = manualRecoveryProjection(compactProjection(session));\n\tconst failure = {\n\t\tsummary: error.message,\n\t\trecovery:\n\t\t\t\"Preserve both active and archived state, inspect the collision, and do not overwrite or delete either document automatically.\",\n\t};\n\tif (durableAccepted) {\n\t\treturn {\n\t\t\tstatus: \"error\",\n\t\t\tsummary:\n\t\t\t\t\"Session close was durably accepted, but conflicting Flow state requires manual recovery.\",\n\t\t\tworkflowData: {\n\t\t\t\tdataNote: dataNote(),\n\t\t\t\toperation,\n\t\t\t\tcloseState: manualRecoveryCloseState(true),\n\t\t\t\tprojection,\n\t\t\t\tdelivery: deliveryProjection(session),\n\t\t\t\tfailure,\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\tstatus: \"error\",\n\t\tsummary:\n\t\t\t\"Session close replay could not confirm durable active state; manual recovery is required.\",\n\t\tworkflowData: {\n\t\t\tdataNote: dataNote(),\n\t\t\toperation,\n\t\t\tcloseState: manualRecoveryCloseState(false),\n\t\t\tprojection,\n\t\t\tfailure,\n\t\t},\n\t};\n}\n\nfunction archiveCollisionStatusResponse(\n\terror: ArchiveCollisionError,\n\tsession: Session,\n\trequest: StatusRequest,\n): FlowErrorResponse<StatusRecoveryWorkflowData> {\n\treturn {\n\t\tstatus: \"error\",\n\t\tsummary:\n\t\t\t\"The closed Flow session has conflicting archive state and requires manual recovery.\",\n\t\tworkflowData: {\n\t\t\tdataNote: dataNote(),\n\t\t\tcloseState: manualRecoveryCloseState(true),\n\t\t\tprojection: manualRecoveryProjection(project(session, request)),\n\t\t\tdelivery: deliveryProjection(session),\n\t\t\tfailure: {\n\t\t\t\tsummary: error.message,\n\t\t\t\trecovery:\n\t\t\t\t\t\"Preserve both active and archived state, inspect the collision, and do not overwrite or delete either document automatically.\",\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction archiveLookupCollisionResponse(\n\terror: ArchiveCollisionError,\n\trequest: SessionCloseRequest,\n): FlowErrorResponse<ArchiveLookupRecoveryWorkflowData> {\n\treturn {\n\t\tstatus: \"error\",\n\t\tsummary:\n\t\t\t\"Flow could not verify the archived close; manual recovery is required.\",\n\t\tworkflowData: {\n\t\t\tdataNote: dataNote(),\n\t\t\tcloseState: manualRecoveryCloseState(false),\n\t\t\tprojection: {\n\t\t\t\tview: \"compact\",\n\t\t\t\tsessionId: request.sessionId,\n\t\t\t\tstatus: \"unknown\",\n\t\t\t\tnextAction: \"await-user-direction\",\n\t\t\t\tarchiveRetry: null,\n\t\t\t},\n\t\t\tfailure: {\n\t\t\t\tsummary: error.message,\n\t\t\t\trecovery:\n\t\t\t\t\t\"Preserve active and archived state, inspect the requested archive, and do not overwrite or delete either document automatically.\",\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction archiveFailureResponse(\n\terror: unknown,\n\tsession: Session,\n\trequest: SessionCloseRequest,\n\treplayed: boolean,\n): FlowErrorResponse<\n\tArchivePendingCloseWorkflowData | AcceptedManualRecoveryWorkflowData\n> {\n\treturn error instanceof ArchiveCollisionError\n\t\t? archiveCollisionResponse(error, session, request, replayed)\n\t\t: archivePendingResponse(error, session, request, replayed);\n}\n\nexport async function closedArchiveCollisionStatus(\n\ttransaction: SessionTransaction,\n\tsession: Session,\n\trequest: StatusRequest,\n): Promise<ArchiveCollisionStatusResponse | null> {\n\tconst collision = await archivedStateCollision(transaction, session);\n\treturn collision\n\t\t? archiveCollisionStatusResponse(collision, session, request)\n\t\t: null;\n}\n\nexport async function closeSessionTransaction(\n\ttransaction: SessionTransaction,\n\trequest: SessionCloseRequest,\n): Promise<CloseSessionResponse> {\n\tconst active = await transaction.load();\n\tif (!active || active.id !== request.sessionId) {\n\t\tlet archived: Session | null;\n\t\ttry {\n\t\t\tarchived = await loadExactArchivedClose(transaction, request);\n\t\t} catch (error) {\n\t\t\tif (error instanceof ArchiveCollisionError) {\n\t\t\t\treturn archiveLookupCollisionResponse(error, request);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tif (archived) {\n\t\t\tif (!active) {\n\t\t\t\ttry {\n\t\t\t\t\tawait transaction.archiveAndClear(archived);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn archiveFailureResponse(error, archived, request, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn successfulCloseResponse(\n\t\t\t\tarchived,\n\t\t\t\trequest,\n\t\t\t\ttrue,\n\t\t\t\t\"Session was already closed and archived.\",\n\t\t\t);\n\t\t}\n\t\tif (!active) {\n\t\t\tthrow new Error(\"No matching active or archived closure exists.\");\n\t\t}\n\t}\n\n\tconst result = closeSession(active, request);\n\tif (result.replayed) {\n\t\ttry {\n\t\t\tawait transaction.confirmActiveDurability(result.session);\n\t\t} catch (error) {\n\t\t\tif (error instanceof ArchiveCollisionError) {\n\t\t\t\treturn archiveCollisionResponse(\n\t\t\t\t\terror,\n\t\t\t\t\tresult.session,\n\t\t\t\t\trequest,\n\t\t\t\t\ttrue,\n\t\t\t\t\tfalse,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t} else {\n\t\tawait transaction.save(result.session);\n\t}\n\ttry {\n\t\tawait transaction.archiveAndClear(result.session);\n\t} catch (error) {\n\t\treturn archiveFailureResponse(\n\t\t\terror,\n\t\t\tresult.session,\n\t\t\trequest,\n\t\t\tresult.replayed,\n\t\t);\n\t}\n\treturn successfulCloseResponse(\n\t\tresult.session,\n\t\trequest,\n\t\tresult.replayed,\n\t\t\"Session closed and archived.\",\n\t);\n}\n",
28
28
  "import { operationInputDigest } from \"../domain/operation.js\";\nimport type { FeatureRun, Session } from \"../domain/session.js\";\nimport {\n\tactiveRun,\n\tapprovePlan,\n\tcompleteFeature,\n\tresetFeature,\n\tsavePlan,\n\tstartReview,\n\tstartRun,\n\ttype TransitionEnvironment,\n} from \"../domain/transitions.js\";\nimport { UnreadableFlowSessionError } from \"./errors.js\";\nimport {\n\terrorResponse,\n\ttype FlowResponse,\n\ttype OperationResult,\n\tok,\n\toperationResult,\n} from \"./flow-response.js\";\nimport type { SessionRepository } from \"./ports/session-repository.js\";\nimport {\n\tFeatureCompleteInputSchema,\n\ttype FeatureCompleteRequest,\n\tFeatureResetInputSchema,\n\tPlanApproveInputSchema,\n\tPlanSaveInputSchema,\n\tReviewStartInputSchema,\n\tRunStartInputSchema,\n\tSessionCloseInputSchema,\n\tStatusInputSchema,\n\ttype StatusRequest,\n} from \"./schema.js\";\nimport {\n\ttype ArchiveCollisionStatusResponse,\n\ttype CloseSessionResponse,\n\tclosedArchiveCollisionStatus,\n\tcloseSessionTransaction,\n} from \"./session-close.js\";\nimport {\n\ttype ActiveSessionProjection,\n\tactivePendingReview,\n\ttype CompactProjection,\n\tcompactProjection,\n\ttype ExecutionProjection,\n\texecutionProjection,\n\tidleProjection,\n\tproject,\n\ttype ReviewerProjection,\n\treviewerProjection,\n\ttype StatusProjection,\n} from \"./session-projection.js\";\n\nexport type { FlowResponse } from \"./flow-response.js\";\n\ntype StatusWorkflowData = Readonly<{ projection: StatusProjection }>;\ntype StatusResponse =\n\t| FlowResponse<StatusWorkflowData>\n\t| ArchiveCollisionStatusResponse;\ntype MutationWorkflowData<P extends ActiveSessionProjection> = Readonly<{\n\toperation: OperationResult;\n\tprojection: P;\n}>;\n\ntype CompactMutationResponse = FlowResponse<\n\tMutationWorkflowData<CompactProjection>\n>;\n\nexport type FlowService = Readonly<{\n\tstatus(input: unknown): Promise<StatusResponse>;\n\tplanSave(input: unknown): Promise<CompactMutationResponse>;\n\tplanApprove(input: unknown): Promise<CompactMutationResponse>;\n\trunStart(\n\t\tinput: unknown,\n\t): Promise<FlowResponse<MutationWorkflowData<ExecutionProjection>>>;\n\treviewStart(\n\t\tinput: unknown,\n\t): Promise<\n\t\tFlowResponse<MutationWorkflowData<ReviewerProjection | CompactProjection>>\n\t>;\n\tfeatureComplete(input: unknown): Promise<CompactMutationResponse>;\n\tfeatureCompleteReplay(input: unknown): Promise<CompactMutationResponse>;\n\tfeatureReset(input: unknown): Promise<CompactMutationResponse>;\n\tsessionClose(input: unknown): Promise<CloseSessionResponse>;\n}>;\n\nfunction featureCompleteResponse(\n\tsession: Session,\n\trequest: FeatureCompleteRequest,\n\trun: FeatureRun,\n\treplayed: boolean,\n): CompactMutationResponse {\n\treturn ok(\n\t\trequest.result.verdict === \"passed\"\n\t\t\t? \"Feature completed.\"\n\t\t\t: \"Feature blocked by review.\",\n\t\t{\n\t\t\toperation: operationResult(session, request.operationId, replayed, run),\n\t\t\tprojection: compactProjection(session),\n\t\t},\n\t);\n}\n\nfunction exactFeatureCompleteReplay(\n\tsession: Session,\n\trequest: FeatureCompleteRequest,\n): Readonly<{ session: Session; run: FeatureRun }> | null {\n\tconst priorOperation = session.operations.find(\n\t\t(operation) => operation.id === request.operationId,\n\t);\n\tif (\n\t\tpriorOperation?.kind !== \"feature-complete\" ||\n\t\tpriorOperation.inputDigest !== operationInputDigest(request)\n\t) {\n\t\treturn null;\n\t}\n\tconst result = completeFeature(session, request);\n\tif (!result.replayed) {\n\t\tthrow new Error(\"Expected an exact feature-completion replay.\");\n\t}\n\treturn { session: result.session, run: result.value };\n}\n\nexport function createFlowService(\n\trepository: SessionRepository,\n\tenvironment: TransitionEnvironment,\n): FlowService {\n\treturn {\n\t\tasync status(input) {\n\t\t\tlet request: StatusRequest;\n\t\t\ttry {\n\t\t\t\trequest = StatusInputSchema.parse(input).request;\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst session = await repository.read();\n\t\t\t\tif (!session) {\n\t\t\t\t\treturn ok(\"No active Flow session.\", {\n\t\t\t\t\t\tprojection: idleProjection(request.view),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\trequest.view !== \"reviewer\" &&\n\t\t\t\t\t(activePendingReview(session) || session.closure)\n\t\t\t\t) {\n\t\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\t\tconst current = await transaction.load();\n\t\t\t\t\t\tif (!current) {\n\t\t\t\t\t\t\treturn ok(\"No active Flow session.\", {\n\t\t\t\t\t\t\t\tprojection: idleProjection(request.view),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst collisionResponse = await closedArchiveCollisionStatus(\n\t\t\t\t\t\t\ttransaction,\n\t\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (collisionResponse) return collisionResponse;\n\t\t\t\t\t\tconst pending = activePendingReview(current);\n\t\t\t\t\t\tlet pendingReviewSourceStale = false;\n\t\t\t\t\t\tif (pending) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tpendingReviewSourceStale =\n\t\t\t\t\t\t\t\t\t(await transaction.computeSourceDigest()) !==\n\t\t\t\t\t\t\t\t\tpending.sourceDigest;\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\treturn errorResponse(\n\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\"Repair workspace fingerprinting before recovering this pending review. Do not redispatch the assignment until its source can be checked.\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ok(\"Flow status loaded.\", {\n\t\t\t\t\t\t\tprojection: project(current, request, pendingReviewSourceStale),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn ok(\"Flow status loaded.\", {\n\t\t\t\t\tprojection: project(session, request),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof UnreadableFlowSessionError) {\n\t\t\t\t\tconst quarantine = await repository.transact(async (transaction) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait transaction.load();\n\t\t\t\t\t\t\treturn { state: \"changed\" as const, path: null };\n\t\t\t\t\t\t} catch (currentError) {\n\t\t\t\t\t\t\tif (!(currentError instanceof UnreadableFlowSessionError)) {\n\t\t\t\t\t\t\t\treturn { state: \"changed\" as const, path: null };\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst path = await transaction.quarantineUnreadable();\n\t\t\t\t\t\t\treturn { state: \"quarantined\" as const, path };\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\treturn errorResponse(\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tquarantine.state === \"changed\"\n\t\t\t\t\t\t\t? \"Flow state changed before quarantine; the current state was left untouched.\"\n\t\t\t\t\t\t\t: quarantine.path\n\t\t\t\t\t\t\t\t? `Unreadable state was quarantined at ${quarantine.path}.`\n\t\t\t\t\t\t\t\t: \"Unreadable state could not be quarantined.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync planSave(input) {\n\t\t\ttry {\n\t\t\t\tconst request = PlanSaveInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst result = savePlan(\n\t\t\t\t\t\tawait transaction.load(),\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tenvironment,\n\t\t\t\t\t);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\treturn ok(\"Draft plan saved.\", {\n\t\t\t\t\t\toperation: operationResult(\n\t\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\t\trequest.operationId,\n\t\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tprojection: compactProjection(result.session),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync planApprove(input) {\n\t\t\ttry {\n\t\t\t\tconst request = PlanApproveInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst session = await transaction.load();\n\t\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\t\tconst result = approvePlan(session, request);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\treturn ok(\"Plan approved.\", {\n\t\t\t\t\t\toperation: operationResult(\n\t\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\t\trequest.operationId,\n\t\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tprojection: compactProjection(result.session),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync runStart(input) {\n\t\t\ttry {\n\t\t\t\tconst request = RunStartInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst session = await transaction.load();\n\t\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\t\tconst result = startRun(session, request, environment);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\treturn ok(\"Feature run ready.\", {\n\t\t\t\t\t\toperation: operationResult(\n\t\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\t\trequest.operationId,\n\t\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t\t\tresult.value,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tprojection: executionProjection(result.session),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync reviewStart(input) {\n\t\t\ttry {\n\t\t\t\tconst request = ReviewStartInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst session = await transaction.load();\n\t\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\t\tconst priorOperation = session.operations.find(\n\t\t\t\t\t\t(operation) => operation.id === request.operationId,\n\t\t\t\t\t);\n\t\t\t\t\tconst priorAssignment =\n\t\t\t\t\t\tpriorOperation?.kind === \"review-start\"\n\t\t\t\t\t\t\t? session.runs\n\t\t\t\t\t\t\t\t\t.flatMap((run) => run.reviews)\n\t\t\t\t\t\t\t\t\t.find((review) => review.id === priorOperation.entityId)\n\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\tconst result = startReview(\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...request,\n\t\t\t\t\t\t\tsourceDigest:\n\t\t\t\t\t\t\t\tpriorAssignment?.sourceDigest ??\n\t\t\t\t\t\t\t\t(await transaction.computeSourceDigest()),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tenvironment,\n\t\t\t\t\t);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\tconst actionable =\n\t\t\t\t\t\tactiveRun(result.session)?.id === result.value.runId &&\n\t\t\t\t\t\tresult.value.result === null;\n\t\t\t\t\treturn ok(\n\t\t\t\t\t\tresult.replayed && !actionable\n\t\t\t\t\t\t\t? \"Review assignment replayed; its current state is no longer actionable.\"\n\t\t\t\t\t\t\t: \"Independent review assignment created.\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toperation: operationResult(\n\t\t\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\t\t\trequest.operationId,\n\t\t\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t\t\t\tresult.value,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tprojection: actionable\n\t\t\t\t\t\t\t\t? reviewerProjection(result.session, result.value.id)\n\t\t\t\t\t\t\t\t: compactProjection(result.session),\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync featureComplete(input) {\n\t\t\ttry {\n\t\t\t\tconst request = FeatureCompleteInputSchema.parse(input).request;\n\t\t\t\tconst current = await repository.read();\n\t\t\t\tif (current) {\n\t\t\t\t\tconst replay = exactFeatureCompleteReplay(current, request);\n\t\t\t\t\tif (replay) {\n\t\t\t\t\t\treturn featureCompleteResponse(\n\t\t\t\t\t\t\treplay.session,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\treplay.run,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst session = await transaction.load();\n\t\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\t\tconst racedReplay = exactFeatureCompleteReplay(session, request);\n\t\t\t\t\tif (racedReplay) {\n\t\t\t\t\t\treturn featureCompleteResponse(\n\t\t\t\t\t\t\tracedReplay.session,\n\t\t\t\t\t\t\trequest,\n\t\t\t\t\t\t\tracedReplay.run,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst priorOperation = session.operations.find(\n\t\t\t\t\t\t(operation) => operation.id === request.operationId,\n\t\t\t\t\t);\n\t\t\t\t\tif (!priorOperation) {\n\t\t\t\t\t\tconst assignment = session.runs\n\t\t\t\t\t\t\t.flatMap((run) => run.reviews)\n\t\t\t\t\t\t\t.find((review) => review.id === request.assignmentId);\n\t\t\t\t\t\tif (!assignment) throw new Error(\"Unknown review assignment.\");\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(await transaction.computeSourceDigest()) !==\n\t\t\t\t\t\t\tassignment.sourceDigest\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn errorResponse(\n\t\t\t\t\t\t\t\tnew Error(\"Workspace content changed after review started.\"),\n\t\t\t\t\t\t\t\t\"Call flow_feature_reset, start a fresh run, and repeat full validation and review. Do not redispatch this source-stale assignment.\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst result = completeFeature(session, request);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\treturn featureCompleteResponse(\n\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tresult.value,\n\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync featureCompleteReplay(input) {\n\t\t\ttry {\n\t\t\t\tconst request = FeatureCompleteInputSchema.parse(input).request;\n\t\t\t\tconst session = await repository.read();\n\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\tconst replay = exactFeatureCompleteReplay(session, request);\n\t\t\t\tif (!replay) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"Only the Flow reviewer may submit a new feature completion; other agents may replay only an exact previously accepted request.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn featureCompleteResponse(\n\t\t\t\t\treplay.session,\n\t\t\t\t\trequest,\n\t\t\t\t\treplay.run,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync featureReset(input) {\n\t\t\ttry {\n\t\t\t\tconst request = FeatureResetInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact(async (transaction) => {\n\t\t\t\t\tconst session = await transaction.load();\n\t\t\t\t\tif (!session) throw new Error(\"No active Flow session exists.\");\n\t\t\t\t\tconst result = resetFeature(session, request, environment);\n\t\t\t\t\tawait transaction.save(result.session);\n\t\t\t\t\treturn ok(\"Feature reset committed.\", {\n\t\t\t\t\t\toperation: operationResult(\n\t\t\t\t\t\t\tresult.session,\n\t\t\t\t\t\t\trequest.operationId,\n\t\t\t\t\t\t\tresult.replayed,\n\t\t\t\t\t\t\tresult.value,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tprojection: compactProjection(result.session),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\n\t\tasync sessionClose(input) {\n\t\t\ttry {\n\t\t\t\tconst request = SessionCloseInputSchema.parse(input).request;\n\t\t\t\treturn await repository.transact((transaction) =>\n\t\t\t\t\tcloseSessionTransaction(transaction, request),\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\treturn errorResponse(error);\n\t\t\t}\n\t\t},\n\t};\n}\n",
29
29
  "import { randomUUID } from \"node:crypto\";\nimport type { TransitionEnvironment } from \"../../domain/transitions.js\";\n\nexport const systemTransitionEnvironment: TransitionEnvironment = {\n\tnewId: (kind) => `${kind}:${randomUUID()}`,\n};\n",
@@ -44,7 +44,7 @@
44
44
  "import { createHash, randomUUID } from \"node:crypto\";\nimport type {\n\tObservedValidation,\n\tPreparedValidation,\n} from \"../../application/prepare-validation.js\";\nimport type {\n\tObservedAssertion,\n\tValidationIneligibleReason,\n\tValidationObservation,\n} from \"../../domain/session.js\";\nimport { observeAssertions } from \"../../domain/test-results.js\";\nimport { isValidationEligible } from \"../../domain/validation.js\";\nimport type { Hooks } from \"./sdk.js\";\n\nconst MAX_CAPTURES = 128;\nconst CAPTURE_TTL_MS = 15 * 60 * 1_000;\n\ntype PendingCapture = PreparedValidation &\n\tReadonly<{\n\t\tcaptureId: string;\n\t\tsessionID: string;\n\t\tworkspace: string;\n\t\tarmedAt: number;\n\t}> & { callID: string | null };\n\ntype ValidationCaptureOptions = Readonly<{\n\tpersistObservation: (\n\t\tworkspace: string,\n\t\tobservation: ObservedValidation,\n\t) => Promise<ValidationObservation>;\n\t/**\n\t * Reads a report the command wrote, with when it was written.\n\t *\n\t * The modification time is the load-bearing part: the path comes from the caller,\n\t * so a report left from an earlier run — or committed by hand — would otherwise\n\t * discharge an entry no command produced anything for.\n\t */\n\treadReport?:\n\t\t| ((\n\t\t\t\tworkspace: string,\n\t\t\t\trelativePath: string,\n\t\t ) => Promise<{ text: string; modifiedMs: number } | null>)\n\t\t| undefined;\n\tnow?: (() => number) | undefined;\n\trandomId?: (() => string) | undefined;\n}>;\n\ntype BeforeInput = Parameters<NonNullable<Hooks[\"tool.execute.before\"]>>[0];\ntype BeforeOutput = Parameters<NonNullable<Hooks[\"tool.execute.before\"]>>[1];\ntype AfterInput = Parameters<NonNullable<Hooks[\"tool.execute.after\"]>>[0];\ntype AfterOutput = Parameters<NonNullable<Hooks[\"tool.execute.after\"]>>[1];\n\nexport class ValidationCaptureError extends Error {\n\treadonly code = \"FLOW_VALIDATION_CAPTURE\";\n}\n\nfunction commandFromArgs(value: unknown): string | null {\n\tif (!value || typeof value !== \"object\") return null;\n\tconst command = (value as Record<string, unknown>).command;\n\treturn typeof command === \"string\" ? command : null;\n}\n\nfunction exitCode(value: unknown): number | null {\n\tif (!value || typeof value !== \"object\") return null;\n\tconst exit = (value as Record<string, unknown>).exit;\n\treturn typeof exit === \"number\" && Number.isSafeInteger(exit) ? exit : null;\n}\n\n/**\n * Whether the host reported that it captured the whole command output.\n *\n * `null` means the host reported neither flag, which is different from reporting\n * truncation: the output may well be complete, but Flow has no evidence of it, so\n * the observation is recorded as ineligible rather than silently treated as\n * truncated.\n */\nfunction completeOutput(value: unknown): boolean | null {\n\tif (!value || typeof value !== \"object\") return null;\n\tconst metadata = value as Record<string, unknown>;\n\tif (metadata.truncated === true || metadata.complete === false) return false;\n\tif (metadata.truncated === false || metadata.complete === true) return true;\n\treturn null;\n}\n\nfunction digest(value: string) {\n\treturn `sha256:${createHash(\"sha256\").update(value).digest(\"hex\")}` as const;\n}\n\nfunction isBash(tool: string): boolean {\n\treturn tool.toLowerCase() === \"bash\";\n}\n\nexport class ValidationCaptureCoordinator {\n\treadonly #persist: ValidationCaptureOptions[\"persistObservation\"];\n\treadonly #readReport: ValidationCaptureOptions[\"readReport\"];\n\treadonly #now: () => number;\n\treadonly #randomId: () => string;\n\treadonly #pending = new Map<string, PendingCapture>();\n\n\tconstructor(options: ValidationCaptureOptions) {\n\t\tthis.#persist = options.persistObservation;\n\t\tthis.#readReport = options.readReport;\n\t\tthis.#now = options.now ?? Date.now;\n\t\tthis.#randomId = options.randomId ?? randomUUID;\n\t}\n\n\t/**\n\t * What the command's own report says about each name the plan declared.\n\t *\n\t * Every route that is not a report this command wrote lands on `absent`, because\n\t * they mean the same thing: nothing observed those cases.\n\t */\n\tasync #observeAssertions(\n\t\tcapture: PendingCapture,\n\t): Promise<ObservedAssertion[]> {\n\t\tif (capture.assertions.length === 0) return [];\n\t\tconst absent = capture.assertions.map((name) => ({\n\t\t\tname,\n\t\t\tstatus: \"absent\" as const,\n\t\t}));\n\t\tif (!capture.resultsPath || !this.#readReport) return absent;\n\t\tlet report: { text: string; modifiedMs: number } | null;\n\t\ttry {\n\t\t\treport = await this.#readReport(capture.workspace, capture.resultsPath);\n\t\t} catch {\n\t\t\treturn absent;\n\t\t}\n\t\t// `<=`, not `<`: the contract is that this command wrote the report, so a report\n\t\t// whose mtime only *equals* the arming instant has not been shown to postdate it.\n\t\t// Not a one-millisecond window either — mtime granularity is a whole second on\n\t\t// some filesystems, which is wide enough for a stale report to share it.\n\t\tif (!report || report.modifiedMs <= capture.armedAt) return absent;\n\t\treturn observeAssertions(capture.assertions, report.text);\n\t}\n\n\t#prune(): void {\n\t\tconst cutoff = this.#now() - CAPTURE_TTL_MS;\n\t\tfor (const [sessionID, capture] of this.#pending) {\n\t\t\tif (capture.callID === null && capture.armedAt < cutoff) {\n\t\t\t\tthis.#pending.delete(sessionID);\n\t\t\t}\n\t\t}\n\t}\n\n\tarm(\n\t\tsessionID: string,\n\t\tworkspace: string,\n\t\tprepared: PreparedValidation,\n\t): Readonly<{ captureId: string; expiresInMs: number }> {\n\t\tthis.#prune();\n\t\tif (this.#pending.has(sessionID)) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"This OpenCode session already has an armed validation command.\",\n\t\t\t);\n\t\t}\n\t\tif (this.#pending.size >= MAX_CAPTURES) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"Flow validation capture is at capacity.\",\n\t\t\t);\n\t\t}\n\t\tconst captureId = this.#randomId();\n\t\tthis.#pending.set(sessionID, {\n\t\t\t...prepared,\n\t\t\tcaptureId,\n\t\t\tsessionID,\n\t\t\tworkspace,\n\t\t\tarmedAt: this.#now(),\n\t\t\tcallID: null,\n\t\t});\n\t\treturn { captureId, expiresInMs: CAPTURE_TTL_MS };\n\t}\n\n\tcancel(sessionID: string): boolean {\n\t\treturn this.#pending.delete(sessionID);\n\t}\n\n\tobserveToolBefore(input: BeforeInput, output: BeforeOutput): void {\n\t\tthis.#prune();\n\t\tif (!isBash(input.tool)) return;\n\t\tconst capture = this.#pending.get(input.sessionID);\n\t\tif (!capture || capture.callID !== null) return;\n\t\tif (commandFromArgs(output.args) !== capture.command) {\n\t\t\tthis.#pending.delete(input.sessionID);\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"The next Bash command did not match the armed validation command; capture was cancelled.\",\n\t\t\t);\n\t\t}\n\t\tcapture.callID = input.callID;\n\t}\n\n\tasync observeToolAfter(\n\t\tinput: AfterInput,\n\t\toutput: AfterOutput,\n\t): Promise<ValidationObservation | null> {\n\t\tthis.#prune();\n\t\tif (!isBash(input.tool)) return null;\n\t\tconst capture = this.#pending.get(input.sessionID);\n\t\tif (!capture || capture.callID !== input.callID) return null;\n\t\tthis.#pending.delete(input.sessionID);\n\t\tif (commandFromArgs(input.args) !== capture.command) {\n\t\t\tthrow new ValidationCaptureError(\n\t\t\t\t\"The executed Bash command changed after Flow armed it.\",\n\t\t\t);\n\t\t}\n\t\t// A host that reports no exit code or no completeness flag still gets a\n\t\t// durable observation, recorded as ineligible. Failing closed by throwing\n\t\t// would lose the record entirely and make Flow unusable on such a host.\n\t\tconst observedExit = exitCode(output.metadata);\n\t\tconst observedComplete = completeOutput(output.metadata);\n\t\tconst hostGap: ValidationIneligibleReason | null =\n\t\t\tobservedExit === null\n\t\t\t\t? \"exit-code-unavailable\"\n\t\t\t\t: observedComplete === null\n\t\t\t\t\t? \"output-completeness-unknown\"\n\t\t\t\t\t: null;\n\t\tconst observedAssertions = await this.#observeAssertions(capture);\n\t\tconst observation = await this.#persist(capture.workspace, {\n\t\t\tfeatureId: capture.featureId,\n\t\t\trunId: capture.runId,\n\t\t\tcommand: capture.command,\n\t\t\tscope: capture.scope,\n\t\t\tsourceDigest: capture.sourceDigest,\n\t\t\thostPlatform: capture.hostPlatform,\n\t\t\tassertions: capture.assertions,\n\t\t\tresultsPath: capture.resultsPath,\n\t\t\t...(observedAssertions.length > 0 ? { observedAssertions } : {}),\n\t\t\tcaptureId: capture.captureId,\n\t\t\texitCode: observedExit,\n\t\t\toutputDigest: digest(output.output),\n\t\t\toutputComplete: observedComplete === true,\n\t\t\t...(hostGap ? { ineligibleReason: hostGap } : {}),\n\t\t});\n\t\toutput.output = `${output.output}\\n\\n[flow-validation] ${JSON.stringify({\n\t\t\tid: observation.id,\n\t\t\tscope: observation.scope,\n\t\t\tpassed: isValidationEligible(observation),\n\t\t\trecordedRevision: observation.recordedRevision,\n\t\t\t// Reported back because a declared case that came out `skipped` or `absent` is\n\t\t\t// exactly the state exit zero hides, and the caller has to be told before it\n\t\t\t// reads the exit code as proof.\n\t\t\t...(observation.observedAssertions\n\t\t\t\t? { assertions: observation.observedAssertions }\n\t\t\t\t: {}),\n\t\t\t...(observation.ineligibleReason\n\t\t\t\t? { ineligibleReason: observation.ineligibleReason }\n\t\t\t\t: {}),\n\t\t})}`;\n\t\treturn observation;\n\t}\n\n\tpendingCount(): number {\n\t\tthis.#prune();\n\t\treturn this.#pending.size;\n\t}\n}\n",
45
45
  "import { dataNote } from \"../../application/flow-response.js\";\nimport { FLOW_CORE_COMMANDS } from \"../../config-shared.js\";\nimport { flowStatus } from \"../../infrastructure/fs/workspace-flow-service.js\";\nimport {\n\tpersistWorkspaceValidation,\n\tprepareWorkspaceValidation,\n\treadWorkspaceTestReport,\n} from \"../../infrastructure/fs/workspace-validation.js\";\nimport { resolveFlowPluginVersion } from \"../../version.js\";\nimport { AutoDriveCoordinator } from \"./auto-drive.js\";\nimport { createConfigHook } from \"./config.js\";\nimport {\n\tcreateFlowPluginInstanceId,\n\tFLOW_LEADERSHIP_PROTOCOL_VERSION,\n\ttype FlowLeadershipHandle,\n\ttype FlowLeadershipReason,\n\ttype FlowLeadershipStatus,\n\tregisterFlowPluginInstance,\n} from \"./leadership.js\";\nimport { createFlowLog } from \"./logging.js\";\nimport type { Hooks, Plugin } from \"./sdk.js\";\nimport { createTools } from \"./tools.js\";\nimport { ValidationCaptureCoordinator } from \"./validation-capture.js\";\n\ntype FlowCommandName = keyof typeof FLOW_CORE_COMMANDS;\ntype CommandHook = NonNullable<Hooks[\"command.execute.before\"]>;\ntype CommandOutput = Parameters<CommandHook>[1];\ntype Part = CommandOutput[\"parts\"][number];\ntype TextPart = Extract<Part, { type: \"text\" }>;\n/**\n * A text part as the plugin writes one: the host assigns id, sessionID, and\n * messageID only after the command hook returns.\n */\ntype DraftTextPart = Omit<TextPart, \"id\" | \"sessionID\" | \"messageID\">;\nconst MUTATION =\n\t/^flow_(?:plan_save|plan_approve|run_start|review_start|feature_complete|feature_reset|session_close)$/;\nconst AUTO_STOPPED = \"Flow auto stopped.\";\nfunction isFlowCommand(command: string): command is FlowCommandName {\n\treturn Object.hasOwn(FLOW_CORE_COMMANDS, command);\n}\nfunction acceptedMutation(tool: string, output: string) {\n\tif (!MUTATION.test(tool)) return null;\n\ttry {\n\t\tconst response = JSON.parse(output);\n\t\tconst data = response.workflowData;\n\t\tconst closeAccepted =\n\t\t\ttool === \"flow_session_close\" &&\n\t\t\tresponse.status === \"error\" &&\n\t\t\tdata?.closeState?.durableAccepted === true;\n\t\tconst revision = data?.projection?.revision;\n\t\tif (\n\t\t\tdata?.operation?.replayed !== false ||\n\t\t\t(response.status !== \"ok\" && !closeAccepted) ||\n\t\t\ttypeof revision !== \"number\" ||\n\t\t\t!Number.isSafeInteger(revision)\n\t\t)\n\t\t\treturn null;\n\t\tconst sessionId = data.projection?.sessionId;\n\t\treturn {\n\t\t\trevision,\n\t\t\tsessionId: typeof sessionId === \"string\" ? sessionId : undefined,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction textPart(\n\ttext: string,\n\tsynthetic = false,\n\tmetadata?: Readonly<Record<string, unknown>>,\n): DraftTextPart {\n\treturn {\n\t\ttype: \"text\",\n\t\ttext,\n\t\t...(synthetic ? { synthetic: true } : {}),\n\t\t...(metadata ? { metadata } : {}),\n\t};\n}\n/**\n * The command hook's parts are typed with the identity the host assigns after\n * the hook returns, so a part written here is a draft at runtime. This is the\n * one place a draft crosses into the host's array.\n */\nfunction asHostTextPart(part: DraftTextPart): TextPart {\n\treturn part as TextPart;\n}\nfunction rewriteCommand(\n\tcommand: FlowCommandName,\n\targs: string,\n\toutput: CommandOutput,\n): void {\n\tconst config = FLOW_CORE_COMMANDS[command];\n\tconst promptArgs = config.subtask\n\t\t? args\n\t\t: \"the preceding non-synthetic Flow request\";\n\tconst prompt = config.template.split(\"$ARGUMENTS\").join(promptArgs);\n\tif (!config.subtask) {\n\t\tif (output.parts.some((part) => part.type === \"subtask\"))\n\t\t\tthrow new Error(\"Flow manager commands cannot contain subtask parts.\");\n\t\tconst preserved = output.parts.filter((part) => part.type !== \"text\");\n\t\toutput.parts.splice(\n\t\t\t0,\n\t\t\toutput.parts.length,\n\t\t\tasHostTextPart(\n\t\t\t\ttextPart(args.trim() ? `Flow ${command}: ${args}` : `Flow ${command}`),\n\t\t\t),\n\t\t\tasHostTextPart(textPart(prompt, true)),\n\t\t\t...preserved,\n\t\t);\n\t\treturn;\n\t}\n\tconst part = output.parts[0];\n\tif (output.parts.length !== 1 || part?.type !== \"subtask\")\n\t\tthrow new Error(`/${command} requires exactly one reviewer subtask.`);\n\tif (part.agent !== config.agent)\n\t\tthrow new Error(`/${command} must dispatch to '${config.agent}'.`);\n\t// The host's subtask type does not declare `command`, but a command-dispatched\n\t// subtask carries it at runtime, so its presence is checked, not asserted.\n\tconst declared = \"command\" in part ? part.command : undefined;\n\tif (typeof declared !== \"string\" || declared.replace(/^\\/+/, \"\") !== command)\n\t\tthrow new Error(`/${command} subtask identity did not match.`);\n\tpart.prompt = prompt;\n}\nfunction createCommandHook(\n\tassertOperational: (action: string) => void,\n\tautoDrive: AutoDriveCoordinator,\n): CommandHook {\n\treturn async (input, output) => {\n\t\tconst command = input.command.replace(/^\\/+/, \"\");\n\t\tif (!isFlowCommand(command)) return;\n\t\tconst action = input.arguments.trim();\n\t\tif (command === \"flow-auto\" && /^(?:stop|cancel)$/i.test(action)) {\n\t\t\tconst confirmed = output.parts.some(\n\t\t\t\t(part) => part.type === \"text\" && part.text === AUTO_STOPPED,\n\t\t\t);\n\t\t\tconst response =\n\t\t\t\tautoDrive.deactivate(input.sessionID) || confirmed\n\t\t\t\t\t? AUTO_STOPPED\n\t\t\t\t\t: \"No Flow auto lease was active in this OpenCode session.\";\n\t\t\toutput.parts[0] = asHostTextPart(textPart(response));\n\t\t\toutput.parts.length = 1;\n\t\t\treturn;\n\t\t}\n\t\tassertOperational(`execute /${command}`);\n\t\trewriteCommand(command, input.arguments, output);\n\t\tif (command !== \"flow-auto\")\n\t\t\treturn void autoDrive.deactivate(input.sessionID);\n\t\tconst metadata = await autoDrive.activate(input.sessionID);\n\t\t// Preflight, not a gate. The lifecycle works either way; what changes is\n\t\t// whether the user is told up front that this host cannot carry the\n\t\t// continuation, instead of watching Flow stop after every feature and\n\t\t// guessing which of the two it is.\n\t\tif (autoDrive.continuationSupport() === \"unsupported\") {\n\t\t\toutput.parts.unshift(\n\t\t\t\tasHostTextPart(\n\t\t\t\t\ttextPart(\n\t\t\t\t\t\t\"Note: this OpenCode host does not report assistant message parentage, so Flow cannot continue automatically between features here. Each feature still runs normally; drive the next one with /flow-run.\",\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst instruction = output.parts.find(\n\t\t\t(part): part is TextPart =>\n\t\t\t\tpart.type === \"text\" && part.synthetic === true,\n\t\t);\n\t\tif (!instruction) {\n\t\t\tautoDrive.deactivate(input.sessionID);\n\t\t\tthrow new Error(\"/flow-auto is missing its synthetic instruction.\");\n\t\t}\n\t\tinstruction.metadata = { ...instruction.metadata, ...metadata };\n\t};\n}\ntype FlowTools = NonNullable<Hooks[\"tool\"]>;\n\n/**\n * Tools whose successful output is markdown prose rather than a Flow response\n * envelope. A guard rejection must stay in the same shape the caller is reading,\n * so these get a markdown failure instead of a JSON blob.\n */\nconst MARKDOWN_TOOLS = new Set([\"flow_guidance\"]);\n\n/** Actionable recovery for each non-operational leadership reason. */\nfunction guardRecovery(reason: FlowLeadershipReason): string {\n\tswitch (reason) {\n\t\tcase \"duplicate-instances\":\n\t\t\treturn \"Two Flow plugin instances are registered for this project. Remove the duplicate installation so exactly one remains, then restart OpenCode.\";\n\t\tcase \"incompatible-registry\":\n\t\t\treturn \"Another Flow build owns an incompatible runtime registry. Align the installed Flow versions, then restart OpenCode.\";\n\t\tdefault:\n\t\t\treturn \"Flow is not registered for this project. Restart OpenCode to re-register, then retry.\";\n\t}\n}\n\nfunction guardRejection(name: string, status: FlowLeadershipStatus): string {\n\tconst recovery = guardRecovery(status.reason);\n\tif (MARKDOWN_TOOLS.has(name)) {\n\t\treturn `${status.message}\\n\\nRecovery: ${recovery}`;\n\t}\n\t// The same envelope every other Flow failure uses, so a caller told to read\n\t// `workflowData.failure.recovery` finds it here too.\n\treturn JSON.stringify({\n\t\tstatus: \"error\",\n\t\tsummary: status.message,\n\t\tworkflowData: {\n\t\t\tdataNote: dataNote(),\n\t\t\tfailure: { summary: status.message, recovery },\n\t\t\truntimeGuard: status,\n\t\t},\n\t});\n}\n\nfunction guardTools(\n\ttools: FlowTools,\n\truntimeGuard: FlowLeadershipHandle,\n\tautoDrive: AutoDriveCoordinator,\n): FlowTools {\n\treturn Object.fromEntries(\n\t\tObject.entries(tools).map(([name, definition]) => [\n\t\t\tname,\n\t\t\t{\n\t\t\t\t...definition,\n\t\t\t\texecute: async (...args: Parameters<typeof definition.execute>) => {\n\t\t\t\t\tconst status = runtimeGuard.query();\n\t\t\t\t\tif (!status.operational) return guardRejection(name, status);\n\t\t\t\t\tconst output = await definition.execute(...args);\n\t\t\t\t\tconst mutation = acceptedMutation(name, String(output));\n\t\t\t\t\tconst context = args[1];\n\t\t\t\t\tif (mutation)\n\t\t\t\t\t\tautoDrive.observeMutation(\n\t\t\t\t\t\t\tcontext.sessionID,\n\t\t\t\t\t\t\tmutation.revision,\n\t\t\t\t\t\t\tname === \"flow_plan_save\" && mutation.revision === 1\n\t\t\t\t\t\t\t\t? mutation.sessionId\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcontext.messageID,\n\t\t\t\t\t\t\tname === \"flow_review_start\",\n\t\t\t\t\t\t);\n\t\t\t\t\treturn output;\n\t\t\t\t},\n\t\t\t},\n\t\t]),\n\t) as FlowTools;\n}\n\nconst FlowPlugin: Plugin = async (ctx) => {\n\tconst log = createFlowLog(ctx);\n\tconst version = resolveFlowPluginVersion();\n\tconst runtimeGuard = registerFlowPluginInstance(\n\t\tctx.worktree ?? ctx.directory,\n\t\t{\n\t\t\tpackageName: \"opencode-plugin-flow\",\n\t\t\tversion,\n\t\t\tprotocolVersion: FLOW_LEADERSHIP_PROTOCOL_VERSION,\n\t\t\tinstanceId: createFlowPluginInstanceId(),\n\t\t},\n\t);\n\tconst initial = runtimeGuard.query();\n\tconst level = initial.operational ? \"info\" : \"error\";\n\tlog(level, `Flow ${version}: ${initial.message}`);\n\tconst workspace = ctx.worktree ?? ctx.directory;\n\tconst autoDrive = new AutoDriveCoordinator({\n\t\treadProjection: async () => {\n\t\t\tconst response = await flowStatus(workspace, {\n\t\t\t\trequest: { view: \"compact\" },\n\t\t\t});\n\t\t\tif (response.status !== \"ok\") throw new Error(response.summary);\n\t\t\tconst projection = response.workflowData.projection;\n\t\t\tif (projection.view !== \"compact\")\n\t\t\t\tthrow new Error(\"Flow auto-drive received a non-compact projection.\");\n\t\t\treturn {\n\t\t\t\tsessionId: \"sessionId\" in projection ? projection.sessionId : undefined,\n\t\t\t\tstatus: projection.status,\n\t\t\t\trevision: projection.revision,\n\t\t\t\tnextAction: projection.nextAction,\n\t\t\t};\n\t\t},\n\t\tprompt: async (sessionID, prompt, delivery, metadata) => {\n\t\t\tawait ctx.client.session.promptAsync({\n\t\t\t\tpath: { id: sessionID },\n\t\t\t\tquery: { directory: ctx.directory },\n\t\t\t\tbody: {\n\t\t\t\t\tagent: delivery.agent,\n\t\t\t\t\tmodel: delivery.model,\n\t\t\t\t\tparts: [textPart(prompt, true, metadata)],\n\t\t\t\t},\n\t\t\t\tthrowOnError: true,\n\t\t\t});\n\t\t},\n\t\tonWarning: (message) => log(\"warn\", message),\n\t});\n\tconst validation = new ValidationCaptureCoordinator({\n\t\tpersistObservation: persistWorkspaceValidation,\n\t\treadReport: readWorkspaceTestReport,\n\t});\n\tconst tools = createTools(ctx, {\n\t\tvalidation,\n\t\tprepareValidation: prepareWorkspaceValidation,\n\t\tautoTimingSnapshot: () => autoDrive.timingSnapshot(),\n\t\tautoContinuationSupport: () => autoDrive.continuationSupport(),\n\t});\n\treturn {\n\t\tconfig: createConfigHook(ctx, {\n\t\t\tassertOperational: (action) => runtimeGuard.assertOperational(action),\n\t\t}),\n\t\ttool: guardTools(tools, runtimeGuard, autoDrive),\n\t\t\"command.execute.before\": createCommandHook(\n\t\t\t(action) => runtimeGuard.assertOperational(action),\n\t\t\tautoDrive,\n\t\t),\n\t\t\"chat.message\": async (input, output) => {\n\t\t\tconst observed = await autoDrive.observeMessage(\n\t\t\t\tinput.sessionID,\n\t\t\t\t{\n\t\t\t\t\tagent: output.message.agent,\n\t\t\t\t\tmodel: output.message.model,\n\t\t\t\t},\n\t\t\t\toutput.parts,\n\t\t\t\toutput.message.id,\n\t\t\t);\n\t\t\tif (observed === \"stale-continuation\")\n\t\t\t\tthrow new Error(\"Discarded a stale Flow auto continuation.\");\n\t\t},\n\t\t\"experimental.session.compacting\": async (input, output) => {\n\t\t\tconst context = autoDrive.compactionContext(input.sessionID);\n\t\t\tif (context) output.context.push(context);\n\t\t},\n\t\tevent: async (input) => {\n\t\t\tconst event = input.event;\n\t\t\tif (event.type === \"message.updated\")\n\t\t\t\treturn autoDrive.observeHostMessage(\n\t\t\t\t\tevent.properties.info.sessionID,\n\t\t\t\t\tevent.properties.info,\n\t\t\t\t);\n\t\t\tif (event.type === \"message.part.updated\")\n\t\t\t\treturn autoDrive.observeHostPart(\n\t\t\t\t\tevent.properties.part.sessionID,\n\t\t\t\t\tevent.properties.part,\n\t\t\t\t);\n\t\t\tif (event.type === \"session.deleted\" || event.type === \"session.error\") {\n\t\t\t\tconst sessionID =\n\t\t\t\t\tevent.type === \"session.deleted\"\n\t\t\t\t\t\t? event.properties.info.id\n\t\t\t\t\t\t: event.properties.sessionID;\n\t\t\t\tif (!sessionID) return autoDrive.clear();\n\t\t\t\tvalidation.cancel(sessionID);\n\t\t\t\treturn void autoDrive.deactivate(sessionID);\n\t\t\t}\n\t\t\tif (event.type !== \"session.idle\" && event.type !== \"session.compacted\")\n\t\t\t\treturn;\n\t\t\tconst sessionID = event.properties?.sessionID;\n\t\t\tvalidation.cancel(sessionID);\n\t\t\tif (event.type === \"session.compacted\")\n\t\t\t\treturn autoDrive.observeCompaction(sessionID);\n\t\t\tif (runtimeGuard.query().operational) return autoDrive.onIdle(sessionID);\n\t\t\tautoDrive.deactivate(sessionID);\n\t\t},\n\t\t\"tool.execute.before\": async (input, output) =>\n\t\t\tvalidation.observeToolBefore(input, output),\n\t\t\"tool.execute.after\": async (input, output) => {\n\t\t\ttry {\n\t\t\t\tawait validation.observeToolAfter(input, output);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tlog(\"error\", \"Flow validation capture failed closed.\", { message });\n\t\t\t\toutput.output = `${output.output}\\n\\n[flow-validation-error] ${message}`;\n\t\t\t}\n\t\t},\n\t\tdispose: async () => {\n\t\t\tautoDrive.clear();\n\t\t\truntimeGuard.release();\n\t\t},\n\t} satisfies Hooks;\n};\n\nexport default FlowPlugin;\n"
46
46
  ],
47
- "mappings": "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",
48
- "debugId": "619D876FEF6BBFAE64756E2164756E21",
47
+ "mappings": "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",
48
+ "debugId": "11B6FFCD0C7840CD64756E2164756E21",
49
49
  "names": []
50
50
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-plugin-flow",
3
- "version": "8.1.1",
3
+ "version": "8.1.2",
4
4
  "description": "Small durable planning, validation, and review workflow for OpenCode",
5
5
  "type": "module",
6
6
  "repository": {
@@ -33,6 +33,7 @@
33
33
  "clean": "bun run scripts/clean-dist.ts",
34
34
  "eval": "bun run evals/run.ts",
35
35
  "eval:smoke": "bun run evals/run.ts -- --repeat 1",
36
+ "eval:canary": "bun run scripts/eval-canary.ts",
36
37
  "benchmark": "bun run evals/benchmark-run.ts",
37
38
  "lint": "bunx biome check biome.json src tests scripts evals --files-ignore-unknown=true --vcs-use-ignore-file=true",
38
39
  "release:metadata": "bun run scripts/release-metadata.ts",