chore(flagship): retire pano-base-feed flag — rip gate + dead fallback + IaC decl (ADR 0136)#3705
Conversation
🚀 Preview deployed
|
|
review-code: PASS @ c55359d — merge-ready Fresh re-review of PR #3705 against #3663's acceptance criteria at the post-rebase head. The prior verdicts on this PR were bound to Reviewed-head: @ c55359d Union-of-removals — clean, and re-checked against the NEW main tip This is the load-bearing re-check after the rebase. Main advanced to
Acceptance criteria (#3663 + ADR 0136)
Fan-out (silent-failure · type-design · test-gap) — no in-scope findings. The change deletes branches and adds no swallow; it is strictly type-narrowing (the retired key can no longer be referenced, so a stale consumer is a compile error rather than a silent CI at this head — the two red checks are INFRA, not code
Both failures are rerunnable infra with no code cause — flagged for the shipper to rerun, not a FAIL. All acceptance criteria pass at |
|
review-design: PASS @ c55359d — merge-ready Fresh re-render of PR #3705 over the Reviewed-head: @ c55359d Dispatched because Preview freshness — verified, not assumed. The sticky preview comment cites Surface captured: This PR carries a real rendered delta on the preview. The retired flag's IaC Hard-FAIL prohibitions (ADR 0162)
Advisory (non-blocking)
Evidence
No objective prohibition is violated, no surface threw during render, and no blessed golden applies. Design-merge-ready at |
…k + IaC decl (ADR 0136) The base-feed / viewer-overlay split flag (#2322, epic #2316 leg B) graduated to serves-on@100%, so per ADR 0136 (machine nominates, human confirms — confirmed at Gate 1) retire it. Rip the flag gate + the now-dead flag-off fallback across every leg-B surface, keeping only the served-on path byte-for-byte: - base-feed-route: the GET /fate/pano/feed route serves unconditionally (drop the 404-when-off gate + the anonymous-flags-context read). - postOverlaySource: reads the viewer overlay whenever a viewer is present (the anon → inert-scalars degrade stays); drop the flag guard. - PanoFeed: the sort feed always composes the identity-guarded overlay (drop the useFlag read); the saved/authed path keeps compose unset. Delete the IaC declaration + factory in flagship/resources.ts, the stack wiring in alchemy.run.ts, and the key constant + DECLARED_FLAGS entry in flags/keys.ts. Remove the flag's own invariant test; the base-feed integration behavior tests stay (de- flagged — the base feed is now the source of truth). Reword docblocks/mirrors that cited the retired flag so the grep stays clean under apps/web. Closes #3663 Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
fa4636e to
c55359d
Compare
Retires the
pano-base-feedflag (base-feed / viewer-overlay split, #2322, epic #2316 leg B), which graduated to serves-on@100% in prod. Per ADR 0136 (machine nominates, human confirms — confirmed at Gate 1) the gate + dead flag-off fallback are ripped, keeping only the served-on path byte-for-byte.Consumers de-gated (live path only)
worker/features/pano/base-feed-route.ts—GET /fate/pano/feedserves unconditionally (drop the 404-when-off gate + anonymous-flags-context read).worker/features/pano/sources.ts—postOverlaySourcereads the viewer overlay whenever a viewer is present; the anon → inert-scalars degrade stays.src/pages/PanoFeed.tsx— the sort feed always composes the identity-guarded overlay (drop theuseFlagread); the saved/authed path keepscomposeunset.IaC declaration deleted
flagship/resources.ts—PANO_BASE_FEED_FLAGconfig +panoBaseFeedFlagfactory + import/re-export.alchemy.run.ts— import + stack wiring.src/flags/keys.ts—PANO_BASE_FEEDconst +DECLARED_FLAGSentry.Tests
pano-base-feed.invariant.test.ts.apps/web.Grep-clean under
apps/web(PANO_BASE_FEED/pano-base-feed).pnpm typecheck+ biome clean; flagship + pano unit suites green (373 + 64 tests).Closes #3663
🤖 Generated with Claude Code