Sprint 20-25 architecture plans — completing the roadmap
Sprint 20: Legacy code ingestion + modernization workflows Sprint 21: Semantic cross-language transpilation engine Sprint 22: Assembly languages (x86/ARM) + C++ remaining gaps Sprint 23: Architect mode — problem description to tech stack + skeleton Sprint 24: Security annotations, OWASP detection, secure transpilation Sprint 25: Self-hosting, end-to-end scenarios, polish, release prep Cumulative: ~508 steps, ~5000 tests, 19+ languages, 90+ MCP tools, 80+ annotation types across 10 subjects. Post-25 training data harvest builds on real workflow decisions accumulated across all sprints. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
13
progress.md
13
progress.md
@@ -903,6 +903,19 @@ inference-to-routing bridge replace training data export (deferred to post-25).
|
|||||||
- `sprint17_plan.md` — Languages: F#, VB.NET, SQL dialects (12 steps, ~136 tests)
|
- `sprint17_plan.md` — Languages: F#, VB.NET, SQL dialects (12 steps, ~136 tests)
|
||||||
- `sprint18_plan.md` — Claude Code Plugin + MCP Workflow Tools (11 steps, ~124 tests, 75+ tools)
|
- `sprint18_plan.md` — Claude Code Plugin + MCP Workflow Tools (11 steps, ~124 tests, 75+ tools)
|
||||||
- `sprint19_plan.md` — GUI Phase 2: Workflow Visualization (10 steps, ~112 tests)
|
- `sprint19_plan.md` — GUI Phase 2: Workflow Visualization (10 steps, ~112 tests)
|
||||||
|
- `sprint20_plan.md` — Legacy Code Ingestion (11 steps, ~124 tests)
|
||||||
|
- `sprint21_plan.md` — Cross-Language Transpilation Engine (11 steps, ~124 tests, 83+ tools)
|
||||||
|
- `sprint22_plan.md` — Languages: Assembly + C++ remaining gaps (11 steps, ~124 tests)
|
||||||
|
- `sprint23_plan.md` — Architect Mode + Tech Stack Selection (11 steps, ~124 tests, 87+ tools)
|
||||||
|
- `sprint24_plan.md` — Security + Static Analysis (11 steps, ~124 tests, 90+ tools)
|
||||||
|
- `sprint25_plan.md` — Integration, Self-Hosting, Polish (16 steps, ~180 tests)
|
||||||
|
|
||||||
|
### Cumulative projections (Sprints 9-25):
|
||||||
|
- **Steps:** ~508 (245-508)
|
||||||
|
- **Tests:** ~5000+
|
||||||
|
- **Languages:** 19+ parsers and generators
|
||||||
|
- **MCP Tools:** 90+
|
||||||
|
- **Annotation Types:** 80+ across 10 subjects
|
||||||
|
|
||||||
### Key architectural decisions:
|
### Key architectural decisions:
|
||||||
1. **Skeleton AST** = project specification before code exists (annotations on empty functions/classes)
|
1. **Skeleton AST** = project specification before code exists (annotations on empty functions/classes)
|
||||||
|
|||||||
127
sprint20_plan.md
Normal file
127
sprint20_plan.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# Sprint 20 Plan: Legacy Code Ingestion
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
This is what started the whole project. Take old code — code written before modern
|
||||||
|
safety practices, before ownership models, before async/await, before anyone thought
|
||||||
|
about annotation-driven workflows — and bring it into the modern world.
|
||||||
|
|
||||||
|
Sprint 20 builds the ingestion pipeline: parse legacy code, infer what it does and
|
||||||
|
what's dangerous about it, annotate it with the full taxonomy, and produce a modernization
|
||||||
|
plan as a workflow. The output is a skeleton of the modernized version with annotations
|
||||||
|
guiding the orchestrator.
|
||||||
|
|
||||||
|
**Prerequisites delivered by earlier sprints:**
|
||||||
|
- 17+ language parsers (Sprint 14, 17) including C, the primary legacy language
|
||||||
|
- Annotation inference across all 8 subjects (Sprint 11e)
|
||||||
|
- Routing annotations for workflow dispatch (Sprint 11e)
|
||||||
|
- Workflow model + orchestration engine (Sprints 12, 15)
|
||||||
|
- C++ depth for parsing complex legacy C++ (Sprints 12, 16)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 20a: Legacy Analysis Engine (Steps 438-443)
|
||||||
|
|
||||||
|
### Step 438: Code Age + Idiom Detection (12 tests)
|
||||||
|
- Detect legacy patterns: K&R function declarations, pre-C99 variable declarations,
|
||||||
|
manual memory management without RAII, raw pointer arithmetic, goto-heavy control flow,
|
||||||
|
deprecated API usage (gets, sprintf, strcpy)
|
||||||
|
- Language version detection: C89/C99/C11, C++03/11/14/17/20, Java 6/8/11/17,
|
||||||
|
Python 2/3
|
||||||
|
- Idiom scoring: how "legacy" is this code on a 0-10 scale
|
||||||
|
- Output: per-function and per-file legacy score with specific findings
|
||||||
|
|
||||||
|
### Step 439: Safety Audit via Annotations (12 tests)
|
||||||
|
- Run annotation inference focused on safety:
|
||||||
|
- Buffer overflow risk: @BoundsCheck(unchecked) on array operations
|
||||||
|
- Use-after-free risk: @Owner(Manual) without clear @Lifetime tracking
|
||||||
|
- Null dereference: @Nullability(nullable) on unchecked pointers
|
||||||
|
- Race conditions: shared mutable state without @Sync or @Atomic
|
||||||
|
- Integer overflow: arithmetic without @Overflow annotation
|
||||||
|
- Generate structured safety report with risk levels per function/file
|
||||||
|
- Map findings to CWE (Common Weakness Enumeration) codes where applicable
|
||||||
|
|
||||||
|
### Step 440: Modernization Suggestions (12 tests)
|
||||||
|
- For each legacy pattern, suggest a modernization path:
|
||||||
|
- `malloc/free` → smart pointers (C++) or GC language (Java/Python/Rust)
|
||||||
|
- `sprintf` → `std::format` or safe string builders
|
||||||
|
- Raw loops → range-based for or iterators
|
||||||
|
- `goto` → structured control flow
|
||||||
|
- Manual vtable → virtual methods or trait objects
|
||||||
|
- Global mutable state → dependency injection or module pattern
|
||||||
|
- Each suggestion is an annotation: @Modernize(from="pattern", to="replacement", risk="level")
|
||||||
|
- Suggestions grouped by effort: quick wins vs deep refactors
|
||||||
|
|
||||||
|
### Step 441: Modernization Workflow Generation (12 tests)
|
||||||
|
- Given a legacy file with analysis + suggestions:
|
||||||
|
1. Create skeleton of modernized version (same structure, modern idioms)
|
||||||
|
2. Annotate skeleton with routing: quick wins → deterministic, complex → LLM, risky → human
|
||||||
|
3. Generate workflow from skeleton (WorkItems with dependencies)
|
||||||
|
4. Order: safe changes first, risky changes last (human review on risky)
|
||||||
|
- Output: a ready-to-execute WorkflowState that the orchestrator can run
|
||||||
|
|
||||||
|
### Step 442: Modernization RPC + MCP (12 tests)
|
||||||
|
- `whetstone_analyze_legacy` — run legacy analysis on a file/project
|
||||||
|
- `whetstone_suggest_modernization` — get modernization suggestions
|
||||||
|
- `whetstone_create_modernization_workflow` — generate the full workflow
|
||||||
|
- `whetstone_get_safety_report` — structured safety audit
|
||||||
|
- 79+ MCP tools total
|
||||||
|
|
||||||
|
### Step 443: Phase 20a Integration (8 tests)
|
||||||
|
- Ingest a C file with legacy patterns → analyze → suggest → create workflow →
|
||||||
|
orchestrate → deterministic modernizations applied → complex items prepared for LLM
|
||||||
|
- Safety report flags real issues (buffer overflow, null deref)
|
||||||
|
- Modernization workflow respects risk ordering
|
||||||
|
- Cross-language modernization: C → Rust (ownership safety)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 20b: Cross-Language Migration (Steps 444-448)
|
||||||
|
|
||||||
|
### Step 444: Migration Plan Generator (12 tests)
|
||||||
|
- Given source language + target language + codebase:
|
||||||
|
1. Analyze entire project structure (modules, dependencies, APIs)
|
||||||
|
2. Identify migration units (which files/modules migrate together)
|
||||||
|
3. Determine migration order (dependencies first, leaf modules first)
|
||||||
|
4. Annotate each unit: effort, risk, routing
|
||||||
|
- Output: MigrationPlan with ordered phases
|
||||||
|
|
||||||
|
### Step 445: API Boundary Preservation (12 tests)
|
||||||
|
- When migrating a module, preserve its API surface:
|
||||||
|
- Function signatures maintained (or mapped to target-language equivalents)
|
||||||
|
- Public types preserved with cross-language compatibility notes
|
||||||
|
- FFI annotations where mixed-language boundaries exist
|
||||||
|
- @Contract annotations verify pre/post conditions match
|
||||||
|
- Test: migrate internal implementation, verify external API unchanged
|
||||||
|
|
||||||
|
### Step 446: Test Generation for Migration Validation (12 tests)
|
||||||
|
- For each migrated module, auto-generate validation tests:
|
||||||
|
- Input/output equivalence tests (same inputs → same outputs)
|
||||||
|
- Edge case coverage from @Contract pre/post conditions
|
||||||
|
- Performance regression tests from @Complexity annotations
|
||||||
|
- Tests generated as skeleton work items (routed to SLM/LLM)
|
||||||
|
- Test language matches target language
|
||||||
|
|
||||||
|
### Step 447: Migration Execution Integration (12 tests)
|
||||||
|
- Hook migration plan into the orchestration engine:
|
||||||
|
- Each migration unit becomes a workflow
|
||||||
|
- Cross-unit dependencies respected in execution order
|
||||||
|
- Rollback annotations: if a unit fails validation, flag for human review
|
||||||
|
- Progressive migration: some units migrated while others remain in source language
|
||||||
|
- FFI boundary management during partial migration
|
||||||
|
|
||||||
|
### Step 448: Phase 20b Integration + Sprint Summary (8 tests)
|
||||||
|
- Full migration: 3-file C project → Rust, preserving API boundaries
|
||||||
|
- Generated tests validate behavioral equivalence
|
||||||
|
- Partial migration: 2 files migrated, 1 remains C with FFI annotations
|
||||||
|
- Sprint 20 totals: legacy analysis, modernization, migration all operational
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 20a | 438-443 | 68 | Legacy analysis, safety audit, modernization workflow |
|
||||||
|
| 20b | 444-448 | 56 | Migration planning, API preservation, test generation |
|
||||||
|
| **Total** | **438-448** | **~124** | 11 steps |
|
||||||
127
sprint21_plan.md
Normal file
127
sprint21_plan.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# Sprint 21 Plan: Cross-Language Transpilation Engine
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Until now, "cross-language projection" has been syntactic: map AST nodes from
|
||||||
|
source language conventions to target language conventions. Sprint 21 makes it
|
||||||
|
semantic: the transpiler understands what code *does*, not just what it *looks like*,
|
||||||
|
and produces behaviorally equivalent output in the target language.
|
||||||
|
|
||||||
|
The key difference: syntactic projection maps `for i in range(10)` to `for (int i = 0; i < 10; i++)`.
|
||||||
|
Semantic transpilation understands that this is "iterate 10 times" and selects the
|
||||||
|
most idiomatic, efficient representation in the target: `(0..10).for_each(|i| ...)` in
|
||||||
|
Rust, `(dotimes (i 10) ...)` in Common Lisp, `repeat(10) { ... }` in Kotlin.
|
||||||
|
|
||||||
|
Annotations drive the translation: @Intent tells the transpiler what the code means,
|
||||||
|
@Complexity guides how much to restructure, @Risk determines how conservative to be.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 21a: Semantic Translation Layer (Steps 449-454)
|
||||||
|
|
||||||
|
### Step 449: Intent-Driven Translation (12 tests)
|
||||||
|
- @Intent annotations on functions describe what they do, not how
|
||||||
|
- Translation engine reads intent and selects target-idiomatic implementation:
|
||||||
|
- @Intent("sort list ascending") → Python: `sorted()`, Rust: `.sort()`, SQL: `ORDER BY`
|
||||||
|
- @Intent("find element by key") → Python: dict lookup, Java: HashMap.get, SQL: WHERE
|
||||||
|
- When intent is clear + target has idiomatic equivalent → direct translation
|
||||||
|
- When intent is ambiguous → preserve source structure + flag for review
|
||||||
|
|
||||||
|
### Step 450: Algorithm-Level Equivalence (12 tests)
|
||||||
|
- Recognize algorithmic patterns in source AST:
|
||||||
|
- Linear search → map to target's standard library search
|
||||||
|
- Sort implementations → map to target's standard library sort
|
||||||
|
- Map/filter/reduce patterns → map to target's functional idioms
|
||||||
|
- Builder patterns → map to target's construction idioms
|
||||||
|
- Pattern library: 20+ common algorithmic patterns with cross-language equivalents
|
||||||
|
- @Complexity annotation guides whether to use standard library or preserve manual implementation
|
||||||
|
|
||||||
|
### Step 451: Type System Translation (12 tests)
|
||||||
|
- Map type systems across languages with annotation guidance:
|
||||||
|
- Nullable types: Java Optional → Rust Option → Python Optional → C nullable pointer
|
||||||
|
- Generic types: Java List<T> → Rust Vec<T> → Python list[T] → C void* + size
|
||||||
|
- Enum types: Java enum → Rust enum → Python Enum → C enum/constants
|
||||||
|
- Class hierarchies: inheritance → traits/interfaces → protocols → struct+vtable
|
||||||
|
- @TypeState and @Nullability annotations preserve type-safety intent across languages
|
||||||
|
- Lossy translations (e.g., generics → void*) get @Risk(medium) annotation
|
||||||
|
|
||||||
|
### Step 452: Concurrency Model Translation (12 tests)
|
||||||
|
- Map concurrency patterns across language runtimes:
|
||||||
|
- Python async/await → Rust async/await (different runtime model!)
|
||||||
|
- Java threads → Go goroutines → Rust threads → C pthreads
|
||||||
|
- Python GIL-safe → Rust Send+Sync → Go channel-based → C mutex-based
|
||||||
|
- JavaScript Promises → Rust futures → Python asyncio
|
||||||
|
- @Exec, @Sync, @ThreadModel annotations guide the translation
|
||||||
|
- @Blocking annotation prevents mapping async → sync or vice versa without review
|
||||||
|
|
||||||
|
### Step 453: Memory Model Translation (12 tests)
|
||||||
|
- Translate ownership/lifecycle across memory models:
|
||||||
|
- Rust ownership → C++ smart pointers → C manual → Java/Python GC
|
||||||
|
- @Owner(Unique) → unique_ptr → malloc+single_free → (no equivalent, GC)
|
||||||
|
- @Owner(Shared_ARC) → shared_ptr → reference counting → GC
|
||||||
|
- @Lifetime(Scope) → RAII → stack allocation → try-finally
|
||||||
|
- Loss of safety tracked: Rust → C loses borrow checker guarantees → @Risk(high)
|
||||||
|
- Gain of safety tracked: C → Rust gains borrow checker → @Risk(lowered)
|
||||||
|
|
||||||
|
### Step 454: Phase 21a Integration (8 tests)
|
||||||
|
- Semantic transpilation: Python data processing → Rust (idiomatic, not line-by-line)
|
||||||
|
- Algorithm recognition: Python bubble sort → Rust .sort() when @Intent("sort") present
|
||||||
|
- Type system: Java generics → Rust generics (preserved), Java → C (void* with @Risk)
|
||||||
|
- Concurrency: Python async → Rust async (different runtime acknowledged)
|
||||||
|
- Memory: C manual → Rust ownership (safety gained, annotated)
|
||||||
|
- Annotation guidance: @Intent + @Complexity + @Risk all influence translation choices
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 21b: Verification + Confidence (Steps 455-459)
|
||||||
|
|
||||||
|
### Step 455: Behavioral Equivalence Checking (12 tests)
|
||||||
|
- For each transpiled function, generate equivalence assertions:
|
||||||
|
- Same inputs → same outputs (for pure functions)
|
||||||
|
- Same side effects (for stateful functions, best-effort)
|
||||||
|
- Same error conditions (exception/error mapping)
|
||||||
|
- Express as @Contract annotations on the transpiled function
|
||||||
|
- Confidence score: how sure are we the translation preserves behavior
|
||||||
|
|
||||||
|
### Step 456: Transpilation Confidence Scoring (12 tests)
|
||||||
|
- Score each translation 0.0–1.0 based on:
|
||||||
|
- Direct standard library mapping (0.95+)
|
||||||
|
- Algorithm pattern match (0.85+)
|
||||||
|
- Structural translation with @Intent (0.70+)
|
||||||
|
- Structural translation without @Intent (0.50)
|
||||||
|
- Unknown pattern (0.30 — flag for human review)
|
||||||
|
- Route to review gate based on confidence threshold
|
||||||
|
- Low-confidence translations get @Review(required, human) automatically
|
||||||
|
|
||||||
|
### Step 457: Translation Report (12 tests)
|
||||||
|
- Per-file and per-function translation report:
|
||||||
|
- Source construct → target construct mapping
|
||||||
|
- Confidence score
|
||||||
|
- Annotations applied/changed
|
||||||
|
- Safety delta (gained or lost)
|
||||||
|
- Idiomatic vs literal translation choice and why
|
||||||
|
- Project-level summary: % idiomatic, % literal, % flagged for review
|
||||||
|
|
||||||
|
### Step 458: Transpilation RPC + MCP (12 tests)
|
||||||
|
- `whetstone_transpile` — transpile a function/file with semantic awareness
|
||||||
|
- `whetstone_get_translation_report` — get translation details
|
||||||
|
- `whetstone_verify_equivalence` — generate equivalence assertions
|
||||||
|
- `whetstone_get_confidence` — confidence score for a translation
|
||||||
|
- 83+ MCP tools total
|
||||||
|
|
||||||
|
### Step 459: Phase 21b Integration + Sprint Summary (8 tests)
|
||||||
|
- Full semantic transpilation: Python project → Rust with confidence scores
|
||||||
|
- Translation report shows idiomatic choices with reasoning
|
||||||
|
- Low-confidence translations auto-flagged for review
|
||||||
|
- Equivalence assertions generated and meaningful
|
||||||
|
- Sprint 21 totals: semantic transpilation operational for all 17+ languages
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 21a | 449-454 | 68 | Intent-driven, algorithm, type, concurrency, memory translation |
|
||||||
|
| 21b | 455-459 | 56 | Equivalence checking, confidence scoring, reports, MCP tools |
|
||||||
|
| **Total** | **449-459** | **~124** | 11 steps |
|
||||||
119
sprint22_plan.md
Normal file
119
sprint22_plan.md
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# Sprint 22 Plan: Language Batch 3 — Assembly + Remaining Gaps
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Assembly language is the floor. If Whetstone can represent assembly, it can
|
||||||
|
represent anything. This sprint adds x86 and ARM assembly, fills remaining
|
||||||
|
C++ gaps from feature-requests.md (items 12-17), and addresses any language
|
||||||
|
coverage holes discovered during real-world use in Sprints 18-21.
|
||||||
|
|
||||||
|
**After Sprint 22:** 19+ language parsers and generators, C++ self-hosting
|
||||||
|
coverage at 90%+.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 22a: Assembly Language Support (Steps 460-465)
|
||||||
|
|
||||||
|
Assembly is not like other languages. There's no abstraction — every instruction
|
||||||
|
is an explicit machine operation. The AST representation must capture: registers,
|
||||||
|
instructions, addressing modes, labels, directives, and sections.
|
||||||
|
|
||||||
|
### Step 460: Assembly AST Nodes (12 tests)
|
||||||
|
- New node types (all in `editor/src/ast/AssemblyNodes.h`):
|
||||||
|
- `AssemblyInstruction` — opcode, operands (register/immediate/memory)
|
||||||
|
- `AssemblyLabel` — name, isGlobal
|
||||||
|
- `AssemblyDirective` — type (.data, .text, .global, .section, .byte, .word)
|
||||||
|
- `AssemblyRegister` — name, size (8/16/32/64-bit)
|
||||||
|
- `AssemblyMemoryOperand` — base register, offset, index, scale
|
||||||
|
- These live inside Function nodes (a function = label + instructions + ret)
|
||||||
|
- Serialization for all new types
|
||||||
|
|
||||||
|
### Step 461: x86 Assembly Parser (12 tests)
|
||||||
|
- Intel and AT&T syntax support (mode flag)
|
||||||
|
- Parse: instructions (mov, add, sub, cmp, jmp, call, ret, push, pop),
|
||||||
|
labels, directives (.section, .global, .data, .text), comments (;)
|
||||||
|
- Register recognition: rax/eax/ax/al, rbx, rcx, ..., rsp, rbp, rip
|
||||||
|
- Memory addressing: [rax], [rbp-8], [rax+rbx*4+8]
|
||||||
|
- Sections (.text, .data, .bss) as NamespaceDeclaration equivalents
|
||||||
|
|
||||||
|
### Step 462: ARM Assembly Parser (12 tests)
|
||||||
|
- ARM/AArch64 instruction set
|
||||||
|
- Parse: MOV, ADD, SUB, LDR, STR, B, BL, CMP, branch conditions
|
||||||
|
- Registers: r0-r15 (ARM), x0-x30 (AArch64), sp, lr, pc
|
||||||
|
- Addressing modes: [r0], [r0, #4], [r0, r1, LSL #2]
|
||||||
|
- Directives: .global, .text, .data, .word, .align
|
||||||
|
|
||||||
|
### Step 463: Assembly Generator — x86 + ARM (12 tests)
|
||||||
|
- Generate valid assembly from AST
|
||||||
|
- x86 generator: Intel syntax (default) or AT&T syntax (flag)
|
||||||
|
- ARM generator: standard ARM syntax
|
||||||
|
- Cross-architecture: x86 → ARM translation for simple instruction sequences
|
||||||
|
- `commentPrefix() -> "; "` (x86) or `"@ "` (ARM)
|
||||||
|
|
||||||
|
### Step 464: Assembly Annotation Mapping (12 tests)
|
||||||
|
- @Exec(native) on all assembly functions
|
||||||
|
- @Target(x86) or @Target(arm) — architecture annotation
|
||||||
|
- @Align from .align directives
|
||||||
|
- @Risk(high) on all assembly (inherently unsafe)
|
||||||
|
- @Complexity from instruction count and branch density
|
||||||
|
- Register pressure analysis → @Complexity annotation
|
||||||
|
- Cross-language: C function → assembly (compiler-like lowering)
|
||||||
|
- Cross-language: assembly → C (decompilation-like lifting)
|
||||||
|
|
||||||
|
### Step 465: Phase 22a Integration (8 tests)
|
||||||
|
- Parse real x86 assembly → valid AST
|
||||||
|
- Parse real ARM assembly → valid AST
|
||||||
|
- Cross-architecture: simple x86 → ARM translation
|
||||||
|
- Assembly → C lifting for simple functions
|
||||||
|
- C → assembly lowering annotations
|
||||||
|
- Annotations meaningful for assembly
|
||||||
|
- 19+ languages total
|
||||||
|
- Assembly AST round-trips through Serialization
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 22b: C++ Remaining Gaps (Steps 466-470)
|
||||||
|
|
||||||
|
Feature-requests.md items 12-17: the constructs that come up in real C++ code
|
||||||
|
but aren't architecturally complex — they just need parser/generator support.
|
||||||
|
|
||||||
|
### Step 466: Range-Based For + Structured Bindings (12 tests)
|
||||||
|
- `for (const auto& x : container)` → RangeForStatement node
|
||||||
|
- `auto [key, value] = pair;` → StructuredBinding node
|
||||||
|
- Parse, serialize, generate for both
|
||||||
|
- Cross-language: range-for → Python for-in, Rust for-in, Java for-each
|
||||||
|
|
||||||
|
### Step 467: Exception Handling (12 tests)
|
||||||
|
- TryCatchStatement node: try block, catch clauses (each with type + variable), optional finally
|
||||||
|
- ThrowExpression node
|
||||||
|
- Noexcept specifier on functions
|
||||||
|
- Parse `try { } catch (const exception& e) { } catch (...) { }`
|
||||||
|
- Cross-language: C++ try/catch → Rust Result/match, Python try/except, Go if err
|
||||||
|
|
||||||
|
### Step 468: Operator Overloading + Friend (12 tests)
|
||||||
|
- OperatorOverload node: operator symbol, parameters, return type, isFriend
|
||||||
|
- Parse `bool operator<(const Foo&) const;`
|
||||||
|
- Parse `friend ostream& operator<<(ostream&, const Foo&);`
|
||||||
|
- Cross-language: operators → named methods in other languages (Java compareTo, Python __lt__)
|
||||||
|
|
||||||
|
### Step 469: Initializer Lists + STL Patterns (12 tests)
|
||||||
|
- Initializer list expressions: `{1, 2, 3}`
|
||||||
|
- STL container recognition: vector, map, set, string → annotated with type info
|
||||||
|
- Iterator pattern detection → @Loop annotation
|
||||||
|
- Parse `std::vector<int> v = {1, 2, 3};`
|
||||||
|
|
||||||
|
### Step 470: Phase 22b Integration + Sprint Summary (8 tests)
|
||||||
|
- C++ self-hosting coverage: parse TransformEngineExtended.h (inheritance, virtual)
|
||||||
|
- All feature-requests items 1-17 now covered
|
||||||
|
- Remaining self-hosting gaps identified (for Sprint 25 polish)
|
||||||
|
- Sprint 22 totals: 19+ languages, C++ at 90%+ coverage
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 22a | 460-465 | 68 | Assembly AST nodes, x86 parser, ARM parser, generators, annotations |
|
||||||
|
| 22b | 466-470 | 56 | Range-for, exceptions, operators, initializer lists, STL |
|
||||||
|
| **Total** | **460-470** | **~124** | 11 steps |
|
||||||
133
sprint23_plan.md
Normal file
133
sprint23_plan.md
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
# Sprint 23 Plan: Architect Mode + Tech Stack Selection
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The endgame feature: describe a problem in natural language, and the system
|
||||||
|
proposes a technology stack, project structure, and annotated skeleton. This
|
||||||
|
is the architect's power tool — not replacing the architect, but giving them
|
||||||
|
a structured starting point they can review, modify, and approve.
|
||||||
|
|
||||||
|
Sprint 23 builds on everything: the annotation taxonomy (Sprints 10-11),
|
||||||
|
the skeleton AST (Sprint 11e), the workflow model (Sprint 12), the orchestrator
|
||||||
|
(Sprint 15), the language coverage (17+ languages), and the transpilation engine
|
||||||
|
(Sprint 21).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 23a: Problem Decomposition (Steps 471-476)
|
||||||
|
|
||||||
|
### Step 471: Problem Description Parser (12 tests)
|
||||||
|
- Accept natural language problem description
|
||||||
|
- Extract structured requirements:
|
||||||
|
- Functional requirements (what it should do)
|
||||||
|
- Non-functional requirements (performance, security, scalability)
|
||||||
|
- Platform constraints (web, mobile, embedded, server, CLI)
|
||||||
|
- Integration requirements (databases, APIs, existing systems)
|
||||||
|
- Output: StructuredRequirements JSON with confidence per extraction
|
||||||
|
- This is the one place where LLM assistance is expected in the architecture —
|
||||||
|
the extraction is an MCP prompt template, not hardcoded NLP
|
||||||
|
|
||||||
|
### Step 472: Module Decomposition Engine (12 tests)
|
||||||
|
- Given StructuredRequirements, propose module structure:
|
||||||
|
- Identify major subsystems (auth, data, API, UI, etc.)
|
||||||
|
- Define module boundaries and interfaces
|
||||||
|
- Estimate complexity per module
|
||||||
|
- Identify cross-cutting concerns (logging, error handling, config)
|
||||||
|
- Output: ModuleGraph with nodes (modules) and edges (dependencies)
|
||||||
|
- Multiple decomposition strategies: microservice vs monolith vs layered
|
||||||
|
|
||||||
|
### Step 473: Technology Stack Selector (12 tests)
|
||||||
|
- Given requirements + module graph, recommend tech stack:
|
||||||
|
- Language selection per module (guided by requirements):
|
||||||
|
- Performance-critical → Rust or C++
|
||||||
|
- Web frontend → TypeScript
|
||||||
|
- Data processing → Python
|
||||||
|
- System scripting → Go or Python
|
||||||
|
- Database → SQL dialect based on requirements
|
||||||
|
- Embedded → C or assembly
|
||||||
|
- Framework suggestions (as annotations, not framework-specific code)
|
||||||
|
- Database selection based on data requirements
|
||||||
|
- Configurable preferences: "I prefer Rust for backend", "must use PostgreSQL"
|
||||||
|
- Output: TechStackDecision with reasoning per choice
|
||||||
|
|
||||||
|
### Step 474: Skeleton Generation from Requirements (12 tests)
|
||||||
|
- Given module graph + tech stack:
|
||||||
|
1. Create skeleton modules in chosen languages
|
||||||
|
2. Create skeleton functions/classes with @Intent annotations from requirements
|
||||||
|
3. Add routing annotations: @Complexity, @ContextWidth, @Automatability
|
||||||
|
4. Add contract annotations: @Contract from functional requirements
|
||||||
|
5. Add dependency annotations between modules
|
||||||
|
- Output: Multi-file skeleton project ready for workflow creation
|
||||||
|
|
||||||
|
### Step 475: Architect Review Interface (12 tests)
|
||||||
|
- Present the proposed stack + skeleton to the architect for review:
|
||||||
|
- Tech stack summary with reasoning
|
||||||
|
- Module dependency graph (visual in GUI, structured in MCP)
|
||||||
|
- Per-module: language choice, complexity estimate, key annotations
|
||||||
|
- Modification tools: change language, merge modules, add modules, adjust routing
|
||||||
|
- Architect approves → skeleton becomes the project spec
|
||||||
|
- Architect modifies → re-run affected selections
|
||||||
|
|
||||||
|
### Step 476: Phase 23a Integration (8 tests)
|
||||||
|
- Full flow: "Build a REST API for a bookstore with user auth, PostgreSQL,
|
||||||
|
and a React frontend" → structured requirements → module decomposition →
|
||||||
|
tech stack (TypeScript frontend, Python/Rust backend, PostgreSQL) →
|
||||||
|
skeleton project → architect review → approved → workflow created
|
||||||
|
- 87+ MCP tools total
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 23b: Project Templates + Scaffolding (Steps 477-481)
|
||||||
|
|
||||||
|
### Step 477: Architecture Templates (12 tests)
|
||||||
|
- Pre-built architecture patterns:
|
||||||
|
- **REST API:** routes + handlers + models + middleware + database
|
||||||
|
- **CLI Tool:** argument parsing + commands + output formatting
|
||||||
|
- **Library:** public API + internal modules + tests + documentation stubs
|
||||||
|
- **Microservice:** service + transport + storage + health check
|
||||||
|
- **Full Stack:** frontend + backend + database + deployment config
|
||||||
|
- Templates are parameterized: entity names, field definitions, auth method
|
||||||
|
- Each template produces a fully-annotated skeleton project
|
||||||
|
|
||||||
|
### Step 478: Scaffold File Generation (12 tests)
|
||||||
|
- Generate actual project files on disk from approved skeleton:
|
||||||
|
- Source files with skeleton code + Semanno annotations
|
||||||
|
- Project configuration (package.json, Cargo.toml, pyproject.toml, CMakeLists.txt)
|
||||||
|
- Directory structure following language conventions
|
||||||
|
- .gitignore appropriate for selected stack
|
||||||
|
- .whetstone/ directory with sidecar files and workflow state
|
||||||
|
- Uses existing fileCreate/fileWrite MCP infrastructure
|
||||||
|
|
||||||
|
### Step 479: Dependency + Build System Awareness (12 tests)
|
||||||
|
- Annotate dependencies between modules with build system info:
|
||||||
|
- Python: imports and pip requirements
|
||||||
|
- Rust: crate dependencies in Cargo.toml format
|
||||||
|
- Node: npm packages in package.json format
|
||||||
|
- C++: include paths and CMake targets
|
||||||
|
- SQL: migration ordering
|
||||||
|
- Not full build system integration — annotation-level awareness for context
|
||||||
|
|
||||||
|
### Step 480: Multi-Language Project Orchestration (12 tests)
|
||||||
|
- Workflow creation for multi-language projects:
|
||||||
|
- Each module may be a different language
|
||||||
|
- Cross-language interfaces annotated with @Link and @Shim
|
||||||
|
- Build order respects cross-language dependencies
|
||||||
|
- FFI boundaries explicitly annotated for human review
|
||||||
|
- Orchestrator handles multi-language workflow as a single project
|
||||||
|
|
||||||
|
### Step 481: Phase 23b Integration + Sprint Summary (8 tests)
|
||||||
|
- REST API template → scaffold files on disk → workflow → orchestrate
|
||||||
|
- Multi-language project: Python service + Rust core + SQL schema
|
||||||
|
- Architect modifies tech stack mid-planning → skeleton regenerates
|
||||||
|
- All scaffolded files have proper annotations and structure
|
||||||
|
- Sprint 23 totals: architect mode operational, templates working
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 23a | 471-476 | 68 | Problem decomposition, tech stack selection, skeleton generation |
|
||||||
|
| 23b | 477-481 | 56 | Templates, scaffolding, build awareness, multi-language orchestration |
|
||||||
|
| **Total** | **471-481** | **~124** | 11 steps |
|
||||||
135
sprint24_plan.md
Normal file
135
sprint24_plan.md
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# Sprint 24 Plan: Security + Static Analysis
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Security isn't a feature you bolt on at the end — but it is a domain that
|
||||||
|
benefits from having the full annotation taxonomy, transpilation engine,
|
||||||
|
and orchestration system in place first. Sprint 24 adds security as a
|
||||||
|
first-class concern: security annotations, vulnerability detection, dependency
|
||||||
|
audit, and security review as a routing category.
|
||||||
|
|
||||||
|
When the system encounters `@Risk(security)` or detects a vulnerable pattern,
|
||||||
|
it knows to route that work item to human review with full security context.
|
||||||
|
The annotation system makes security findings *actionable* — not just warnings
|
||||||
|
in a log, but structured routing decisions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 24a: Security Annotations + Detection (Steps 482-487)
|
||||||
|
|
||||||
|
### Step 482: Security Annotation Types — Subject 10 (12 tests)
|
||||||
|
- New annotation subject: Security
|
||||||
|
- `TrustBoundaryAnnotation` — marks where trusted/untrusted data crosses
|
||||||
|
- `InputValidationAnnotation` — validation: "sanitized" | "raw" | "escaped"
|
||||||
|
- `AuthAnnotation` — authRequired: bool, roles: vector, method: "jwt" | "session" | "api-key"
|
||||||
|
- `EncryptionAnnotation` — algorithm, keySize, mode (at-rest, in-transit)
|
||||||
|
- `SecretsAnnotation` — marks code that handles secrets, rotation policy
|
||||||
|
- `CORSAnnotation` — origins, methods, credentials
|
||||||
|
- Serialization, CompactAST, SidecarPersistence for all new types
|
||||||
|
|
||||||
|
### Step 483: OWASP Pattern Detection (12 tests)
|
||||||
|
- Detect OWASP Top 10 vulnerability patterns via AST analysis:
|
||||||
|
- **Injection:** string concatenation in SQL queries, unsanitized user input in commands
|
||||||
|
- **Broken Auth:** hardcoded credentials, missing auth checks on routes
|
||||||
|
- **Sensitive Data:** secrets in source code, unencrypted storage
|
||||||
|
- **XXE:** XML parsing without entity restriction
|
||||||
|
- **Broken Access Control:** missing role checks, direct object references
|
||||||
|
- **Security Misconfiguration:** debug mode in production annotations, permissive CORS
|
||||||
|
- **XSS:** unsanitized output in HTML generation
|
||||||
|
- **Deserialization:** untrusted data deserialization
|
||||||
|
- **Known Vulnerabilities:** deprecated crypto, known-insecure functions
|
||||||
|
- **Logging:** sensitive data in log statements
|
||||||
|
- Each detection produces structured diagnostic (E1300+ range)
|
||||||
|
- Confidence level per finding (some are heuristic, not certain)
|
||||||
|
|
||||||
|
### Step 484: Dependency Audit Annotations (12 tests)
|
||||||
|
- `DependencyAnnotation` — package name, version, known CVEs, license
|
||||||
|
- Parse dependency files: requirements.txt, Cargo.toml, package.json, pom.xml
|
||||||
|
- Flag known-vulnerable versions from annotation data
|
||||||
|
- License compatibility checking (GPL vs MIT vs Apache in same project)
|
||||||
|
- Not a real-time CVE database — annotation-based tracking that the
|
||||||
|
orchestration engine can route for periodic review
|
||||||
|
|
||||||
|
### Step 485: Security-Aware Routing (12 tests)
|
||||||
|
- Security findings automatically set routing annotations:
|
||||||
|
- OWASP finding → @Risk(security) + @Review(required, human)
|
||||||
|
- Trust boundary crossing → @ContextWidth(project) (need full context)
|
||||||
|
- Crypto code → @Automatability(human) (never auto-generate crypto)
|
||||||
|
- Auth logic → @Review(required, human) + @Ambiguity(high)
|
||||||
|
- Routing engine recognizes security annotations as highest-priority review triggers
|
||||||
|
- Security review items get enhanced context: threat model, adjacent trust boundaries
|
||||||
|
|
||||||
|
### Step 486: Security Report Generation (12 tests)
|
||||||
|
- Structured security report for a project:
|
||||||
|
- Executive summary: risk level, critical findings count
|
||||||
|
- Per-finding: OWASP category, CWE code, affected code, confidence, remediation
|
||||||
|
- Trust boundary map: which modules trust which
|
||||||
|
- Annotation coverage: % of code with security annotations
|
||||||
|
- Export formats: JSON (for orchestration), Markdown (for human review)
|
||||||
|
|
||||||
|
### Step 487: Phase 24a Integration (8 tests)
|
||||||
|
- Scan a Python web app → detect SQL injection + missing auth → security report
|
||||||
|
- Security annotations route sensitive code to human review
|
||||||
|
- OWASP findings produce structured diagnostics
|
||||||
|
- Dependency audit flags known-vulnerable packages
|
||||||
|
- Security report includes trust boundary analysis
|
||||||
|
- MCP tools: whetstone_security_scan, whetstone_security_report, whetstone_audit_dependencies
|
||||||
|
- 90+ MCP tools total
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 24b: Secure Transpilation (Steps 488-492)
|
||||||
|
|
||||||
|
### Step 488: Security-Preserving Translation (12 tests)
|
||||||
|
- When transpiling code with security annotations:
|
||||||
|
- @InputValidation preserved in target language (not silently dropped)
|
||||||
|
- @TrustBoundary maintained at module boundaries
|
||||||
|
- @Auth annotations mapped to target-language auth patterns
|
||||||
|
- @Encryption mapped to target-language crypto libraries
|
||||||
|
- Security annotations NEVER auto-removed during transpilation
|
||||||
|
- Any security annotation that can't map to target → @Review(required, human)
|
||||||
|
|
||||||
|
### Step 489: Secure-by-Default Code Generation (12 tests)
|
||||||
|
- Generated code follows secure defaults:
|
||||||
|
- SQL queries use parameterized queries, never string concatenation
|
||||||
|
- User input always has @InputValidation(raw) until explicitly sanitized
|
||||||
|
- File operations include path traversal checks
|
||||||
|
- Network calls include timeout and TLS verification
|
||||||
|
- Crypto uses current best practices (no MD5, no SHA1 for security)
|
||||||
|
- Deterministic/template workers enforce these defaults
|
||||||
|
- LLM context bundles include security requirements
|
||||||
|
|
||||||
|
### Step 490: Threat Model Integration (12 tests)
|
||||||
|
- Annotations can express a threat model:
|
||||||
|
- @TrustBoundary(name, level) — "external-api", "database", "user-input"
|
||||||
|
- Data flow through trust boundaries → automatic @InputValidation requirements
|
||||||
|
- Missing validation at boundary → E1300 diagnostic
|
||||||
|
- Threat model as a project-level annotation (on Module)
|
||||||
|
- Visualization data for Sprint 19's GUI (trust boundary overlay)
|
||||||
|
|
||||||
|
### Step 491: Security Testing Skeleton Generation (12 tests)
|
||||||
|
- Generate security test skeletons alongside production code:
|
||||||
|
- Input validation tests (fuzzing boundaries)
|
||||||
|
- Auth bypass tests
|
||||||
|
- SQL injection probe tests
|
||||||
|
- XSS payload tests
|
||||||
|
- Access control matrix tests
|
||||||
|
- Skeletons annotated with @Intent describing what to test
|
||||||
|
- Routed: simple validation tests → SLM, complex penetration → human
|
||||||
|
|
||||||
|
### Step 492: Phase 24b Integration + Sprint Summary (8 tests)
|
||||||
|
- Transpile Python → Rust: security annotations preserved and strengthened
|
||||||
|
- Generated code uses parameterized SQL, validated input
|
||||||
|
- Threat model produces trust boundary diagnostics
|
||||||
|
- Security test skeletons generated and meaningful
|
||||||
|
- Sprint 24 totals: security is a first-class orchestration concern
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 24a | 482-487 | 68 | Security annotations, OWASP detection, dependency audit, routing |
|
||||||
|
| 24b | 488-492 | 56 | Secure transpilation, defaults, threat models, security tests |
|
||||||
|
| **Total** | **482-492** | **~124** | 11 steps |
|
||||||
213
sprint25_plan.md
Normal file
213
sprint25_plan.md
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
# Sprint 25 Plan: Integration, Self-Hosting, Polish
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
The capstone. Every system built in Sprints 9-24 comes together. Sprint 25 has
|
||||||
|
three objectives:
|
||||||
|
|
||||||
|
1. **Self-hosting:** Whetstone parses, annotates, and transpiles its own source code.
|
||||||
|
This is the ultimate integration test — if the tool can understand itself, it can
|
||||||
|
understand anything.
|
||||||
|
|
||||||
|
2. **End-to-end validation:** Every workflow path is tested with real-world scenarios.
|
||||||
|
Not unit tests of individual components, but full journeys: problem description →
|
||||||
|
annotated skeleton → orchestrated workflow → transpiled output → security review →
|
||||||
|
deployed artifact.
|
||||||
|
|
||||||
|
3. **Polish:** Performance optimization, edge case cleanup, documentation for the
|
||||||
|
MCP tool surface, and preparation for the post-25 training data phase.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 25a: Self-Hosting (Steps 493-498)
|
||||||
|
|
||||||
|
### Step 493: Parse Full Whetstone Codebase (12 tests)
|
||||||
|
- Feed every .h file in editor/src/ and editor/src/ast/ through the C++ parser
|
||||||
|
- Track: successful parse rate (target: 95%+), constructs recognized, constructs skipped
|
||||||
|
- For each file: verify function count, class count, annotation node count
|
||||||
|
- Log all unparseable constructs for future language depth work
|
||||||
|
- This is the audit: how complete is our C++ coverage really?
|
||||||
|
|
||||||
|
### Step 494: Annotate Whetstone's Own Code (12 tests)
|
||||||
|
- Run AnnotationInference on parsed AST of Whetstone's source
|
||||||
|
- Expected findings:
|
||||||
|
- @Complexity scores for each major class
|
||||||
|
- @Risk annotations on unsafe patterns (raw pointers, void casts)
|
||||||
|
- @Owner annotations on unique_ptr/shared_ptr usage
|
||||||
|
- @Intent annotations where function names are descriptive enough
|
||||||
|
- @TailCall on recursive visitors
|
||||||
|
- Validate: inferred annotations are actually correct for our code
|
||||||
|
|
||||||
|
### Step 495: Transpile Whetstone Modules (12 tests)
|
||||||
|
- Pick 3 self-contained Whetstone headers and transpile:
|
||||||
|
- `AnnotationConflictExtended.h` → Python (structs → classes, simple mapping)
|
||||||
|
- `ResponseBudget.h` → Rust (ownership maps cleanly)
|
||||||
|
- `Icons.h` → Java (constants → enum class)
|
||||||
|
- Verify: transpiled code is structurally correct, annotations preserved
|
||||||
|
- Measure: translation confidence scores, how much was idiomatic vs literal
|
||||||
|
|
||||||
|
### Step 496: Self-Annotated Workflow (12 tests)
|
||||||
|
- Create a workflow for Whetstone's own code modernization:
|
||||||
|
- Target: modernize AnnotationValidator.h (add the validation rules it's missing)
|
||||||
|
- Skeleton: functions for each new validation rule
|
||||||
|
- Route: simple rules → deterministic, complex rules → LLM, new diagnostic codes → human review
|
||||||
|
- Orchestrate: verify deterministic rules generate valid code
|
||||||
|
- This is Whetstone improving itself through its own workflow system
|
||||||
|
|
||||||
|
### Step 497: Self-Hosting Metrics Report (12 tests)
|
||||||
|
- Comprehensive self-hosting report:
|
||||||
|
- Parse coverage: X/Y files, Z% of constructs
|
||||||
|
- Annotation accuracy: how many inferred annotations are correct
|
||||||
|
- Transpilation quality: confidence scores across target languages
|
||||||
|
- Workflow viability: can we actually use the system to develop itself
|
||||||
|
- Gap analysis: what's still missing for 100% self-hosting
|
||||||
|
- Comparison: metrics vs Sprint 16's initial self-hosting attempt (progress delta)
|
||||||
|
|
||||||
|
### Step 498: Phase 25a Integration (8 tests)
|
||||||
|
- Full self-hosting pipeline: parse → annotate → transpile → workflow → validate
|
||||||
|
- Metrics show 95%+ parse coverage
|
||||||
|
- At least 3 headers transpile to other languages
|
||||||
|
- Self-improvement workflow runs and produces valid output
|
||||||
|
- This is the thesis proven: Whetstone annotates and works on itself
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 25b: End-to-End Scenarios (Steps 499-503)
|
||||||
|
|
||||||
|
### Step 499: Scenario — Greenfield Project (12 tests)
|
||||||
|
- Full journey: "Build a URL shortener with user accounts"
|
||||||
|
- Problem decomposition → tech stack (Python backend, PostgreSQL, TypeScript frontend)
|
||||||
|
- Skeleton generation → annotated modules
|
||||||
|
- Workflow creation → orchestration
|
||||||
|
- Deterministic tasks auto-completed (CRUD endpoints, model definitions)
|
||||||
|
- LLM tasks prepared with context bundles
|
||||||
|
- Human review items surfaced for auth logic
|
||||||
|
- Security scan on generated code
|
||||||
|
- Final project structure on disk
|
||||||
|
|
||||||
|
### Step 500: Scenario — Legacy Modernization (12 tests)
|
||||||
|
- Full journey: modernize a C codebase
|
||||||
|
- Ingest legacy C code → safety audit → modernization suggestions
|
||||||
|
- Migration plan → Rust as target language
|
||||||
|
- Workflow with mixed routing: simple functions deterministic, complex logic LLM
|
||||||
|
- API boundary preservation verified
|
||||||
|
- Security annotations strengthened (C manual memory → Rust ownership)
|
||||||
|
- Migration tests generated
|
||||||
|
|
||||||
|
### Step 501: Scenario — Cross-Language Port (12 tests)
|
||||||
|
- Full journey: port a Python ML pipeline to Rust for performance
|
||||||
|
- Parse Python source → annotate → identify hot loops
|
||||||
|
- Semantic transpilation: algorithm-level translation
|
||||||
|
- Memory model translation: Python GC → Rust ownership
|
||||||
|
- Concurrency translation: Python asyncio → Rust tokio patterns
|
||||||
|
- Confidence scoring across translation
|
||||||
|
- Human review for low-confidence translations
|
||||||
|
- Equivalence assertions generated
|
||||||
|
|
||||||
|
### Step 502: Scenario — Multi-Model Orchestration (12 tests)
|
||||||
|
- Full journey: a 20-function project using all worker types
|
||||||
|
- 5 deterministic tasks (getters, setters, constructors) → auto-complete
|
||||||
|
- 5 template tasks (CRUD, simple transforms) → auto-complete
|
||||||
|
- 5 SLM tasks (straightforward logic) → prepared with narrow context
|
||||||
|
- 3 LLM tasks (complex logic) → prepared with wide context
|
||||||
|
- 2 human tasks (architectural decisions) → flagged for review
|
||||||
|
- Progress tracking throughout
|
||||||
|
- Cost estimation vs actual comparison
|
||||||
|
- All review gates exercised
|
||||||
|
|
||||||
|
### Step 503: Phase 25b Integration (8 tests)
|
||||||
|
- All 4 scenarios run without errors
|
||||||
|
- Each scenario exercises a different workflow path
|
||||||
|
- Cost tracking accurate across scenarios
|
||||||
|
- Security scan produces findings on generated code
|
||||||
|
- Event stream captures full journey for each scenario
|
||||||
|
- No regressions across the entire test suite (steps 245-503)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phase 25c: Polish + Release Prep (Steps 504-508)
|
||||||
|
|
||||||
|
### Step 504: Performance Optimization (12 tests)
|
||||||
|
- Profile the full pipeline on large projects (50+ files, 500+ functions)
|
||||||
|
- Optimize hot paths:
|
||||||
|
- AST serialization/deserialization
|
||||||
|
- Annotation inference (batch processing)
|
||||||
|
- Context assembly (caching for shared project context)
|
||||||
|
- Compact AST generation
|
||||||
|
- Target: <100ms per function for parse + annotate + route
|
||||||
|
- Memory: no memory leaks in headless mode under sustained use
|
||||||
|
|
||||||
|
### Step 505: MCP Tool Documentation (12 tests)
|
||||||
|
- Every MCP tool has:
|
||||||
|
- Clear description (what it does, when to use it)
|
||||||
|
- Input schema with examples
|
||||||
|
- Output schema with field descriptions
|
||||||
|
- Error codes and their meanings
|
||||||
|
- Tool categories documented: AST, Diagnostics, Workflow, Routing, Security, etc.
|
||||||
|
- Generate tool documentation as a resource the MCP client can read
|
||||||
|
|
||||||
|
### Step 506: Edge Case Cleanup (12 tests)
|
||||||
|
- Handle gracefully:
|
||||||
|
- Empty files, binary files, extremely large files
|
||||||
|
- Malformed annotations, circular dependencies
|
||||||
|
- Concurrent workflow modifications
|
||||||
|
- Interrupted workflows (save + resume)
|
||||||
|
- Unknown language (fallback to plain text)
|
||||||
|
- MCP protocol errors (malformed requests)
|
||||||
|
- Each edge case produces a meaningful error, not a crash
|
||||||
|
|
||||||
|
### Step 507: Full Test Suite Regression (12 tests)
|
||||||
|
- Run the complete test suite: steps 245-506
|
||||||
|
- Expected: 5000+ tests all passing
|
||||||
|
- No flaky tests (run 3 times, all pass)
|
||||||
|
- Performance benchmark: full suite completes in <60 seconds
|
||||||
|
- Memory baseline: no leaks across full suite
|
||||||
|
|
||||||
|
### Step 508: Sprint 25 Summary + Post-25 Readiness (8 tests)
|
||||||
|
- Final metrics:
|
||||||
|
- 19+ language parsers and generators
|
||||||
|
- 90+ MCP tools
|
||||||
|
- 80+ annotation types across 10 subjects
|
||||||
|
- 500+ steps, 5000+ tests
|
||||||
|
- Self-hosting at 95%+ coverage
|
||||||
|
- 4 end-to-end scenarios validated
|
||||||
|
- Post-25 readiness:
|
||||||
|
- Event stream data accumulated (ready for training data harvest)
|
||||||
|
- Workflow decisions logged (routing outcomes, review decisions)
|
||||||
|
- Transpilation pairs logged (source → target with confidence)
|
||||||
|
- System ready for Sprint 26: Training Data Harvest + Fine-Tuning Pipeline
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step & Test Summary
|
||||||
|
|
||||||
|
| Phase | Steps | Tests | Theme |
|
||||||
|
|-------|-------|-------|-------|
|
||||||
|
| 25a | 493-498 | 68 | Self-hosting: parse, annotate, transpile, workflow on own code |
|
||||||
|
| 25b | 499-503 | 56 | End-to-end scenarios: greenfield, legacy, port, multi-model |
|
||||||
|
| 25c | 504-508 | 56 | Performance, docs, edge cases, regression, release readiness |
|
||||||
|
| **Total** | **493-508** | **~180** | 16 steps |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## The Numbers
|
||||||
|
|
||||||
|
**Across Sprints 9-25:**
|
||||||
|
- **Steps:** ~508 (245-508)
|
||||||
|
- **Tests:** ~5000+
|
||||||
|
- **Languages:** 19+ parsers and generators
|
||||||
|
- **MCP Tools:** 90+
|
||||||
|
- **Annotation Types:** 80+ across 10 subjects
|
||||||
|
- **New AST Node Types:** 30+
|
||||||
|
- **Sprint Plans:** 17 detailed plan documents
|
||||||
|
|
||||||
|
**The system, completed:**
|
||||||
|
- Universal AST with semantic annotations
|
||||||
|
- Annotation-driven workflow orchestration (human/AI routing)
|
||||||
|
- Cross-language semantic transpilation
|
||||||
|
- Professional GUI with workflow visualization
|
||||||
|
- MCP-first agent integration (model-agnostic)
|
||||||
|
- Legacy code ingestion and modernization
|
||||||
|
- Security-first with OWASP detection and secure-by-default generation
|
||||||
|
- Self-hosting: the tool understands and works on itself
|
||||||
|
- Ready for training data harvest from real workflow decisions
|
||||||
Reference in New Issue
Block a user