Skip to content

promote: develop → main for v2026.3.14 stable release#53

Merged
kryptobaseddev merged 4 commits intomainfrom
develop
Mar 6, 2026
Merged

promote: develop → main for v2026.3.14 stable release#53
kryptobaseddev merged 4 commits intomainfrom
develop

Conversation

@kryptobaseddev
Copy link
Owner

Summary

  • Promotes develop to main for the v2026.3.14 stable release
  • 55 commits covering 13 themes: Warp + BRAIN, Sticky Notes, Zero-Legacy, Unified Audit Logging, CLI-to-Dispatch, NEXUS restructure, Memory domain, MCP tool naming, Storage hardening, maxActiveSiblings removal, Windows CI compatibility
  • All CI checks green on ubuntu, macOS, and Windows
  • See PR release: 2026.3.14 — major stable release (55 commits, 13 themes) #52 and CHANGELOG for full details

Test plan

  • CI passed on all 3 platforms (run 22767708750)
  • 4104 tests passing
  • Windows compatibility verified

🤖 Generated with Claude Code

AI Bot and others added 4 commits March 2, 2026 21:10
- Removed LEGACY_DOMAIN_ALIASES (clean break from legacy domains)
- Migrated patterns/learnings from JSONL to brain.db
- Removed alias resolution from MCP adapter
- Updated VERB-STANDARDS.md to remove legacy references
- Updated operation-constitution.schema.json for full validation
- Reworked CLI help to group by domain

53 files modified, 11 new files added
* chore: validate branch protection CI (T5253)

* chore: harden process and canon ops (T5253)

* feat: Complete T5276 sharing→nexus restructure and T5267-T5275 sticky domain implementation

MAJOR CHANGES:
- T5276: Merged sharing domain into nexus (sharing→nexus.share.*)
- T5267-T5275: Created sticky domain with 5 operations (sticky.add/list/show/convert/archive)
- T5291: Fixed sticky domain tier restriction in projections.ts
- T5292: Removed 83 domain alias Constitution violations

ARCHITECTURE:
- CANONICAL_DOMAINS now exactly 10 domains (no aliases)
- Sticky domain: src/core/sticky/, src/dispatch/domains/sticky.ts, src/dispatch/engines/sticky-engine.ts
- Sharing moved to src/core/nexus/sharing/
- Database: brain_sticky_notes table in brain.db

SKILLS:
- ct-cleo: Updated with sticky references
- ct-stickynote: New skill created and registered

DOCUMENTATION:
- STICKY-NOTES-SPEC.md created
- Constitution updated with 10 canonical domains
- CLEO-SYSTEM-FLOW-ATLAS updated

TESTS:
- 12 sticky domain tests passing
- Build verified: npm run build passes

CRITICAL AUDIT:
- 171 tasks.json references identified (T5284 epic created)
- 6 CRITICAL files need immediate fix (T5293-T5297)
- Sticky convert FIXED to use SQLite accessor

* fix: Eliminate critical tasks.json legacy references (T5293-T5297)

CRITICAL FIXES - 5 files updated to use SQLite accessor pattern:

T5293: src/core/paths.ts - getTaskPath() returns tasks.db, added @deprecated

T5294: src/core/tasks/task-ops.ts - coreTaskNext() uses accessor.loadTaskFile()

T5295: src/core/tasks/plan.ts - getCurrentPhase() async, uses getAccessor()

T5296: src/cli/commands/restore.ts - defaults to tasks.db, updated messages

T5297: src/cli/commands/nexus.ts - cross-project reads use getAccessor()

Build: PASS | TypeScript: No errors

* fix: Update error messages and comments - tasks.json to tasks database (T5298)

Fixed error messages and comments referencing legacy tasks.json:

src/core/tasks/task-ops.ts:

  - Error: 'No valid tasks.json found' → 'No valid task data found'

  - Error: 'already exists in tasks.json' → 'already exists in active tasks'

  - Comment: 'Move back to tasks.json' → 'Move back to active tasks'

src/core/validation/validate-ops.ts:

  - Comment: 'validation report on tasks.json' → 'tasks database'

  - Error: 'Duplicate IDs in tasks.json' → 'tasks database'

  - Error: 'IDs in both tasks.json and archive' → 'tasks database and archive'

