Files
rdb-discovery/context/gap-analysis-model.md
T

19 KiB

Discovery Gap Analysis Model

This document defines how missing or weak project context should be detected and converted into targeted follow-up discovery questions.

It is a planning artifact for TASK-026 implementation. No code has been implemented.


Overview

When rdb generate populates context files from discovery answers, some sections will remain empty or contain only placeholders because:

  • No discovery question addressed them
  • The answer had Low confidence (filtered out)
  • The mapping did not route data to that section
  • The section does not exist in the template

Gap analysis detects these cases and generates targeted follow-up questions instead of leaving them as TBD.


1. Gap Detection Rules

A gap exists when one or more of the following conditions hold:

Rule ID Condition Example
GAP-01 A context file section contains only a TBD or TDB placeholder ## Mission\n\nTBD — What is the organisation's core mission?
GAP-02 A context file section exists in the template but no discovery answer mapped to it ## Monitoring & Alerting has no mapped source from any Q-id
GAP-03 A section contains partial content with unresolved sub-items (e.g., blank list entries, empty brackets) Section has text but a required sub-list item is missing
GAP-04 An entire context file exists but has fewer than 50 characters of non-whitespace content beyond the heading File is effectively empty

Detection operates per section within each context file, not at the file level. A file with partial data may have gaps in some sections and none in others.


2. Gap Severity Levels

Severity Label Criteria Action Required
S1 Critical The gap is in a section required for the current BUILDING stage. Blocking on this gap would stop all downstream work. Must be resolved before moving to REVIEW_READY
S2 Important The gap is in a section that will affect future implementation decisions but does not block immediate work. Resolve within 1 BUILDING cycle (next discovery round)
S3 Low The gap adds useful detail but is not needed for any active or planned task. Can be deferred to REVIEW_READY or later

Severity assignment logic:

  • A gap is S1 if its section appears in the current stage's expected files and any open TASK references that section
  • A gap is S2 if its section is referenced by a mapped discovery question (Q-001 to Q-014) but no High/Medium confidence answer was produced
  • A gap is S3 if the section exists in templates.py, has no mapped discovery question, and does not appear in any active task

3. Question Generation Rules

Follow-up questions are generated according to these rules:

Rule Guidance Example
QG-01 One gap maps to exactly one follow-up question — do not bundle multiple gaps into a single question Separate ## Mission and ## Customers / Users even if both are in company-context.md
QG-02 Questions must be answerable with the original discovery format (text answer + confidence) Ask for specific facts, not open-ended essays
QG-03 The question text should reference the target section so the responder understands context "What is the team's core mission statement?" rather than "Tell us about your company"
QG-04 If a gap maps to a table format section, specify the table columns needed For risks.md: "What security risk affects data retention? Provide impact and mitigation."
QG-05 Do not generate questions for sections already filled with non-TBD content Skip ## Mission if it reads "We build developer tools"
QG-06 Prefer questions that can be answered by the project owner or a technical lead, not external experts "Which cloud provider hosts production?" rather than "Describe your AWS architecture" unless already established

4. Question Prioritisation Rules

Follow-up questions are prioritised using this ordered scheme:

  1. Severity first — All S1 gaps before all S2 gaps; all S2 before all S3
  2. File completeness within severity — Files with more gaps are addressed earlier (reduce file-level churn)
  3. Dependency order — If answering gap A enables answers to gap B, place A first
  4. Question scope — Within equal priority, shorter/closer-to-answer questions come first

For example: ## Mission (S1, company-context.md) and ## Hosting (S1, infrastructure-context.md) are both S1; company-context.md goes first because it has 3 unresolved gaps versus infrastructure-context.md's 2.


5. Gap-to-Question Mapping

This mapping covers every template section that can contain TBD placeholders. For each section it defines: the gap trigger, the follow-up question to ask, and the target discovery question ID for the follow-up entry.

context/company-context.md

