Settle the suite-wide fallout of the wave

- The record-settings contract, slug-list, and section-frame tests
  follow the slugs that left the registry (layout children resolve
  their headings from the layout namespace, like production).
- The orphaned settings.sections.<module>.title/description keys leave
  all six locales; the reverse-coverage guard flagged them the moment
  their nav entries stopped existing.
- The operator-cap ledger read fails open on a read error — the
  reservation layer still meters against the same ledger, and a
  transient blip must not take the fallback chain down.
- The reaper queue joins the subsystem surface; its healed count and
  the sweep's nag_dismissed join the job-fact vocabulary.
- The intake-event contract fixture carries the full row the resource
  now declares; the workouts empty-state test asserts the
  source-neutral cue; the persister poll gates on rendered content
  first.
This commit is contained in:
Marc-André Bombeck committed 2026-08-14 06:37:30 +02:00
1 parent 4eeaec74aa
commit d2ff7cb769
14 files changed
+61 -92

No files matched your search

@@ -91,6 +91,8 @@ describe("medications — documented shapes match the handlers", () => {
});
it("admits APPLE_HEALTH as an intake source (IntakeSource enum, v1.28)", () => {
// v1.37.19 (A4-8) — the resource declares the FULL row both intake
// responses return, so the fixture carries every field.
const event = {
id: "cm000000000000000000000",
userId: "cm111111111111111111111",
@@ -98,9 +100,18 @@ describe("medications — documented shapes match the handlers", () => {
scheduledFor: "2026-07-19T08:00:00.000Z",
takenAt: "2026-07-19T08:05:00.000Z",
skipped: false,
autoMissed: false,
attributionSource: "AUTO",
source: "APPLE_HEALTH",
idempotencyKey: null,
createdAt: "2026-07-19T08:05:00.000Z",
updatedAt: "2026-07-19T08:05:00.000Z",
injectionSite: null,
doseTaken: null,
inventoryConsumption: null,
externalId: "hk-intake-1",
syncVersion: 1,
deletedAt: null,
};
const parsed = medicationIntakeEventResource.safeParse(event);
expect(parsed.success, JSON.stringify(parsed.error?.issues)).toBe(true);