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
Product Development System
Initializing search
    bf-dev
    • Home
    • Process
    • Products
    • Reference
    • Decisions
    • Work
    • Operations
    bf-dev
    • Home
      • Process Handbook
      • BetterFleet Workflow Map
      • Product Development System
        • Design Principles
        • Operating Contract
        • How Work Enters
        • Work Routes
        • Day-To-Day Loop
        • Governed Product Route
        • Output Follow-Through
        • Review And Expert Loops
        • Weekly Planning
        • Zoom In
      • 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
        • 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
    • Design Principles
    • Operating Contract
    • How Work Enters
    • Work Routes
    • Day-To-Day Loop
    • Governed Product Route
    • Output Follow-Through
    • Review And Expert Loops
    • Weekly Planning
    • Zoom In
    1. Home
    2. Process
    Operations & Dispatch Process general

    Product Development System¶

    This is the core operating model for BetterFleet work. Start here for the 50,000-foot view, then zoom into the detailed process docs only when the next question needs more detail.

    The whole system has one simple shape:

    flowchart TB
      Signal["Signal<br/>Slack / support / customer / product / repo"]
      Triage["Linear triage<br/>one issue with enough context to decide"]
      Backlog["Backlog / not now<br/>visible state and missing decision"]
    
      subgraph Routes["Responsible routes"]
        direction TB
        Support["Support/bug"]
        Incident["Incident"]
        Fix["Small fix"]
        Docs["Process/docs"]
        Product["Governed product"]
      end
    
      subgraph Governed["Governed product route"]
        direction TB
        Index["Index challenge"]
        Project["Linear Project specification"]
        Issues["Linear issues"]
        Index --> Project --> Issues
      end
    
      Active["Active work<br/>one current Linear item"]
      Evidence["Repo evidence<br/>code / tests / ADRs / docs / notes"]
      Handoff["Handoff<br/>verification / Linear state / remaining gaps"]
    
      Signal --> Triage
      Triage --> Support
      Triage --> Incident
      Triage --> Fix
      Triage --> Docs
      Triage --> Product
      Product --> Index
      Issues --> Active
      Support --> Active
      Incident --> Active
      Fix --> Active
      Docs --> Active
      Triage -.-> Backlog
      Active --> Evidence --> Handoff
      Handoff -.-> Active

    Use the companion Workflow Map when a visual orientation is enough. Use this page when you need the model behind the map.

    Design Principles¶

    The system is built on five principles for operating as an AI-native product organisation.

    Target machine legibility.

    Every planning artifact has a defined owning system, status, and set of required fields. For governed product work, the Index Challenge -> Linear Project Specification -> Linear Issue traceability chain means any agent can navigate from a line of code back to the business problem that motivated it.

    Create visible tools.

    Index, Linear, GitLab, and the repos are the operational tools. Linear is the main operating surface for work. Index holds governed challenge framing. Linear Projects hold governed specifications. Linear issues hold active state and execution plans. Repos hold implementation and shipped-output artifacts such as code, tests, ADRs, release notes, and help docs.

    Assign work to expert loops.

    AI skills are expert loops that embed best practices in a process context. challenge-writer runs Socratic problem framing. specification-writer runs eventstorming. story-shaper applies established slicing heuristics. Reviews are structured expert panels: LLM reviewers produce findings, and human experts confirm or challenge them. The process defines when and how these loops run, what they produce, and how their outputs are used.

    Organise around outcomes.

    Each route is defined by the outcome it needs to produce. Triage produces a clear next path. Governed product work produces an Index challenge, a Linear Project specification, and Linear issues. Delivery produces shipped behaviour, release notes, help docs, operational docs, and verification evidence. Done is a state with explicit conditions, not a feeling that the activity is over.

    Evaluate with human review.

    Expert review, QA checkpoints, and human gates are the repeating pattern throughout the system. LLMs produce findings; humans confirm or challenge them. QA keeps humans in the loop at the points where correctness, customer impact, or operational risk matter.

    Operating Contract¶

    Linear should tell anyone what is going on without needing a spoken status update:

    • what work is being considered
    • what work is active
    • who owns the current step
    • what is blocked
    • what changed
    • what state the work is in

    Slack, meetings, customer messages, and informal conversations can create signals. They are not durable workflow memory. If they create work, capture the durable part in the right artifact.

    The durable sources are:

    Need Source of truth
    New or unowned work Linear triage issue
    Active work state Linear issue or Project status
    Governed product problem framing Index challenge
    Governed product specification Linear Project
    Governed execution plan Linear issues in the Project
    Code, tests, ADRs, release notes, help docs, operational docs Product repos
    Incident response Incident process/tool, with follow-up Linear work when needed

    How Work Enters¶

    If new work appears and it is not already in a clear process, create or update one Linear triage issue. The triage issue should contain just enough context for the Head of Engineering and Lead Product Manager to decide the next path:

    • need or problem
    • why it matters
    • source or context
    • affected customer, product area, support path, or repo
    • urgency or known deadline
    • suspected owner, if known
    • decision needed next

    Do not turn a raw Slack thread, meeting note, customer message, or idea into a full challenge, project, or implementation plan before triage.

    If the work is valid but not selected now, keep it visible in backlog or a placeholder state with the missing next decision recorded. Backlog work is not delivery-ready just because it exists.

    Work Routes¶

    Triage decides the route. Governed product work is one route, not the default shape for every bug, investigation, incident, or narrow repo fix.

    Route Use when Operating rule
    Support/bug A production, customer, or support issue needs investigation or repair. Keep support context linked and use Linear for engineering ownership/state.
    Incident The situation needs incident response, urgency, or customer/status-page handling. Follow the incident path first; create follow-up Linear work after the response if needed.
    Small fix The work is narrow, owned, low-risk, and has a clear done condition. Keep it small; use repo instructions and Linear tracking when useful.
    Process/docs The work changes workflow, handbook, repo docs, or operational docs. Update the docs source and keep navigation reachable.
    Governed product The work is substantial, ambiguous, customer-visible, multi-person, cross-team, architectural, or likely to need sign-off. Use the governed product route after triage selects it.
    Explicit opt-out The requester deliberately bypasses the normal route. Follow the exception, but keep the handoff clear.

    Day-To-Day Loop¶

    For active work:

    1. Pick the Linear item you are actually working on.
    2. Confirm it is in the right route.
    3. Move or keep the active item in In Progress and assign it to the person doing the current step.
    4. Stay inside the issue boundary.
    5. Investigate, implement, test, or document in the relevant repo or executable environment.
    6. Update release notes, help docs, ADRs, or operational docs when the change affects what users, operators, or future implementers need to know.
    7. Keep Linear current when scope, blockers, dependencies, owner, status, or estimate changes.
    8. Hand off with concise verification evidence, current Linear state, and any remaining gaps.

    If the active Linear item does not match the work actually happening, fix the Linear state or switch work before continuing.

    Governed Product Route¶

    Use this route only after triage decides the work needs governed product shaping.

    The detailed governed route is:

    flowchart TB
      Goals["Product goals<br/>industry / competition / customer feedback"]
      Commitments["Customer commitments<br/>scope / deadlines / constraints"]
      TriageSeed["Linear triage issue<br/>governed route selected"]
      Selection["Selection / prioritisation<br/>challenge queue"]
    
      subgraph Discovery["Discovery"]
        direction TB
        ChallengeWriter["challenge-writer"]
        Challenge["Index challenge<br/>review gate"]
        ChallengeWriter --> Challenge
      end
    
      subgraph Definition["Definition"]
        direction TB
        UX["UI/UX design<br/>wireframes / flows / interaction model"]
        SpecificationWriter["specification-writer<br/>business logic / user solution / technical what"]
        Specification["Linear Project specification<br/>review gate"]
        Scenarios["bdd-scenario-writer<br/>Given / When / Then"]
        StoryShaper["story-shaper<br/>Linear issues / acceptance criteria"]
        ExecutionPlan["Execution plan<br/>review gate"]
        UX --> SpecificationWriter
        SpecificationWriter --> Specification
        Specification --> Scenarios
        Specification --> StoryShaper
        Scenarios --> StoryShaper
        StoryShaper --> ExecutionPlan
      end
    
      subgraph Delivery["Delivery"]
        direction TB
        Implementation["software-workflow<br/>canon-tdd / python / react"]
        MergeRequest["GitLab MR<br/>description / peer review"]
        Staging["Staging validation<br/>Validated in Staging label"]
        Implementation --> MergeRequest
        MergeRequest --> Staging
      end
    
      subgraph Release["Release follow-through"]
        direction TB
        WorkingNotes["Working release notes<br/>next.public / next.internal / holdback"]
        HelpDocs["In-app help docs"]
        PublishedNotes["Published release notes<br/>weekly cut"]
        WorkingNotes --> PublishedNotes
      end
    
      IndexStore[("Index<br/>challenge")]
      LinearStore[("Linear<br/>Project / issues")]
    
      Goals --> Challenge
      Commitments --> Challenge
      Commitments --> Selection
      TriageSeed --> ChallengeWriter
      Challenge --> Selection
      Selection --> UX
      Selection --> SpecificationWriter
      ExecutionPlan --> Implementation
      Staging --> WorkingNotes
      Staging --> HelpDocs
    
      Challenge -.-> IndexStore
      Specification -.-> LinearStore
      ExecutionPlan -.-> LinearStore
      Staging -.-> LinearStore
    Stage Question Source of truth Outcome
    Challenge What problem or opportunity are we taking on? Index Problem, value, constraints, commitments, and priority are clear.
    Specification What should change to deliver that outcome? Linear Project Scope, decisions, requirements, risks, and open questions are clear.
    Execution plan What are the smallest useful slices? Linear issues Delivery slices, dependencies, estimates, and owners are visible.
    Delivery How do we ship one useful slice? Repo plus Linear Code, tests, docs, release notes, and Linear state reflect the delivered change.
    Closeout Can users or operators rely on it? Linear plus shipped artifacts Verification, release communication, docs, and remaining gaps are clear.

    Do not skip forward silently. If the Index challenge, Linear Project specification, or active Linear issue is missing, shape that stage before broad implementation unless the requester explicitly opts out.

    Output Follow-Through¶

    Delivery is not just code. The repo must carry the shipped evidence people will need later:

    Output Update when
    Code and tests Behaviour changes or needs executable verification.
    ADRs and system design A change affects an accepted decision, shared convention, or long-lived technical direction.
    Release notes Shipped scope should appear in release communication.
    In-app help docs Users see, expect, notice, or need to do something differently.
    Operational docs Operators or support need different steps, expectations, or escalation paths.
    Feature-flag records Rollout stage, audience, release-note handling, help-doc timing, or retirement expectation changes.

    Working release notes and product help docs live in the product repo. BFDev process docs live here under docs/process/.

    Review And Expert Loops¶

    Use expert loops where they reduce risk or improve quality; do not turn them into ceremony for every small change.

    Loop Use for
    challenge-writer Governed problem framing before a challenge is ready.
    specification-writer Turning a selected challenge into a usable Linear Project specification.
    story-shaper Slicing governed delivery into Linear issues with clear acceptance criteria.
    check-adrs Any design or code change that might touch a long-lived technical decision.
    release-notes-writer Writing or reviewing release-note entries.
    help-docs-authoring Updating in-app help docs.
    Code and MR review loops Verifying implementation quality, risk, and handoff evidence.

    Human reviewers confirm or challenge important findings. The target is clearer decisions and safer delivery, not more process text.

    Weekly Planning¶

    Use Linear for the weekly operating view:

    • Triage items needing a route.
    • Top backlog items surfaced for planning.
    • Rolled-over work that needs re-selection or closure.
    • Ready small work.
    • Active governed projects and their next gate.
    • Blocked work needing a decision.

    Cycles are weekly planning containers, not release boundaries. Automatic rollover is a review prompt, not a commitment to keep doing the same work.

    Zoom In¶

    Use these companion docs when the core model is not enough:

    Need Doc
    Visual orientation Workflow Map
    Adding, routing, or selecting work in Linear Work Intake and Weekly Planning
    Governed product route Product Engineering Workflow
    Linear Project, issue, estimate, cycle, and status rules Product Engineering Workflow in Linear
    Delivery loop, done evidence, and staging validation Product Engineering Delivery
    Release communication Release Notes
    In-app help docs In-App Docs Authoring
    Manage feature flags and rollout language GitLab Feature Flags
    Publishing these docs Process Publishing
    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.