src/core/paths.ts:

  - Comment: 'tasks.json (canonical)' → 'tasks.db (current)'

Build: PASS | 10 error messages updated

* fix: resolve stale test assertions and SQLite regression in inject-generate (T5298)

- Fix systemInjectGenerate to pass DataAccessor to generateInjection so it
  reads from SQLite instead of trying to parse tasks.db as JSON (caused
  success: false in brain-operations E2E tests)
- Update stale cleo_query reference in MVI template text to query
- Fix projections.test.ts: replace non-existent validate domain with sticky,
  remove lifecycle/release/system assertions that have no registry entries

* refactor: canonicalize sticky storage (T5267)

* refactor: remove runtime legacy JSON task paths (T5284)

Replace non-migration tasks.json/todo.json runtime access with DataAccessor/SQLite task data across nexus, system, release, and utility modules. Keep legacy JSON references only in migration/upgrade compatibility paths.

* refactor: remove dead todo migration script (T5303)

* test: migrate 21 test files from tasks.json fixtures to tasks.db helpers

Create shared test-db-helper.ts with createTestDb(), seedTasks(), and
makeTaskFile() that use createSqliteDataAccessor for real SQLite setup.
Replace writeFile tasks.json pattern with accessor-based initialization
across 20 test files. Also fix stale paths.test.ts assertion (tasks.json
-> tasks.db) and update migration tests for tasks.db reality. (T5244)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: remove 5 legacy alias operations from dispatch layer (T5245)

Remove backward-compat aliases: admin.config.get, tasks.reopen,
tools.issue.create.{bug,feature,help}. Canonical operations unchanged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: canonicalize MCP gateway domain validation to 10 domains (T5246)

- query.ts: Remove legacy QueryDomain aliases (sharing, research, lifecycle,
  validate, system, issues, skills, providers); update to canonical 10 domains
- mutate.ts: Remove legacy domain cases from validateOperationParams switch;
  rename validation helpers to canonical names (validateCheckParams,
  validateAdminParams, validateStageParams, validateSkillSubParams); fix all
  error response domain strings to use canonical names
- query.test.ts: Add legacy domain rejection test covering all 10 legacy names
- mutate.test.ts: Add sharing and brain to legacy domain rejection list

Gateways now reject non-canonical domains with E_INVALID_DOMAIN.
124 tests pass, 0 TypeScript errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: remove legacy aliases from CLI command surface (T5249)

- Remove .alias('reopen'), .alias('unarchive'), .alias('uncancel') from restore command
- Remove .alias('search') from find and memory recall commands
- Update comments to use canonical verb terminology
- CLI help now reflects canonical operations only (restore, find, recall)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: align Constitution and VERB-STANDARDS to post-T5245 reality (T5250)

- Add convert verb §43 to VERB-STANDARDS (37 enforced verbs)
- Add 7 verbs to Constitution §4 (check/verify/validate/timeline/convert/unlink/compute)
- Add 6 missing ops to Constitution §6 (orchestrate.spawn.execute + 5 tools ops)
- Remove 5 legacy aliases (tasks.reopen, admin.config.get, tools.issue.create.*)
- Fix operation count from 212 to 207 across all docs (118q + 89m)
- Fix per-domain counts to match registry SSoT
- Update schemas: sharing→sticky domain in operation-constitution and system-flow-atlas
- Update AGENTS.md: sharing→sticky, 112→118 query ops, 201→207 total ops
- Update CLEO-VISION.md: 212→207, 201→207
- Update tier counts: tier 0=135, tier 2=36

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add CI parity gate + fix nexus test todo.json→SQLite migration (T5251)

- Create tests/integration/parity-gate.test.ts: verifies 207 ops, 10 domains,
  per-domain counts, zero aliases, handler file existence, resolvability
- Fix 18 nexus test failures across 5 files: migrate from legacy todo.json
  fixtures to SQLite tasks.db using createSqliteDataAccessor + seedTasks
- Update parity.test.ts stale count expectations (212→207, 119q→118q, 93m→89m)
- Adapt cross-project dependency tests for SQLite FK constraints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: migrate release engine tests from todo.json to SQLite (T5251)