Section Trigger Follow-up Question Discovery Q-ID
## Mission Contains only TBD/placeholder text "What is the organisation's core mission or purpose?" New (Q-015-style)
## Products & Services Contains only TBD/placeholder text "List the products or services the organisation offers. What does each one do?" New
## Customers / Users Contains only TBD/placeholder text "Who are the primary customers or users of your products? Use bullet points for each distinct user type." New
## Brand & Positioning Contains only TBD/placeholder text "How does the organisation position itself in the market?" New
## Key Stakeholders Contains only TBD/placeholder text "Who are the key stakeholders (names, roles, contact) for this project?" New

context/product-brief.md

Section Trigger Follow-up Question Discovery Q-ID
## Problem Contains only TBD/placeholder text "What problem is this product solving? Describe the customer pain and desired outcome." Mirrors Q-001
## Users Contains only TBD/placeholder text "Who are the users of this product? List personas, roles, or segments." Mirrors Q-002
## Success Criteria Contains only TBD/placeholder text "How will you measure success for this product? Be specific and verifiable." Mirrors Q-003
## Minimum Useful Version Contains only TBD/placeholder text "What is the minimum set of features that delivers real value to users?" Mirrors Q-004

context/project-brief.md

Section Trigger Follow-up Question Discovery Q-ID
## Problem Statement Contains only TBD/placeholder text "Restate the product problem in project-specific terms. Include scope boundaries." Mirrors Q-001
## Target Audience Contains only TBD/placeholder text "Who is the intended audience for this project? Who benefits from the final product?" Mirrors Q-011
## Key Features (MVP) Contains only TBD/placeholder text "List the minimum set of features for the first release. Each feature should be independently valuable." Mirrors Q-004
## Success Metrics Contains only TBD/placeholder text "How will you measure success for this project? Include specific thresholds or targets." Mirrors Q-003
## Timeline & Milestones Contains only TBD/placeholder text "What are the expected delivery dates and key milestones?" New (Q-015-style)

context/architecture.md

Section Trigger Follow-up Question Discovery Q-ID
## Overview Contains only TBD/placeholder text "Describe the high-level system architecture. What design principles or patterns apply?" Mirrors Q-012
## Core Components Contains only TBD/placeholder text "List the main modules, services, or packages and their responsibilities." Mirrors Q-012
## Data Flow Contains only TBD/placeholder text "How does data move through the system? Describe entities, storage, and movement between components." Mirrors Q-005
## External Integrations Contains only TBD/placeholder text "What external systems, APIs, or services must this connect to?" Mirrors Q-006
## Deployment Architecture Contains only TBD/placeholder text "Describe the deployment layout, scaling strategy, and process." Mirrors Q-010

context/decisions.md

Section Trigger Follow-up Question Discovery Q-ID
Table body (no rows) Has 0 data rows in the decision table "What architecture or design decisions have been made? Record each with reason and date." New

context/risks.md

Section Trigger Follow-up Question Discovery Q-ID
Table body (no rows) Has 0 data rows in the risks table "What are the project risks? For each, describe impact and mitigation strategy." Mirrors Q-007

context/assumptions.md

Section Trigger Follow-up Question Discovery Q-ID
Table body (no rows) Has 0 data rows in the assumptions table "What are you assuming about this project? For each, note confidence and whether validation is needed." Mirrors Q-008

context/development-context.md

Section Trigger Follow-up Question Discovery Q-ID
## Tech Stack Contains only TBD/placeholder text "What is the technology stack? List languages, frameworks, libraries, and tooling." Mirrors Q-012
## Coding Standards Contains only TBD/placeholder text "Are there agreed coding standards? Describe style conventions, naming patterns, linters, and formatters." New
## Repository Structure Contains only TBD/placeholder text "Describe the repository directory layout and module organisation." Mirrors Q-012
## Build & Test Contains only TBD/placeholder text "How do you build, test, and run this codebase locally? Include commands and setup steps." Mirrors Q-009
## Dependencies Contains only TBD/placeholder text "What external services, databases, or third-party APIs are required?" Mirrors Q-006

