AI Beyond FDLC Addendum Cost optimization · May 2026

Cost Mitigation & Token Optimization.

Operational reference for ensuring teams use the right models for the right jobs, maintain context hygiene, write efficient prompts, and use tools appropriately — covering everything from model routing through cost governance. Phase / gate vocabulary follows the FDLC canvas (Phase 0–4, G0–G4). For per-activity guidance on what AI does at each phase, see the Activity matrix addendum; this document covers how to operate those activities efficiently.

Governing principle

Token waste concentrates at three predictable failure points.

Wrong model for the task (cost multiplier problem), over-loaded or stale context (quality degradation that triggers correction cycles), and under-specified prompts (verbose outputs that aren't usable). Fix these three and you address ~85% of cost inefficiency. Everything else is optimization at the margin.

01 · Model routing

The decision matrix.

Three model tiers serve fundamentally different task classes. The decision is not "what's the best model" but "what's the minimum sufficient model." A rule-based compliance check run on Opus costs ~15–20× more than the same check on Haiku with identical output quality. Over a rollout of 50+ features per quarter, this compounds to significant unnecessary spend. The agents named in each tier below correspond to activities in the Activity matrix addendum — cross-reference there for ownership, phase/gate placement, and starter prompts.

Haiku 3.5 Rule-based · Structural · Pattern matching · Classification Baseline cost tier

Use when the correct output is deterministic from the inputs — no synthesis, no creative judgment, no multi-step reasoning required. If you can write a rule for what the output should be, Haiku can produce it. Fast turnaround makes it suitable for pre-gate blocking checks where latency matters.

AgentEst. tokens (in / out)Rationale
Spec completeness / P7 sufficiency3k–6k / 400–600Deterministic rule checking against known schema
Decision log integrity2k–4k / 200–400Pattern matching across structured logs
DS compliance validation2k–5k / 300–500Rule-based token/component list check
AC quality check2k–4k / 300–500Three binary rules: testable? independent? state-mapped?
Dependency / contract screening3k–8k / 400–600LDG lookup + entity pattern matching
Localization pre-screen2k–5k / 200–400Pattern detection against locale config rules
Cycle time telemetry capture2k–3k / 150–300Structured data extraction from git/ADO logs
Gate checklist pre-population2k–5k / 300–500Templated fill from spec — no judgment required
PR description3k–5k / 400–700Structured template fill from unit brief + review log
Rollout configuration2k–4k / 300–500Structured mapping from engineering spec
Contract change notification2k–4k / 200–400LDG lookup + templated notification generation
Analytics plan validation3k–6k / 300–500Pattern matching against infra inventory
Override to Sonnet when: Input corpus has significant ambiguity the rule-checker needs to reason through (e.g., novel entity types not in the LDG). Log the override in the decision log with rationale.
Sonnet 4 Synthesis · Generation · Code · Qualitative analysis ~5× Haiku

Use when the task requires reading across multiple sources and producing integrated output, or when the output is generative (code, documentation, design variants) within a defined constraint space. Sonnet handles the majority of substantive FDLC agent work. If an agent is doing synthesis or generation with clear inputs, Sonnet is the default — not Opus.

AgentEst. tokens (in / out)Rationale
Research synthesis10k–40k / 2k–4kComplex synthesis but bounded task; Opus not warranted
Design generation (Spec-First)15k–30k / 3k–8kConstrained generation within known DS + spec
Engineering spec draft8k–15k / 3k–6kStructured generation from G3-approved inputs
Engineering build (per unit)10k–20k / 2k–6kCode generation from spec within constitution
G3 review brief8k–15k / 1k–2kFeature folder synthesis; no novel judgment needed
Output generation suite8k–12k / 4k–8kMultiple structured documents from single spec input
Spec-to-prototype reconciliation10k–20k / 1k–2kCode + spec diff analysis; structured output
Friction signal synthesis10k–25k / 1k–3kQualitative synthesis across signal channels
VoC synthesis (call recordings)20k–60k / 2k–4kHigh-volume transcript processing; clear task
Copy / content generation5k–10k / 1k–2kCreative within brand + DS constraints
Enhancement candidate generation6k–10k / 1k–2kStructured brief authoring from signal
JTBD completion rate analysis5k–10k / 500–1kData analysis + trend interpretation
Override to Haiku when: The synthesis task can be reformulated as a structured extraction with defined rules — e.g., pulling specific fields from a consistent document format. Override to Opus when: New paradigm generation (see below) or when a G3 review brief reveals unexpected architectural complexity requiring architectural judgment.
Opus 4 Complex judgment · Novel paradigms · Architectural reasoning · High-stakes review ~15–20× Haiku · ~4–5× Sonnet

Reserved for tasks where the quality of reasoning materially affects a high-stakes outcome, where the constraint space is genuinely novel, or where the task requires simultaneous consideration of many competing factors that Sonnet demonstrably handles worse. Opus should never be a default — its use must be deliberate and logged.

AgentEst. tokens (in / out)Why Opus justified
Design generation — New Paradigm only20k–40k / 5k–15kConstraint space is genuinely novel; creativity ceiling matters
Cross-domain spec alignment15k–30k / 2k–4kMulti-spec simultaneous reasoning; architectural judgment
LLM-as-judge (Tier B–C rubric)10k–20k / 1k–3kJudgment-intensive rubric; scoring quality has gate consequences
Architecture decision record drafting10k–20k / 2k–5kHigh-stakes; consequential; nuanced tradeoff reasoning
Opportunity sizing (strategic)8k–15k / 1k–2kStrategic judgment + market reasoning; CPO-facing
Downgrade to Sonnet when: The Generation task is Spec-First (not New Paradigm). Spec-First generation is constrained by the DS and constitution — the constraint space is known. Opus's capability advantage is largest in open constraint spaces. Logged exception required to upgrade Spec-First generation to Opus.
02 · Context architecture

Load the minimum required, not the maximum relevant.

The FDLC has well-defined context loading. The optimization problem is that teams default to loading everything relevant rather than the minimum required. Context over-loading degrades output quality (attention dilution on irrelevant content) and increases cost simultaneously — the worst possible tradeoff.

4-layer context architecture
L0 · FoundationAlways cached

Platform Constitution

Core rules, patterns, and constraints that apply across all features and all domains.

  • Size: 10k–20k tokens.
  • Stability: quarterly amendments.
  • Cache: always — high TTL.
  • Load when: generation, validation, build sessions.
L1 · DomainCache per domain

Domain Companion File + Design Constitution

Domain-specific patterns, component coverage, heuristics, and design constraints for this domain.

  • Size: 5k–15k tokens per domain.
  • Stability: monthly (pattern promotions).
  • Cache: per domain — invalidate on staleness flag.
  • Load when: generation, validation; NOT for rule-based checks.
L2 · FeaturePer-gate version

Feature Spec + Decision Log

The G2-locked spec.md and active decision log for this specific feature. Changes at gate transitions and on amendments.

  • Size: 3k–10k tokens.
  • Stability: gate transitions + amendments.
  • Cache: per gate version — invalidate on amendment.
  • Load when: all feature-specific agent calls; use section-level loading.
L3 · SessionShort TTL

Session Context

Current unit of work brief, recent generation/review cycles (last 2–3 iterations). Not the full session history.

  • Size: 1k–5k tokens.
  • Stability: per unit of work.
  • Cache: short TTL — session scoped.
  • Load when: active generation/build sessions; slide window as session progresses.
Layer loading by agent type
Agent categoryL0 (Foundation)L1 (Domain)L2 (Feature spec)L3 (Session)
Rule-based checks (Haiku)Rarely — only if rule is in L0NoYes — section-selectiveNo
Design generation (Sonnet/Opus)Yes — cachedYes — cachedYes — full specYes — sliding window
Engineering build (Sonnet)Yes — cachedEngineering sections onlyYes — §2.3, 2.4, 2.5Yes — current unit brief
Validation agents (Haiku)DS rules only — not full constitutionComponent coverage section onlyYes — §2.4 state listNo
Synthesis / research agents (Sonnet)NoNoSignal brief + G1 problem statementNo
Post-ship analysis (Sonnet)NoNoJob statement + analytics plan onlyNo
Prompt caching strategy

Anthropic's prompt caching reduces input token cost by ~90% for cached content. The constitution and companion files are ideal candidates — large, stable, and accessed in nearly every substantive agent session. Caching is the single highest-ROI context optimization available.

DocumentAvg sizeCache rateCost saving
Platform Constitution
Used in every generation, validation, and build session
12k–20k95%+~90% of input cost for this block
Domain Companion File
Domain-stable between pattern promotions
5k–15k85–95%~90% within-sprint
Design Constitution
Changes less frequently than companion files
8k–12k90%+~90% of input cost for this block
Feature Spec (spec.md) — gate-locked
Stable between gate transitions; amendments invalidate
3k–10k60–80%~90% between amendments
Spec template structure
Section headers and schema — never changes
1k–2k100%Small but consistent
Decision log
Appended continuously; partial caching of historical entries
1k–6k50–70%Partial — new entries not cacheable
Selective section loading — the spec is not a monolith

Most agents need specific sections of the spec, not the full document. Loading only the relevant sections reduces input tokens and reduces attention dilution — the model focuses on what matters.

Agent / taskLoad these spec sectionsSkip these sections
DS compliance validation§2.4 (state list), §1.8 (constraints)§2.3 (data shape), §2.5 (service hooks), §1.1–1.5 (problem framing)
Engineering build sessions§2.3 (data shape), §2.4 (state list), §2.5 (service hooks), §1.6 (AC list)§1.1–1.4 (problem framing), §1.8 design constraints
Spec-to-prototype reconciliation§2.3, §2.4, §2.5 onlyEverything else — reconciliation is structural, not semantic
JTBD completion rate analysis§1.2 (job statement), §5.x (analytics plan)All implementation sections
AC quality check§1.6 (AC list), §2.4 (state list)All other sections
Constraint inventory generation§1.8 (constraints), §2.4 (state list) + L0 + L1Problem framing, ACs, data shape
Sliding window for long generation sessions

Generation sessions that run multiple units of work can accumulate full session history in context. This is the most common cause of exponential cost growth within a session. Use a sliding window: retain the last 2–3 generation/review cycles in active context; archive earlier rounds as a compressed summary.

Accumulation pattern (avoid)
  • Unit 1 generation + review → stored in context
  • Unit 2 generation + review → appended to context
  • Unit 3 generation + review → appended to context
  • Unit N session costs escalate non-linearly
Sliding window (use this)
  • Unit 1 → complete → compress to summary, archive
  • Unit 2 → active context: summary + current unit
  • Unit 3 → active context: last 2 summaries + current
  • Cost stays flat per unit regardless of session length
03 · Prompt engineering

Constrain everything.

A correction cycle costs 2–4× what a single-shot well-prompted output costs. Prompt quality investment pays off immediately. The following are the highest-leverage prompt practices for the FDLC's agent pattern — not general best practices, but specific guidance for the task types in the workflow.

Output format — constrain everything

Unconstrained output is the primary prompt-level source of token waste. Models generate to fill space. Every agent prompt must specify output format, length ceiling, and structure. For agents feeding other agents, the format must be what the downstream agent can parse without transformation.

Avoid Spec completeness check — unformatted
Check whether this spec is complete and meets our standards. Let me know what's missing.
Problems: No output format → model writes a paragraph explanation. No threshold defined → model exercises judgment on "complete." No severity classification → can't prioritize findings. Generates 800–1200 tokens for what should be 150.
Use this Spec completeness check — constrained JSON output
You are a spec completeness checker. Check the spec against P7 sufficiency thresholds for a [FEATURE_TYPE] feature. Output ONLY valid JSON. No explanation, no preamble. Schema: { "result": "PASS" | "CONDITIONAL" | "FAIL", "findings": [ { "section": "§X.X", "issue": "string", "severity": "blocking" | "advisory", "threshold_ref": "P7.X" } ], "missing_sections": ["§X.X"], "ungovernered_states": ["state_name"] } Max 10 findings. If PASS, findings is empty array. Stop after the JSON object.
Why this works: JSON output is 40–60% fewer tokens than prose. Severity classification routes findings automatically. Threshold reference makes findings actionable. Hard limit on findings prevents over-generation. Downstream agents parse JSON without transformation.
Chain-of-thought — use it only when reasoning IS the output
Task typeUse CoT?RationaleAlternative
Classification / rule checkNoOutput is a category, not a reasoning chain. CoT adds 3–10× tokens for no quality gain.Direct output with confidence score if needed
Structured data extractionNoExtraction is mechanical. CoT reasoning doesn't improve accuracy on well-defined schemas.Schema + examples are sufficient
Template fillingNoThe template is the reasoning structure. CoT is redundant.Template as the prompt structure
Design generation (Spec-First)OptionalRationale for constraint decisions is useful. Limit to 2–3 sentences per decision, not a full reasoning chain.Decision log format: decision → why → spec section
Architecture decision recordYesThe reasoning IS the output. The ADR is a reasoning artifact. CoT produces the content.N/A — reasoning required
LLM-as-judge evaluationYesRubric scoring requires explicit reasoning to be auditable and contestable.N/A — reasoning required for auditability
Cross-domain spec alignmentYesMulti-spec comparison needs explicit reasoning to produce actionable conflict descriptions.N/A — reasoning produces the finding detail
Prompt template standards

Ad-hoc prompts are the largest single source of correction-cycle waste. Every agent type must have a tested, standardized prompt template stored in the FDLC repo — not written from scratch per session. The starter prompts in the Activity matrix addendum are seeds for these templates; the design-prompt templates in that addendum already follow the six-section structure below. The template spec:

Required prompt template sections — all agents
1. ROLE: One sentence. "[Model] is a [agent type] agent for the Nintex FDLC." No elaborate persona setup. 2. CONTEXT BLOCK: [PLACEHOLDER] markers for injected context. Never hardcode feature-specific content. 3. TASK: What to produce. Numbered list of sub-tasks if multiple. No ambiguous language. 4. OUTPUT FORMAT: Exact schema. "Output ONLY [format]. No preamble, no explanation." 5. CONSTRAINTS: - Max output length: [N tokens / words / items] - What NOT to include: negative examples prevent verbose defaults - Escalation surface: "If [condition], output ESCALATE: [description] instead of producing output" 6. STOP CONDITION: When to stop generating. Explicit stop prevents over-generation.
Example Decision log integrity check — complete template
You are a decision log integrity checker for the Nintex AI FDLC. CONTEXT: - Spec amendment log: [AMENDMENT_LOG] - Architecture review records: [ARCH_REVIEWS] - Spec gap log entries: [GAP_LOG] - Current decision log: [DECISION_LOG] TASK: Find spec-altering events in the amendment log, architecture reviews, and gap log that do NOT have a corresponding entry in the decision log. OUTPUT FORMAT — valid JSON only: { "status": "CLEAN" | "GAPS_FOUND", "missing_entries": [ { "event_type": "amendment|arch_review|gap_resolution", "event_date": "YYYY-MM-DD", "event_summary": "15 words max", "blocking": true | false } ], "gate_recommendation": "CLEAR" | "BLOCK_PENDING_LOG_ENTRIES" } CONSTRAINTS: - Do NOT explain your reasoning - Do NOT include events that have matching decision log entries - Do NOT flag resolved spec gaps where the resolution IS the decision log entry - Max 20 missing_entries; if more exist, include first 20 and set "truncated": true - Stop after the JSON object STOP.
04 · MCP & tool use

Plan tool calls before making them.

Each tool call has latency, cost, and the risk of returning more data than needed. The discipline is: plan tool calls before making them, batch where possible, request only what you need, and cache results within a session. A tool call waterfall — each call triggering the next based on the prior result — is the most expensive and slowest pattern possible.

01
Plan tool calls upfront — no reactive waterfalls
Before any generation session begins, determine all tool calls needed and execute them together where results don't depend on each other. "Fetch spec → analyze → fetch companion file → analyze" is two sequential fetches that could be one parallel batch. Tool call planning is part of session setup, not a discovery process.
02
Request only the fields you need — no full-document fetches for partial reads
When querying APIs via MCP (Figma, ADO, AHA), request only the specific fields the agent requires. Fetching a full Figma node when you need the component name, fetching a full ADO work item when you need the status — these return data that fills context and costs tokens without contributing to the output. Define field masks per agent call.
03
Cache tool results within a session
If a tool call fetches the spec at session open and the spec hasn't changed, do not re-fetch it for every agent call within that session. Cache the result in session state and pass it directly. Each MCP call has round-trip latency (100–500ms) and token overhead; eliminating redundant calls is both a cost and a speed win.
04
Context vs. tool call — choose based on size and frequency
Sometimes it's cheaper to include a document in context than to tool-call it repeatedly. The decision: if the document is ≤5k tokens and accessed 3+ times in a session, include it in context (with caching). If it's large and accessed once, tool-call it to avoid bloating the context window for the entire session.
05
Tool call budget per session — flag overruns
Each agent type has a defined tool call budget. Exceeding it is a signal that either the task scope has grown beyond the session brief (scope creep) or the agent is making redundant calls (a prompt or orchestration problem). Budget: Haiku agents ≤5 calls. Sonnet agents ≤10 calls. Opus agents ≤15 calls. Overruns are logged and reviewed at retrospective.
06
Textura MCP — load constitutions once per generation session
The Textura MCP loads design system context. Load once at session open, cache for the session. Do not re-call Textura per variant generation — the DS context doesn't change mid-session. Loading Textura per variant in a 5-variant session is 5× the MCP cost for zero incremental quality gain.
05 · Anti-patterns

Cost failure modes.

These are the specific patterns that produce outsized cost waste in AI-enhanced product workflows. Most teams discover them the hard way. Each one has a structural fix — not a cultural ask.

FM-01 Model escalation by default 15–20× overrun per instance
Teams default to the highest-capability model because "it's better" — running DS compliance checks, PR descriptions, and gate checklist population through Sonnet or Opus. On a 50-feature rollout, running Haiku-appropriate tasks through Opus represents ~$X → ~$15X spend on those tasks alone, with identical output quality.
Fix: Model assignment is defined per agent type in the routing policy (Section 01). Deviation requires a logged override with rationale. The routing policy is enforced at prompt template authoring time — not at run time. Teams that don't author templates don't get to choose models ad-hoc.
FM-02 Context accumulation in generation sessions 3–8× session cost by unit N
Engineers and designers running generation sessions accumulate the entire session history in context. By Unit 5 of a session, input tokens include: constitution + companion file + spec + Unit 1 generation + Unit 1 review + Unit 2 generation + Unit 2 review... The input token cost grows non-linearly across the session while output quality may actually degrade from attention dilution.
Fix: Sliding window protocol (Section 02). Session template enforces it structurally — the context loading block has a fixed size ceiling. Earlier units are compressed to summaries and archived. The session brief template includes a "Context ceiling: [N tokens]" field that the tool enforces.
FM-03 Full constitution loading for rule-based checks 5–10× unnecessary context per check
Validation and compliance agents loading the full platform constitution and companion file when they only need specific sections. A DS token compliance check needs the DS token ruleset — not the interaction model principles, the generation guidelines, or the pattern library taxonomy. Loading 18k tokens when 2k are needed is a 9× input cost on the check, plus attention dilution that can reduce check accuracy.
Fix: Section-selective loading defined per agent type (Section 02 table). Each agent prompt template specifies exact spec sections and constitution sections to load. Templates are stored in the FDLC repo, not written at run time.
FM-04 Spec gap resolution by prompt injection 2–4× correction cycle waste
When a spec gap is discovered during generation, teams try to resolve it by adding instructions to the agent mid-session: "Also, assume the [missing state] should work like [description]." The agent generates output based on an unverified assumption. That output then goes through review, fails on the unverified assumption, and requires regeneration. Each correction cycle is a full generation run.
Fix: The spec gap protocol is non-negotiable: surface gap → log it → stop generation → resolve gap through trio → update spec → resume. This is the slower path in the moment and the cheaper path in total. The protocol is in the engineering workflow spec. Any deviation is a process gap that shows up in the spec gap log.
FM-05 Unstructured generation prompts 2–5× output token overrun
"Generate a component for the [feature] that handles [states]" produces verbose output: preamble, explanation of reasoning, the component, post-generation notes, caveats. The useful content is the component. The rest is token waste that downstream processes (code review, integration) must filter out manually. Without output format constraints, models generate to fill space.
Fix: All generation prompts specify output format, length ceiling, and stop condition (Section 03 template standard). "Output ONLY the component code. No explanation. Stop after the closing tag." applies to every code generation call. Prompt templates enforce this structurally.
FM-06 Chain-of-thought on classification tasks 3–10× output tokens for no quality gain
Asking "think step by step" or "explain your reasoning" on tasks that have a deterministic correct answer. A spec completeness check is either PASS/FAIL against known thresholds. Having the model explain its reasoning at length produces tokens that convey no incremental information and consume output token budget. This pattern is particularly common when teams copy prompting guides designed for reasoning tasks and apply them universally.
Fix: Chain-of-thought decision table (Section 03). Rule: CoT only when the reasoning is the deliverable. For all classification, extraction, and template-fill tasks, direct output with no reasoning preamble. The output format specification ("Output ONLY valid JSON") prevents CoT implicitly.
FM-07 Textura MCP called per variant instead of per session N× MCP cost per session (N = variant count)
Calling Textura MCP to load DS context for each variant generation in a session. In a 5-variant generation session, this produces 5× the MCP cost and 5× the context loading latency for identical DS context. The DS doesn't change between variant 1 and variant 5 — there is no reason to re-load it.
Fix: Session architecture enforces one Textura MCP load at session open. DS context is session-state, not per-call. This is encoded in the generation session template — Textura load is in the "Session Setup" section, not in the "Generate Variant N" loop.
FM-08 Output generation for features that don't need the full suite Unnecessary spend on unused artifacts
The output generation agent produces a full suite: QA test cases, engineering annotations, analytics plan, decision rationale. For an Enhancement feature (small scope, known pattern, no novel interaction), generating a full analytics plan and detailed engineering annotations may produce artifacts that Engineering reviews and discards. The generation cost is real; the value is not.
Fix: Output suite is tiered by feature type. Enhancement: QA test cases + decision rationale (required) · engineering annotations (conditional on Engineering Lead request) · analytics plan (abbreviated). New Capability and New Paradigm: full suite. Feature type is set at G1; output suite configuration is set at G2 in the spec template.
FM-09 Stale companion file used for generation Correction cycle from invalid generation output
Generation sessions run with a companion file that hasn't been updated since a DS token was deprecated, a component was versioned, or a constitution amendment was made. The generation output violates current DS rules. Validation catches it, but then the generation must be redone against a corrected context. The correction cycle cost is 100% avoidable if context currency was verified before session open.
Fix: Companion file staleness monitor (B1 from the agent landscape) handles this structurally post-rollout. During the pilot: context loading gate checklist includes explicit companion file currency check. "Companion file last updated [date]. Events since: [check staleness monitor flag]." Gate doesn't clear until this is confirmed current.
06 · Token budgets

Token budgets by feature tier.

During the pilot, token spend is logged at each gate but not constrained by hard limits — the goal is to establish an accurate cost baseline per tier. Post-pilot, per-feature token budgets are set based on pilot actuals + feature tier, governed through the AI FDLC Review. These budgets are alert thresholds that trigger trio review before the next phase begins, not hard stops. Cost visibility in real time is the goal; constrained data would undermine the baseline.

Full-feature cost estimate — Track A vs. Track B

Side-by-side estimates for a complete feature (G0 through post-ship). Track B figures assume Sonnet-primary routing with prompt caching active on stable context layers. Track A figures are based on GPT-4o primary routing. Prompt caching is available in VS Code Copilot (VS Code 1.118+) and is now a real cost lever on Track A — see the A2 section for caching guidance. Estimates below reflect a pre-caching baseline; actual Track A costs may be lower depending on session discipline and VS Code version. The gap narrows further with SpecKit.

Feature tierTrack B (with caching)Track A (baseline est.)Delta
Enhancement$0.62–$1.35$0.85–$2.60+37–93%
New Capability$1.30–$2.76$1.95–$5.85+50–112%
New Paradigm$2.36–$5.34$3.40–$10.60+44–99%
The Track A premium over Track B has narrowed. VS Code 1.118 (April 2026) introduced prompt caching for Copilot Chat, achieving 93%+ cache reuse in active sessions — default for Anthropic models, rolling out for OpenAI models. Track B caching remains more reliable at present due to persistent CLAUDE.md context and native Anthropic cache write support. The delta figures above reflect baseline estimates before VS Code 1.118; actual Track A costs with caching active will be lower. SpecKit narrows the gap further. Advancing from Track A to Track B remains the highest-value architectural lever.
Track B — token distribution by phase
Feature tierG0→G2Design (G2→G3)Engineering (G3→G4)Post-shipFull feature $Alert at
Enhancement20k–40k30k–60k40k–80k10k–20k$0.62–$1.3575% used
New Capability40k–80k80k–150k100k–200k20k–40k$1.30–$2.7675% used
New Paradigm60k–120k150k–300k150k–350k30k–60k$2.36–$5.3475% used
Pilot note: These are provisional ranges, not targets. Dollar totals assume Sonnet-primary routing with prompt caching active on stable context layers. The pilot's primary cost deliverable is establishing the actual distribution per tier. Ranges will be replaced with pilot actuals at the AI FDLC Review. During the pilot, actuals are logged at each gate; formal budget governance activates at rollout.
07 · Cost monitoring

Anomaly detection and efficiency ratios.

The existing AI cost log (token spend by phase, by role, by track) is the right foundation. The monitoring system builds on top of it: anomaly detection, efficiency ratios, and phase benchmarks that make cost signal actionable rather than archival.

Anomaly detection triggers
Anomaly patternThresholdWhat it signalsInvestigation path
Single agent session cost spike3× median for that agent typeContext accumulation, model escalation, or correction cycle loopReview session log: model used, context size at session open, number of correction cycles
Validation agent costs more than generation agentValidation > 50% of generation cost for same featureValidation agent over-loaded with context it doesn't need, or running on wrong model tierReview validation prompt: is it loading full constitution? Is it running on Sonnet/Opus?
G2→G3 phase cost exceeds budget p90>p90 for feature tierCorrection cycles from spec gaps, generation stops, or variant count scope creepCount generation attempts per variant; check spec gap log for gap count during generation
G3→G4 phase cost exceeds G2→G3Eng build > 2× design phase costSpec quality gap — engineering resolving ambiguity that should have been resolved at G2Review spec gap log volume; count post-G3 clarification overhead hours
Correction cycle rate > 2 per unitAvg correction cycles/unit > 2Prompt quality problem or spec insufficiency; unit brief not specific enoughReview unit of work brief quality; check if spec sections cited in brief are complete
Tool call count exceeds budgetSee Section 04 budgets by tierScope creep in session, redundant fetches, or waterfall tool call patternReview tool call log: identify redundant calls; check if session scope stayed within unit brief
Efficiency ratios — beyond raw spend

Raw token spend is a denominator without context. These ratios make spend meaningful — they're the signals that distinguish "we're spending more because we're building more" from "we have a workflow efficiency problem."

RatioFormulaHealthy ratioDegraded ratio signals
Cost per AC implementedTotal design phase spend ÷ ACs passing at G3Stable or decreasing as maturity improvesIncreasing → correction cycle rate rising; spec quality declining
Cost per variant deliveredG2→G3 generation spend ÷ variants delivered at G3Consistent with variant count target for feature typeRising → generation stop rate increasing; context quality declining
Useful output ratioOutput tokens in used artifacts ÷ total output tokens generated>70% — most generated output is in the deliverable<50% → verbose generation, correction cycles discarding output, over-generation
Check-to-gate cost ratioRule-based check spend ÷ total pre-gate spend<15% — checks are cheap relative to synthesis and generation>30% → checks running on wrong model; context over-loading on checks
Post-G3 clarification costG3→G4 spend attributable to clarification vs. generationTrending toward zero as spec maturity improvesStable or rising → spec quality not improving; handoff gap persisting
08 · Governance

Policy, override, and ownership.

Model Selection Policy

Default assignmentsSection 01 routing table
Override authorityEngineering Lead / Design Lead
Override requirementLogged with rationale
Review cadenceAt AI FDLC Review
Amendment authorityAI FDLC Review group only

Budget Authority

Budget assignmentSet at G1 by feature tier
Alert threshold75% of phase budget
Alert actionTrio review before next session
Overage authorityTrio lead sign-off
Overage loggingReason in decision log

Cost Data Ownership

Token spend loggingPM — at G2, G3, G4
Phase concentrationPM — cost log at each gate
Build anomaly flaggingEngineering Lead
Design anomaly flaggingDesign Lead
Cost-per-outcome calcJackson / Del Owner

Prompt Template Governance

Authoring authorityDS Lead · Engineering Lead
Template locationFDLC repo / prompt-templates/
Ad-hoc prompt usePermitted; template after 2 uses
Review cadenceMonthly — anomalies drive updates
DeprecationVersioned; archived not deleted
The override principle — same as spec amendments. Model overrides, context loading deviations, and prompt template bypasses are not blocked — they are logged. The same discipline that governs spec amendments governs cost decisions: the deviation is not the problem; the undocumented deviation is. Override patterns that recur across features become amendment candidates for the routing policy. The AI FDLC Review evaluates override patterns as signal for policy calibration, not as compliance failures.
Track A Addendum

GitHub Copilot & OpenAI Models.

This addendum translates each section of the base guide for Track A: GitHub Copilot as the primary AI tool, backed by OpenAI models (GPT-4o mini, GPT-4o, o1-mini, o1). Where the base guide's guidance applies without modification, that is stated explicitly. Where Track A's architecture changes the problem, Track A-specific guidance is provided.

Usage-based billingGitHub AI Credits; 1 credit = $0.01; every interaction costs Included credit poolBusiness $19/mo · Enterprise $39/mo; pooled across org No MCPTextura MCP unavailable; context packs replace it No persistent contextNo CLAUDE.md equivalent; every session starts cold
A0 · Track A cost model

Usage-based billing.

Billing model change — effective June 1, 2026
GitHub Copilot is replacing Premium Request Units (PRUs) with GitHub AI Credits. All Chat interactions, generation sessions, and agentic workflows now consume credits based on token usage. The flat-rate "unlimited Chat" model is gone. This addendum has been updated to reflect the new billing model. Any prior guidance referencing PRU budgets or "no marginal cost per interaction" for Chat is superseded by this section.
Plan seat prices unchanged Code completions still free 1 AI Credit = $0.01 USD No more fallback to cheaper model on exhaustion

The new model aligns Track A cost behavior much more closely with Track B than the old PRU system did. The base guide's core optimization principles — minimum sufficient model, context hygiene, output format discipline — now apply directly to Track A with direct dollar consequences rather than budget proxy consequences. The remaining differences are tooling architecture (no MCP, no CLAUDE.md, no persistent context) — not billing structure.

What's included (no credit consumption)
  • Inline code completions — remain fully included in all plans; not billed
  • Next Edit Suggestions — also remain included; not billed
  • Seat license base cost — Business $19/user/mo · Enterprise $39/user/mo (unchanged)
What now consumes AI Credits
  • All Copilot Chat interactions — every message thread; model + token count determines cost
  • Agent mode (@workspace) sessions — multi-step agentic runs are the highest-token workflows
  • Copilot code review — double-billed: AI Credits + GitHub Actions minutes
Included AI Credits by plan
PlanMonthly seat priceIncluded AI CreditsNotes
Copilot Business$19/user/mo$19 / 1,900 creditsPooled across org. Promo: $30 credits/user Jun–Aug 2026
Copilot Enterprise$39/user/mo$39 / 3,900 creditsPooled across org. Promo: $70 credits/user Jun–Aug 2026. Admin budget controls at enterprise/cost center/user level
Pooled credits — how this helps
  • For Business and Enterprise, all included credits are pooled across the organization rather than siloed per user.
  • A heavy-usage Engineering Lead running agentic sessions can draw more from the pool; a lighter-usage PM offsets the balance.
  • Eliminates the stranded capacity problem of the old per-user PRU model. Heavy FDLC workflow users no longer block on their individual monthly allotment.
Admin budget controls — governance surface
  • Admins can set spending budgets at enterprise, cost center, and user levels.
  • When the included pool is exhausted, orgs choose: allow additional usage at published rates, or cap spend.
  • The Del Owner and Engineering Ops should configure cost center budgets per FDLC domain team before rollout — the organizational equivalent of the per-feature token budget in Section 06.
Cost metric translation — base guide to Track A

With usage-based billing, the base guide's token metrics now apply more directly to Track A. The VS Code Copilot usage panel and GitHub Billing Overview provide credit consumption visibility per interaction. The primary remaining translation need is from Anthropic token pricing to GitHub AI Credit pricing — the optimization logic is identical.

Base guide metricTrack A equivalentWhere to find it
Token spend by phaseAI Credits consumed by phase (log at each gate)GitHub Billing Overview + VS Code Copilot usage panel
Cost anomaly (3× median)Credit spend 3× median for that session typeBilling Overview; flag in decision log same as Track B
Useful output ratioCredits spent on sessions producing committed output ÷ total creditsEstimated from session log + commit history
Check-to-gate cost ratioCredits on pre-gate check sessions ÷ total phase creditsLog check sessions separately in cost log
Model routing compliance% sessions using minimum-sufficient model tierVS Code model selection history; override log in decision log
No-fallback governance. Under the old PRU model, exhausting your monthly budget triggered a fallback to a cheaper model and the session continued. Under usage-based billing, exhausting included credits means usage is governed by admin budget controls — either capped or billed at overage rates. There is no silent quality degradation from model fallback. This means budget exhaustion is an operational event that requires administrator action, not a quiet background behavior. Engineering Leads must notify the Del Owner when credit consumption is on track to exhaust the pool before month-end.
Estimated full-feature cost by tier — Track A

Full-feature estimates (G0 through post-ship) based on GPT-4o primary routing. These figures are baseline estimates established before VS Code 1.118 introduced prompt caching for Copilot Chat (April 2026). With caching active, actual Track A costs should be lower; log actuals at each gate close to calibrate. Ranges reflect normal complexity variation within each tier; anomalies trigger review, not a hard stop.

Feature tierFull feature costAnomaly threshold
Enhancement$0.85–$2.60>$3.90
New Capability$1.95–$5.85>$8.78
New Paradigm$3.40–$10.60>$15.90
Pilot note: Track A costs are higher than Track B at equivalent tier due to the absence of prompt caching. Log actuals at each gate close via GitHub Billing Overview. Ranges will be calibrated against pilot actuals at the AI FDLC Review; formal budget governance activates at rollout.
A1 · Model routing

Track A translation.

The base guide's three tiers (Haiku → Sonnet → Opus) map directly to OpenAI's model tiers in Copilot. The routing logic is identical — minimum sufficient model for the task. Under usage-based billing, every Chat interaction now consumes AI Credits, so over-routing to a high-capability model for a rule-based check has a direct dollar cost rather than a PRU budget cost. The optimization principle is unchanged; the consequence is now directly visible in your Billing Overview.

GPT-4o mini Rule-based · Structural · Pattern matching · Classification Lowest AI Credit cost tier

Direct equivalent of Haiku. Use for all deterministic tasks. GPT-4o mini consumes the fewest AI Credits per interaction and runs the fastest. This is the correct model for every pre-gate check and structured extraction in the FDLC — using GPT-4o or higher for these tasks wastes credits with zero quality benefit.

TaskCopilot interfaceNotes
Spec completeness / P7 sufficiencyChatPaste spec sections + P7 threshold table; output JSON result
Decision log gap scanChatPaste amendment log + decision log; pattern match only
AC quality checkChatThree binary rules; no reasoning chain needed
DS compliance validationChatToken list check against companion file DS-rules block
Gate checklist pre-populationChatTemplate fill from spec sections; deterministic
PR description generationChatStructured template fill from unit brief
Cycle time extraction from git logChatStructured data extraction from git log --format output
Override to GPT-4o when: Input has genuine ambiguity the rule-checker needs to reason through. No premium requests consumed — GPT-4o is still in the included tier.
GPT-4o Synthesis · Code generation · Qualitative analysis Moderate AI Credit cost — standard workhorse tier

Direct equivalent of Sonnet. The default model for all substantive FDLC work on Track A — code generation, spec-adjacent synthesis, structured document production. GPT-4o handles the majority of what Sonnet handles in Track B at a moderate per-token credit cost. The GPT-4o default rule: if unsure whether a task needs o1-mini, start with GPT-4o. If the reasoning quality is materially insufficient (not "less complete" — actually insufficient), escalate and log the reason. Note: GPT-4.1 and GPT-5 mini are designated as included models in GitHub's pricing — check current GitHub docs for whether these have preferential credit rates.

TaskCopilot interfaceNotes
Engineering build (per unit of work)Chat or inlineSpec section + companion file + unit brief; single-unit per thread
Engineering spec draftChatG3-approved inputs → structured engineering spec
G3 review briefChatFeature folder synthesis; no novel judgment
Output suite — QA test casesChatAC list → structured test case format
Copy / content generationChatWithin brand + DS constraints
Research synthesis (bounded)ChatSingle corpus, clear task
Note on engineering build: Do NOT use o1 or o1-mini for code generation in the build phase. Reasoning models are not optimized for in-context code generation and produce less efficient output than GPT-4o for this task class.
o1-mini Structured reasoning · Multi-step analysis · Complex synthesis Higher AI Credit cost — reasoning tier

Use for tasks requiring genuine multi-step reasoning where the sequence of reasoning steps materially affects output quality. Not for tasks where GPT-4o produces sufficient output — GPT-4o is cheaper in AI Credit terms and equivalent in quality for bounded synthesis tasks. With usage-based billing, every unnecessary escalation to o1-mini now has a direct and visible credit cost.

TaskEst. requestsWhy o1-mini justified
Cross-domain spec alignment1–2Multi-spec conflict detection requires simultaneous reasoning across documents
AC implementability (complex features)1Non-trivial service dependency chain; GPT-4o misses edge cases
Spec gap analysis (New Paradigm)1–2Novel constraint space; gap identification requires reasoning chain
LLM-as-judge Tier B evaluation1 per evalRubric scoring requires explicit, auditable reasoning chain
Architecture decision record draft1–2High-stakes; tradeoff reasoning is the output
Budget guardrail: If a team consumes >50% of their monthly premium requests by week 2, review the prior week's session logs. The most common cause is o1/o1-mini used for tasks that belong on GPT-4o.
o1 Complex architectural judgment · High-stakes evaluation · Novel paradigm generation Highest AI Credit cost — reserved use only

Direct equivalent of Opus. Use only when the task requires highest-quality reasoning and the output consequence is high-stakes. With usage-based billing, o1 sessions are the most expensive interactions in the workflow and should be explicitly justified before each use.

TaskEst. requestsWhy o1 justified
New Paradigm design generation (if Design in Copilot)2–4Novel constraint space; design quality ceiling matters; Spec-First generation does NOT qualify
LLM-as-judge Tier C evaluation1 per evalHighest rubric tier; design quality judgment requires most capable model
Dependency risk with conflicting signals1–2Multiple competing architectural concerns; o1-mini gives insufficient resolution
Override rule: Use o1 only when you can state specifically why GPT-4o or o1-mini produced insufficient output for this task. That reason must be logged in the decision log. Recurring o1 use for a task type that doesn't require it = FM-A01. With usage-based billing, o1 override patterns are now visible in the Billing Overview — review them at the monthly cost governance check.
AI Credit spend distribution by FDLC phase

Credit spend per phase depends on model selection and context size. The optimization goal is keeping high-token operations on the lowest-sufficient model tier and keeping context lean. The phase distribution below reflects expected credit concentration — not hard budgets. Calibrate against actual Billing Overview data after the first pilot features ship.

PhasePrimary modelCredit concentrationOptimization lever
G0→G2 Spec authoringGPT-4o mini for checksLowKeep all pre-gate checks on GPT-4o mini
G2→G3 Design generationGPT-4o; o1-mini for LLM-as-judgeMediumSliding window / thread-per-unit; cache context blocks
G3→G4 Engineering buildGPT-4o primaryMedium–HighThread-per-unit discipline is the highest-value lever here
Post-ship / governanceGPT-4o; o1-mini for ADR/judgeLowReserve o1-mini for ADR; synthesis on GPT-4o
A2 · Context architecture

Track A translation.

The shift from seat-based to usage-based billing changes the context optimization problem. Previously, context loading overhead was measured in engineer time (minutes spent pasting), not credits. Under usage-based billing, large context windows now also have a direct credit cost — loading the full companion file into every rule-based check session wastes both engineer time and AI Credits. The four-layer architecture and selective loading principles now apply for dual reasons: efficiency and cost. Additionally, prompt caching is now a meaningful cost optimization on Track A — cached tokens consume credits at reduced rates, making the base guide's caching guidance directly applicable here.
Session boundary management — the primary mechanism

Track B implements a sliding window within a long session. Track A's equivalent is thread management: start a new Copilot Chat thread for each unit of work. Do not attempt to continue a multi-unit session in a single thread. The thread accumulation pattern is FM-A02 — the highest-leverage failure mode on Track A.

Thread accumulation (avoid)
  • Unit 1 generation + review → remains in thread context
  • Unit 2 generation + review → appended to same thread
  • Unit 3 generation → model attends to Unit 1 + 2 history
  • Context quality degrades; correction cycle rate rises by Unit 4+
One thread per unit (use this)
  • Unit 1 → complete → close thread
  • Unit 2 → new thread → reload context block (~2 min setup)
  • Unit 3 → new thread → reload context block
  • Cost stays flat per unit; correction cycles stay low throughout
Context loading protocol — #file: references over paste

Use Copilot Chat's #file:path references instead of copy-paste wherever possible. They make context loading reproducible, reduce error, and produce an auditable input. Maintain section-level excerpts in the FDLC repo for the most commonly-needed context blocks:

FDLC repo structure — Track A context blocks
context-blocks/ platform-constitution-ds-rules.md ← DS token/component rules; used for compliance checks platform-constitution-ac-standards.md ← P7 thresholds; used for spec sufficiency checks platform-constitution-arch-triggers.md ← Architecture engagement conditions prompt-templates/ track-a/ session-setup/ ← VS Code snippets for session init per agent type tasks/ ← Task prompts following the base guide template standard copilot-instructions.md ← Source for .github/copilot-instructions.md
Agent categoryWhat to load in Copilot ChatMethod
Rule-based checks (GPT-4o mini)Relevant context-blocks/ excerpt + spec section only#file: reference
Design generation (GPT-4o)Companion file + spec.md + unit brief#file: for companion + spec; brief in message
Engineering build (GPT-4o)Engineering companion + spec §2.3/2.4/2.5 + unit brief#file: + @workspace for codebase tasks
Post-ship analysis (GPT-4o)Job statement (§1.2) + analytics plan (§5.x) only#file: or section paste
Synthesis / research (GPT-4o)Signal brief only — no constitution or companion file neededDirect paste or #file:
Prompt caching — now a real cost lever on Track A

Under usage-based billing, cached tokens are billed at reduced credit rates — sources indicate 80–90% reduction for cached content. This makes caching discipline directly valuable, not just a Track B advantage. The key: structure every session so stable content (constitution block, companion file section) comes first — always in the same position and format — to maximize cache hit probability.

What improves caching
  • Using #file: references consistently — stable token sequences enable cache hits; manual paste with slight variations prevents them
  • Placing stable context blocks (constitution, companion file) before variable content (spec sections, unit brief) — same structure every session
  • Keeping the copilot-instructions.md content consistent — it appears at the start of every interaction and is the highest-value caching target
What breaks caching
  • Reordering context blocks between sessions — cache requires consistent prefix structure
  • Adding inline commentary or modifications to context block content — any change to cached content invalidates the hit
  • Starting sessions with feature-specific content (the variable part) before the stable constitution section (the cacheable part)
Practical rule: VS Code session setup snippets enforce consistent structure automatically — another reason to use them rather than reconstructing context by hand each session. The snippet guarantees stable prefix ordering on every run.
MCP is not available on Track A

The base guide's Section 04 (MCP & Tool Use Discipline) does not apply to Track A. GitHub Copilot does not support MCP server integration. Textura MCP, Figma MCP, and all other MCP tools are Track B-only. The compensation pattern is context pack injection:

Track A generation prompt — DS context compensation (replaces Textura MCP)
Use Textura components for this screen. [PASTE: admin-experience context pack constraints section] States required: [PASTE: state list from spec §2.4] For any component you use, verify props against: [PASTE: relevant component prop definitions from companion file] OUTPUT FORMAT: [schema] STOP after the last component.

Maintain these as named text blocks in prompt-templates/track-a/context-blocks/ so engineers reference rather than reconstruct them. The per-session overhead of context pack injection is the Track A cost of not having MCP — it is a permanent operating cost, not a discipline gap.

Persistent context via .github/copilot-instructions.md

GitHub Copilot supports a .github/copilot-instructions.md file at the repo root that provides lightweight persistent context — the closest Track A equivalent to CLAUDE.md. It does not enforce rules the way CLAUDE.md does, but it reduces cold-start overhead for naming conventions, the most critical constitution rules, and the engineering companion file summary.

Put in copilot-instructions.md
  • DS component naming conventions and import patterns
  • The 3–5 most critical constitution rules (the ones that cause generation failures when missed)
  • Engineering companion file summary — service contracts, test patterns
  • Spec file path and decision log file path
  • Explicit "never" rules (e.g., never import from a deprecated package)
Do NOT put in copilot-instructions.md
  • Full constitution — too large; degrades model attention
  • Full companion file — same issue
  • Task-specific prompts — these belong in session setup snippets
  • Anything that changes per-feature — this file should change rarely

The canonical source is prompt-templates/track-a/copilot-instructions.md in the FDLC repo. Feature repos copy from this source. When the constitution is amended, update this file in the same sprint as the companion file update.

A3 · Prompt & interface

Track A specifics.

The base guide's prompt engineering discipline applies without modification to Track A. Output format constraints, CoT rules, and the template standard are model-agnostic. This section covers only the Track A interface specifics that change how those principles are implemented.

Interface selection — different optimization problems
InterfaceFDLC useCost noteWhen to use
Inline suggestions (autocomplete)IDE productivity — not the workflow generation mechanismZero session setup; included in seat; no premium requestsAlways on; no discipline required for this mode
Copilot ChatPrimary interface for all structured FDLC tasksGPT-4o/mini included; premium models consume request budgetAll pre-gate checks, generation, spec authoring, output suite
Copilot agent mode (@workspace)Codebase-aware engineering build tasksMore premium requests than standard Chat — treat as expensive modeOnly when model needs to read existing code to produce output; not for checks or non-code tasks
Slash commands (/tests, /fix, /doc)Narrow point tasks only; not substitutes for structured templatesIncluded in seat/tests for simple unit stubs; /fix for point compilation errors; never for structured FDLC tasks
JSON output format — Copilot-specific addition

Copilot Chat's markdown rendering wraps JSON in code fences by default, requiring additional parsing. Prevent this explicitly:

AvoidAmbiguous JSON instruction
Output ONLY valid JSON.
Copilot wraps in ```json ... ``` code fences — requires manual stripping before the output can be parsed downstream.
Use thisFence-preventing instruction
Output ONLY valid JSON. No explanation, no preamble, no markdown code fences. Start your response with { and end with }.
Explicit start/end characters prevent fence wrapping. Output is immediately parseable.
VS Code session setup snippet — the system prompt equivalent

Track B's CLAUDE.md pre-loads context at project open. Track A's equivalent is a VS Code snippet for the session setup message — engineers type the shortcut and the snippet inserts the full context loading block. Store snippets in the FDLC repo, versioned alongside the prompt templates.

Example — Engineering build session setup snippet
You are an engineering implementation agent for the Nintex AI FDLC. Track A. CONTEXT: - Engineering companion: #file:engineering-companion.md - Spec (§2.3 data shape, §2.4 states, §2.5 service hooks): #file:spec.md - Unit of work brief: [PASTE_UNIT_BRIEF] TASK: Implement the unit of work described in the brief. Follow the engineering companion file conventions and constitution rules exactly. OUTPUT: Code only. No explanation. No markdown fences around code blocks. STOP after the final closing bracket of the last function.
Start every structured task with context first — no casual mixing. Do not mix casual queries with structured generation in the same Copilot Chat thread. Casual exchanges ("what does this function do?") before a structured generation task pollute the thread context and degrade model behavior on the structured task. Context-free questions go in a separate thread or use inline suggestions.
A4 · Track A failure modes

Track A-specific manifestations.

All nine failure modes from Section 05 of the base guide apply to Track A. Four have Track A-specific manifestations that are worth calling out explicitly. The base guide failure mode numbers are preserved for cross-reference.

FM-A01 Model escalation by default — now with direct dollar cost Direct AI Credit overrun per session
Under usage-based billing, FM-A01 is now identical in consequence to FM-01 in the base guide. Teams that use o1-mini or o1 for DS compliance checks, gate checklist fills, and PR descriptions are consuming AI Credits at 3–10× the rate of the minimum-sufficient model for zero quality gain. Under the old PRU model this burned a monthly request budget; under usage-based billing it shows up directly in the org's Billing Overview and can exhaust the pooled credit allotment before month-end, triggering overage billing or hard caps.
Fix: The model routing table in Section A1 defines which tasks use GPT-4o mini, GPT-4o, and higher tiers. Model selection is enforced at the VS Code session setup snippet level — the snippet specifies the model. Escalations require a decision log entry with rationale. Engineering Lead reviews Billing Overview weekly; anomalous credit concentration on pre-gate check sessions = FM-A01 in progress.
FM-A02 Thread accumulation instead of thread management 3–5× correction cycle rate by Unit 4+
Engineers continue a multi-unit engineering build in a single Copilot Chat thread. By Unit 4, the thread contains the full history of earlier units, reviews, and corrections. The model attends to all of this history when generating Unit 4, and produces output that drifts from the spec because the spec section is buried under prior session content. Correction cycles per unit increase non-linearly as the thread grows. This is the Track A equivalent of FM-02 (context accumulation) — and it is more severe on Track A because there is no session-level compression mechanism.
Fix: One thread per unit of work (Section A2). The ~2-minute context reload overhead per unit is the cost of not paying the correction cycle tax. This rule is structural — it is enforced in the session setup snippet, which opens with "NEW THREAD" as the first instruction.
FM-A03 Full companion file paste for rule-based checks 5–10× context overhead + attention dilution
Engineers paste the full engineering companion file (all seven sections, ~8–12k tokens of text) into a Copilot Chat thread for a DS token compliance check that needs only the DS token namespace section (~600 tokens). The model receives context it can't use for the task. Attention dilution can reduce check accuracy — DS token violations are missed when the model is surrounded by service contract definitions and entity models it doesn't need. Engineer time spent on the paste is also non-trivial. This is the Track A equivalent of FM-03 (full constitution loading for rule-based checks).
Fix: Context block excerpts per task type (Section A2). The DS compliance check context block is stored as context-blocks/platform-constitution-ds-rules.md — a 600-token file with exactly what the check needs. Reference it with #file: rather than pasting the full companion file.
FM-A04 Agent mode for tasks that don't need codebase access 2–3× premium request consumption + higher latency
Engineers use @workspace (Copilot agent mode) for all generation tasks because it "knows the codebase." Agent mode sessions consume more premium requests and have higher latency than standard Chat. Many FDLC generation tasks — PR description, gate checklist, decision log integrity check, spec completeness — don't need codebase access at all. Using @workspace for them wastes premium request budget and slows the workflow with no quality benefit. This is a Track A-specific failure mode with no direct Track B equivalent.
Fix: Use @workspace only when the task requires reading existing code to produce the output. Clear qualifying cases: implementing a unit that must integrate with existing components, writing tests for existing functions, reviewing code against the spec. Clear non-qualifying cases: generating a PR description from a unit brief, checking spec completeness, drafting a pattern candidate submission.
A5 · Budgets & governance

Track A operational specifics.

The base guide's governance model applies with the following Track A modifications. Where a section maps directly, this is noted. Where Track A requires different operational specifics, they are defined below.

Model Selection Policy — Track A

Default (standard tasks)GPT-4o — moderate credit cost
Default (rule-based checks)GPT-4o mini — lowest credit cost
Higher-tier use (o1-mini / o1)Logged rationale required
Override log locationDecision log — same as Track B
Amendment authorityAI FDLC Review group only

AI Credit Budget Authority

Org credit pool ownerDel Owner + Engineering Ops
Cost center budgetsPer domain team in GitHub admin
Alert threshold75% pool consumed before month-end
Exhaustion actionDel Owner decides: overage or cap
Overage loggingDecision log entry required

Track A Feature Credit Targets (provisional)

EnhancementLow — primarily GPT-4o mini
New CapabilityMedium — GPT-4o build dominates
New ParadigmHigh — o1-mini/o1 for judgment
Baseline sourceBilling Overview, first pilot features
NoteReplace with actuals at AI FDLC Review

Prompt Template Governance — Track A

Template locationprompt-templates/track-a/
Context blocks locationtrack-a/context-blocks/
Instructions sourcetrack-a/copilot-instructions.md
Update triggerConstitution amendment → same sprint
Authoring authorityEngineering Lead · Design Lead
Track A cost log at the AI FDLC Review. Track A and Track B cost data are never directly compared as if they measure the same thing. At the AI FDLC Review, Track A data is evaluated against Track A baselines; Track B against Track B. The cross-track comparison question is: what specific capability gaps on Track A are causing Track B advancement to be worth the tooling investment? That question is answered by correction cycle rate, session restart frequency, and post-G3 clarification overhead — not by token or premium request counts.
A6 · Ceiling transparency

Where Track A reaches its architectural limit.

The base guide is written for a system that can execute the full FDLC workflow at production quality. Track A operates within known constraints that no amount of prompt discipline fully overcomes. These are architectural, not behavioral. Engineering Leads on Track A should know exactly where the ceiling is — both to calibrate expectations and to build the case for Track B advancement when the ceiling is being hit.
Architectural ceiling — not fixable with discipline
  • Multi-unit agentic sessions. Track B holds constitutional context across a full session via CLAUDE.md. Track A requires thread-per-unit management. For features with 4+ interdependent units, manual overhead accumulates and constitutional drift becomes a quality risk regardless of context loading discipline.
  • Constitution enforcement depth. Track B enforces the engineering companion file at every generation step without engineer overhead. Track A relies on the engineer loading the relevant section at each session open. Rushed sessions produce constitutional gaps that pass undetected until two-step review catches them.
  • No MCP-based DS enforcement. Track B's validate_output (Textura MCP Phase 2) provides programmatic DS compliance checking at generation time. Track A's DS compliance check is prompt-based and depends on model interpretation of the rules. Meaningful but not mechanically equivalent.
  • Higher context loading overhead. Track B loads the full constitution and companion file via CLAUDE.md at project open with persistent session state. Track A requires per-session context loading via file references or snippets. Caching now reduces the credit cost of repeated context (see Section A2), but the engineer overhead of session setup remains higher than Track B's zero-overhead persistent context.
What Track A discipline still delivers
  • Spec-First quality at Enhancement and New Capability tier. For single-unit and small multi-unit features, Track A with discipline produces generation output that passes G3 at comparable quality to Track B.
  • Pre-gate checks at low overhead. GPT-4o mini for rule-based checks runs fast, costs no premium requests, and catches the most common pre-gate errors. This is Track A's strongest surface area relative to Track B.
  • Measurable cycle time improvement. Even within the ceiling, disciplined Track A teams show meaningful improvement in post-G3 clarification overhead and G4 first-attempt CI pass rate compared to pre-workflow adoption.
  • Foundation for Track B advancement. Teams running disciplined Track A generate the close-out records, cost logs, and correction cycle data that make the Track B advancement case at the AI FDLC Review. The discipline is not wasted — it is the measurement infrastructure for the next step.
Track A viability and Track B advancement signal
FDLC phaseTrack A viabilityTrack B gapTrack B advancement signal
Pre-gate checks (all phases)Fully viableMinimal — prompt-based checks are equivalentNot a driver for Track B advancement
Spec authoring (G1→G2)Fully viableLow — agent assists work well in ChatNot a driver
Design generation (G2→G3), single unitViable with disciplineModerate — no MCP DS enforcement; context pack requiredGeneration stop rate >1/session consistently
Engineering build, 1–3 interdependent unitsViable with thread managementModerate — CLAUDE.md persistence would reduce setup overheadSession restart rate >2/unit; constitutional drift caught in review
Engineering build, 4+ interdependent unitsViable but overhead-heavyHigh — manual context reload per unit compounds; drift risk risesPost-G3 clarification overhead not improving; correction cycles rising with unit count
Multi-unit agentic sessionsNot recommendedSevere — constitutional context drift is structural, not discipline-fixableTeam attempting agentic sessions on Track A = immediate Track B case