diff --git a/docs/storage.md b/docs/storage.md index bb89e74a89..dce114156b 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -175,8 +175,13 @@ Important execution nuance: - Why defer now: - FN-5943 already landed the lower-risk fix for the observed incident: fewer rewrites, bounded merge/optimize maintenance, and threshold-triggered rebuild. + - FN-6008 rechecked the post-FN-5943 operational evidence against the live project DB and the defer condition still holds: + - recent `runAuditEvents` telemetry for `target: "tasks_fts"` shows the live index staying bounded in the **tens to low hundreds of KB**, not MB-scale bloat; + - the sampled maintenance window showed **0 rebuild events**, with `merge`/`optimize` repeatedly pulling the index back down (for example `141186 → 43990` bytes and `96571 → 40693` bytes); + - a direct `tasks_fts_data` size check during the review was only about **50 KB** for **36** live tasks; + - no concrete post-FN-5943 runtime evidence of recurring live `tasks_fts` corruption was found in the reviewed logs. - The attached-file idea still improves corruption isolation, but it would trade away the current same-file trigger-maintained index for a manual two-file sync architecture with weaker crash atomicity under WAL. -- Revisit only if post-FN-5943 production evidence shows recurring `fusion.db`-coupled FTS corruption or materially persistent live-index bloat significant enough to justify a contentless/manual-sync redesign. +- Revisit only if post-FN-5943 production evidence shows recurring `fusion.db`-coupled FTS corruption or materially persistent live-index bloat significant enough to justify a contentless/manual-sync redesign. Until then, keep the single-file external-content design and existing maintenance path. ## SQLite write-path lock recovery (FN-4042 / FN-4083) diff --git a/packages/core/src/__tests__/workflow-ir-foreach.test.ts b/packages/core/src/__tests__/workflow-ir-foreach.test.ts index 2bb114a9f6..431784db42 100644 --- a/packages/core/src/__tests__/workflow-ir-foreach.test.ts +++ b/packages/core/src/__tests__/workflow-ir-foreach.test.ts @@ -115,7 +115,7 @@ describe("foreach validation", () => { edges: [] as WorkflowIrEdge[], }; expect(() => parseWorkflowIr(graphWithForeach({ template: tmpl }))).toThrow( - /nested foreach/, + /nested (loop\/)?foreach/, ); }); diff --git a/packages/engine/src/workflow-authoritative-driver.ts b/packages/engine/src/workflow-authoritative-driver.ts index 2604e8bb3d..c017f5ff47 100644 --- a/packages/engine/src/workflow-authoritative-driver.ts +++ b/packages/engine/src/workflow-authoritative-driver.ts @@ -15,7 +15,7 @@ import { executorLog } from "./logger.js"; import { WORKFLOW_INTERPRETER_DUAL_OBSERVE_FLAG } from "./workflow-parity-observer.js"; import { WorkflowGraphTaskRunner, type WorkflowGraphTaskRunResult } from "./workflow-graph-task-runner.js"; -const AUTHORITATIVE_WORKFLOW_ID = "internal:workflow-interpreter-authoritative"; +const AUTHORITATIVE_WORKFLOW_ID = "workflow-interpreter-authoritative"; export interface WorkflowAuthoritativeDriverStore { getSettings(): Promise;