tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Current execution
Failed
claude/nconf-config-freeze-ay169g
Runs and Agents
Timeline
Beta
Configuration
Self-Healing CI
Project Graph
Circular Dependencies
Enterprise
Resource Usage
Analysis
Conformance
Enterprise
Runs
Current run
Succeeded
Tasks
Resource Usage
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Fixed knex-migrator silently losing its connection settings no ref MigratorConfig.js hands knex-migrator `config.get('database')` directly, and knex-migrator mutates what it is given. lib/database.js, for a mysql2 client: options.connection.timezone = options.connection.timezone || 'Z'; options.connection.charset = options.connection.charset || 'utf8mb4'; options.connection.decimalNumbers = true; delete options.connection.filename; Frozen, none of those land. Its module body is sloppy-mode CommonJS, so the writes fail silently rather than throwing: verified against the real frozen config, where the emulated sequence returns without error and leaves timezone undefined instead of 'Z'. The migrator would then run against a connection without the UTC timezone it means to force, which for migrations that write timestamps is a correctness problem rather than a cosmetic one. Nothing reports it. This path is reached both from boot (DatabaseStateManager.getState -> isDatabaseOK) and from the knex-migrator CLI, which loads this same file. Handing over a deep clone fixes both entry points at once: the mutations land on the copy, and config itself is left alone. Confirmed timezone now resolves to 'Z' and decimalNumbers to true, with config.get('database:connection:timezone') still undefined afterwards. Found by instrumenting config.get to record mutation attempts on the objects it returns and running the unit, e2e and integration suites - 823 recorded attempts across 40 distinct sites, of which this was the highest volume. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K4KZATm5a3QU1xBM4Zntg4
nx run ghost-monorepo:lint:boundaries
⌘K
Succeeded
nx run ghost-monorepo:lint:boundaries
Click to copy
Linux
4 CPU cores
read-write
access token used
9f316b61
30722
GitHub
Ghost
Workspace