Google Sign-In Required

Use your company Google account to access the BetterFleet private content.

Back to private home

BetterFleet Support Private
Skip to content
BetterFleet Dev Wiki
GitLab Feature Flags
Initializing search
    bf-dev
    • Home
    • Process
    • Products
    • Reference
    • Decisions
    • Work
    • Operations
    bf-dev
    • Home
      • Process Handbook
      • BetterFleet Workflow Map
      • Product Development System
      • Product Engineering Workflow
        • Process Workflows
        • Work Intake and Weekly Planning
        • Product Engineering Workflow in Linear
        • Product Engineering Delivery
        • Agent Guidance
        • Workflow
        • Skills
        • Skill Sources
        • Process Guides
        • GitLab Feature Flags
          • Purpose
          • Operating Model
          • Stage Language
          • Working Process
          • Release Notes And Help Docs
          • Retirement
          • References
        • In-App Docs Authoring
        • Release Notes
        • Process Templates
        • Release Plan: <title>
      • Process Publishing
      • Product overview
        • General Reference
          • Core Domain Training
          • System Topology
          • Two-Axis Ontology Model
          • Ontology Primer
          • Worked Example
          • Evidence, Ownership, and Lineage
          • Energy Management
          • Standards and Protocol Map
          • Charging, Roaming, and Commercial Model
          • Charge Planning and Operations
          • Cross-Cutting Domains
          • Domain Coverage Matrix
        • BetterFleet Product Ontology
        • Core Operations Data Ontology
        • BetterFleet R&D Plan
        • Index
        • Architecture
        • Manage Product Capabilities
        • Manage Data and State
        • Manage Service Interaction Flows
        • Manage Reference
        • Manage Internal Application Diagrams
          • Manage Authorization And Permissions
          • bf-manage-core Auth and Authorization Model
          • Manage Authorization and Permissions
          • bf-manage-web Auth and Permission Model
          • Manage Service Catalog
          • bf-depot-sim
          • bf-digital-twin (Manage Role)
          • bf-fleet-health
          • bf-manage-connect
          • bf-manage-core
          • bf-manage-incidents
          • bf-manage-roaming
          • bf-manage-sitepwrmon
          • bf-manage-web
          • bf-schedule-creator (Manage Role)
          • bf-support-microsite
          • bf-telematics
        • Index
        • Architecture
        • Plan Reference
        • Plan Internal Application Diagrams
        • Plan Migration and Flags
        • Plan Simulation Request Lifecycle
          • Plan Service Catalog
          • bf-bnl-schedule-analysis-compute
          • bf-bnl-settings
          • bf-bnl-ui
          • bf-digital-twin (Plan Role)
          • bf-route-modelling
          • bf-schedule-creator (Plan Role)
      • Where to Ask Product Questions
      • Reference
        • Platform Reference
        • Platform Architecture
        • Script Runtime Model
        • Compose Profiles and Modes
        • Repository Map
        • Monolithic Git Transition FAQ
        • Monolithic Git Sizing
        • CI and Release Integration
        • Shared Reference
        • Shared Infrastructure Architecture
        • Secrets and Env Strategy
        • Vendors and Local Dependencies
        • System Reference
        • Cloud Data Dependencies
        • Ports and URLs
        • Service Matrix
          • API Docs
          • OCPI API Docs
          • OCPP API Docs
          • OSCP API Docs
          • VDV API Docs
          • Yard State API Docs
        • System Design
        • System Design: BBA Microgrid Controller Generic Packet Translation
        • System Design: Depot Simulation
        • System Design: IoT Sensor Packet
        • System Design: Microgrid Energy Orchestration
          • System Design: OCPP Profile 3 And ISO 15118 PKI
          • Architecture: BetterFleet OCPP Profile 3 and ISO 15118 PKI
          • Specification: BetterFleet OCPP Profile 3 and ISO 15118 Certificate Lifecycle Management
          • System Design: On-Prem Control
          • Challenge
          • Specification: BetterFleet On-Prem Continuity Control
          • System Design: OSCP
          • OSCP Protocol Documentation
          • Depot Sim Testing Requirements
          • System Design: OSCP Flexibility Provider Domain
      • Decisions
        • Architecture Decision Records
        • 0001 - Record architecture decisions
        • 0002 - Cognito for Authentication and Authorisation
        • 0003 - AWS Amplify for Authentication
        • 0004 - DynamoDB for default database
        • 0005 - Data Persistence
        • 0006 - Trunk-Based Development
        • 0007 - Generalised principle for automation
        • 0008 - Naming Repositories, Services, and URLs
        • 0009 - Use Timezone Aware DateTimes and UTC
        • 0010 - Use semantic release
        • 0011 - Centralized feature flag repository
        • 0012 - Use Named Exports in Storybook
        • 0013 - RESTful TITLE GraphQL
        • 0014 - Service Granularity
        • 0015 - Async/co-routine exception handling pattern
        • 0016 - Logging & log levels
        • 0017 - Instantiated Models
        • 0018 - Repository Pattern for Database Access
        • 0019 - Use of Design Tokens in TypeScript React Application
        • 0020 - API backwards compatibility and versioning
        • 0021 - Alembic Migration strategy
        • 0022 - Consistent react-hook-form usage
        • 0023 - Domain Event-Driven Architecture
        • 0024 - Domain Event Bus Tech Stack
        • 0025 - No enum types in DB table columns
        • 0026 - In-Memory Ormar Stores for Repository testing
        • 0027 - Storing Tab State in Query and Local Storage
        • 0028 - Adopt OpenTelemetry Semantic Conventions for Structured Logging
        • 0029 - Adopt RFC 9457 for HTTP Error Responses
        • 0030 - Use GitLab registry and Terraform state for ECS services
        • 0031 - Adopt DDD, Hexagonal Architecture, and CQRS for Python Domain Services
      • Work
        • Active Work
          • Work: Bba Microgrid Controller
          • Implementation Specification: BBA Microgrid Controller
          • BBA Microgrid Controller Deliverables (Stories)
          • Work: BFDev Monolithic Git
          • Challenge
          • Specification: BFDev Monolithic Git v2
          • BFDev Monolithic Git v2 Stories
          • Work: Complex Circuit Load Balancing
          • Implementation Specification: Complex Circuit Load Balancing
          • Complex Circuit Load Balancing Deliverables (Stories)
            • COR-10 and COR-11 Consolidation Review
          • Work: Dispatch Reliability and Reconciliation
          • Challenge
          • Specification: Dispatch Reliability and Reconciliation
          • Dispatch Reliability and Reconciliation (Unit User Stories)
            • Dispatch populated vehicle cards grey surface snapshot
            • Dispatch Visual Review
          • Work: Enable Scheduled Managed Charger Access
          • Challenge: Enable Scheduled Managed Charger Access
          • Specification Exploration Dossier: Enable Scheduled Managed Charger Access
          • Specification Review: Enable Scheduled Managed Charger Access
          • Specification: Enable Scheduled Managed Charger Access
          • Work: Guided Cut-Off and Release Orchestration
          • Specification: Guided Cut-Off and Release Orchestration
          • Guided Cut-Off and Release Orchestration (Unit User Stories)
          • Work: Production Deployment Validation
          • Challenge
          • Work: Scheduled Report Parity
          • Specification: Scheduled Report Parity
          • Work: Telematics
          • Telematics EventBridge Path
          • Telematics Ingress Architecture
          • Specification: Telematics Migration into bf-manage-core with 5-Minute Freshness and Health Visibility
          • Telematics Core Migration MVP (Implementation-Time BDD)
          • Work: Vector Derms
          • Implementation Specification: Vector DERMS
          • Vector DERMS Deliverables (Stories)
          • Work: Visiting Vehicle Charging Visibility
          • Specification: Visiting Vehicle Charging Visibility
          • Visiting Vehicle Charging Visibility (Unit User Stories)
          • Work: Workspace Owned Stripe Roaming
          • Specification: Workspace-Owned Stripe Credentials for Roaming Payments
        • Backlog Work
          • Work: Microgrid
          • Microgrid Backlog Stories
          • Work: Mobile Ops Companion
          • Challenge
          • Specification: Mobile Operations Companion v1
          • Mobile Operations Companion Deliverables (Stories)
          • Work: Oscp
          • OSCP Backlog Stories
        • Archived Work
          • Work: Code Canonical Orchestration
          • Challenge
          • Specification: Product Engineering Workflow
          • Product Engineering Workflow Deliverables (Unit User Stories)
          • Work: Release Notes Automation
          • Release Plan: Release Notes Automation
          • Release Notes Automation Backlog Stories
      • Operations
      • Onboarding Runbook
        • Operations Runbooks
        • Production Hotfix Release
        • Staging Hotfix Release
        • Manage Staging Release Validation
        • Terraform Plan Dry Runs
        • Operations Tooling
        • Code Indexing
        • Operations Evidence
        • Database Restoration Test Report
      • Daily Operations Runbook
      • Testing Guide
      • Troubleshooting
    • Purpose
    • Operating Model
    • Stage Language
    • Working Process
    • Release Notes And Help Docs
    • Retirement
    • References
    1. Home
    2. Process
    3. Guides
    Process general

    GitLab Feature Flags¶

    This guide defines the BetterFleet Manage feature-flag process.

    Purpose¶

    • Align daily rollout practice with the intended feature-control model.
    • Keep stage language, release communication, help-doc follow-through, and retirement expectations consistent.
    • Make current usage explicit instead of relying on implied team knowledge.

    Operating Model¶

    • Runtime rollout state lives in GitLab Feature Flags and GitLab user lists.
    • The Manage sysadmin feature-flag page is the operational view of stage and user access.
    • The frontend still reads feature flags through Unleash.
    • Local web development enables all flags by default unless VITE_FEATURE_FLAGS_READ_FROM_UNLEASH=true.
    • bf-manage-web/feature-flags.md is the inventory of Manage flags.
    • Owner, rollout intent, release-note expectation, help-doc expectation, and retirement expectation must still be visible in the governed story, MR, or linked Linear work.

    If the product behavior and this guide disagree, follow the product behavior and fix the guide.

    Stage Language¶

    Use this language in process conversations:

    Process term Sysadmin label Implementation rule Meaning
    Internal Pre-Release Any flag that is not All Users and does not use a Beta user list limited rollout for internal or tightly controlled audiences
    Beta Beta At least one GitLab user list whose first word is Beta limited rollout for a named beta audience
    Fully Released Fully Released All Users strategy is present normal product behavior for everyone

    Additional rules:

    • enabled and stage are separate. A disabled flag is still off even if its derived stage is Beta or Fully Released.
    • Beta detection is based on the first word of the user-list name being Beta, case-insensitive. Use names like Beta Customers or Beta Feature X. Do not rely on beta-* naming with punctuation and no space.
    • Pre-Release is the sysadmin label for what the process should treat as Internal.

    Working Process¶

    1. Define the flag before or with implementation.
    2. Choose a stable flag name.
    3. Record the intended audience, stage, owner, release-note expectation, help-doc expectation, and retirement expectation in the story, MR, or linked Linear work.
    4. Add the flag to bf-manage-web/feature-flags.md when it is a Manage flag in active use.
    5. Deploy independently from rollout.
    6. Code may be deployed before the flag is broadly available.
    7. Do not use deployment alone as evidence that a feature is released.
    8. Set rollout using the GitLab conventions.
    9. Use explicit users or non-Beta user lists for Internal.
    10. Use Beta-named GitLab user lists for Beta.
    11. Use All Users only when the feature should behave as standard product behavior.
    12. Check the sysadmin page after rollout changes.
    13. Confirm the derived stage matches the intended stage.
    14. Confirm the expected users have or do not have access.
    15. Treat local development as a convenience, not rollout truth.
    16. If rollout-accurate local behavior matters, set VITE_FEATURE_FLAGS_READ_FROM_UNLEASH=true.
    17. Do not use local default all-flags-enabled behavior as release evidence.

    Release Notes And Help Docs¶

    • Feature-flagged work still follows the normal release-note and help-doc process.
    • Internal, shown in sysadmin as Pre-Release, should usually stay in holdback.md unless it is intentionally being communicated to internal or System Admin audiences now.
    • Beta work may go to next.public.md, next.internal.md, or holdback.md depending on who should be told about it now.
    • Fully Released work should be treated as normal shipped behavior in release communication.
    • Do not expose raw feature-flag names in public or internal release-note entries; keep rollout labels in holdback.md when needed to preserve unpublished context.
    • Update in-app help when flagged behavior changes what the intended current audience should see, expect, or do.
    • Do not update general help as if a feature is broadly available while it is still Internal or Pre-Release.

    Retirement¶

    • All Users is the technical marker for Fully Released. It is not the desired long-term resting state.
    • Moving a flag to All Users starts retirement.
    • Record a retirement owner and due date in the story, MR, or linked execution issue.
    • Remove the feature flag and stale conditional code in the next practical slice. Same-MR removal is preferred when easy, but it is not required.
    • Do not leave permanent All Users flags in place without an active cleanup expectation.
    • Remove retired flags from bf-manage-web/feature-flags.md.

    References¶

    • Manage inventory: bf-manage-web/feature-flags.md
    • Release-note guide: docs/process/guides/release-notes.md
    • In-app docs guide: docs/process/guides/in-app-docs-authoring.md
    Made with Material for MkDocs
    BFDev Docs Assistant
    New conversation?
    Ask one focused question at a time, this helps the assistant provide accurate answers about what's been implemented in BetterFleet.