8.3 KiB
Step 2: Solution Analysis
Role: Professional software architect
Goal: Produce architecture.md, system-flows.md, data_model.md, and deployment/ from the solution draft
Constraints: No code, no component-level detail yet; focus on system-level view
Phase 2a.0: Glossary & Architecture Vision (BLOCKING)
Role: Software architect + business analyst
Goal: Align the AI's mental model of the project with the user's intent BEFORE drafting architecture.md. Capture domain terminology and the user's high-level architecture vision so every downstream artifact (architecture, components, flows, tests, epics) is grounded in confirmed user intent — not in AI inference.
Inputs:
_docs/00_problem/problem.md,acceptance_criteria.md,restrictions.md_docs/00_problem/input_data/*_docs/01_solution/solution.md(and any earliersolution_draft*.mdsiblings)- Any blackbox-test findings produced in Step 1
Outputs:
_docs/02_document/glossary.md(NEW)- A confirmed "Architecture Vision" paragraph + bullet list held in working memory and used as the spine of Phase 2a's
architecture.md
Procedure:
-
Draft glossary — extract project-specific terminology from inputs (NOT generic software terms). Include:
- Domain entities, processes, and roles
- Acronyms / abbreviations
- Internal codenames or product names
- Synonym pairs in active use (e.g., "flight" vs. "mission")
- Stakeholder personas referenced in problem.md
Each entry: one-line definition, plus a parenthetical source (
source: problem.md,source: solution.md §3). Skip terms that have a single well-known industry meaning (REST, JSON, etc.).
-
Draft architecture vision — synthesize from inputs:
- One paragraph: what the system is, who uses it, the shape of the runtime topology (monolith / services / pipeline / library / hybrid).
- Components & responsibilities (one-line each). At this stage these are intent-level, not the formal decomposition that Step 3 produces.
- Major data flows (one or two sentences each).
- Architectural principles / non-negotiables the user has implied (e.g., "DB-driven config", "no per-component state outside Redis", "all UI traffic via REST + SSE only").
- Open architectural questions the AI cannot resolve from inputs alone.
-
Present condensed view to the user (NOT the full draft files — a synopsis only):
══════════════════════════════════════ REVIEW: Glossary + Architecture Vision ══════════════════════════════════════ Glossary (N terms drafted): - <Term>: <one-line definition> - ... Architecture Vision: <one-paragraph synopsis> Components / responsibilities: - <component>: <one-line> - ... Principles / non-negotiables: - <principle> - ... Open questions (AI could not resolve): - <q1> - <q2> ══════════════════════════════════════ A) Looks correct — write glossary.md, use vision for Phase 2a B) I want to add / correct entries (provide diffs) C) Answer the open questions first, then re-present ══════════════════════════════════════ Recommendation: pick C if open questions exist, otherwise A ══════════════════════════════════════ -
Iterate:
- On B → integrate the user's diffs/additions, re-present the condensed view, loop until A.
- On C → ask the listed open questions one round (M4-style batch), integrate answers, re-present.
- Do NOT proceed to step 5 until the user picks A.
-
Save:
- Write
_docs/02_document/glossary.mdwith terms in alphabetical order. Include a top-line**Status**: confirmed-by-userand the date. - Hold the confirmed vision (paragraph + components + principles) in working memory; Phase 2a will materialize it into
architecture.mdand must preserve every confirmed principle and component intent verbatim.
- Write
Self-verification:
- Every glossary entry traces to at least one input file (no invented terms)
- Every component listed in the vision is one the inputs reference
- All open questions are either answered or explicitly deferred (with the user's acknowledgement)
- User picked option A on the latest condensed view
BLOCKING: Do NOT proceed to Phase 2a until glossary.md is saved and the user has confirmed the architecture vision.
Phase 2a: Architecture & Flows
- Read all input files thoroughly
- Incorporate findings, questions, and insights discovered during Step 1 (blackbox tests)
- Apply confirmed vision from Phase 2a.0: the architecture document must include a top-level
## Architecture Visionsection that contains the user-confirmed paragraph, components, and principles verbatim. The rest ofarchitecture.md(tech stack, deployment model, NFRs, ADRs) builds on top of that section, never contradicts it - Research unknown or questionable topics via internet; ask user about ambiguities
- Document architecture using
templates/architecture.mdas structure - Document system flows using
templates/system-flows.mdas structure
Self-verification:
architecture.mdopens with a## Architecture Visionsection matching Phase 2a.0- Architecture covers all capabilities mentioned in solution.md
- System flows cover all main user/system interactions
- No contradictions with problem.md, restrictions.md, or the confirmed vision
- Technology choices are justified
- Blackbox test findings are reflected in architecture decisions
- Every term used in
architecture.mdthat is project-specific appears inglossary.md
Save action: Write architecture.md and system-flows.md
BLOCKING: Present architecture summary to user. Do NOT proceed until user confirms.
Phase 2b: Data Model
Role: Professional software architect Goal: Produce a detailed data model document covering entities, relationships, and migration strategy
- Extract core entities from architecture.md and solution.md
- Define entity attributes, types, and constraints
- Define relationships between entities (Mermaid ERD)
- Define migration strategy: versioning tool (EF Core migrations / Alembic / sql-migrate), reversibility requirement, naming convention
- Define seed data requirements per environment (dev, staging)
- Define backward compatibility approach for schema changes (additive-only by default)
Self-verification:
- Every entity mentioned in architecture.md is defined
- Relationships are explicit with cardinality
- Migration strategy specifies reversibility requirement
- Seed data requirements defined
- Backward compatibility approach documented
Save action: Write data_model.md
Phase 2c: Deployment Planning
Role: DevOps / Platform engineer Goal: Produce deployment plan covering containerization, CI/CD, environment strategy, observability, and deployment procedures
Use the /deploy skill's templates as structure for each artifact:
- Read architecture.md and restrictions.md for infrastructure constraints
- Research Docker best practices for the project's tech stack
- Define containerization plan: Dockerfile per component, docker-compose for dev and tests
- Define CI/CD pipeline: stages, quality gates, caching, parallelization
- Define environment strategy: dev, staging, production with secrets management
- Define observability: structured logging, metrics, tracing, alerting
- Define deployment procedures: strategy, health checks, rollback, checklist
Self-verification:
- Every component has a Docker specification
- CI/CD pipeline covers lint, test, security, build, deploy
- Environment strategy covers dev, staging, production
- Observability covers logging, metrics, tracing, alerting
- Deployment procedures include rollback and health checks
Save action: Write all 5 files under deployment/:
containerization.mdci_cd_pipeline.mdenvironment_strategy.mdobservability.mddeployment_procedures.md