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

@@ -92,7 +92,7 @@ describe("<RecentWorkoutsTile>", () => {
expect(html).not.toContain('data-slot="recent-workouts-empty"');
});
it("renders the empty-state with the Apple-Health onboarding cue", () => {
it("renders the empty-state with the source-neutral onboarding cue", () => {
mockResult.data = {
workouts: [],
meta: { total: 0, limit: 3, offset: 0, droppedDuplicates: 0 },
@@ -100,7 +100,10 @@ describe("<RecentWorkoutsTile>", () => {
const html = render();
expect(html).toContain('data-slot="recent-workouts-empty"');
expect(html).toContain("No workouts yet");
expect(html).toContain("Apple Health");
// v1.37.19 (A1-7) — the CTA no longer assumes an iPhone with Apple
// Health; WHOOP/Polar/Oura/Withings users get the same honest cue.
expect(html).toContain("Connect a data source in Settings");
expect(html).not.toContain("Apple Health");
});
it("renders the populated list with deep-links into each detail page", () => {