- Fix release-engine.test.ts: 4 pre-existing failures resolved
- Fix release-push-guard.test.ts: 1 pre-existing failure resolved + 51s hang
  eliminated (was attempting real git push due to missing manifest entry)
- Both files now use createSqliteDataAccessor + seedTasks pattern

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: update registry domain counts after T5245 alias removal (T5244)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add 2026.3.13-beta.2 unreleased changelog entry (T5244)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: decommission runtime JSONL log fallbacks (T5317)

* fix(tests): stabilize hooks and SQLite fixtures (T5317)

* docs: add cleanup matrix and retire dead-script refs (T5317)

* fix: include drizzle-brain in npm package and stabilize CI test performance (T5319, T5311)

T5319 (critical): add drizzle-brain/ to package.json files array so brain.db
migration files are included in published npm package. Brain.db init was
failing on npm install due to missing migrations folder.

T5311 (medium): cap vitest fork workers at maxForks:4 for parallel execution
(400s → 129s, ~67% faster). Batch beforeEach task creation into beforeAll pool
in mutate integration tests. Replace dead local expect mock in integration-setup
with vitest's real expect. Wire verifyResponseFormat into error-handling e2e tests.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: drop unused logOperation path arg (T4460)

* fix: remove marker debt and add active gate (T5320, T5321, T5322)

* fix(upgrade): reconcile tasks.json checks (T5299)

* refactor: decommission legacy migration imports (T5305)

* fix(upgrade): decouple runtime migration path (T5305)

* feat(build): add centralized build config system and package issue templates

- Create build-config.ts generator from package.json (SSoT)
- Update build.mjs to auto-generate config before compilation
- Package issue templates via templates/issue-templates symlink
- Rename createIssue -> addIssue per VERB-STANDARDS.md
- Refactor CLI to use shared addIssue from core
- Replace hardcoded repo refs with BUILD_CONFIG values
- Add help template to FALLBACK_TEMPLATES
- Document build config system in docs/BUILD-CONFIG.md
- Add src/config/build-config.ts to .gitignore

(T5245)

* refactor: CLI dispatch compliance, verb standards overhaul, wire cancel + unlink (T5323)

CLI dispatch compliance (T5323):
- 24 CLI commands converted to thin dispatch wrappers
- sharing.ts deleted (ops moved to nexus.share.* sub-namespace)
- dispatch registry expanded with nexus, admin, pipeline, check, validate ops
- test count assertions updated to match post-migration registry

Verb standards + constitution alignment:
- VERB-STANDARDS.md restructured from 1,215 to 197 lines (LLM-optimized)
- Removed: 43 bash example blocks, Quick Reference by category, Migration History
- Added: disambiguation rules section, known verb-standard exceptions section
- recall verb removed; memory find --type pattern|learning replaces it
- compute moved to Reserved (no impl); cancel promoted to Enforced

memory.unlink wired (was spec-ahead):
- core: linkMemoryToTask/unlinkMemoryFromTask already in brain-links.ts
- engine-compat.ts DRY fix: memoryLink/memoryUnlink now delegate to brain-links.ts
  (was duplicating typeMap + accessor.addLink, bypassing idempotency check)
- memory.ts domain handler: unlink case added
- registry: memory.unlink added (mutate, idempotent, tier 1)

tasks.cancel wired (core existed, dispatch stack was empty):
- task-ops.ts: coreTaskCancel delegates to cancelTask from cancel-ops.ts
- task-engine.ts: taskCancel EngineResult wrapper added
- dispatch/lib/engine.ts: taskCancel exported
- tasks domain handler: cancel case + getSupportedOperations updated
- registry: tasks.cancel added (mutate, tier 0)

Constitution updated: memory 17→18 ops, tasks 27→28 ops, total 208→209

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(dispatch): complete CLI-to-dispatch migration T5323

Migrate all remaining CLI commands from direct core calls to thin
dispatch wrappers. 238 registry operations (134q + 104m), 3878 tests.