context/infrastructure-context.md

Section Trigger Follow-up Question Discovery Q-ID
## Hosting Contains only TBD/placeholder text "Where is the application hosted? Specify cloud provider, on-prem details, or container orchestration." Mirrors Q-013
## Environments Contains only TBD/placeholder text "What environments exist (dev/staging/prod)? Describe each and data management approach." Mirrors Q-013
## CI / CD Pipeline Contains only TBD/placeholder text "Describe the build, test, and deployment pipeline configuration." Mirrors Q-013
## Monitoring & Alerting Contains only TBD/placeholder text "What tools are used for monitoring, logging, and alerting?" Mirrors Q-013
## Security Contains only TBD/placeholder text "What authentication models, data protection requirements, compliance needs, and access control policies apply?" Mirrors Q-013

context/agent-guidelines.md

Section Trigger Follow-up Question Discovery Q-ID
## Purpose Contains only TBD/placeholder text "What should agents or developers know about working on this project? Note constraints and conventions." Mirrors Q-014
## Preferred Tools Contains only TBD/placeholder text "Which editors, debuggers, testing frameworks, and CLI tools are recommended?" Mirrors Q-014
## Testing Preferences Contains only TBD/placeholder text "How should tests be written, run, and verified for this project?" Mirrors Q-009
## Common Tasks Contains only TBD/placeholder text "What are the typical workflows for developers or AI agents on this project?" New
## Known Gotchas Contains only TBD/placeholder text "Are there known pitfalls, quirks, or important caveats to be aware of?" New

context/repository-context.md

Section Trigger Follow-up Question Discovery Q-ID
## Purpose Contains only TBD/placeholder text "What is this repository's overall purpose and scope? What is it responsible for (and not responsible for)?" Mirrors Q-014
## Key Components Contains only TBD/placeholder text "List the key components or modules in this repository." Mirrors Q-012
## Dependencies Contains only TBD/placeholder text "What project dependencies exist? List external services, databases, and third-party APIs." Mirrors Q-006
## Contributing Contains only TBD/placeholder text "Describe the contribution process: branch strategy, code review requirements, testing expectations." Mirrors Q-014

context/open-questions.md

Section Trigger Follow-up Question Discovery Q-ID
Table body (no rows) Has 0 data rows "Are there any open questions that need further investigation before implementation begins?" New

project-level files (PROJECT_STATE.md, AGENT_HANDOFF.md, TASKS.md, TEST_PLAN.md, RUN_LOG.md)

These files are managed by CLI commands, not by discovery answers. They are not subject to gap analysis. Gaps in these files are handled by command logic, not by question generation.


6. Example Gap-to-Question Flow

Here is an end-to-end example of how the model operates:

Step 1 — Gap Detection

rdb context-status or a dedicated gap analysis scan finds:

File Section Gap Rule Severity
context/company-context.md ## Mission GAP-01 (TBD placeholder) S1
context/company-context.md ## Key Stakeholders GAP-01 (TBD placeholder) S2
context/infrastructure-context.md ## Hosting GAP-01 (TBD placeholder) S1
context/infrastructure-context.md ## Monitoring & Alerting GAP-01 (TBD placeholder) S2
context/development-context.md ## Coding Standards GAP-01 (TBD placeholder) S3

Step 2 — Prioritisation

Sorted by severity, then file completeness:

  1. S1 — company-context.md / ## Mission (company has 5 gaps vs infra's 4)
  2. S1 — infrastructure-context.md / ## Hosting
  3. S2 — company-context.md / ## Key Stakeholders
  4. S2 — infrastructure-context.md / ## Monitoring & Alerting
  5. S3 — development-context.md / ## Coding Standards

Step 3 — Question Generation

Follow-up questions appended to context/discovery-log.md:

