mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 04:50:59 +00:00
All 104 bindings across the five registrars now go through createAndWork,
whose handler type is (jobs) => Promise<JobOutcome>. The forty-two inline
handlers return what they did. A handler that falls off the end no longer
compiles, and the healthlog/job-handler-outcome rule refuses a bare
boss.work( anywhere under src/lib/jobs except the one module that owns
the wrapper. The rule's header states its own limit: it catches the
omission, not a handler that claims ok:true after a swallow.
Retry policy, reviewed queue by queue because the rethrow changes what
runs, not only what is visible:
- Twenty-one cron passes carry cronIsTheRetry (retryLimit 0). They are
the retention DELETEs, the OAuth-state prunes, the hourly maintenance
sweeps and the nightly per-sample drain — every one of them a
statement that will fail identically a second later. pg-boss defaults
to two retries with no delay, so converting them without this would
have run the same doomed statement three times a night. The next tick
is the retry and it arrives with the whole gap as backoff.
- The policy rides on the schedule, not on createQueue: create_queue()
ends in ON CONFLICT DO NOTHING, so a queue-level default would be
inert on every already-running instance.
- Everything else keeps its retries deliberately. A TLS probe, an
off-host upload, a restore drill and a provider poll all fail
transiently, and the reminder ticks only fail at job level when the
pass itself could not run.
39 lines
1.7 KiB
JavaScript
39 lines
1.7 KiB
JavaScript
/**
|
|
* @fileoverview Aggregates the project-local `healthlog/*` ESLint rules
|
|
* into a single plugin object for the flat config.
|
|
*
|
|
* - `queryKey-factory` — bare-array queryKey / mutationKey bypass guard.
|
|
* - `safe-fetch-required` — outbound fetch must route through safeFetch.
|
|
* - `api-fetch-required` — client /api/ calls must route through apiFetch.
|
|
* - `no-raw-palette-color` — ban raw Tailwind palette utilities in app UI.
|
|
* - `spacing-scale` — no pt-/pb- overrides on gap-based Card slots,
|
|
* and no off-scale `5` step on a bg-card shell.
|
|
* - `job-handler-outcome` — pg-boss bindings route through createAndWork,
|
|
* whose handler returns a JobOutcome.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
const queryKeyFactory = require("./queryKey-factory.js");
|
|
const safeFetchRequired = require("./safe-fetch-required.js");
|
|
const apiFetchRequired = require("./api-fetch-required.js");
|
|
const noRawPaletteColor = require("./no-raw-palette-color.js");
|
|
const spacingScale = require("./spacing-scale.js");
|
|
const jobHandlerOutcome = require("./job-handler-outcome.js");
|
|
|
|
module.exports = {
|
|
rules: {
|
|
"queryKey-factory": queryKeyFactory.rules["queryKey-factory"],
|
|
"safe-fetch-required": safeFetchRequired,
|
|
"api-fetch-required": apiFetchRequired,
|
|
"no-raw-palette-color": noRawPaletteColor,
|
|
"spacing-scale": spacingScale,
|
|
// Same module as `no-raw-palette-color`, registered under a second
|
|
// name so the flat config can run the `dracula` check as its own
|
|
// named rule (now error-level too; the staged warn phase ended with
|
|
// the semantic sweep). See the rule header.
|
|
"no-dracula-utility": noRawPaletteColor,
|
|
"job-handler-outcome": jobHandlerOutcome,
|
|
},
|
|
};
|