@cleocode/core 2026.10.17 → 2026.10.18
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/audit-prune.d.ts +37 -8
- package/dist/audit-prune.d.ts.map +1 -1
- package/dist/audit-prune.js +46 -12
- package/dist/audit-prune.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/manifest-check.d.ts +21 -0
- package/dist/cloud/manifest-check.d.ts.map +1 -1
- package/dist/cloud/manifest-check.js +46 -1
- package/dist/cloud/manifest-check.js.map +1 -1
- package/dist/cloud/nexus-vault.d.ts +19 -0
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +134 -23
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/cloud/signing.d.ts.map +1 -1
- package/dist/cloud/signing.js +4 -0
- package/dist/cloud/signing.js.map +1 -1
- package/dist/doctor/row-identity.d.ts.map +1 -1
- package/dist/doctor/row-identity.js +2 -1
- package/dist/doctor/row-identity.js.map +1 -1
- package/dist/git/work-tree.d.ts +17 -0
- package/dist/git/work-tree.d.ts.map +1 -1
- package/dist/git/work-tree.js +30 -0
- package/dist/git/work-tree.js.map +1 -1
- package/dist/goal/close.d.ts +95 -0
- package/dist/goal/close.d.ts.map +1 -0
- package/dist/goal/close.js +497 -0
- package/dist/goal/close.js.map +1 -0
- package/dist/goal/draft.d.ts +81 -0
- package/dist/goal/draft.d.ts.map +1 -0
- package/dist/goal/draft.js +331 -0
- package/dist/goal/draft.js.map +1 -0
- package/dist/hooks/release-gate.d.ts +3 -0
- package/dist/hooks/release-gate.d.ts.map +1 -1
- package/dist/hooks/release-gate.js +4 -1
- package/dist/hooks/release-gate.js.map +1 -1
- package/dist/orchestration/lean-gain.d.ts +26 -0
- package/dist/orchestration/lean-gain.d.ts.map +1 -0
- package/dist/orchestration/lean-gain.js +61 -0
- package/dist/orchestration/lean-gain.js.map +1 -0
- package/dist/release/backfill.d.ts.map +1 -1
- package/dist/release/backfill.js +15 -5
- package/dist/release/backfill.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +90 -5
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +277 -4
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/plan.d.ts +4 -1
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +10 -2
- package/dist/release/plan.js.map +1 -1
- package/dist/release/reconcile.d.ts +10 -0
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +42 -19
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/release-manifest.d.ts +2 -1
- package/dist/release/release-manifest.d.ts.map +1 -1
- package/dist/release/release-manifest.js +15 -1
- package/dist/release/release-manifest.js.map +1 -1
- package/dist/resources/admission-ledger.d.ts +21 -4
- package/dist/resources/admission-ledger.d.ts.map +1 -1
- package/dist/resources/admission-ledger.js +102 -19
- package/dist/resources/admission-ledger.js.map +1 -1
- package/dist/resources/run-class.d.ts +22 -0
- package/dist/resources/run-class.d.ts.map +1 -1
- package/dist/resources/run-class.js +81 -0
- package/dist/resources/run-class.js.map +1 -1
- package/dist/sessions/handoff.d.ts +2 -2
- package/dist/sessions/handoff.js +2 -2
- package/dist/store/audit-log-schema.d.ts +106 -39
- package/dist/store/audit-log-schema.d.ts.map +1 -1
- package/dist/store/audit-log-schema.js +6 -3
- package/dist/store/audit-log-schema.js.map +1 -1
- package/dist/store/row-identity-registry.d.ts +42 -6
- package/dist/store/row-identity-registry.d.ts.map +1 -1
- package/dist/store/row-identity-registry.js +256 -34
- package/dist/store/row-identity-registry.js.map +1 -1
- package/dist/store/row-identity.d.ts.map +1 -1
- package/dist/store/row-identity.js +16 -4
- package/dist/store/row-identity.js.map +1 -1
- package/dist/store/schema/cleo-global/nexus.d.ts +16 -0
- package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
- package/dist/store/schema/cleo-global/nexus.js +4 -1
- package/dist/store/schema/cleo-global/nexus.js.map +1 -1
- package/dist/store/schema/cleo-project/audit.d.ts +48 -0
- package/dist/store/schema/cleo-project/audit.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/audit.js +15 -1
- package/dist/store/schema/cleo-project/audit.js.map +1 -1
- package/dist/store/schema/cleo-project/lifecycle.d.ts +112 -0
- package/dist/store/schema/cleo-project/lifecycle.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/lifecycle.js +36 -4
- package/dist/store/schema/cleo-project/lifecycle.js.map +1 -1
- package/dist/store/schema/cleo-project/provenance-commits.d.ts +48 -0
- package/dist/store/schema/cleo-project/provenance-commits.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/provenance-commits.js +10 -1
- package/dist/store/schema/cleo-project/provenance-commits.js.map +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.d.ts +128 -0
- package/dist/store/schema/cleo-project/provenance-rest.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/provenance-rest.js +25 -1
- package/dist/store/schema/cleo-project/provenance-rest.js.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
- package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
- package/dist/store/schema/cleo-project/tasks-core.js +6 -1
- package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
- package/dist/store/session-store.d.ts +5 -4
- package/dist/store/session-store.d.ts.map +1 -1
- package/dist/store/session-store.js +19 -5
- package/dist/store/session-store.js.map +1 -1
- package/dist/store/sync/apply/parent-delete.d.ts.map +1 -1
- package/dist/store/sync/apply/parent-delete.js +8 -0
- package/dist/store/sync/apply/parent-delete.js.map +1 -1
- package/dist/store/sync/apply/write-api.d.ts +3 -2
- package/dist/store/sync/apply/write-api.d.ts.map +1 -1
- package/dist/store/sync/apply/write-api.js +19 -0
- package/dist/store/sync/apply/write-api.js.map +1 -1
- package/dist/store/sync/capture.d.ts +11 -0
- package/dist/store/sync/capture.d.ts.map +1 -1
- package/dist/store/sync/capture.js +13 -3
- package/dist/store/sync/capture.js.map +1 -1
- package/dist/store/sync/flags.d.ts +10 -0
- package/dist/store/sync/flags.d.ts.map +1 -1
- package/dist/store/sync/flags.js +43 -5
- package/dist/store/sync/flags.js.map +1 -1
- package/dist/store/sync/timestamp-canon.d.ts.map +1 -1
- package/dist/store/sync/timestamp-canon.js +37 -0
- package/dist/store/sync/timestamp-canon.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +1 -1
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +5 -1
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/twin-collapse.d.ts +2 -1
- package/dist/store/twin-collapse.d.ts.map +1 -1
- package/dist/store/twin-collapse.js +128 -104
- package/dist/store/twin-collapse.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +390 -38
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/store/vault-manifest.d.ts +9 -2
- package/dist/store/vault-manifest.d.ts.map +1 -1
- package/dist/store/vault-manifest.js +25 -4
- package/dist/store/vault-manifest.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +3 -2
- package/dist/system/health.js.map +1 -1
- package/dist/tasks/affected-packages.d.ts +21 -2
- package/dist/tasks/affected-packages.d.ts.map +1 -1
- package/dist/tasks/affected-packages.js +96 -8
- package/dist/tasks/affected-packages.js.map +1 -1
- package/dist/tasks/affected-scope.d.ts +7 -2
- package/dist/tasks/affected-scope.d.ts.map +1 -1
- package/dist/tasks/affected-scope.js +158 -14
- package/dist/tasks/affected-scope.js.map +1 -1
- package/dist/tasks/change-set.d.ts +10 -0
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +70 -3
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/done-plan.d.ts +11 -5
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +54 -10
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/done-record.d.ts.map +1 -1
- package/dist/tasks/done-record.js +25 -0
- package/dist/tasks/done-record.js.map +1 -1
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +22 -2
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-result-cache.d.ts.map +1 -1
- package/dist/tasks/gate-result-cache.js +24 -3
- package/dist/tasks/gate-result-cache.js.map +1 -1
- package/dist/tasks/gate-runner.d.ts +27 -3
- package/dist/tasks/gate-runner.d.ts.map +1 -1
- package/dist/tasks/gate-runner.js +77 -29
- package/dist/tasks/gate-runner.js.map +1 -1
- package/dist/tasks/qa-run-binding.d.ts +22 -3
- package/dist/tasks/qa-run-binding.d.ts.map +1 -1
- package/dist/tasks/qa-run-binding.js +46 -4
- package/dist/tasks/qa-run-binding.js.map +1 -1
- package/dist/tasks/test-run-binding.d.ts +21 -3
- package/dist/tasks/test-run-binding.d.ts.map +1 -1
- package/dist/tasks/test-run-binding.js +60 -14
- package/dist/tasks/test-run-binding.js.map +1 -1
- package/dist/tasks/tool-cache.d.ts.map +1 -1
- package/dist/tasks/tool-cache.js +24 -12
- package/dist/tasks/tool-cache.js.map +1 -1
- package/migrations/drizzle-cleo-global/20261016130000_t13777-nexus-audit-row-uids/migration.sql +18 -0
- package/migrations/drizzle-cleo-project/20261015100000_t12914-lifecycle-release-row-uids/migration.sql +88 -0
- package/migrations/drizzle-cleo-project/20261016130000_t13777-log-row-uids/migration.sql +42 -0
- package/migrations/drizzle-cleo-project/20261016140000_t13777-audit-collapse/migration.sql +31 -0
- package/package.json +18 -18
- package/templates/CLEO-REFERENCE.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timestamp-canon.js","sourceRoot":"","sources":["../../../src/store/sync/timestamp-canon.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"timestamp-canon.js","sourceRoot":"","sources":["../../../src/store/sync/timestamp-canon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,GAAG,GAAG,kFAAkF,CAAC;AAC/F,MAAM,MAAM,GAAG,+DAA+D,CAAC;AAE/E,SAAS,MAAM,CAAC,IAAY,EAAE,KAAa;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAOpD,CAAC;IACF,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QACpC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,6EAA6E;IAC7E,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAE/B;IACF,OAAO,EAAE;QACP,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC;QACxF,cAAc,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;QACpF,8BAA8B,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QAC5D,sCAAsC,EAAE,CAAC,aAAa,CAAC;QACvD,0BAA0B,EAAE,CAAC,YAAY,CAAC;QAC1C,wBAAwB,EAAE,CAAC,YAAY,CAAC;QACxC,iBAAiB,EAAE,CAAC,YAAY,CAAC;QACjC,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAC3F,cAAc,EAAE;YACd,cAAc;YACd,YAAY;YACZ,cAAc;YACd,UAAU;YACV,YAAY;YACZ,kBAAkB;SACnB;QACD,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAC3F,kBAAkB,EAAE;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,UAAU;YACV,YAAY;YACZ,kBAAkB;SACnB;QACD,gBAAgB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAClE,mBAAmB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QAClD,0BAA0B,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAC5D,mBAAmB,EAAE,CAAC,YAAY,CAAC;QACnC,uBAAuB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACtD,gBAAgB,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;QAC3E,kBAAkB,EAAE,CAAC,YAAY,CAAC;QAClC,mBAAmB,EAAE,CAAC,YAAY,CAAC;QACnC,oBAAoB,EAAE,CAAC,YAAY,CAAC;QACpC,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAChC,0BAA0B,EAAE,CAAC,YAAY,CAAC;QAC1C,eAAe,EAAE,CAAC,YAAY,CAAC;QAC/B,yBAAyB,EAAE,CAAC,YAAY,CAAC;QACzC,uBAAuB,EAAE,CAAC,YAAY,CAAC;QACvC,uEAAuE;QACvE,kBAAkB;QAClB,mBAAmB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QACjD,2BAA2B,EAAE,CAAC,YAAY,CAAC;QAC3C,4BAA4B,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QAC1D,wBAAwB,EAAE,CAAC,YAAY,CAAC;QACxC,iBAAiB,EAAE,CAAC,YAAY,CAAC;QACjC,wEAAwE;QACxE,6CAA6C;QAC7C,kBAAkB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QAChD,uEAAuE;QACvE,2DAA2D;QAC3D,4BAA4B,EAAE,CAAC,aAAa,CAAC;QAC7C,wEAAwE;QACxE,0DAA0D;QAC1D,iBAAiB,EAAE,CAAC,cAAc,CAAC;QACnC,oEAAoE;QACpE,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAChC,oBAAoB,EAAE,CAAC,aAAa,CAAC;QACrC,4DAA4D;QAC5D,yBAAyB,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC;QACvE,sBAAsB,EAAE;YACtB,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,cAAc;SACf;QACD,4BAA4B,EAAE,CAAC,YAAY,CAAC;QAC5C,wBAAwB,EAAE,CAAC,aAAa,CAAC;QACzC,2BAA2B,EAAE,CAAC,YAAY,CAAC;QAC3C,cAAc,EAAE;YACd,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,cAAc;YACd,cAAc;YACd,eAAe;YACf,gBAAgB;YAChB,WAAW;YACX,cAAc;YACd,aAAa;YACb,cAAc;YACd,WAAW;YACX,WAAW;SACZ;QACD,qBAAqB,EAAE,CAAC,eAAe,CAAC;QACxC,wBAAwB,EAAE,CAAC,YAAY,CAAC;QACxC,uBAAuB,EAAE,CAAC,cAAc,CAAC;QACzC,mBAAmB,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;QACxF,cAAc,EAAE,CAAC,YAAY,CAAC;QAC9B,aAAa,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC;QAC5D,kBAAkB,EAAE,CAAC,YAAY,CAAC;QAClC,uCAAuC;QACvC,iBAAiB,EAAE,CAAC,YAAY,CAAC;QACjC,6BAA6B,EAAE,CAAC,YAAY,CAAC;KAC9C;IACD,MAAM,EAAE;QACN,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAC3F,cAAc,EAAE;YACd,cAAc;YACd,YAAY;YACZ,cAAc;YACd,UAAU;YACV,YAAY;YACZ,kBAAkB;SACnB;QACD,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAC3F,kBAAkB,EAAE;YAClB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,UAAU;YACV,YAAY;YACZ,kBAAkB;SACnB;QACD,gBAAgB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,CAAC;QAClE,mBAAmB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QAClD,0BAA0B,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC;QAC5D,mBAAmB,EAAE,CAAC,YAAY,CAAC;QACnC,uBAAuB,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACtD,gBAAgB,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,CAAC;QAC3E,kBAAkB,EAAE,CAAC,YAAY,CAAC;QAClC,mBAAmB,EAAE,CAAC,YAAY,CAAC;QACnC,oBAAoB,EAAE,CAAC,YAAY,CAAC;QACpC,gBAAgB,EAAE,CAAC,YAAY,CAAC;QAChC,0BAA0B,EAAE,CAAC,YAAY,CAAC;QAC1C,eAAe,EAAE,CAAC,YAAY,CAAC;QAC/B,kBAAkB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QAChD,qBAAqB,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC;QACnE,mFAAmF;QACnF,QAAQ,EAAE,CAAC,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;QACzE,mBAAmB,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,CAAC;QACjE,eAAe,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QAC7C,oBAAoB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;KACnD;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAE/B;IACF,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE;IACxC,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,KAAa;IAC/D,MAAM,IAAI,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -17,7 +17,7 @@ export { AGENT_INSTANCE_STATUSES, AGENT_TYPES, agentErrorLog, agentInstances, }
|
|
|
17
17
|
export type { NewWarpChainInstanceRow, NewWarpChainRow, WarpChainInstanceRow, WarpChainRow, } from './schema/chain-schema.js';
|
|
18
18
|
export { warpChainInstances, warpChains } from './schema/chain-schema.js';
|
|
19
19
|
export type { NewTasksTokenUsageRow as NewTokenUsageRow, TasksTokenUsageRow as TokenUsageRow, } from './schema/cleo-project/audit.js';
|
|
20
|
-
export { tasksSchemaMeta as schemaMeta, tasksTokenUsage as tokenUsage, } from './schema/cleo-project/audit.js';
|
|
20
|
+
export { tasksAuditLog as auditLog, tasksSchemaMeta as schemaMeta, tasksTokenUsage as tokenUsage, } from './schema/cleo-project/audit.js';
|
|
21
21
|
export type { DocsAttachmentRefRow as AttachmentRefRow, DocsAttachmentRow as AttachmentRow, NewDocsAttachmentRefRow as NewAttachmentRefRow, NewDocsAttachmentRow as NewAttachmentRow, } from './schema/cleo-project/docs.js';
|
|
22
22
|
export { docsAttachmentRefs as attachmentRefs, docsAttachments, docsAttachments as attachments, } from './schema/cleo-project/docs.js';
|
|
23
23
|
export type { NewTasksLifecycleEvidenceRow as NewLifecycleEvidenceRow, NewTasksLifecycleGateResultRow as NewLifecycleGateResultRow, NewTasksLifecyclePipelineRow as NewLifecyclePipelineRow, NewTasksLifecycleStageRow as NewLifecycleStageRow, NewTasksLifecycleTransitionRow as NewLifecycleTransitionRow, TasksLifecycleEvidenceRow as LifecycleEvidenceRow, TasksLifecycleGateResultRow as LifecycleGateResultRow, TasksLifecyclePipelineRow as LifecyclePipelineRow, TasksLifecycleStageRow as LifecycleStageRow, TasksLifecycleTransitionRow as LifecycleTransitionRow, } from './schema/cleo-project/lifecycle.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-schema.d.ts","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAe1E,YAAY,EACV,qBAAqB,IAAI,gBAAgB,EACzC,kBAAkB,IAAI,aAAa,GACpC,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks-schema.d.ts","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAe1E,YAAY,EACV,qBAAqB,IAAI,gBAAgB,EACzC,kBAAkB,IAAI,aAAa,GACpC,MAAM,gCAAgC,CAAC;AAiBxC,OAAO,EACL,aAAa,IAAI,QAAQ,EACzB,eAAe,IAAI,UAAU,EAC7B,eAAe,IAAI,UAAU,GAC9B,MAAM,gCAAgC,CAAC;AAOxC,YAAY,EACV,oBAAoB,IAAI,gBAAgB,EACxC,iBAAiB,IAAI,aAAa,EAClC,uBAAuB,IAAI,mBAAmB,EAC9C,oBAAoB,IAAI,gBAAgB,GACzC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,kBAAkB,IAAI,cAAc,EACpC,eAAe,EACf,eAAe,IAAI,WAAW,GAC/B,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,4BAA4B,IAAI,uBAAuB,EACvD,8BAA8B,IAAI,yBAAyB,EAC3D,4BAA4B,IAAI,uBAAuB,EACvD,yBAAyB,IAAI,oBAAoB,EACjD,8BAA8B,IAAI,yBAAyB,EAC3D,yBAAyB,IAAI,oBAAoB,EACjD,2BAA2B,IAAI,sBAAsB,EACrD,yBAAyB,IAAI,oBAAoB,EACjD,sBAAsB,IAAI,iBAAiB,EAC3C,2BAA2B,IAAI,sBAAsB,GACtD,MAAM,oCAAoC,CAAC;AAiB5C,OAAO,EACL,sBAAsB,IAAI,iBAAiB,EAC3C,yBAAyB,IAAI,oBAAoB,EACjD,uBAAuB,IAAI,kBAAkB,EAC7C,oBAAoB,IAAI,eAAe,EACvC,yBAAyB,IAAI,oBAAoB,GAClD,MAAM,oCAAoC,CAAC;AAa5C,OAAO,EACL,gBAAgB,IAAI,WAAW,EAC/B,YAAY,IAAI,OAAO,EACvB,gBAAgB,IAAI,WAAW,GAChC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,sBAAsB,IAAI,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAG1G,YAAY,EACV,2BAA2B,IAAI,sBAAsB,EACrD,kBAAkB,IAAI,aAAa,EACnC,eAAe,IAAI,UAAU,GAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,cAAc,IAAI,SAAS,EAC3B,YAAY,IAAI,OAAO,EACvB,iBAAiB,IAAI,YAAY,EACjC,qBAAqB,IAAI,gBAAgB,EACzC,mBAAmB,IAAI,cAAc,EACrC,sBAAsB,IAAI,iBAAiB,EAC3C,mBAAmB,IAAI,cAAc,EACrC,aAAa,IAAI,QAAQ,GAC1B,MAAM,0CAA0C,CAAC;AAGlD,YAAY,EACV,2BAA2B,IAAI,sBAAsB,EACrD,kBAAkB,IAAI,aAAa,EACnC,wCAAwC,IAAI,mCAAmC,EAC/E,eAAe,IAAI,UAAU,EAC7B,wBAAwB,IAAI,mBAAmB,EAC/C,eAAe,IAAI,UAAU,EAC7B,qCAAqC,IAAI,gCAAgC,EACzE,sBAAsB,IAAI,iBAAiB,EAC3C,oBAAoB,IAAI,eAAe,EACvC,YAAY,IAAI,OAAO,EACvB,uBAAuB,IAAI,cAAc,GAC1C,MAAM,qCAAqC,CAAC;AAkD7C,OAAO,EACL,8BAA8B,IAAI,yBAAyB,EAC3D,8BAA8B,IAAI,yBAAyB,EAC3D,sBAAsB,IAAI,iBAAiB,EAC3C,0BAA0B,IAAI,qBAAqB,EACnD,aAAa,IAAI,QAAQ,EACzB,2BAA2B,IAAI,sBAAsB,EACrD,kCAAkC,IAAI,6BAA6B,EACnE,qBAAqB,IAAI,gBAAgB,EACzC,kBAAkB,IAAI,aAAa,EACnC,UAAU,IAAI,KAAK,EACnB,oBAAoB,IAAI,eAAe,GACxC,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,4BAA4B,IAAI,uBAAuB,EACvD,oBAAoB,IAAI,eAAe,EACvC,yBAAyB,IAAI,oBAAoB,EACjD,iBAAiB,IAAI,YAAY,GAClC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,uBAAuB,IAAI,kBAAkB,EAC7C,eAAe,IAAI,UAAU,GAC9B,MAAM,4CAA4C,CAAC;AAWpD,cAAc,mBAAmB,CAAC;AAElC,OAAO,EACL,YAAY,EACZ,KAAK,SAAS,EACd,aAAa,EACb,KAAK,UAAU,EACf,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,UAAU,GAChB,MAAM,sBAAsB,CAAC"}
|
|
@@ -28,7 +28,11 @@ export { warpChainInstances, warpChains } from './schema/chain-schema.js';
|
|
|
28
28
|
// the same change. `store/twin-collapse.ts` carries the bare rows into the
|
|
29
29
|
// twin (key-aware, atomic) at every open, before any read: the initial
|
|
30
30
|
// collapse, then whatever an older build wrote to the bare table since.
|
|
31
|
-
|
|
31
|
+
// TWIN COLLAPSE (T13777) — `audit_log` → `tasks_audit_log`, a DRAIN like the
|
|
32
|
+
// token pair: every drizzle `schema.auditLog` reader and the dispatch audit
|
|
33
|
+
// writer use the twin, which syncs; the rows an older build writes to the bare
|
|
34
|
+
// table are drained into it at every open (`AUDIT_LOG` in twin-collapse.ts).
|
|
35
|
+
export { tasksAuditLog as auditLog, tasksSchemaMeta as schemaMeta, tasksTokenUsage as tokenUsage, } from './schema/cleo-project/audit.js';
|
|
32
36
|
export { docsAttachmentRefs as attachmentRefs, docsAttachments, docsAttachments as attachments, } from './schema/cleo-project/docs.js';
|
|
33
37
|
// COMPLETE-CUTOVER (T12017 · gh#1107) — lifecycle domain → PREFIXED tables.
|
|
34
38
|
//
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks-schema.js","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks-schema.js","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -361,7 +361,8 @@ export declare function setFreezeBuildForTests(override: {
|
|
|
361
361
|
/** Phrases the freeze message must never contain (older builds' retry and recovery matchers). */
|
|
362
362
|
export declare const DOCS_FROZEN_FORBIDDEN: readonly string[];
|
|
363
363
|
/**
|
|
364
|
-
* Override the
|
|
364
|
+
* Override the drains' chunk size (token usage and audit log), for tests
|
|
365
|
+
* (`undefined` restores it).
|
|
365
366
|
*
|
|
366
367
|
* @param size - Rows per drain transaction.
|
|
367
368
|
* @task T13115
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twin-collapse.d.ts","sourceRoot":"","sources":["../../src/store/twin-collapse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkMG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"twin-collapse.d.ts","sourceRoot":"","sources":["../../src/store/twin-collapse.ts"],"names":[],"mappings":"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"}
|
|
@@ -205,6 +205,7 @@ import { getCleoVersion } from '../scaffold/ensure-config.js';
|
|
|
205
205
|
import { isPinnedBackup, pinBackup, readBackupSidecar, restoreBackupSidecar, unpinBackup, } from './backup-sidecar.js';
|
|
206
206
|
import { blobFileForRow, pinBlob, restoreBlob } from './blob-keep.js';
|
|
207
207
|
import { planMigrationSnapshot, writeMigrationSnapshot } from './pre-repair-snapshot.js';
|
|
208
|
+
import { DRAINED_TWINS } from './row-identity-registry.js';
|
|
208
209
|
import { withSuspectAccounting } from './sync/structural.js';
|
|
209
210
|
const log = getLogger('twin-collapse');
|
|
210
211
|
/** Prefix of the marker key holding a pair's collapse state. */
|
|
@@ -1500,48 +1501,47 @@ const DOCS = {
|
|
|
1500
1501
|
}
|
|
1501
1502
|
},
|
|
1502
1503
|
};
|
|
1503
|
-
// ── token_usage (T13115)
|
|
1504
|
-
/**
|
|
1505
|
-
const
|
|
1506
|
-
|
|
1507
|
-
/** Most bare token rows one drain transaction decides; a longer backlog drains in several. */
|
|
1508
|
-
const TOKEN_DRAIN_CHUNK = 2000;
|
|
1509
|
-
let tokenDrainChunk = TOKEN_DRAIN_CHUNK;
|
|
1504
|
+
// ── id-keyed drains: token_usage (T13115), audit_log (T13777) ───────────────
|
|
1505
|
+
/** Most bare rows one drain transaction decides; a longer backlog drains in several. */
|
|
1506
|
+
const DRAIN_CHUNK = 2000;
|
|
1507
|
+
let drainChunk = DRAIN_CHUNK;
|
|
1510
1508
|
/**
|
|
1511
|
-
* Override the
|
|
1509
|
+
* Override the drains' chunk size (token usage and audit log), for tests
|
|
1510
|
+
* (`undefined` restores it).
|
|
1512
1511
|
*
|
|
1513
1512
|
* @param size - Rows per drain transaction.
|
|
1514
1513
|
* @task T13115
|
|
1515
1514
|
*/
|
|
1516
1515
|
export function setTokenDrainChunkForTests(size) {
|
|
1517
|
-
|
|
1516
|
+
drainChunk = size ?? DRAIN_CHUNK;
|
|
1518
1517
|
}
|
|
1519
|
-
/** The token columns both tables hold (a cut-down legacy shape carries what it has). */
|
|
1520
|
-
const tokenColumns = (db) => sharedColumns(db, TOKEN_BARE, TOKEN_TWIN);
|
|
1521
1518
|
/** JSON of `cols` of one row (missing values as null). */
|
|
1522
1519
|
const rowJson = (row, cols) => JSON.stringify(cols.map((c) => row[c] ?? null));
|
|
1523
|
-
/** The
|
|
1524
|
-
function
|
|
1525
|
-
const
|
|
1520
|
+
/** The drain shape, or `null` when `id` does not travel (nothing is ever drained). */
|
|
1521
|
+
function drainShape(db, spec, schema) {
|
|
1522
|
+
const twinHas = new Set(columnsOf(db, 'main', spec.twin));
|
|
1523
|
+
const all = columnsOf(db, 'main', spec.bare);
|
|
1524
|
+
const shared = all.filter((c) => twinHas.has(spec.rename[c] ?? c));
|
|
1526
1525
|
if (!shared.includes('id'))
|
|
1527
1526
|
return null;
|
|
1528
|
-
const
|
|
1527
|
+
const twinCols = shared.map((c) => spec.rename[c] ?? c);
|
|
1529
1528
|
const list = (cols) => cols.map(quoteIdent).join(', ');
|
|
1530
1529
|
return {
|
|
1531
1530
|
shared,
|
|
1531
|
+
twinCols,
|
|
1532
1532
|
all,
|
|
1533
1533
|
bareOnly: all.filter((c) => !shared.includes(c)),
|
|
1534
|
-
twinRow: db.prepare(`SELECT ${list(
|
|
1535
|
-
bareById: db.prepare(`SELECT ${list(all)} FROM main.${
|
|
1534
|
+
twinRow: db.prepare(`SELECT ${list(twinCols)} FROM ${schema}.${spec.twin} WHERE "id" = ?`),
|
|
1535
|
+
bareById: db.prepare(`SELECT ${list(all)} FROM main.${spec.bare} WHERE "id" = ?`),
|
|
1536
1536
|
};
|
|
1537
1537
|
}
|
|
1538
|
-
/** One twin
|
|
1539
|
-
function
|
|
1538
|
+
/** One twin row as the JSON of the carried columns, or `undefined` when absent. */
|
|
1539
|
+
function twinRowJson(shape, id) {
|
|
1540
1540
|
const row = shape.twinRow.get(id);
|
|
1541
|
-
return row === undefined ? undefined : rowJson(row, shape.
|
|
1541
|
+
return row === undefined ? undefined : rowJson(row, shape.twinCols);
|
|
1542
1542
|
}
|
|
1543
1543
|
/** The hash that stands for every bare row with this id (its change identity), or `undefined`. */
|
|
1544
|
-
function
|
|
1544
|
+
function bareRowHash(shape, id) {
|
|
1545
1545
|
const rows = shape.bareById.all(id);
|
|
1546
1546
|
if (rows.length === 0)
|
|
1547
1547
|
return undefined;
|
|
@@ -1549,29 +1549,29 @@ function bareTokenHash(shape, id) {
|
|
|
1549
1549
|
return sha(fulls.length === 1 ? fulls[0] : JSON.stringify(fulls));
|
|
1550
1550
|
}
|
|
1551
1551
|
/** Bare ids a cut-down table without a key holds more than once (empty when `id` is the key). */
|
|
1552
|
-
function
|
|
1552
|
+
function duplicateBareIds(db, spec) {
|
|
1553
1553
|
return db
|
|
1554
|
-
.prepare(`SELECT "id" AS id FROM main.${
|
|
1554
|
+
.prepare(`SELECT "id" AS id FROM main.${spec.bare} WHERE "id" IS NOT NULL GROUP BY "id" HAVING count(*) > 1`)
|
|
1555
1555
|
.all().map((r) => String(r.id));
|
|
1556
1556
|
}
|
|
1557
1557
|
/**
|
|
1558
|
-
* Bare
|
|
1559
|
-
*
|
|
1560
|
-
*
|
|
1558
|
+
* Bare rows by id, as the hash of the whole row (the change identity a marker
|
|
1559
|
+
* records). Read in full: used to detect a change when no change counter can
|
|
1560
|
+
* be trusted, and by `cleo doctor`.
|
|
1561
1561
|
*/
|
|
1562
|
-
function
|
|
1563
|
-
const shape =
|
|
1562
|
+
function bareRowHashes(db, spec) {
|
|
1563
|
+
const shape = drainShape(db, spec, 'main');
|
|
1564
1564
|
if (shape === null)
|
|
1565
1565
|
return {};
|
|
1566
|
-
const dups = new Set(
|
|
1566
|
+
const dups = new Set(duplicateBareIds(db, spec));
|
|
1567
1567
|
const out = {};
|
|
1568
1568
|
for (const id of dups) {
|
|
1569
|
-
const h =
|
|
1569
|
+
const h = bareRowHash(shape, id);
|
|
1570
1570
|
if (h !== undefined)
|
|
1571
1571
|
out[id] = h;
|
|
1572
1572
|
}
|
|
1573
1573
|
const rows = db
|
|
1574
|
-
.prepare(`SELECT ${shape.all.map(quoteIdent).join(', ')} FROM main.${
|
|
1574
|
+
.prepare(`SELECT ${shape.all.map(quoteIdent).join(', ')} FROM main.${spec.bare} WHERE "id" IS NOT NULL`)
|
|
1575
1575
|
.iterate();
|
|
1576
1576
|
for (const r of rows) {
|
|
1577
1577
|
const id = String(r['id']);
|
|
@@ -1585,9 +1585,9 @@ function bareTokenHashes(db) {
|
|
|
1585
1585
|
* count and highest rowid. `undefined` (compare full hashes) when the table
|
|
1586
1586
|
* has no rowid.
|
|
1587
1587
|
*/
|
|
1588
|
-
function
|
|
1588
|
+
function bareChangeSeq(db, spec) {
|
|
1589
1589
|
try {
|
|
1590
|
-
const r = db.prepare(`SELECT count(*) AS n, max(rowid) AS m FROM main.${
|
|
1590
|
+
const r = db.prepare(`SELECT count(*) AS n, max(rowid) AS m FROM main.${spec.bare}`).get();
|
|
1591
1591
|
return r === undefined ? undefined : `${r.n}:${r.m ?? 0}`;
|
|
1592
1592
|
}
|
|
1593
1593
|
catch {
|
|
@@ -1595,9 +1595,9 @@ function tokenChangeSeq(db) {
|
|
|
1595
1595
|
}
|
|
1596
1596
|
}
|
|
1597
1597
|
/**
|
|
1598
|
-
* Plan one bounded step of
|
|
1599
|
-
*
|
|
1600
|
-
*
|
|
1598
|
+
* Plan one bounded step of a drain: at most {@link DRAIN_CHUNK} bare rows an
|
|
1599
|
+
* earlier merge did not leave behind are decided, streamed rather than read
|
|
1600
|
+
* in full:
|
|
1601
1601
|
*
|
|
1602
1602
|
* - the twin lacks it → carried (`set`), then removed from the bare table;
|
|
1603
1603
|
* - the twin holds an identical copy (a store an older build reconciled holds
|
|
@@ -1616,10 +1616,10 @@ function tokenChangeSeq(db) {
|
|
|
1616
1616
|
* remain), so a long backlog drains in several transactions without any row
|
|
1617
1617
|
* being taken for "left behind" before it was decided.
|
|
1618
1618
|
*/
|
|
1619
|
-
function
|
|
1619
|
+
function planDrain(db, spec, state) {
|
|
1620
1620
|
const plan = { ...emptyPlan(), leftBehind: new Map(), fullHashes: new Map() };
|
|
1621
1621
|
const left = plan.leftBehind;
|
|
1622
|
-
const shape =
|
|
1622
|
+
const shape = drainShape(db, spec, 'main');
|
|
1623
1623
|
if (shape === null)
|
|
1624
1624
|
return plan;
|
|
1625
1625
|
const last = state?.hashes?.bare ?? {};
|
|
@@ -1631,17 +1631,17 @@ function planTokenUsage(db, state) {
|
|
|
1631
1631
|
: reason);
|
|
1632
1632
|
};
|
|
1633
1633
|
const visited = new Set();
|
|
1634
|
-
const dups =
|
|
1634
|
+
const dups = duplicateBareIds(db, spec);
|
|
1635
1635
|
for (const id of dups) {
|
|
1636
1636
|
visited.add(id);
|
|
1637
|
-
const hash =
|
|
1637
|
+
const hash = bareRowHash(shape, id);
|
|
1638
1638
|
if (hash !== undefined)
|
|
1639
|
-
keepLeft(id, hash, `${id}: not carried (${
|
|
1639
|
+
keepLeft(id, hash, `${id}: not carried (${spec.bare} holds this id more than once)`);
|
|
1640
1640
|
}
|
|
1641
1641
|
const dupSet = new Set(dups);
|
|
1642
1642
|
let decided = 0;
|
|
1643
1643
|
const rows = db
|
|
1644
|
-
.prepare(`SELECT ${shape.all.map(quoteIdent).join(', ')} FROM main.${
|
|
1644
|
+
.prepare(`SELECT ${shape.all.map(quoteIdent).join(', ')} FROM main.${spec.bare} WHERE "id" IS NOT NULL`)
|
|
1645
1645
|
.iterate();
|
|
1646
1646
|
for (const r of rows) {
|
|
1647
1647
|
const id = String(r['id']);
|
|
@@ -1650,10 +1650,10 @@ function planTokenUsage(db, state) {
|
|
|
1650
1650
|
const hash = sha(rowJson(r, shape.all));
|
|
1651
1651
|
if (last[id] === hash) {
|
|
1652
1652
|
visited.add(id);
|
|
1653
|
-
keepLeft(id, hash, `${id}: left in ${
|
|
1653
|
+
keepLeft(id, hash, `${id}: left in ${spec.bare} by an earlier merge`);
|
|
1654
1654
|
continue;
|
|
1655
1655
|
}
|
|
1656
|
-
if (decided >=
|
|
1656
|
+
if (decided >= drainChunk) {
|
|
1657
1657
|
plan.truncated = true;
|
|
1658
1658
|
break;
|
|
1659
1659
|
}
|
|
@@ -1661,11 +1661,11 @@ function planTokenUsage(db, state) {
|
|
|
1661
1661
|
decided++;
|
|
1662
1662
|
const extra = shape.bareOnly.filter((c) => (r[c] ?? null) !== null);
|
|
1663
1663
|
if (extra.length > 0) {
|
|
1664
|
-
keepLeft(id, hash, `${id}: not carried (${
|
|
1664
|
+
keepLeft(id, hash, `${id}: not carried (${spec.twin} has no column ${extra.join(', ')})`);
|
|
1665
1665
|
continue;
|
|
1666
1666
|
}
|
|
1667
1667
|
const json = rowJson(r, shape.shared);
|
|
1668
|
-
const twin =
|
|
1668
|
+
const twin = twinRowJson(shape, id);
|
|
1669
1669
|
if (twin === undefined) {
|
|
1670
1670
|
plan.set.set(id, json);
|
|
1671
1671
|
plan.fullHashes?.set(id, hash);
|
|
@@ -1673,50 +1673,50 @@ function planTokenUsage(db, state) {
|
|
|
1673
1673
|
else if (twin === json)
|
|
1674
1674
|
plan.del.push(id);
|
|
1675
1675
|
else
|
|
1676
|
-
keepLeft(id, hash, `${id}: kept in ${
|
|
1676
|
+
keepLeft(id, hash, `${id}: kept in ${spec.bare} (${spec.twin} holds another copy)`);
|
|
1677
1677
|
}
|
|
1678
1678
|
// Rows left behind earlier that this bounded pass did not reach stay left
|
|
1679
1679
|
// behind while they are unchanged.
|
|
1680
1680
|
if (plan.truncated) {
|
|
1681
1681
|
for (const [id, hash] of Object.entries(last)) {
|
|
1682
|
-
if (!visited.has(id) &&
|
|
1682
|
+
if (!visited.has(id) && bareRowHash(shape, id) === hash)
|
|
1683
1683
|
left.set(id, hash);
|
|
1684
1684
|
}
|
|
1685
1685
|
}
|
|
1686
1686
|
return plan;
|
|
1687
1687
|
}
|
|
1688
1688
|
/**
|
|
1689
|
-
* Carry a
|
|
1690
|
-
*
|
|
1691
|
-
*
|
|
1689
|
+
* Carry a drain plan into the twin, one row at a time, each in its own
|
|
1690
|
+
* savepoint and re-read before it counts. A row the twin refuses (a CHECK,
|
|
1691
|
+
* NOT NULL, UNIQUE or type mismatch from a differing shape, or a value it
|
|
1692
1692
|
* stores differently) is rolled back, listed as a conflict and left where it
|
|
1693
1693
|
* is (recorded in `leftBehind`): one bad row never fails the merge, so the
|
|
1694
1694
|
* open is never blocked by it. A carried row and every row of `del` are then
|
|
1695
1695
|
* deleted from the bare table.
|
|
1696
1696
|
*/
|
|
1697
|
-
function
|
|
1697
|
+
function applyDrain(db, spec, plan) {
|
|
1698
1698
|
const refused = new Set();
|
|
1699
|
-
const shape =
|
|
1699
|
+
const shape = drainShape(db, spec, 'main');
|
|
1700
1700
|
if (shape === null)
|
|
1701
1701
|
return { inserted: 0, replaced: 0, deleted: 0, refused };
|
|
1702
|
-
const insert = db.prepare(`INSERT INTO main.${
|
|
1703
|
-
`VALUES (${shape.
|
|
1704
|
-
const removeBare = db.prepare(`DELETE FROM main.${
|
|
1702
|
+
const insert = db.prepare(`INSERT INTO main.${spec.twin} (${shape.twinCols.map(quoteIdent).join(', ')}) ` +
|
|
1703
|
+
`VALUES (${shape.twinCols.map(() => '?').join(', ')})`);
|
|
1704
|
+
const removeBare = db.prepare(`DELETE FROM main.${spec.bare} WHERE "id" = ?`);
|
|
1705
1705
|
let inserted = 0;
|
|
1706
1706
|
let deleted = 0;
|
|
1707
1707
|
for (const [id, json] of plan.set) {
|
|
1708
|
-
db.exec(
|
|
1708
|
+
db.exec(`SAVEPOINT ${spec.savepoint}`);
|
|
1709
1709
|
try {
|
|
1710
1710
|
insert.run(...JSON.parse(json));
|
|
1711
|
-
if (
|
|
1711
|
+
if (twinRowJson(shape, id) !== json)
|
|
1712
1712
|
// @sync-invariant none:local-only re-reads a row this device's own drain just inserted; the savepoint rolls it back and the row stays in the bare table
|
|
1713
1713
|
throw new Error('the stored row differs');
|
|
1714
|
-
db.exec(
|
|
1714
|
+
db.exec(`RELEASE ${spec.savepoint}`);
|
|
1715
1715
|
inserted++;
|
|
1716
1716
|
}
|
|
1717
1717
|
catch (error) {
|
|
1718
|
-
db.exec(
|
|
1719
|
-
db.exec(
|
|
1718
|
+
db.exec(`ROLLBACK TO ${spec.savepoint}`);
|
|
1719
|
+
db.exec(`RELEASE ${spec.savepoint}`);
|
|
1720
1720
|
plan.conflicts.push(`${id}: not carried (${error instanceof Error ? error.message : error})`);
|
|
1721
1721
|
plan.skipped++;
|
|
1722
1722
|
refused.add(id);
|
|
@@ -1732,61 +1732,85 @@ function applyTokenUsage(db, plan) {
|
|
|
1732
1732
|
return { inserted, replaced: 0, deleted, refused };
|
|
1733
1733
|
}
|
|
1734
1734
|
/**
|
|
1735
|
-
*
|
|
1736
|
-
*
|
|
1737
|
-
*
|
|
1738
|
-
*
|
|
1739
|
-
* {@link mirrorCounterToBare}: the bare table becomes the inbox of rows an
|
|
1740
|
-
* older build writes, empty after every open unless a row is left behind (see
|
|
1741
|
-
* {@link planTokenUsage}). `cleo token` reports then cover all history, and
|
|
1742
|
-
* `cleo token delete` / `clear` need to touch the twin only.
|
|
1735
|
+
* A lossless drain pair for {@link DrainSpec}: each merge moves the bare rows
|
|
1736
|
+
* into the twin and deletes them from the bare table, so the bare table becomes
|
|
1737
|
+
* the inbox of rows an older build writes, empty after every open unless a row
|
|
1738
|
+
* is left behind (see {@link planDrain}).
|
|
1743
1739
|
*
|
|
1744
1740
|
* - Lossless: a bare row is deleted only when the twin holds every value of
|
|
1745
1741
|
* it, so no snapshot is taken and no marker names one.
|
|
1746
|
-
* - Bounded: a merge decides at most {@link
|
|
1742
|
+
* - Bounded: a merge decides at most {@link DRAIN_CHUNK} rows per
|
|
1747
1743
|
* `BEGIN IMMEDIATE`, so a long legacy table drains in several short
|
|
1748
1744
|
* transactions instead of holding the write lock for all of it.
|
|
1749
1745
|
* - Degrades nothing: the twin is correct whatever the bare table holds, so a
|
|
1750
1746
|
* failed merge is recorded (`cleo doctor twin-collapse`) and retried at the
|
|
1751
1747
|
* next open; no shadow is built and no write is refused.
|
|
1752
|
-
* - Only the columns
|
|
1753
|
-
* on either side drains what it can and never fails the open.
|
|
1748
|
+
* - Only the columns the twin has a place for are carried, so a cut-down
|
|
1749
|
+
* legacy shape on either side drains what it can and never fails the open.
|
|
1754
1750
|
* - An unchanged bare table costs one `count`/`max(rowid)` read.
|
|
1755
1751
|
*/
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1752
|
+
function drainPair(spec) {
|
|
1753
|
+
return {
|
|
1754
|
+
table: spec.bare,
|
|
1755
|
+
twin: spec.twin,
|
|
1756
|
+
kvTable: 'tasks_schema_meta',
|
|
1757
|
+
tables: [spec.bare, spec.twin, 'tasks_schema_meta'],
|
|
1758
|
+
lossless: true,
|
|
1759
|
+
bareHashes: (db) => bareRowHashes(db, spec),
|
|
1760
|
+
// The twin is not tracked: the bare side is drained, never compared.
|
|
1761
|
+
twinHashes: () => ({}),
|
|
1762
|
+
changeSeq: (db) => bareChangeSeq(db, spec),
|
|
1763
|
+
plan: (db, state) => planDrain(db, spec, state),
|
|
1764
|
+
apply(db, plan) {
|
|
1765
|
+
const { refused, ...counts } = applyDrain(db, spec, plan);
|
|
1766
|
+
const shape = drainShape(db, spec, 'main');
|
|
1767
|
+
if (shape === null)
|
|
1768
|
+
return counts;
|
|
1769
|
+
const left = db.prepare(`SELECT 1 FROM main.${spec.bare} WHERE "id" = ?`);
|
|
1770
|
+
for (const [id, json] of plan.set) {
|
|
1771
|
+
if (refused.has(id))
|
|
1772
|
+
continue;
|
|
1773
|
+
if (twinRowJson(shape, id) !== json)
|
|
1774
|
+
// @sync-invariant none:local-only verifies this device's own collapse transaction before commit; a mismatch rolls the whole drain back
|
|
1775
|
+
throw new Error(`${spec.bare} collapse did not verify the carried row ${id}`);
|
|
1776
|
+
}
|
|
1777
|
+
for (const id of [...plan.set.keys(), ...plan.del]) {
|
|
1778
|
+
if (!refused.has(id) && left.get(id) !== undefined)
|
|
1779
|
+
// @sync-invariant none:local-only verifies this device's own collapse transaction before commit; a mismatch rolls the whole drain back
|
|
1780
|
+
throw new Error(`${spec.bare} collapse did not verify the drain of ${id}`);
|
|
1781
|
+
}
|
|
1771
1782
|
return counts;
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1783
|
+
},
|
|
1784
|
+
};
|
|
1785
|
+
}
|
|
1786
|
+
/**
|
|
1787
|
+
* `token_usage` → `tasks_token_usage` (T13115): token rows are append-only
|
|
1788
|
+
* telemetry with random ids, and since T13111 this build reads and writes only
|
|
1789
|
+
* the twin, so `cleo token` reports cover all history, and `cleo token delete`
|
|
1790
|
+
* / `clear` need to touch the twin only.
|
|
1791
|
+
*/
|
|
1792
|
+
const TOKEN_USAGE = drainPair({
|
|
1793
|
+
bare: 'token_usage',
|
|
1794
|
+
twin: DRAINED_TWINS['token_usage'] ?? 'tasks_token_usage',
|
|
1795
|
+
rename: {},
|
|
1796
|
+
savepoint: 'token_usage_row',
|
|
1797
|
+
});
|
|
1798
|
+
/**
|
|
1799
|
+
* `audit_log` → `tasks_audit_log` (T13777): the dispatch audit, append-only
|
|
1800
|
+
* with UUID ids, which this build writes into the twin, so one audit table
|
|
1801
|
+
* syncs and every reader sees all history. The bare `idempotency_key` lands
|
|
1802
|
+
* in `dispatch_idempotency_key`: a dispatch request may record several rows
|
|
1803
|
+
* under one key (a failed attempt, then its retry), which the twin's
|
|
1804
|
+
* UNIQUE(project_hash, domain, operation, idempotency_key) would refuse.
|
|
1805
|
+
*/
|
|
1806
|
+
const AUDIT_LOG = drainPair({
|
|
1807
|
+
bare: 'audit_log',
|
|
1808
|
+
twin: DRAINED_TWINS['audit_log'] ?? 'tasks_audit_log',
|
|
1809
|
+
rename: { idempotency_key: 'dispatch_idempotency_key' },
|
|
1810
|
+
savepoint: 'audit_log_row',
|
|
1811
|
+
});
|
|
1788
1812
|
/** The pairs this build collapses, in order. */
|
|
1789
|
-
const PAIRS = [SCHEMA_META, STICKY_TAGS, DOCS, TOKEN_USAGE];
|
|
1813
|
+
const PAIRS = [SCHEMA_META, STICKY_TAGS, DOCS, TOKEN_USAGE, AUDIT_LOG];
|
|
1790
1814
|
/** Connections serving TEMP shadows because their collapse failed. */
|
|
1791
1815
|
const degraded = new WeakMap();
|
|
1792
1816
|
/**
|