Delete the kagane-specific cover path #63

Closed
opened 2026-08-09 23:12:14 +07:00 by sulthan · 0 comments
Owner

Parent

Spec: #55. Originating bug: #47. Architecture and rejected alternatives: docs/adr/0007-backend-hosts-cover-bytes.md. Domain vocabulary: CONTEXT.md.

Do not close #47 or #55 from this ticket.

What to build

Remove the machinery that made kagane special, now that nothing needs it. This is the contract step: until it lands, the codebase carries two ways to reach a Cover, and a future reader has no way to tell which one is live.

What goes: the template-level rewrite that turned a stored kagane URL into a proxy address, the kagane-only cover route and its identifier validation, and any remaining kagane-shaped branch in the cover paths. A Cover's renderable address is decided in exactly one place — on the wire — and after this ticket there is no second place that knows a Site's name.

This matters beyond tidiness. The per-Site exception is what produced #47: the previous fix was the tidy minimal one, applied in the layer that needed it, and the second client did not know about it. Leaving the old path in place leaves the trap armed for whoever adds the third client.

Confirm as part of this ticket that no Site name appears in any cover code path outside the extraction module, where per-Site knowledge legitimately belongs.

Acceptance criteria

  • The template-level kagane cover rewrite is gone
  • The kagane-only cover route and its identifier validation are gone
  • Its tests are removed or rewritten against the general route, with no loss of the guarantees they pinned — unstored addresses serve nothing, traversal-shaped addresses serve nothing, non-image content types are never echoed back
  • No Site name appears in a cover code path outside the extraction module
  • The web UI and the panel both still render Covers for all six Sites
  • go test ./... is green

Blocked by

  • #60, #61, #62 — every consumer of the old path must be off it first
## Parent Spec: #55. Originating bug: #47. Architecture and rejected alternatives: `docs/adr/0007-backend-hosts-cover-bytes.md`. Domain vocabulary: `CONTEXT.md`. Do not close #47 or #55 from this ticket. ## What to build Remove the machinery that made kagane special, now that nothing needs it. This is the contract step: until it lands, the codebase carries two ways to reach a Cover, and a future reader has no way to tell which one is live. What goes: the template-level rewrite that turned a stored kagane URL into a proxy address, the kagane-only cover route and its identifier validation, and any remaining kagane-shaped branch in the cover paths. A Cover's renderable address is decided in exactly one place — on the wire — and after this ticket there is no second place that knows a Site's name. This matters beyond tidiness. The per-Site exception is what produced #47: the previous fix was the tidy minimal one, applied in the layer that needed it, and the second client did not know about it. Leaving the old path in place leaves the trap armed for whoever adds the third client. Confirm as part of this ticket that no Site name appears in any cover code path outside the extraction module, where per-Site knowledge legitimately belongs. ## Acceptance criteria - [x] The template-level kagane cover rewrite is gone - [x] The kagane-only cover route and its identifier validation are gone - [x] Its tests are removed or rewritten against the general route, with no loss of the guarantees they pinned — unstored addresses serve nothing, traversal-shaped addresses serve nothing, non-image content types are never echoed back - [x] No Site name appears in a cover code path outside the extraction module - [x] The web UI and the panel both still render Covers for all six Sites - [x] `go test ./...` is green ## Blocked by - #60, #61, #62 — every consumer of the old path must be off it first
sulthan added the ready-for-agent label 2026-08-09 23:12:14 +07:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sulthan/mangaBookmark#63