@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
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
-- T12914 (epic T12323) — row uids for the lifecycle, release, PR and commit
|
|
2
|
+
-- tables (project store).
|
|
3
|
+
--
|
|
4
|
+
-- Adds a nullable `uid` column and a unique index on it to each of the 16
|
|
5
|
+
-- tables (the two minted ones, `tasks_lifecycle_evidence` and
|
|
6
|
+
-- `tasks_lifecycle_transitions`, also get `birth_fp`). Without a uid none of
|
|
7
|
+
-- them had capture triggers, so a release, a lifecycle stage or a commit
|
|
8
|
+
-- recorded on one device never reached another, and the typed release merge
|
|
9
|
+
-- rule (release.status.absorbing, T12943) never fired across devices (Stage C
|
|
10
|
+
-- gate, T13549). Spec: `cleo docs fetch t12341-uid-scheme`.
|
|
11
|
+
--
|
|
12
|
+
-- The columns are filled by TypeScript at open (store/row-identity.ts, inside
|
|
13
|
+
-- the cold-open lease), and rows inserted by this build get theirs from the
|
|
14
|
+
-- per-connection TEMP trigger. Nothing here rebuilds a table or touches a row
|
|
15
|
+
-- (only ADD COLUMN and CREATE INDEX), so the T12541 rebuild probe and the
|
|
16
|
+
-- gate 36 DML rules do not apply; a probe-stamped store gets its columns and
|
|
17
|
+
-- indexes from the open's heal.
|
|
18
|
+
--
|
|
19
|
+
-- @task T12914
|
|
20
|
+
-- @epic T12323
|
|
21
|
+
|
|
22
|
+
ALTER TABLE `tasks_lifecycle_pipelines` ADD COLUMN `uid` text;
|
|
23
|
+
--> statement-breakpoint
|
|
24
|
+
ALTER TABLE `tasks_lifecycle_stages` ADD COLUMN `uid` text;
|
|
25
|
+
--> statement-breakpoint
|
|
26
|
+
ALTER TABLE `tasks_lifecycle_gate_results` ADD COLUMN `uid` text;
|
|
27
|
+
--> statement-breakpoint
|
|
28
|
+
ALTER TABLE `tasks_lifecycle_evidence` ADD COLUMN `uid` text;
|
|
29
|
+
--> statement-breakpoint
|
|
30
|
+
ALTER TABLE `tasks_lifecycle_evidence` ADD COLUMN `birth_fp` text;
|
|
31
|
+
--> statement-breakpoint
|
|
32
|
+
ALTER TABLE `tasks_lifecycle_transitions` ADD COLUMN `uid` text;
|
|
33
|
+
--> statement-breakpoint
|
|
34
|
+
ALTER TABLE `tasks_lifecycle_transitions` ADD COLUMN `birth_fp` text;
|
|
35
|
+
--> statement-breakpoint
|
|
36
|
+
ALTER TABLE `tasks_releases` ADD COLUMN `uid` text;
|
|
37
|
+
--> statement-breakpoint
|
|
38
|
+
ALTER TABLE `tasks_release_commits` ADD COLUMN `uid` text;
|
|
39
|
+
--> statement-breakpoint
|
|
40
|
+
ALTER TABLE `tasks_release_changes` ADD COLUMN `uid` text;
|
|
41
|
+
--> statement-breakpoint
|
|
42
|
+
ALTER TABLE `tasks_release_changesets` ADD COLUMN `uid` text;
|
|
43
|
+
--> statement-breakpoint
|
|
44
|
+
ALTER TABLE `tasks_release_artifacts` ADD COLUMN `uid` text;
|
|
45
|
+
--> statement-breakpoint
|
|
46
|
+
ALTER TABLE `tasks_pull_requests` ADD COLUMN `uid` text;
|
|
47
|
+
--> statement-breakpoint
|
|
48
|
+
ALTER TABLE `tasks_pr_commits` ADD COLUMN `uid` text;
|
|
49
|
+
--> statement-breakpoint
|
|
50
|
+
ALTER TABLE `tasks_pr_tasks` ADD COLUMN `uid` text;
|
|
51
|
+
--> statement-breakpoint
|
|
52
|
+
ALTER TABLE `tasks_commits` ADD COLUMN `uid` text;
|
|
53
|
+
--> statement-breakpoint
|
|
54
|
+
ALTER TABLE `tasks_commit_files` ADD COLUMN `uid` text;
|
|
55
|
+
--> statement-breakpoint
|
|
56
|
+
ALTER TABLE `tasks_task_commits` ADD COLUMN `uid` text;
|
|
57
|
+
--> statement-breakpoint
|
|
58
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_lifecycle_pipelines_uid` ON `tasks_lifecycle_pipelines` (`uid`);
|
|
59
|
+
--> statement-breakpoint
|
|
60
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_lifecycle_stages_uid` ON `tasks_lifecycle_stages` (`uid`);
|
|
61
|
+
--> statement-breakpoint
|
|
62
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_lifecycle_gate_results_uid` ON `tasks_lifecycle_gate_results` (`uid`);
|
|
63
|
+
--> statement-breakpoint
|
|
64
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_lifecycle_evidence_uid` ON `tasks_lifecycle_evidence` (`uid`);
|
|
65
|
+
--> statement-breakpoint
|
|
66
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_lifecycle_transitions_uid` ON `tasks_lifecycle_transitions` (`uid`);
|
|
67
|
+
--> statement-breakpoint
|
|
68
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_releases_uid` ON `tasks_releases` (`uid`);
|
|
69
|
+
--> statement-breakpoint
|
|
70
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_release_commits_uid` ON `tasks_release_commits` (`uid`);
|
|
71
|
+
--> statement-breakpoint
|
|
72
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_release_changes_uid` ON `tasks_release_changes` (`uid`);
|
|
73
|
+
--> statement-breakpoint
|
|
74
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_release_changesets_uid` ON `tasks_release_changesets` (`uid`);
|
|
75
|
+
--> statement-breakpoint
|
|
76
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_release_artifacts_uid` ON `tasks_release_artifacts` (`uid`);
|
|
77
|
+
--> statement-breakpoint
|
|
78
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_pull_requests_uid` ON `tasks_pull_requests` (`uid`);
|
|
79
|
+
--> statement-breakpoint
|
|
80
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_pr_commits_uid` ON `tasks_pr_commits` (`uid`);
|
|
81
|
+
--> statement-breakpoint
|
|
82
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_pr_tasks_uid` ON `tasks_pr_tasks` (`uid`);
|
|
83
|
+
--> statement-breakpoint
|
|
84
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_commits_uid` ON `tasks_commits` (`uid`);
|
|
85
|
+
--> statement-breakpoint
|
|
86
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_commit_files_uid` ON `tasks_commit_files` (`uid`);
|
|
87
|
+
--> statement-breakpoint
|
|
88
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_task_commits_uid` ON `tasks_task_commits` (`uid`);
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
-- T13777 (epic T12323) — row uids for the logs every command writes (project
|
|
2
|
+
-- store): token usage and the session handoff entries.
|
|
3
|
+
--
|
|
4
|
+
-- Both tables are portable, so every vault snapshot lists them, but neither
|
|
5
|
+
-- had row identity, so the change journal never carried them: a journal
|
|
6
|
+
-- checkpoint could not account for their rows and `cleo cloud push` refused
|
|
7
|
+
-- on every real store (T12999 staging, 2026-10-16). Adds a nullable `uid`
|
|
8
|
+
-- column and a unique index on it to each. Spec: `cleo docs fetch t12341-uid-scheme`.
|
|
9
|
+
--
|
|
10
|
+
-- The write-once guard on the handoff entries was `BEFORE UPDATE` with no
|
|
11
|
+
-- column list, so it aborted the uid fill and the per-connection uid trigger
|
|
12
|
+
-- (journal spec §2.11 §7 note for T12341). It is re-created as `BEFORE UPDATE
|
|
13
|
+
-- OF` the content columns: the handoff stays write-once, and its identity
|
|
14
|
+
-- columns can be filled.
|
|
15
|
+
--
|
|
16
|
+
-- The columns are filled by TypeScript at open (store/row-identity.ts, inside
|
|
17
|
+
-- the cold-open lease), and rows inserted by this build get theirs from the
|
|
18
|
+
-- per-connection TEMP trigger. Nothing here rebuilds a table or touches a row.
|
|
19
|
+
--
|
|
20
|
+
-- @task T13777
|
|
21
|
+
-- @epic T12323
|
|
22
|
+
|
|
23
|
+
ALTER TABLE `tasks_token_usage` ADD COLUMN `uid` text;
|
|
24
|
+
--> statement-breakpoint
|
|
25
|
+
ALTER TABLE `tasks_session_handoff_entries` ADD COLUMN `uid` text;
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_token_usage_uid` ON `tasks_token_usage` (`uid`);
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_session_handoff_entries_uid` ON `tasks_session_handoff_entries` (`uid`);
|
|
30
|
+
--> statement-breakpoint
|
|
31
|
+
DROP TRIGGER IF EXISTS `trg_tasks_session_handoff_no_update`;
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
CREATE TRIGGER `trg_tasks_session_handoff_no_update`
|
|
34
|
+
BEFORE UPDATE OF `handoff_json`, `created_at` ON `tasks_session_handoff_entries`
|
|
35
|
+
FOR EACH ROW
|
|
36
|
+
WHEN NOT EXISTS (SELECT 1 FROM cleo_trigger_suspend WHERE scope IN ('guard', 'all'))
|
|
37
|
+
BEGIN
|
|
38
|
+
SELECT RAISE(
|
|
39
|
+
ABORT,
|
|
40
|
+
'T1609_HANDOFF_IMMUTABLE: session_handoff_entries rows are write-once. Use persistHandoff() exactly once per session.'
|
|
41
|
+
);
|
|
42
|
+
END;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- T13777 part 2 (epic T12323) — the dispatch audit moves into `tasks_audit_log`,
|
|
2
|
+
-- which gets a row uid and syncs.
|
|
3
|
+
--
|
|
4
|
+
-- Every command writes an audit row. The dispatch audit went to the bare
|
|
5
|
+
-- `audit_log` and the task-mutation audit to `tasks_audit_log`; neither had
|
|
6
|
+
-- row identity, so the change journal carried neither, and a journal
|
|
7
|
+
-- checkpoint could not account for their rows (T12999 staging, 2026-10-16).
|
|
8
|
+
-- This build writes the dispatch audit into the twin, the twin collapse drains
|
|
9
|
+
-- the bare rows into it (store/twin-collapse.ts, lossless), and the twin is
|
|
10
|
+
-- declared natural on `id`.
|
|
11
|
+
--
|
|
12
|
+
-- `dispatch_idempotency_key` holds a dispatch request's idempotency key. One
|
|
13
|
+
-- key may record several rows (a failed attempt, then its retry), which
|
|
14
|
+
-- UNIQUE(project_hash, domain, operation, idempotency_key) on the twin would
|
|
15
|
+
-- refuse, so the key lives outside that constraint; the idempotent replay
|
|
16
|
+
-- reads it through the index below.
|
|
17
|
+
--
|
|
18
|
+
-- The columns are filled by TypeScript at open (store/row-identity.ts, inside
|
|
19
|
+
-- the cold-open lease), and rows inserted by this build get theirs from the
|
|
20
|
+
-- per-connection TEMP trigger. Nothing here rebuilds a table or touches a row.
|
|
21
|
+
--
|
|
22
|
+
-- @task T13777
|
|
23
|
+
-- @epic T12323
|
|
24
|
+
|
|
25
|
+
ALTER TABLE `tasks_audit_log` ADD COLUMN `uid` text;
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
ALTER TABLE `tasks_audit_log` ADD COLUMN `dispatch_idempotency_key` text;
|
|
28
|
+
--> statement-breakpoint
|
|
29
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `uq_tasks_audit_log_uid` ON `tasks_audit_log` (`uid`);
|
|
30
|
+
--> statement-breakpoint
|
|
31
|
+
CREATE INDEX IF NOT EXISTS `idx_tasks_audit_log_dispatch_idempotency` ON `tasks_audit_log` (`project_hash`, `domain`, `operation`, `dispatch_idempotency_key`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/core",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.18",
|
|
4
4
|
"description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -371,6 +371,11 @@
|
|
|
371
371
|
"import": "./dist/tasks/*.js",
|
|
372
372
|
"require": "./dist/tasks/*.js"
|
|
373
373
|
},
|
|
374
|
+
"./goal/*.js": {
|
|
375
|
+
"types": "./dist/goal/*.d.ts",
|
|
376
|
+
"import": "./dist/goal/*.js",
|
|
377
|
+
"require": "./dist/goal/*.js"
|
|
378
|
+
},
|
|
374
379
|
"./verification/*.js": {
|
|
375
380
|
"types": "./dist/verification/*.d.ts",
|
|
376
381
|
"import": "./dist/verification/*.js",
|
|
@@ -496,16 +501,16 @@
|
|
|
496
501
|
"write-file-atomic": "^7.0.1",
|
|
497
502
|
"yaml": "^2.8.3",
|
|
498
503
|
"zod": "^4.3.6",
|
|
499
|
-
"@cleocode/adapters": "2026.10.
|
|
500
|
-
"@cleocode/agents": "2026.10.
|
|
501
|
-
"@cleocode/caamp": "2026.10.
|
|
502
|
-
"@cleocode/contracts": "2026.10.
|
|
503
|
-
"@cleocode/git-shim": "2026.10.
|
|
504
|
-
"@cleocode/lafs": "2026.10.
|
|
505
|
-
"@cleocode/nexus": "2026.10.
|
|
506
|
-
"@cleocode/paths": "2026.10.
|
|
507
|
-
"@cleocode/skills": "2026.10.
|
|
508
|
-
"@cleocode/worktree": "2026.10.
|
|
504
|
+
"@cleocode/adapters": "2026.10.18",
|
|
505
|
+
"@cleocode/agents": "2026.10.18",
|
|
506
|
+
"@cleocode/caamp": "2026.10.18",
|
|
507
|
+
"@cleocode/contracts": "2026.10.18",
|
|
508
|
+
"@cleocode/git-shim": "2026.10.18",
|
|
509
|
+
"@cleocode/lafs": "2026.10.18",
|
|
510
|
+
"@cleocode/nexus": "2026.10.18",
|
|
511
|
+
"@cleocode/paths": "2026.10.18",
|
|
512
|
+
"@cleocode/skills": "2026.10.18",
|
|
513
|
+
"@cleocode/worktree": "2026.10.18"
|
|
509
514
|
},
|
|
510
515
|
"engines": {
|
|
511
516
|
"node": ">=24.16.0"
|
|
@@ -531,7 +536,7 @@
|
|
|
531
536
|
"@types/proper-lockfile": "^4.1.4",
|
|
532
537
|
"@types/tar": "^6.1.13",
|
|
533
538
|
"@types/write-file-atomic": "^4.0.3",
|
|
534
|
-
"@cleocode/utils": "2026.10.
|
|
539
|
+
"@cleocode/utils": "2026.10.18"
|
|
535
540
|
},
|
|
536
541
|
"repository": {
|
|
537
542
|
"type": "git",
|
|
@@ -540,12 +545,7 @@
|
|
|
540
545
|
},
|
|
541
546
|
"optionalDependencies": {
|
|
542
547
|
"llmtxt": "^2026.5.15",
|
|
543
|
-
"@cleocode/studio": "^2026.10.
|
|
544
|
-
},
|
|
545
|
-
"cleo": {
|
|
546
|
-
"releasedFeatures": [
|
|
547
|
-
"hooks-v1"
|
|
548
|
-
]
|
|
548
|
+
"@cleocode/studio": "^2026.10.18"
|
|
549
549
|
},
|
|
550
550
|
"scripts": {
|
|
551
551
|
"build": "tsc && node scripts/copy-selfimprove-fixtures.mjs && node scripts/write-build-provenance.mjs",
|
|
@@ -301,7 +301,7 @@ All overrides append a line to `.cleo/audit/force-bypass.jsonl`. Use sparingly.
|
|
|
301
301
|
|
|
302
302
|
### Test evidence without churn (T12957)
|
|
303
303
|
|
|
304
|
-
The evidence run is the one run. Start with `cleo done <id> --plan`, which picks affected → ci and shows each tool's cache state; it never plans a whole-suite `tool:test` it would have to run (owner decision 2026-10-12, T13647) and refuses with `test-run-needed` instead, naming the scoped evidence to record. When the PR has merged and the project sets `evidence.ciSatisfies`, record `testsPassed`/`qaPassed` with `ci:<pr>` and run nothing locally. Otherwise, when `testing.affectedCommand` is configured, use `tool:test-affected` (packages the diff touches plus dependents); a full `tool:test` is then only for changes to root config, which affected planning refuses. Without it, use a targeted `test-run:<json>` of the test files you changed, or `tool:test`. After the merge, a scoped run carries to the merge commit only when the change's files are byte-identical; otherwise a targeted `test-run:` recorded on a main HEAD that descends from the merge, on the current tree and covering the change's files, stands in whatever the merge commit's own CI concluded (owner decision 2026-10-13, T13673). The same rule holds for `qaPassed` (T13644): after the merge, `qa-run:` receipts (a typecheck and a lint) carry when the change's files are byte-identical, or stand in when recorded on such a main HEAD, on the current tree, with roots that together cover the change's files. While iterating, run only the failing or changed test files; never run the suite by hand and then again through `tool:test`. On macOS heavy `test`/`build` runs take one machine-wide slot by default (`CLEO_TOOL_CONCURRENCY_TEST=<n>` raises it).
|
|
304
|
+
The evidence run is the one run. Start with `cleo done <id> --plan`, which picks affected → ci and shows each tool's cache state; it never plans a whole-suite `tool:test` it would have to run (owner decision 2026-10-12, T13647) and refuses with `test-run-needed` instead, naming the scoped evidence to record. When the PR has merged and the project sets `evidence.ciSatisfies`, record `testsPassed`/`qaPassed` with `ci:<pr>` and run nothing locally. Otherwise, when `testing.affectedCommand` is configured, use `tool:test-affected` (packages the diff touches plus dependents); a full `tool:test` is then only for changes to root config, which affected planning refuses. Without it, use a targeted `test-run:<json>` of the test files you changed, or `tool:test`. After the merge, a scoped run carries to the merge commit only when the change's files are byte-identical; otherwise a targeted `test-run:` recorded on a main HEAD that descends from the merge, on the current tree and covering the change's files, stands in whatever the merge commit's own CI concluded (owner decision 2026-10-13, T13673). Such a report goes stale only when the change's own files, the test files it ran or their test inputs (root configs and lockfile; the `package.json`, `tsconfig*.json`, runner configs and setup files of the directories above those files) move (T13784): unrelated commits landing on main after the run or after verify leave it standing, and a run followed by a pull of main records `runHeadSha` (HEAD as of the run) so those commits are judged the same way. The same rule holds for `qaPassed` (T13644): after the merge, `qa-run:` receipts (a typecheck and a lint) carry when the change's files are byte-identical, or stand in when recorded on such a main HEAD, on the current tree, with roots that together cover the change's files. A parent whose work was split across its children closes on their PRs (T13785): when several merged PRs cite the parent, those that also cite one of its done children are its own work, each recorded as an `implemented` attempt with the parent's criteria, instead of `pr-ambiguous`. While iterating, run only the failing or changed test files; never run the suite by hand and then again through `tool:test`. On macOS heavy `test`/`build` runs take one machine-wide slot by default (`CLEO_TOOL_CONCURRENCY_TEST=<n>` raises it).
|
|
305
305
|
|
|
306
306
|
### `pr:<number>` retroactive atom (T9764)
|
|
307
307
|
|