Delete or formally park the now-unused HeroLoop.svelte (its only import was removed when the loop diagram merged into the hero)

task-prune-unused-heroloop-component

task confidence inferred status backlog 2026-06-17 owner sveltekit-engineer
source log-auditor — surfaced recording the 2026-06-17 landing length/rhythm pass (DEC-0037 second polish round): the loop-diagram-into-hero merge removed HeroLoop.svelte's only import, leaving it as dead code the FDE deliberately did not delete (high-craft + cited by 4 landing.css motion-convention comments). Verified against the filesystem: grep -rn 'HeroLoop' packages/app/src shows no import of the component, only the file itself + bindHeroLoopObserver (a function name) + the 4 landing.css comments.

Delete or formally park the now-unused HeroLoop.svelte

The 2026-06-17 landing length/rhythm pass (the second polish round of The marketing landing becomes a tailorable per-client template — a typed LandingContent model rendered by LandingPage.astro; the Dossier render stays byte-for-byte identical; client instances are values of the same type, canonical in the client's own repo, generated by the generate-landing skill) merged the labelled 5-stage loop diagram up into the hero and deleted the standalone "how it works" section. In doing so it replaced the abstract HeroLoop animation with the labelled .loop__diagram (driven by the hero's existing offscreen-pause IntersectionObserver). That removed HeroLoop.svelte's only import from LandingPage.svelte.

The drift

packages/app/src/lib/components/HeroLoop.svelte (~12.4KB) is now present but unreferenced — dead code. It is the high-craft animated learning-loop signature, ported pixel-faithfully from HeroLoop.astro in the Migrate chrome-light app surfaces to SvelteKit; docs stay on Astro/Starlight (two apps, one origin) Phase-4 migration. The FDE deliberately did not delete it in the polish turn for two reasons:

  1. It is a high-craft component (not casual cruft).
  2. Four src/styles/landing.css comments cite it as the canonical motion-convention reference — lines ~503 (in the spirit of HeroLoop), ~769 (Matches HeroLoop's conventions exactly), ~976 (GATING (mirrors HeroLoop)), ~993 (Same inline-index convention HeroLoop uses). Deleting the file blindly would leave those four comments pointing at nothing.

The resolution (owner's call)

Pick one, intentionally:

  • Delete the component and reword the four landing.css comments so each describes its convention on its own terms (the hero .loop__diagram motion now embodies the convention the comments reference — so the reference can stand without the file).
  • Park it: add a header note marking HeroLoop.svelte an intentionally-retained motion-convention reference (not wired to any surface), so a future reader neither deletes it as accidental cruft nor re-wires it by mistake.

Why a task, not a fix-in-place

Choosing between delete-and-reword-four-comments and formally-park-with-a-note is a small design/curation judgment about a high-craft component and its role as a living style reference — better owned by the Principal SvelteKit Engineer (who owns the @dossier/app landing surface) than swept by the auditor. The auditor's job here was to make sure the dead code does not silently rot — hence this durable, owned home rather than a sentence in a reply. Provenance: surfaced by the log-auditor recording the DEC-0037 length/rhythm pass; confidence: inferred (agent-derived from the FDE's own follow-up note, verified against the filesystem, not human-curated). Board globbed before filing — no open task covered HeroLoop / the unused component.