substrate-ai 0.21.11 → 0.21.13

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/dist/cli/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { FileKvStore, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, buildPipelineStatusOutput, createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion } from "../health-B867L-8I.js";
2
+ import { FileKvStore, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, buildPipelineStatusOutput, createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion } from "../health-DBBrM_te.js";
3
3
  import { createLogger } from "../logger-KeHncl-f.js";
4
4
  import { createEventBus } from "../helpers-CElYrONe.js";
5
5
  import { AdapterRegistry, BudgetConfigSchema, CURRENT_CONFIG_FORMAT_VERSION, CURRENT_TASK_GRAPH_VERSION, ConfigError, CostTrackerConfigSchema, DEFAULT_CONFIG, DoltClient, DoltNotInstalled, GlobalSettingsSchema, InMemoryDatabaseAdapter, IngestionServer, MonitorDatabaseImpl, OPERATIONAL_FINDING, PartialGlobalSettingsSchema, PartialProviderConfigSchema, ProvidersSchema, RoutingRecommender, STORY_METRICS, TelemetryConfigSchema, addTokenUsage, aggregateTokenUsageForRun, checkDoltInstalled, compareRunMetrics, createAmendmentRun, createConfigSystem, createDecision, createGitWorktreeManager, createPipelineRun, createStderrLogger, getActiveDecisions, getAllCostEntriesFiltered, getBaselineRunMetrics, getDecisionsByCategory, getDecisionsByPhaseForRun, getLatestCompletedRun, getLatestRun, getPipelineRunById, getPlanningCostTotal, getRetryableEscalations, getRunMetrics, getRunningPipelineRuns, getSessionCostSummary, getSessionCostSummaryFiltered, getStoryMetricsForRun, getTokenUsageSummary, incrementRunRestarts, initSchema, initWorkGraphSchema, initializeDolt, listRunMetrics, loadParentRunDecisions, supersedeDecision, swallowDebug, tagRunAsBaseline, updatePipelineRun } from "../dist-BZGqn-XQ.js";
6
6
  import "../adapter-registry-DXLMTmfD.js";
7
- import { ACCEPTANCE_CONTRACT_PROFILE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, clearGateDemotion, computePrecision, computeRecall, demoteGate, loadAcceptanceContractFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, readAcceptanceMetrics, readCurrentRunId, readGateState, recordCanary, recordOverride, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary } from "../manifest-read-BGzmmY01.js";
8
- import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-CoZ5kK6c.js";
7
+ import { ACCEPTANCE_CONTRACT_PROFILE_PATH, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, clearGateDemotion, computePrecision, computeRecall, demoteGate, loadAcceptanceContractFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, readAcceptanceMetrics, readCurrentRunId, readGateState, recordCanary, recordOverride, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary } from "../manifest-read-Bq2_Ojbv.js";
8
+ import { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR, GitClient, GrammarLoader, Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runSolutioningPhase, unescape, validateStopAfterFromConflict } from "../run-B31go5Ud.js";
9
9
  import "../errors-xSeGw6pf.js";
10
10
  import { runAcceptanceJudge } from "../acceptance-judge-eIZZha1C.js";
11
11
  import "../routing-DZT5PN3N.js";
12
12
  import { WorkGraphRepository } from "../work-graph-repository-4cKsf8Lf.js";
13
13
  import "../decisions-BAaxpVD0.js";
14
14
  import "../decision-router-Dyby0fUf.js";
15
- import "../interactive-prompt-BvHUcoY4.js";
15
+ import "../interactive-prompt-CV9rLUNT.js";
16
16
  import "../recovery-engine-dtLHyV4M.js";
17
17
  import "../version-manager-impl-DMTw551Q.js";
18
18
  import { registerUpgradeCommand } from "../upgrade-CNGc12AV.js";
@@ -7136,7 +7136,7 @@ async function runStatusAction(options) {
7136
7136
  logger$15.debug({ err }, "Work graph query failed, continuing without work graph data");
7137
7137
  }
