Spike: Feature flag strategy (gate features, rollback, gradual rollout) #129
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Spike
Lineage
Cross-cutting concern. Should land early so every feature built after this can be gated. Standalone — emerged from operational need to toggle features without redeploying.
Repo
ldraney/landscaping-assistantQuestion
What is the simplest feature flag approach that lets us turn features off in prod without redeploying, and how does it compose with the four-role permission model?
FeatureFlagmodel (no restart), Flipper gem (per-user/role/percentage — possibly overkill), single YAML/JSON config (middle ground).FeatureFlagmodel be scoped toBusinessfrom the start, or retrofitted in Phase 4? TheBusinessentity is already defined indocs/user-stories-auth.md.Deliverables
Required outputs:
docs/feature-flags.mdcreated — philosophy + chosen approach, with rationale. Merged via docs-only PR.Time-box
1 session. Favor decision speed — this is V1, we can evolve the approach later. If time-box expires, document findings in the docs file and escalate remaining questions to Lucas for direction.
Related
landscaping-assistant— project slugdocs/user-stories-auth.md— role permission matrix that flags interact withIssue #129 Spike Template Review
TEMPLATE CONFORMANCE
Checked against
template-issue-spikefrom pal-e-docs. Section-by-section:ldraney/landscaping-assistant-- correctDeliverables -- missing checkbox format. The template specifies checkboxes (
- [ ]) for both required deliverables. The issue uses plain bullet points (*). This is cosmetic but matters for trackability -- Forgejo renders checkboxes as interactive task lists.Current:
Should be:
Time-box -- missing escalation clause. Template requires: "If time-box expires without answer: close spike, document findings in the docs file, escalate to Lucas for direction." The issue says only "1 session. Favor decision speed -- this is V1, we can evolve the approach later." The pragmatic note is good but the escalation path is absent. Since this is a solo-developer project and "escalate to Lucas" would mean escalating to yourself, this is a minor nit -- but the template exists to keep spike discipline consistent.
Related -- missing project slug. Template requires a
project-slugline (e.g.,landscaping-assistant-- the project this affects). The issue lists issue references and a doc file path but no pal-e-docs project slug. Add:CONTENT QUALITY
Framing question: strong. "What is the simplest feature flag approach that lets us turn features off in prod without redeploying, and how does it compose with the four-role permission model?" -- this is clear, answerable, and correctly scoped as a "which approach" question per template guidance.
Sub-questions: comprehensive and well-ordered. The 8 sub-questions cover:
This is thorough without being bloated. The composition-with-roles question (#7) is the most important one and correctly references the interaction pattern.
One missing sub-question: multi-tenancy interaction. The granularity bullet mentions "Per-business (when multi-tenancy lands)" but does not dig into it as a sub-question. Given that the data model in
docs/user-stories-auth.mddefinesBusinessas the multi-tenancy entity and the delivery phases show multi-tenancy landing in Phase 4, a sub-question worth adding:This is not a blocker -- the spike can discover this organically -- but explicitly calling it out would ensure it is not missed.
Another angle worth considering: Hotwire/Turbo interaction. The app uses Hotwire with Turbo Streams (per the conflict handling section of
user-stories-auth.md-- "admin sees the change in real-time via Turbo Streams"). Feature flags that gate UI elements need to interact correctly with Turbo frame updates. If a flag is toggled while a user has the page open, Turbo Stream broadcasts could show/hide elements that the flag state no longer permits. Worth a sub-question:Again, not a blocker for the spike ticket itself -- these are "nice to have" investigation angles.
Deliverables: concrete and verifiable. The docs file target (
docs/feature-flags.md) is specific. The follow-up ticket deliverable correctly calls out updating existing tickets (#125, #123) if they need flag gating. Good.Time-box: realistic. "1 session" is appropriate for a decision-focused spike that evaluates 4 known approaches against clear criteria. The "favor decision speed" note aligns with spike philosophy.
Related references: all verified. All four referenced issues exist and are open:
The doc file reference (
docs/user-stories-auth.md) exists and contains the role permission matrix that flags would interact with.SOP COMPLIANCE
landscaping-assistant)VERDICT: PASS (with nits)
The spike is well-written and ready to execute. The three template conformance nits are minor formatting/completeness issues, not structural problems. The content quality is strong -- the framing question is clear, sub-questions are comprehensive, and the composition-with-roles angle correctly identifies the key design tension.
Required fixes (template conformance):
- [ ])landscaping-assistantproject slug to RelatedOptional improvements (content quality):
Reading issue body for template conformance check -- ignore this comment.