- Log child list on the job record (newest first), when core defines
jobs_log
- Running jobs and the Live Progress panel show the current phase,
percent, message, bytes and ETA from the new jobs_job progress fields,
falling back to the rows/chunks derivation
- Retention purges jobs_log with its job
- parentAppName config places the Jobs app under a host group (for
example Admin > Operations)
Needs QQQ 4.1.0-RC.8 (QRun-IO/qqq#1212).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RC.7 ships the durable jobs kernel (QRun-IO/qqq #1178, #1181, #1184, #1191,
#1195, #1201).
- Both profiles (default and demo) use 4.1.0-RC.7. The demo no longer needs a
locally installed kernel build.
- JobsCoreContract references core's tables, enums, labels, alert names and
joins. JobsSecurity is removed and callers use core's DurableJobsSecurity.
- JobsStorage calls StorageAction.deleteObject directly.
- Tests build the instance with core's DurableJobsMetaDataProvider (real
record locks, joins and possible values). JobsTablesStandIn is removed.
- The Postgres DDL matches core RC.7's seven tables. The docs require RC.7
or later.
verify: 37 tests, checkstyle clean, JaCoCo 99% instructions / 100% classes.
The demo compiles.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The app side of QRun-IO/qqq#1191: core's transactional outbox for side effects
outside the job's database (jobs_effect).
- The job record gets an Effects child list (when core has the table).
- Needs attention shows "N effects need review"; Live Progress gets an Effects
group (sent, pending, failed, needs review).
- Declares the alert type jobs.effect-unresolved ("Job effect needs review").
- Retention deletes a purged job's effects and keeps jobs whose effects are
still outstanding or need review, with a summary line.
- Adds jobs_effect to the Data Analysis list and to the Postgres DDL.
- Stand-ins tagged STAND-IN(core=QRun-IO/qqq#1191, removeBy=RC.6).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scaffold per the QRun qbit repo standard:
- CircleCI orb config, release-rc workflow and dependabot;
- Maven wrapper, checkstyle, and a JaCoCo gate at 70% instructions and 90% classes;
- README, LICENSE, NOTICE, CHANGELOG, AGENTS and CLAUDE pointers.
The app (design: QRun-IO/qqq docs/specs/DURABLE-JOBS-AND-ASSISTED-BULK-LOAD.md,
section 2.12 and phase 4):
- Home, built from typed widgets read in the viewer's session:
- an overview: now, and the last 24 hours;
- running and queued jobs, with progress bars and record links;
- rows per hour by process;
- needs attention, with the errors;
- workers;
- 30 days of history.
- Job record: a live progress panel, chunk/row-error/event child lists,
and the audit link for changes made by the job.
- Declarations: the jobs.job-failed and jobs.job-stalled alert types,
and the jobs.reaper heartbeat monitor.
- Retention: a hidden scheduled purge with a standard process summary.
- Opt-in ESB, Quick Search and Data Analysis registration lists, and the
Postgres DDL.
It builds against released 4.1.0-RC.5. The core names it needs are mirrored
in stand-ins tagged STAND-IN(core=QRun-IO/qqq#1178, removeBy=RC.6).
The -Pdemo server runs against a locally installed kernel build and takes
the screenshots in docs/screenshots.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>