7138
7138
  if (run === void 0) {
7139
- const { inspectProcessTree: inspectProcessTree$1 } = await import("../health--DIz8sJ9.js");
7139
+ const { inspectProcessTree: inspectProcessTree$1 } = await import("../health-DAOWdkka.js");
7140
7140
  const substrateDirPath = join(projectRoot, ".substrate");
7141
7141
  const processInfo = inspectProcessTree$1({
7142
7142
  projectRoot,
@@ -8665,7 +8665,7 @@ async function runSupervisorAction(options, deps = {}) {
8665
8665
  await initSchema(expAdapter);
8666
8666
  const { runRunAction: runPipeline } = await import(
8667
8667
  /* @vite-ignore */
8668
- "../run-G4HOt6-R.js"
8668
+ "../run-CGuoRwXB.js"
8669
8669
  );
8670
8670
  const runStoryFn = async (opts) => {
8671
8671
  const exitCode = await runPipeline({
@@ -13474,10 +13474,16 @@ function summarizeRegistry(registry) {
13474
13474
  /** Render a load result for humans. Returns the exit code. */
13475
13475
  function renderHuman(result, source) {
13476
13476
  switch (result.status) {
13477
- case "ok":
13477
+ case "ok": {
13478
13478
  process.stdout.write(`OK — ${summarizeRegistry(result.registry)} (${source})\n`);
13479
13479
  for (const journey of result.registry.journeys) process.stdout.write(` ${journey.id} [${journey.criticality}] ${journey.title} — ${String(journey.end_states.length)} end-state(s), surfaces: ${journey.surfaces.join(", ")}\n`);
13480
+ const prov = result.registry.provenance;
13481
+ if (prov !== void 0) {
13482
+ const excludedNote = prov.excluded !== void 0 && prov.excluded.length > 0 ? `, ${String(prov.excluded.length)} excluded` : "";
13483
+ process.stdout.write(`provenance: OK — derived from ${prov.derived_from} (sha256 ${prov.source_sha256.slice(0, 12)}…), ratified by ${prov.ratified_by} at ${prov.derived_at}${excludedNote}\n`);
13484
+ } else process.stdout.write("provenance: ABSENT (advisory) — no provenance: block. Hand-authored registries are legal; a provenance record is what enables staleness and PRD-completeness checks (registry-provenance design brief).\n");
13480
13485
  return ACCEPTANCE_EXIT_SUCCESS;
13486
+ }
13481
13487
  case "absent":
13482
13488
  process.stdout.write(`NO REGISTRY — ${JOURNEY_REGISTRY_PATH} not found (${source}).\nAuthor it at planning time; see the acceptance-gate design brief for the schema.\n`);
13483
13489
  return ACCEPTANCE_EXIT_ERROR;
@@ -13523,7 +13529,8 @@ function registerAcceptanceCommand(program, version, registry) {
13523
13529
  const output = buildJsonOutput("substrate acceptance validate", {
13524
13530
  source,
13525
13531
  ...result,
13526
- contract: { status: contract.status }
13532
+ contract: { status: contract.status },
13533
+ provenance: { status: result.status === "ok" && result.registry.provenance !== void 0 ? "present" : "absent" }
13527
13534
  }, version);
13528
13535
  process.stdout.write(JSON.stringify(output, null, 2) + "\n");
13529
13536
  process.exit(result.status === "ok" ? ACCEPTANCE_EXIT_SUCCESS : ACCEPTANCE_EXIT_ERROR);
@@ -1,7 +1,7 @@
1
- import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-B867L-8I.js";
1
+ import { DEFAULT_STALL_THRESHOLD_SECONDS, getAllDescendantPids, getAutoHealthData, inspectProcessTree, isOrchestratorProcessLine, registerHealthCommand, runHealthAction } from "./health-DBBrM_te.js";
2
2
  import "./logger-KeHncl-f.js";
3
3
  import "./dist-BZGqn-XQ.js";
4
- import "./manifest-read-BGzmmY01.js";
4
+ import "./manifest-read-Bq2_Ojbv.js";
5
5
  import "./work-graph-repository-4cKsf8Lf.js";
6
6
  import "./decisions-BAaxpVD0.js";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from "./logger-KeHncl-f.js";
2
2
  import { DoltClient, DoltQueryError, createDatabaseAdapter$1 as createDatabaseAdapter, getLatestRun, getPipelineRunById, initSchema } from "./dist-BZGqn-XQ.js";
3
- import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-BGzmmY01.js";
3
+ import { resolveMainRepoRoot, resolveRunManifest } from "./manifest-read-Bq2_Ojbv.js";
4
4
  import { createRequire } from "module";
5
5
  import { dirname, join } from "path";
6
6
  import { existsSync, readFileSync } from "node:fs";
@@ -1000,4 +1000,4 @@ function registerHealthCommand(program, _version = "0.0.0", projectRoot = proces
1000
1000
 
1001
1001
  //#endregion
1002
1002
  export { BMAD_BASELINE_TOKENS_FULL, DEFAULT_STALL_THRESHOLD_SECONDS, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, SUBSTRATE_OWNED_SETTINGS_KEYS, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter$1 as createDatabaseAdapter, createDoltOperatorReader, findPackageRoot, formatOutput, formatPipelineStatusHuman, formatPipelineSummary, formatTokenTelemetry, getAllDescendantPids, getAutoHealthData, getSubstrateDefaultSettings, inspectProcessTree, isOrchestratorProcessLine, parseDbTimestampAsUtc, registerHealthCommand, resolveBmadMethodSrcPath, resolveBmadMethodVersion, runHealthAction, validateStoryKey };
1003
- //# sourceMappingURL=health-B867L-8I.js.map
1003
+ //# sourceMappingURL=health-DBBrM_te.js.map
@@ -1,5 +1,5 @@
1
1
  import { createLogger } from "./logger-KeHncl-f.js";
2
- import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-BGzmmY01.js";
2
+ import { readCurrentRunId, resolveMainRepoRoot } from "./manifest-read-Bq2_Ojbv.js";
3
3
  import { join } from "node:path";
4
4
  import { mkdir, readFile, writeFile } from "node:fs/promises";
5
5
  import * as readline from "node:readline";
@@ -180,4 +180,4 @@ async function runInteractivePrompt(decisionContext) {
180
180
 
181
181
  //#endregion
182
182
  export { runInteractivePrompt };
183
- //# sourceMappingURL=interactive-prompt-BvHUcoY4.js.map
183
+ //# sourceMappingURL=interactive-prompt-CV9rLUNT.js.map
@@ -2674,9 +2674,28 @@ const JourneySchema = z.object({
2674
2674
  epic: z.number().int().positive().optional(),
2675
2675
  end_states: z.array(JourneyEndStateSchema).min(1, "a journey must declare at least one end_state — a journey with none is unjudgeable")
2676
2676
  });
2677
+ const RegistryProvenanceExclusionSchema = z.object({
2678
+ candidate: z.string().min(1, "an exclusion must name the excluded candidate journey"),
2679
+ reason: z.string().min(1, "an exclusion must record a reason — reasonless exclusions are unauditable")
2680
+ });
2681
+ /**
2682
+ * RP0.1 — provenance block. Additive + optional: pre-provenance registries
2683
+ * stay valid. Written only by `substrate acceptance ratify` (never by any
2684
+ * pipeline path — the NEVER-AUTO-RATIFY cardinal rule); `source_sha256` is
2685
+ * the staleness baseline RP2 re-hashes `derived_from` against.
2686
+ */
2687
+ const RegistryProvenanceSchema = z.object({
2688
+ derived_from: z.string().min(1, "derived_from must name the source document path"),
2689
+ source_sha256: z.string().regex(/^[0-9a-f]{64}$/, "source_sha256 must be 64 lowercase hex characters (SHA-256 of the source content)"),
2690
+ prd_revision: z.number().int().positive().optional(),
2691
+ derived_at: z.string().min(1, "derived_at must be an ISO-8601 timestamp"),
2692
+ ratified_by: z.string().min(1, "ratified_by must record who performed the ratify action"),
2693
+ excluded: z.array(RegistryProvenanceExclusionSchema).optional()
2694
+ });
2677
2695
  const JourneyRegistrySchema = z.object({
2678
2696
  version: z.number().int().positive("version must be a positive integer"),
2679
- journeys: z.array(JourneySchema)
2697
+ journeys: z.array(JourneySchema),
2698
+ provenance: RegistryProvenanceSchema.optional()
2680
2699
  }).superRefine((registry, ctx) => {
2681
2700
  const seenJourneyIds = new Map();
2682
2701
  registry.journeys.forEach((journey, i) => {
@@ -7455,4 +7474,4 @@ async function resolveRunManifest(dbRoot, runId) {
7455
7474
 
7456
7475
  //#endregion
7457
7476
  export { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_DEFERRALS_PATH, JOURNEY_REGISTRY_PATH, RunManifest, RuntimeProbeListSchema, SupervisorLock, ZERO_FINDINGS_BY_AUTHOR, ZERO_FINDING_COUNTS, ZERO_PROBE_AUTHOR_METRICS, aggregateProbeAuthorMetrics, applyConfigToGraph, clearGateDemotion, computeJourneyCoverage, computePrecision, computeRecall, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, demoteGate, detectsEventDrivenAC, detectsStateIntegratingAC, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromFile, loadJourneyRegistryFromTrustedTree, parseAcceptanceContract, parseJourneyDeferrals, parseJourneyRegistry, parseRuntimeProbes, parseStoryFrontmatter, readAcceptanceMetrics, readCurrentRunId, readGateState, recordCanary, recordCriticalFail, recordOverride, renderFindings, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, resolveRunManifest, rollupFindingCounts, rollupFindingsByAuthor, rollupProbeAuthorByClass, rollupProbeAuthorMetrics, runAcTraceabilityCheck, runCanary, runStaleVerificationRecovery, summarizeCoverage };
7458
- //# sourceMappingURL=manifest-read-BGzmmY01.js.map
7477
+ //# sourceMappingURL=manifest-read-Bq2_Ojbv.js.map
@@ -1,6 +1,6 @@
1
1
  import "../../logger-KeHncl-f.js";
2
2
  import "../../dist-BZGqn-XQ.js";
3
- import "../../manifest-read-BGzmmY01.js";
4
- import { runInteractivePrompt } from "../../interactive-prompt-BvHUcoY4.js";
3
+ import "../../manifest-read-Bq2_Ojbv.js";
4
+ import { runInteractivePrompt } from "../../interactive-prompt-CV9rLUNT.js";
5
5
 
6
6
  export { runInteractivePrompt };
@@ -1,12 +1,12 @@
1
- import { BMAD_BASELINE_TOKENS_FULL, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter, formatOutput, formatPipelineSummary, formatTokenTelemetry, inspectProcessTree, parseDbTimestampAsUtc, validateStoryKey } from "./health-B867L-8I.js";
1
+ import { BMAD_BASELINE_TOKENS_FULL, FileKvStore, STOP_AFTER_VALID_PHASES, STORY_KEY_PATTERN, VALID_PHASES, __commonJS, __require, __toESM, buildPipelineStatusOutput, createDatabaseAdapter, formatOutput, formatPipelineSummary, formatTokenTelemetry, inspectProcessTree, parseDbTimestampAsUtc, validateStoryKey } from "./health-DBBrM_te.js";
2
2
  import { createLogger } from "./logger-KeHncl-f.js";
3
3
  import { TypedEventBusImpl, createEventBus, createTuiApp, isTuiCapable, printNonTtyWarning, sleep } from "./helpers-CElYrONe.js";
4
4
  import { ADVISORY_NOTES, BRANCH_PREFIX, CLAUDE_AUTH_FAILURE_HINT, CODEX_SANDBOX_BLOCK_HINT, Categorizer, ConsumerAnalyzer, DEFAULT_GLOBAL_SETTINGS, DispatcherImpl, DoltClient, ESCALATION_DIAGNOSIS, EXPERIMENT_RESULT, EfficiencyScorer, IngestionServer, LogTurnAnalyzer, OPERATIONAL_FINDING, Recommender, RoutingRecommender, RoutingResolver, RoutingTelemetry, RoutingTokenAccumulator, RoutingTuner, STORY_METRICS, STORY_OUTCOME, SubstrateConfigSchema, TEST_EXPANSION_FINDING, TEST_PLAN, TelemetryNormalizer, TelemetryPipeline, TurnAnalyzer, addTokenUsage, aggregateTokenUsageForRun, aggregateTokenUsageForStory, callLLM, classifyVersionGap, createConfigSystem, createDatabaseAdapter$1, createDecision, createGitWorktreeManager, createPipelineRun, createRequirement, detectClaudeAuthFailure, detectCodexSandboxBlock, detectInterfaceChanges, getArtifactByTypeForRun, getArtifactsByRun, getDecisionsByCategory, getDecisionsByPhase, getDecisionsByPhaseForRun, getLatestRun, getPipelineRunById, getRunMetrics, getRunningPipelineRuns, getStoryMetricsForRun, getTokenUsageSummary, initSchema, listRequirements, loadModelRoutingConfig, registerArtifact, swallowDebug, updatePipelineRun, updatePipelineRunConfig, upsertDecision, writeRunMetrics, writeStoryMetrics } from "./dist-BZGqn-XQ.js";
5
- import { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_DEFERRALS_PATH, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, computeJourneyCoverage, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromTrustedTree, parseRuntimeProbes, parseStoryFrontmatter, recordCriticalFail, renderFindings, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery, summarizeCoverage } from "./manifest-read-BGzmmY01.js";
5
+ import { ACCEPTANCE_CONTRACT_PROFILE_PATH, FindingsInjector, JOURNEY_DEFERRALS_PATH, RunManifest, RuntimeProbeListSchema, applyConfigToGraph, computeJourneyCoverage, createDefaultVerificationPipeline, createGraphOrchestrator, createSdlcCodeReviewHandler, createSdlcCreateStoryHandler, createSdlcDevStoryHandler, createSdlcPhaseHandler, detectsEventDrivenAC, detectsStateIntegratingAC, effectiveAcceptanceMode, extractTargetFilesFromStoryContent, loadAcceptanceContractFromTrustedTree, loadJourneyDeferralsFromTrustedTree, loadJourneyRegistryFromTrustedTree, parseRuntimeProbes, parseStoryFrontmatter, recordCriticalFail, renderFindings, renderSurface, renderVerdictHtml, resolveGraphPath, resolveMainRepoRoot, runAcTraceabilityCheck, runStaleVerificationRecovery, summarizeCoverage } from "./manifest-read-Bq2_Ojbv.js";
6
6
  import { CodeReviewResultSchema, CreateStoryResultSchema, DevStoryResultSchema, ProbeAuthorResultSchema, TestExpansionResultSchema, TestPlanResultSchema, assemblePrompt, countTokens, getTokenCeiling, runAcceptanceJudge, truncateToTokens } from "./acceptance-judge-eIZZha1C.js";
7
7
  import { WorkGraphRepository, detectCycles } from "./work-graph-repository-4cKsf8Lf.js";
8
8
  import { deriveExitCode, routeDecision } from "./decision-router-Dyby0fUf.js";
9
- import { runInteractivePrompt } from "./interactive-prompt-BvHUcoY4.js";
9
+ import { runInteractivePrompt } from "./interactive-prompt-CV9rLUNT.js";
10
10
  import { runRecoveryEngine } from "./recovery-engine-dtLHyV4M.js";
11
11
  import { basename, dirname, extname, join } from "path";
12
12
  import { access, readFile, readdir, stat } from "fs/promises";
@@ -13685,7 +13685,7 @@ function createImplementationOrchestrator(deps) {
13685
13685
  const hash = createHash("sha256").update(resolve$1(root)).digest("hex").slice(0, 8);
13686
13686
  return join$1(homedir(), ".substrate", "acceptance", `${basename$1(root)}-${hash}`, config.pipelineRunId ?? "adhoc");
13687
13687
  }
13688
- async function runAcceptanceStage(storyKey, worktreeDir) {
13688
+ async function runAcceptanceStage(storyKey, worktreeDir, committedChangedFiles) {
13689
13689
  const outcomes = [];
13690
13690
  const mode = resolveAcceptanceMode();
13691
13691
  if (mode === "off" || projectRoot === void 0) return outcomes;
@@ -13719,11 +13719,12 @@ function createImplementationOrchestrator(deps) {
13719
13719
  const journeyDir = join$1(acceptanceArtifactsBase(), storyKey, journeyId);
13720
13720
  const artifacts = [];
13721
13721
  {
13722
- const changed = new Set(checkGitDiffFiles(worktreeDir).map((f$1) => f$1.replace(/\\/g, "/")));
13722
+ const changed = new Set(committedChangedFiles.map((f$1) => f$1.replace(/\\/g, "/")));
13723
13723
  const renderTokens = new Set();
13724
13724
  for (const surface of journey.surfaces) {
13725
+ if (surface === "web") continue;
13725
13726
  const def = contract.surfaces[surface];
13726
- if (def !== void 0) for (const tok of def.render.trim().split(/\s+/)) renderTokens.add(tok.replace(/\\/g, "/"));
13727
+ if (def !== void 0 && def.render !== void 0) for (const tok of def.render.trim().split(/\s+/)) renderTokens.add(tok.replace(/\\/g, "/"));
13727
13728
  }
13728
13729
  const gamedTargets = [...changed].filter((f$1) => renderTokens.has(f$1) || [...renderTokens].some((t) => t.endsWith("/" + f$1) || f$1.endsWith("/" + t)));
13729
13730
  if (gamedTargets.length > 0) {
@@ -16296,7 +16297,7 @@ function createImplementationOrchestrator(deps) {
16296
16297
  }
16297
16298
  let acceptanceOutcomes = [];
16298
16299
  try {
16299
- acceptanceOutcomes = await runAcceptanceStage(storyKey, effectiveProjectRoot ?? projectRoot ?? process.cwd());
16300
+ acceptanceOutcomes = await runAcceptanceStage(storyKey, effectiveProjectRoot ?? projectRoot ?? process.cwd(), recaptureChangedFiles(effectiveProjectRoot ?? projectRoot ?? process.cwd()));
16300
16301
  } catch (stageErr) {
16301
16302
  logger$26.warn({
16302
16303
  storyKey,
@@ -48357,4 +48358,4 @@ function registerRunCommand(program, version = "0.0.0", projectRoot = process.cw
48357
48358
 
48358
48359
  //#endregion
48359
48360
  export { AdapterTelemetryPersistence, AppError, DoltRepoMapMetaRepository, DoltSymbolRepository, ERR_REPO_MAP_STORAGE_WRITE, EpicIngester, GLOBSTAR$1 as GLOBSTAR, GitClient, GrammarLoader, Minimatch$1 as Minimatch, Minipass, RepoMapInjector, RepoMapModule, RepoMapQueryEngine, RepoMapStorage, SymbolParser, createContextCompiler, createDispatcher, createEventEmitter, createImplementationOrchestrator, createPackLoader, createPhaseOrchestrator, createStopAfterGate, createTelemetryAdvisor, escape$1 as escape, formatPhaseCompletionSummary, getFactoryRunSummaries, getScenarioResultsForRun, getTwinRunsForRun, listGraphRuns, normalizeGraphSummaryToStatus, registerExportCommand, registerFactoryCommand, registerRunCommand, registerScenariosCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, resolveStoryKeys, runAnalysisPhase, runPlanningPhase, runProbeAuthor, runRunAction, runSolutioningPhase, unescape$1 as unescape, validateStopAfterFromConflict, wireNdjsonEmitter };
48360
- //# sourceMappingURL=run-CoZ5kK6c.js.map
48361
+ //# sourceMappingURL=run-B31go5Ud.js.map
@@ -1,15 +1,15 @@
1
- import "./health-B867L-8I.js";
1
+ import "./health-DBBrM_te.js";
2
2
  import "./logger-KeHncl-f.js";
3
3
  import "./helpers-CElYrONe.js";
4
4
  import "./dist-BZGqn-XQ.js";
5
- import "./manifest-read-BGzmmY01.js";
6
- import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-CoZ5kK6c.js";
5
+ import "./manifest-read-Bq2_Ojbv.js";
6
+ import { normalizeGraphSummaryToStatus, registerRunCommand, resolveMaxReviewCycles, resolveProbeAuthorStateIntegrating, runRunAction, wireNdjsonEmitter } from "./run-B31go5Ud.js";
7
7
  import "./acceptance-judge-eIZZha1C.js";
8
8
  import "./routing-DZT5PN3N.js";
9
9
  import "./work-graph-repository-4cKsf8Lf.js";
10
10
  import "./decisions-BAaxpVD0.js";
11
11
  import "./decision-router-Dyby0fUf.js";
12
- import "./interactive-prompt-BvHUcoY4.js";
12
+ import "./interactive-prompt-CV9rLUNT.js";
13
13
  import "./recovery-engine-dtLHyV4M.js";
14
14
 
15
15
  export { runRunAction };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "substrate-ai",
3
- "version": "0.21.11",
3
+ "version": "0.21.13",
4
4
  "description": "Substrate — multi-agent orchestration daemon for AI coding agents",
5
5
  "type": "module",
6
6
  "license": "MIT",