New ID Follow-up Question Source Gap Confidence Expected
Q-015 "What is the organisation's core mission or purpose?" company-context.md ## Mission High
Q-016 "Where is the application hosted? Specify cloud provider, on-prem details, or container orchestration." infrastructure-context.md ## Hosting High
Q-017 "Who are the key stakeholders (names, roles, contact) for this project?" company-context.md ## Key Stakeholders Medium
Q-018 "What tools are used for monitoring, logging, and alerting?" infrastructure-context.md ## Monitoring & Alerting Medium
Q-019 "Are there agreed coding standards? Describe style conventions, naming patterns, linters, and formatters." development-context.md ## Coding Standards Low

Step 4 — Regeneration

After answers to Q-015 through Q-019 are collected:

  • Run rdb generate (or re-run gap analysis)
  • Sections populated from new answers should resolve the S1 and S2 gaps
  • Remaining gaps re-prioritise for the next cycle

7. Edge Cases

Case Handling
Section contains partial text + TBD sub-items Only generate a question for the missing sub-item, not the entire section
Section text reads "TBD" but it is actually correct (intentional placeholder) Provide a skip/confirm mechanism — let the user mark as "acceptable" to suppress the gap
Template adds new sections in future versions Sections with no mapping entry default to S3 severity with a generic question: "What information belongs in this section?"
A section maps to multiple discovery questions Generate separate follow-ups per unmapped question, each linked to its source Q-id
File has fewer than 50 characters (GAP-04) but the heading is meaningful Count content beyond the heading line only

8. Implementation Task: TASK-026

Scope for TASK-026 (Implementation)

TASK-026 will implement a CLI command rdb gap that:

  1. Reads all 18 template-based context files listed in templates.py CONTEXT_FILES
  2. For each file, scans every section for GAP-01 (TBD), GAP-03 (partial content), or GAP-04 (near-empty file)
  3. For each gap found, applies severity rules from Section 2
  4. Generates follow-up questions using the mapping in Section 5
  5. Prioritises questions per Section 4
  6. Outputs the prioritised question list to stdout
  7. Optionally appends answers to context/discovery-log.md when a user provides them interactively

What TASK-026 Does NOT Do

  • Does not auto-populate context files — that remains rdb generate's scope
  • Does not replace rdb discover — follow-up questions are new entries in discovery-log.md
  • Does not change the existing gap analysis model document

Expected Module Structure (TASK-026)

src/rdb_discovery/gap_analysis.py       # Core detection and question generation logic
tests/test_gap_analysis.py              # Unit tests for each section mapping

Expected Test Requirements (TASK-026)

Test Category Count Description
Gap detection per template section ~25 One per section in the mapping table
Severity classification 3+ S1, S2, S3 on representative inputs
Question generation format 5+ Follow-up questions match QG-01 through QG-06 rules
Prioritisation ordering 3+ Sorted output matches severity → completeness → dependency → scope
Edge cases (Section 6) 5+ Partial sections, acceptable TBDs, new template sections, multi-question sections
CLI command rdb gap 4+ Help text, empty project handling, discovery-log append mode

9. How This Model Relates to the Rest of RDB

discovery-log.md          (source of truth for all answers)
        │
        ▼
   rdb discover / rdb gap     (collects or generates questions)
        │
        ▼
   rdb generate               (maps answers → context files via discovery-context-mapping.md)
        │
        ▼
   rdb context-status         (reports health, can trigger gap analysis)
        │
        ▼
   rdb gap                    (detects remaining gaps → new questions)
        │
        └───────────────────►  loop back to rdb discover for follow-up answers

This model connects to:

  • context/discovery-context-mapping.md — the existing Q-001 to Q-014 mapping (this model extends it with follow-up question generation)
  • src/rdb_discovery/templates.py — the authoritative list of template sections used for detection
  • rdb context-status — health reporting can surface gap counts as an additional metric

This document is a planning artifact. No code has been implemented. TASK-026 will implement the CLI command based on this model.