printing_job.created_at is ISO-8601 text and its QQQ field is a string, so QQQ
could not apply a relative date filter ("created in the last day"), a date sort
or a date bucket to print jobs.
- printing_job gains created_time, a TIMESTAMP without time zone holding UTC
(the QQQ date-time convention), written by the same INSERT from the same
instant as created_at.
- The job table exposes it as the read-only DATE_TIME field "Created"; it
replaces the text field in the default columns and Summary section. The text
field stays (relabelled "Created at (ISO text)") because the queue order,
history cursors, admission seeding, the Printing home and the job API read it.
- initialize() adds the column, backfills existing rows from created_at and
creates printing_job_created_time_idx (tenant_id, created_time, id).
- A host that owns the schema must add the column first (PostgreSQL statements
in CHANGELOG.md). Without it every submission is rolled back with the
missing-column error and QQQ cannot read the table; nothing is stored silently.
No wire or contract change (extension 2.4.0, wire v1).
Tests: PrintingJobCreatedTimeTest (5 tests; all fail without the change).
./mvnw -B verify -Pui-demo: 209 tests, 0 failures, 0 errors, 1 skipped
(opt-in workload test), 0 Checkstyle violations.
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>