## Phase completions (T5324–T5330)
- Phase 1: labels, grade, archive-stats → admin/tasks dispatch ops
- Phase 2: skills, issue, memory-brain, history, testing → tools/memory/check
- Phase 3: phase, phases, sync → pipeline.phase.* (added set/start/complete/
  advance/rename/delete mutate ops + pipeline domain handlers)
- Phase 4: consensus, contribution, decomposition, implementation,
  specification, verify → check.protocol.* (removed stale CLI-only stubs)
- Phase 5: export, import, snapshot, export-tasks, import-tasks →
  admin.export/import/snapshot.* (new core/admin/ modules)
- Phase 6: restore → hybrid pre-flight + dispatch (tasks.restore/reopen/
  unarchive + admin.backup.restore)
- Phase 7: nexus → nexus.* dispatch domain (removed CLI-only comment,
  added nexus.discover + nexus.search registry entries)

## relates.ts bypass fixed
- tasks.relates.find (query) added to registry + tasks domain handler
- suggest/discover subcommands now route through dispatch
- relatesCore direct import removed

## focus.ts deleted
- Dead alias file for start/stop/current (which already exist as dispatch
  wrappers per VERB-STANDARDS: start replaces focus-set, stop replaces
  focus-clear)
- Deregistered from cli/index.ts

## tasks.history added
- getWorkHistory → getTaskHistory alias export in core/task-work
- tasks.history (query, tier 1) in registry + tasks domain
- cleo history work subcommand in history.ts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(logging): unified audit logging architecture (T5318)

- Add project-info.ts with getProjectInfo/Sync(), scaffold backfills projectId UUID
- Add project_hash column to audit_log via Drizzle migration
- Wire projectHash into initLogger() Pino base context (all log entries carry it)
- Migrate MCP startup: call initLogger() at boot, replace 16 console.error with Pino
- Wire project_hash into audit middleware writeToSqlite(); add LoggingConfig retention fields
- Rewrite stats/index.ts to query audit_log SQLite (was reading stale Pino log file)
- Remove dead JSONL test helpers; rewrite integration-setup getAuditLogEntries() to SQLite
- Add pruneAuditLog() with archive-before-prune to .jsonl.gz, wired in MCP + CLI startup
- Add ADR-024 (multi-store canonical logging); mark ADR-019 superseded

Tests: 3901 passed, 0 failed. TSC: clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(cli): pass projectHash to logger init (T5335)

* fix(mcp): migrate startup errors to logger (T5336)

* fix(health): add audit_log checks (T5338)

* fix(cleanup): wire logs cleanup to prune (T5339)

* docs(adr): align ADR-019 amendment link (T5340)

* feat(logging): T5309/T5310 contract doc + startup instrumentation (T5284)

T5309: Add docs/specs/CLEO-LOGGING-CONTRACT.md
- Canonical two-store logging contract (Pino + SQLite audit_log)
- 11 sections: store boundaries, correlation fields (projectHash/requestId/
  sessionId/taskId), level policy, startup/install/upgrade coverage,
  25-event actionable taxonomy, MCP-first + CLI parity rules, retention policy

T5310: Instrument 4 startup/lifecycle logging gaps
- Fix stale logger reference in MCP startup (re-acquire after initLogger)
- Add version + projectHash to MCP startup info log
- Replace console.warn in lifecycle/evidence.ts with getLogger('lifecycle:evidence')
- Replace console.warn in hooks/registry.ts with getLogger('hooks')
- Add src/mcp/__tests__/startup-logging.test.ts (4 tests)

Gate: TSC clean, 3912 tests pass / 0 fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(framework): canonicalize Tessera ops (T5346)

* feat(nexus): expose analysis queries (T5348)

* docs: drop cleo_ prefix from MCP gateway names (T5361)

Update all documentation and source code to use canonical 'query'/'mutate'
instead of 'cleo_query'/'cleo_mutate' for MCP gateway names:

- AGENTS.md: Architecture diagram and agent notes
- README.md: MCP tool usage examples
- docs/specs/CLEO-LOGGING-CONTRACT.md: Gateway type documentation
- .cleo/adrs/ADR-007, ADR-019: Architecture and audit documentation
- src/cli/commands/*: Command help text and comments
- src/dispatch/*: Type definitions, error messages, and constants
- src/mcp/lib/README.md: Router examples

Maintains backward compatibility in mcp.ts adapter for existing integrations.

* feat(orchestrate): add handoff composite op (T5347)

* docs(spec): sync nexus ops table (T5350)

* docs(policy): remove marker literals (T5349)

* feat: finalize canon synthesis and sticky workflows (T5261)

* fix: remove 32 maxActiveSiblings limit default (T5413)

* feat: add sticky.archive.purge operation for permanent deletion (T5363)

- Add purgeSticky core function to permanently delete sticky notes
- Add stickyPurge engine wrapper and domain handler
- Register sticky.purge operation in dispatch registry
- Add CLI command: cleo sticky purge <id>
- Add comprehensive unit tests for purge functionality
- Fix generateProjectHash export in nexus registry
- Update test operation counts to reflect registry additions
  - sticky: 4 mutate ops (was 3)
  - nexus: 14 mutate ops (was 13)
  - Total: 247 ops (was 241)

* feat: full Warp, BRAIN Phase 3-5, hooks, and MEOW implementation (T5373)

4 workstreams, 38 atomic tasks completed:

Workstream A — Hooks: All 8 CAAMP hook events wired end-to-end
  (onError, onFileChange, onPromptSubmit, onResponseComplete + guards + 25 tests)

Workstream B — BRAIN Phase 3-5: PageIndex graph CRUD, pluggable embedding
  interface, vector similarity, hybrid search, reason.why/similar, temporal
  decay, memory consolidation, session bridge, MCP wiring (256 ops total)

Workstream C — Warp/Protocol Chains: WarpChain type system, default RCASD
  chain, chain validation engine, storage (Drizzle migration), composition
  operators, MCP pipeline/check wiring

Workstream D — MEOW Declarative Workflows: Tessera types, instantiation
  engine, orchestrate domain wiring, E2E workflow test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove cleo_ prefix from MCP tool names in code and docs (T5507)

MCP tools are defined as `query` and `mutate` — the provider prefix
is added automatically by the client (e.g., `cleo_query`). Updated
all source, test, doc, and config references to use the base names.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs(specs): comprehensive documentation cleanup and consolidation

Consolidate and update all specification documents with [IMPLEMENTED]/[TARGET] markers:

DELETED (superseded/consolidated):
- CLEO-OPERATIONS-REFERENCE.md (superseded by Constitution)
- CLEO-STRATEGIC-ROADMAP-SPEC.md (consolidated into ROADMAP.md)
- VITEST-V4-MIGRATION-PLAN.md (migration complete)
- CAAMP-1.6.1-API-INTEGRATION.md (consolidated)
- CAAMP-CLEO-INTEGRATION-REQUIREMENTS.md (consolidated)
- T5236-CAAMP-SPAWN-ADAPTER-DESIGN.md (consolidated)
- T5237-UNIVERSAL-HOOKS-DESIGN.md (consolidated)

UPDATED:
- ROADMAP.md: Added [IMPLEMENTED] and [TARGET] markers with epic references
- VERB-STANDARDS.md: Added 'purge' verb
- CLEO-OPERATION-CONSTITUTION.md: Synced to 256 operations
- MCP-SERVER-SPECIFICATION.md: 10 canonical domains, 256 ops, MCP-only BRAIN
- MCP-AGENT-INTERACTION-SPEC.md: Refreshed progressive disclosure framework
- PORTABLE-BRAIN-SPEC.md: Added portability section, NEXUS sync
- CLEO-METRICS-VALIDATION-SYSTEM-SPEC.md: Removed Bash refs, documented TS
- CLEO-DATA-INTEGRITY-SPEC.md: Marked partially implemented
- PROTOCOL-ENFORCEMENT-SPEC.md: Archived pending T5492 review

NEW:
- CAAMP-INTEGRATION-SPEC.md: Consolidated CAAMP docs with [TARGET] sections

Epics created for all [TARGET] items: T5492-T5506

* feat(nexus): add cleo nexus reconcile CLI subcommand (T5368)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: reconcile release prep and gates (T5239)

* docs(runtime): define conduit contract (T5524)

* docs: finalize 2026.3.14 release changelog — 55 commits, 13 themes (T5239)

- Update commit count 51→55 and theme count 10→13
- Add OpenCode spawn adapter + Tessera engine section (T5236, T5239)
- Add NEXUS reconcile CLI section (T5368)
- Add Specification Consolidation section with deleted/updated/new doc inventory (T5492-T5506)
- Add Conduit Protocol Specification section (T5524)
- Expand hook infrastructure table with all 8 events and full detail (T5237)

* fix(skills): fix getSkillSearchPaths test for CI environments without plugin dirs (T5239)

The test asserted paths.length > 0 but getSkillSearchPaths filters to
only existing directories, which are absent in CI runners. Removed the
assertion since an empty array is valid behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(memory): add monotonic counter to observeBrain ID generation (T5239)

On macOS, Date.now() can return the same millisecond value for
rapid consecutive calls, causing primary key collisions when
multiple observations are created in quick succession (e.g.,
during persistSessionMemory). This resulted in the second insert
throwing a UNIQUE constraint error, reducing observationsCreated
from 3 to 2 in CI.

Fix: append a monotonic sequence number to the observation ID
to guarantee uniqueness even within the same millisecond.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(ci): add cleo binary to PATH for Windows CI runners (T5508)

- Add step in CI workflow to prepend node_modules/.bin to GITHUB_PATH
  on Windows runners, so tests that spawn `cleo` as a child process
  can find the binary.
- Fix CLEO_SKILL_PATH splitting in skill-paths.ts to use path.delimiter
  instead of hardcoded ':' which breaks on Windows (where delimiter is ';').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(sqlite): cross-platform SQLite and test compatibility for Windows (T5508)

- Add closeDb() calls in afterEach for pipeline, stage-record-provenance,
  sessions, and upgrade tests — Windows locks open SQLite files, preventing
  temp directory cleanup with rm()
- Fix path separator in sqlite.ts git-tracking warning: use sep instead of
  hardcoded '/' for basename extraction and path replacement

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(paths): use cross-platform path handling for Windows compatibility (T5508)

- paths.test.ts: Replace hardcoded Unix path assertions with
  resolve()/join() calls that produce correct paths on both Unix and
  Windows (e.g. resolve('/my/project', '.cleo') instead of
  '/my/project/.cleo')
- security.test.ts: Use tmpdir()-based project roots and resolve() in
  sanitizePath test assertions instead of hardcoded '/home/user/project'
  paths. Fix "outside project root" test to use relative paths from
  the test root instead of absolute Unix paths like '/etc/passwd'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(windows): close all database singletons before temp dir cleanup (T5508)

Add closeAllDatabases() to sqlite.ts that closes tasks.db, brain.db,
and nexus.db singletons. On Windows, SQLite holds exclusive file handles
on .db/.db-wal/.db-shm files, causing EBUSY errors during test cleanup.

Changes:
- Add closeAllDatabases() async function to src/store/sqlite.ts
- Update 20+ test files to use closeAllDatabases() in afterEach/finally
- Fix fileURLToPath usage in test-environment.ts for Windows paths
- Normalize backslash paths to forward slashes in:
  - collectCleoFiles (sharing/index.ts)
  - getRelativeLogPath (migration/logger.ts)
  - handleFileChange (file-hooks.ts)
- Fix platform-aware test assertions:
  - Skip chmod check on Windows (hooks.test.ts)
  - Use path.basename instead of split('/') (project-info.test.ts)
  - Normalize backslashes in path assertions (mcp-install-verify, stage-record)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(windows): resolve remaining Windows CI failures (T5508)

- evidence.ts: normalize backslashes in linkProvenance URI
- integration-setup.ts: use double quotes for CLI args on Windows (cmd.exe)
- init-e2e.test.ts: skip chmod permission bit check on Windows
- checksum.ts: close SQLite connection in finally block to prevent EBUSY
- upgrade.test.ts: add retry with delay for rmSync cleanup on Windows
- checksum.test.ts: add retry with delay for rm cleanup on Windows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: AI Bot <bot@example.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@kryptobaseddev kryptobaseddev merged commit 9e755ad into main Mar 6, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant