Files

29 KiB

Implementation Tasks: Core AST Structure (Feature 001)

Feature: Core AST Structure for SemAnno Phase: Planning Complete → Ready for Phase 1 Execution Total Tasks: 26 Estimated Duration: 42-53 hours


Legend

  • [PHASE]: 0 (Research), 1 (Structure), 2 (Editors), 3 (Testing)
  • [PRIORITY]: P0 (blocker), P1 (must-have), P2 (should-have), P3 (nice-to-have)
  • [DURATION]: Estimated hours
  • [DEPENDS]: Task IDs that must complete first

Phase 0: Research & Exploration

RESEARCH-1: MPS Editor Design Patterns for Projections

Priority: P1 | Duration: 2h | Depends: None Status: Pending

Objective: Research how MPS languages support multiple projections (e.g., Python and C++ views on same AST).

Tasks:

  • Read MPS Language Design documentation on projection cells
  • Find 2-3 examples in jetbrains.mps.lang.* languages (e.g., editor, structure)
  • Document patterns: how are editors structured to allow runtime projection switching?
  • Create summary: "Editor Design Patterns" with code examples

Definition of Done:

  • Summary document created
  • At least 2 patterns identified and documented
  • Phase 1 editor design can proceed using these patterns

RESEARCH-2: Nested Type Composition in MPS

Priority: P1 | Duration: 2h | Depends: None Status: Pending

Objective: Verify that deeply nested type references don't cause circular dependencies or serialization issues.

Tasks:

  • Research MPS reference composition patterns
  • Test if Type → Type references can create lists[map[string, int]] without circular deps
  • Document: How to prevent cycles, how to serialize nested structures
  • Prepare example: 3-4 levels of nesting (list[map[string, optional[int]]])

Definition of Done:

  • Patterns documented
  • Circular reference prevention strategy clear
  • Example type hierarchy designed

RESEARCH-3: Annotation Attachment Patterns

Priority: P1 | Duration: 2h | Depends: None Status: Pending

Objective: Understand best practices for attaching multiple independent annotations to a single node.

Tasks:

  • Research multi-valued references in MPS
  • Study how jetbrains.mps.lang.core.structure handles attributes/annotations
  • Verify: Can a Function have [DerefStrategy, OptimizationLock, LangSpecific] simultaneously?
  • Document ordering, optional/required logic, removal behavior

Definition of Done:

  • Annotation design pattern documented
  • Multi-valued reference behavior verified
  • Phase 1 structure design can proceed

Phase 1: Core Structure Definition

TASK-1-1: Define Root & Container Concepts

Priority: P0 | Duration: 2h | Depends: None Phase: 1 Status: Pending

Objective: Define Module concept and establish container pattern.

Subtasks:

  1. Create Module concept in SemAnno.structure.mps
    • name: string property
    • annotations: Annotation* reference (multi-valued)
    • variables: Variable* reference (multi-valued)
    • functions: Function* reference (multi-valued)
  2. Verify MPS recognizes all properties and references
  3. Mark concept as "root" in MPS (if applicable)

Definition of Done:

  • Module concept defined and saved
  • MPS structure editor shows concept without errors
  • All 4 features (name property, 3 references) visible in model tree

Review Criteria:

  • Concept name, property names match spec
  • References are multi-valued where appropriate
  • No red errors in MPS

TASK-1-2: Define Function & Parameter Concepts

Priority: P0 | Duration: 3h | Depends: TASK-1-1 Phase: 1 Status: Pending

Objective: Define Function and Parameter concepts with proper signature structure.

Subtasks:

  1. Create Function concept
    • name: string property
    • parameters: Parameter* reference (multi-valued, ordered)
    • returnType: Type reference (single)
    • body: Statement* reference (multi-valued, ordered)
    • annotations: Annotation* reference (multi-valued)
  2. Create Parameter concept
    • name: string property
    • type: Type reference (single)
    • defaultValue: Expression? reference (optional)
  3. Verify Function.parameters and Parameter.type are composable
  4. Test: Create Function, add 2 Parameters with types, set returnType

Definition of Done:

  • Function and Parameter concepts defined
  • Parameter ordering preserved
  • Type references are composable (Type → Type reference works)
  • Can create function with 2 parameters in test model without errors

TASK-1-3: Define Variable Concept

Priority: P0 | Duration: 1h | Depends: TASK-1-1 Phase: 1 Status: Pending

Objective: Define Variable concept for module and local variables.

Subtasks:

  1. Create Variable concept
    • name: string property
    • type: Type reference (single)
    • initializer: Expression? reference (optional)
    • annotations: Annotation* reference (multi-valued)
  2. Ensure Variable can be added to Module.variables
  3. Test: Create Module → add Variable with type and initializer

Definition of Done:

  • Variable concept defined
  • Can be added to Module and function scopes
  • No errors in test model

TASK-1-4: Define All Statement Concepts

Priority: P0 | Duration: 5h | Depends: TASK-1-2 Phase: 1 Status: Pending

Objective: Define abstract Statement parent and 7 concrete statement types.

Subtasks:

  1. Create abstract Statement concept (parent)
  2. Create concrete statement concepts:
    • Block: statements: Statement* (multi-valued)
    • Assignment: target: Expression, value: Expression
    • IfStatement: condition: Expression, thenBranch: Statement*, elseBranch: Statement? (optional)
    • WhileLoop: condition: Expression, body: Statement*
    • ForLoop: iteratorName: string property, iterable: Expression, body: Statement*
    • Return: value: Expression? (optional)
    • ExpressionStatement: expression: Expression
  3. Verify inheritance hierarchy (all inherit from Statement)
  4. Test: Create function → add each statement type to body
  5. Test nesting: Block → Assignment → BinaryOperation expression
  6. Verify statement ordering is preserved

Definition of Done:

  • All 7 concrete statement types defined
  • All inherit from Statement parent
  • Can create function with mixed statement types
  • Nesting works (statements inside blocks, expressions inside statements)
  • No errors in test model

Review Criteria:

  • All statement types from spec are defined
  • Abstract Statement parent established
  • Multi-valued statement references are ordered
  • Optional references (elseBranch, return value) work correctly

TASK-1-5: Define All Expression Concepts

Priority: P0 | Duration: 5h | Depends: TASK-1-4 Phase: 1 Status: Pending

Objective: Define abstract Expression parent and 13 concrete expression types.

Subtasks:

  1. Create abstract Expression concept (parent)
  2. Create concrete expression concepts:
    • BinaryOperation: operator: string, left: Expression, right: Expression
    • UnaryOperation: operator: string, operand: Expression
    • FunctionCall: functionName: string, arguments: Expression* (multi-valued)
    • VariableReference: variableName: string
    • IntegerLiteral: value: integer
    • FloatLiteral: value: float
    • StringLiteral: value: string
    • BooleanLiteral: value: boolean
    • NullLiteral: (no properties)
    • ListLiteral: elements: Expression* (multi-valued)
    • IndexAccess: target: Expression, index: Expression
    • MemberAccess: target: Expression, memberName: string
  3. Verify inheritance hierarchy
  4. Test: Create Assignment with BinaryOperation on right side
  5. Test nesting: FunctionCall → BinaryOperation arguments
  6. Test all literal types can be created

Definition of Done:

  • All 13 concrete expression types defined
  • All inherit from Expression parent
  • Can create complex nested expressions
  • Literals can be created and have correct value types
  • No errors in test model

Review Criteria:

  • All expression types from spec defined
  • Abstract Expression parent established
  • Expression nesting works (expressions contain expressions)
  • Operator strings work as properties
  • Argument lists for FunctionCall are ordered

TASK-1-6: Define All Type Concepts

Priority: P0 | Duration: 4h | Depends: TASK-1-3 Phase: 1 Status: Pending

Objective: Define abstract Type parent and 8 concrete type types with composition support.

Subtasks:

  1. Create abstract Type concept (parent)
  2. Create concrete type concepts:
    • PrimitiveType: kind: enum {int, float, string, bool}
    • ListType: elementType: Type (reference)
    • SetType: elementType: Type (reference)
    • MapType: keyType: Type, valueType: Type
    • TupleType: elementTypes: Type* (multi-valued, ordered)
    • ArrayType: elementType: Type, size: Expression
    • OptionalType: innerType: Type
    • CustomType: typeName: string
  3. Verify Type → Type references are composable
  4. Test: Create type "list[map[string, int]]" by composition
  5. Test: Create type "optional[tuple[int, string, bool]]"
  6. Verify no circular reference issues
  7. Test: Create Variable with complex type, render in editor

Definition of Done:

  • All 8 concrete type types defined
  • Type references are fully composable (ListType.elementType → MapType.keyType → PrimitiveType)
  • Can create complex nested types without errors
  • PrimitiveType enum values work correctly
  • No circular reference issues detected

Review Criteria:

  • All type types from spec defined
  • Type composition works (type → type → type nesting)
  • Enum values for PrimitiveType are: int, float, string, bool
  • ArrayType.size accepts Expression references
  • TupleType elementTypes preserve order

TASK-1-7: Define All Annotation Concepts

Priority: P1 | Duration: 3h | Depends: TASK-1-2, TASK-1-5 Phase: 1 Status: Pending

Objective: Define abstract Annotation parent and 3 concrete annotation types.

Subtasks:

  1. Create abstract Annotation concept (parent, optional for extensibility)
  2. Create concrete annotation concepts:
    • DerefStrategy:
      • strategy: enum {imperative, streamed, batched, content_addressed}
      • derefTime: Expression? (optional)
      • derefLocation: string? (optional)
      • owner: string? (optional)
    • OptimizationLock:
      • lockedBy: string
      • lockReason: string
      • lockLevel: enum {warning, soft, hard}
      • affectedStrategies: string* (multi-valued)
      • timestamp: string
    • LangSpecific:
      • language: enum {python, cpp, rust}
      • idiomType: string
      • rawSyntax: string
      • semanticHint: string? (optional)
      • position: enum {before, after, wrapping}
  3. Verify annotations can be attached to Function.annotations
  4. Test: Create Function with 1 DerefStrategy annotation
  5. Test: Create Variable with 1 LangSpecific annotation
  6. Test: Attach multiple annotations to same node

Definition of Done:

  • All 3 concrete annotation types defined
  • Optional properties work (derefTime, owner, semanticHint)
  • Enum values are correct
  • Can attach annotations to functions and variables
  • Multi-valued affectedStrategies list works
  • No errors in test model

TASK-1-8: Define Constraints & Validation Rules

Priority: P1 | Duration: 2h | Depends: TASK-1-4, TASK-1-5, TASK-1-6 Phase: 1 Status: Pending

Objective: Create SemAnno.constraints.mps with basic validation to prevent invalid structures.

Subtasks:

  1. Create SemAnno.constraints.mps model file
  2. Define constraints:
    • Statements can only appear in Statement* contexts (Block.statements, Function.body, etc.)
    • Expressions can only appear in Expression contexts
    • Types can only appear in Type contexts
    • Statements cannot be direct children of Expression
    • Expressions cannot be direct children of Statement (only in ExpressionStatement)
  3. Add can-be-parent/can-be-child rules to prevent invalid structures
  4. Test: Attempt to place a Statement inside an Expression context → should be blocked by constraint

Definition of Done:

  • SemAnno.constraints.mps created
  • Basic structural constraints defined
  • MPS enforces constraint violations
  • Invalid structures are rejected during creation

TASK-1-9: Create Test Model with Complex AST

Priority: P0 | Duration: 3h | Depends: TASK-1-7 Phase: 1 Status: Pending

Objective: Create SimpleExample.mps demonstrating all concept types.

Subtasks:

  1. Create new SemAnno model file: languages/SemAnno/tests/SimpleExample.mps
  2. Create Module with name "example"
  3. Add 1 Function "sum" with:
    • Parameters: items (list[int]), factor (float)
    • returnType: float
    • Body with 4 statements:
      • ForLoop: iterate items, assign accumulator
      • Assignment: result = accumulator * factor
      • IfStatement: if factor > 0 then return result, else return 0
      • Return: return result
  4. Add 1 Variable: cache (optional[map[string, list[int]]])
  5. Add annotations:
    • DerefStrategy on function (strategy: batched)
    • OptimizationLock on function (locked by "alice", reason "optimization")
    • LangSpecific on variable (language: python, idiomType: "type_hint")
  6. Save and reload model in MPS
  7. Verify no errors, no warnings

Definition of Done:

  • SimpleExample.mps created with all concept types demonstrated
  • Model includes: Module, Function, Parameters, Variable, all Statement types, nested Expressions, nested Types, Annotations
  • Model loads and renders without errors
  • Model serializes and deserializes correctly
  • No red errors in MPS error list

Acceptance Criteria:

  • Module created with name
  • Function with 2 parameters, return type, body
  • Body contains ForLoop, Assignment, IfStatement, Return
  • Variable with complex nested type
  • All annotations attached and visible

Phase 1 Completion Checkpoint

Validation Checklist:

  • All 30+ concepts defined in SemAnno.structure.mps
  • SemAnno.constraints.mps created with validation rules
  • SimpleExample.mps created and loads without errors
  • MPS language rebuild: zero errors, zero warnings
  • All concept names match specification
  • All properties and references match specification

Approval: Ready to proceed to Phase 2 (Editors) only if all checkpoints pass.


Phase 2: Editor Definition

TASK-2-1: Define Module & Function Editors

Priority: P0 | Duration: 3h | Depends: TASK-1-2 Phase: 2 Status: Pending

Objective: Create editor definitions for Module, Function, Parameter concepts.

Subtasks:

  1. Open SemAnno.editor.mps (create if needed)
  2. Define Module editor:
    • Render: "module" (blue keyword), space, name (editable property), newline
    • List functions and variables vertically, indented
  3. Define Function editor:
    • Render: "def" (blue keyword), space, name, "(", parameters comma-separated, ")", space, "->", space, return type, ":", newline
    • Body statements indented vertically
  4. Define Parameter editor:
    • Render: name, ":", space, type reference
  5. Test in MPS:
    • Create Module, add Function, add Parameters
    • Verify rendering matches expected layout
    • Verify indentation works

Definition of Done:

  • Module, Function, Parameter editors defined
  • Editors render with proper syntax highlighting (blue keywords)
  • Indentation works for nested structures
  • Parameters display comma-separated
  • Return type reference is selectable

TASK-2-2: Define All Statement Editors

Priority: P0 | Duration: 5h | Depends: TASK-2-1 Phase: 2 Status: Pending

Objective: Create editor definitions for all 7 statement types.

Subtasks:

  1. Define Block editor:
    • Render statements vertically, indented
  2. Define Assignment editor:
    • Render: target, space, "=", space, value
  3. Define IfStatement editor:
    • Render: "if" (blue), space, condition, ":", newline
    • Then-branch indented
    • Optional "else:" (blue), newline, else-branch indented
  4. Define WhileLoop editor:
    • Render: "while" (blue), space, condition, ":", newline, body indented
  5. Define ForLoop editor:
    • Render: "for" (blue), space, iteratorName, space, "in" (blue), space, iterable, ":", newline, body indented
  6. Define Return editor:
    • Render: "return" (blue), space, optional value expression
  7. Define ExpressionStatement editor:
    • Render: expression
  8. Test: Create function with mixed statements, verify layout

Definition of Done:

  • All 7 statement editors defined
  • Syntax highlighting applied (keywords in blue)
  • Indentation rendered correctly for nested statements
  • Optional branches (else, return value) display when present, hidden when absent

TASK-2-3: Define All Expression Editors

Priority: P0 | Duration: 4h | Depends: TASK-2-2 Phase: 2 Status: Pending

Objective: Create editor definitions for all 13 expression types.

Subtasks:

  1. Define BinaryOperation editor:
    • Render: left, space, operator, space, right
  2. Define UnaryOperation editor:
    • Render: operator, operand
  3. Define FunctionCall editor:
    • Render: functionName, "(", arguments comma-separated, ")"
  4. Define VariableReference editor:
    • Render: variableName
  5. Define Literal editors (5 types):
    • IntegerLiteral: value (number color - magenta)
    • FloatLiteral: value (number color - magenta)
    • StringLiteral: '"', value (string color - green), '"'
    • BooleanLiteral: value (keyword color - blue)
    • NullLiteral: "None" or "null" (keyword color - blue)
  6. Define ListLiteral editor:
    • Render: "[", elements comma-separated, "]"
  7. Define IndexAccess editor:
    • Render: target, "[", index, "]"
  8. Define MemberAccess editor:
    • Render: target, ".", memberName
  9. Test: Create complex nested expressions, verify rendering

Definition of Done:

  • All 13 expression editors defined
  • Syntax coloring applied (keywords blue, strings green, numbers magenta)
  • Operators and operands display correctly
  • Nested expressions render with proper precedence indication
  • Literals render with appropriate colors

TASK-2-4: Define All Type Editors

Priority: P0 | Duration: 3h | Depends: TASK-2-3 Phase: 2 Status: Pending

Objective: Create editor definitions for all 8 type types.

Subtasks:

  1. Define PrimitiveType editor:
    • Render: kind enum value (int, float, string, bool)
  2. Define ListType editor:
    • Render: "list" (blue), "[", elementType, "]"
  3. Define SetType editor:
    • Render: "set" (blue), "[", elementType, "]"
  4. Define MapType editor:
    • Render: "map" (blue), "[", keyType, ",", space, valueType, "]"
  5. Define TupleType editor:
    • Render: "tuple" (blue), "[", elementTypes comma-separated, "]"
  6. Define ArrayType editor:
    • Render: elementType, "[", size expression, "]"
  7. Define OptionalType editor:
    • Render: innerType, "?"
  8. Define CustomType editor:
    • Render: typeName
  9. Test: Create complex nested types (list[map[string, optional[int]]]), verify rendering

Definition of Done:

  • All 8 type editors defined
  • Type keywords rendered in blue
  • Nested types render naturally (list[map[...]])
  • Type references are selectable
  • Composition works (can select complex types)

TASK-2-5: Define Annotation Editors

Priority: P1 | Duration: 2h | Depends: TASK-2-4 Phase: 2 Status: Pending

Objective: Create editor definitions for all 3 annotation types.

Subtasks:

  1. Define DerefStrategy editor:
    • Render: "@deref" (gray), "(", strategy enum, optional properties as sub-lines, ")"
  2. Define OptimizationLock editor:
    • Render: "@lock" (gray), "(", properties comma-separated, ")"
    • Include: lockedBy, lockReason, lockLevel, affectedStrategies, timestamp
  3. Define LangSpecific editor:
    • Render: "@lang_specific" (gray), "(", language, ",", idiomType, ",", rawSyntax, optional properties, ")"
  4. Test: Create function with each annotation type, verify rendering near function

Definition of Done:

  • All 3 annotation editors defined
  • Annotation keywords in gray/italic (distinguishes from code)
  • Enum values display correctly
  • Optional properties hidden when absent
  • Annotations render attached to parent node

TASK-2-6: Editor Testing & Refinement in MPS

Priority: P0 | Duration: 3h | Depends: TASK-2-5 Phase: 2 Status: Pending

Objective: Rebuild language in MPS, test editors interactively, fix issues.

Subtasks:

  1. Rebuild SemAnno language in MPS
    • Check for cell model errors
    • Verify no "missing editor" errors
  2. Open SimpleExample.mps and manually verify:
    • Module renders correctly (name, lists functions/variables)
    • Function renders with "def", name, parameters, return type, body
    • All statements render with proper indentation and syntax highlighting
    • All expressions render correctly (operators, operands, nesting)
    • All types render correctly (composition, nesting)
    • Annotations render near their nodes
  3. Test interactive editing:
    • Create new Module, add Function by adding statements
    • Edit statement properties (if condition, loop iterator, etc.)
    • Edit expression operators and operands
    • Change types by selecting from dropdown
    • Navigate between references (e.g., click parameter type → jump to Variable definition)
  4. Fix any rendering issues:
    • Indentation not working → adjust cell layout
    • Colors not applying → verify color codes
    • References not selectable → verify reference cell type
  5. Document any workarounds or editor-specific behavior

Definition of Done:

  • Language rebuilds with zero errors, zero warnings
  • All editors render without errors
  • Interactive editing works (properties editable, references selectable)
  • All syntax highlighting and indentation work correctly
  • SimpleExample.mps renders as designed

Acceptance Criteria:

  • Language rebuild: zero errors
  • All concepts have working editors
  • Indentation works for nested structures
  • Syntax highlighting works (blue keywords, green strings, magenta numbers)
  • Properties can be edited inline
  • References are selectable

Phase 2 Completion Checkpoint

Validation Checklist:

  • All concept editors defined in SemAnno.editor.mps
  • MPS language rebuild: zero errors, zero warnings
  • SimpleExample.mps renders without editor errors
  • Manual AST creation works (can add statements, expressions, types)
  • Syntax highlighting and indentation correct
  • All references are selectable and navigable

Approval: Ready to proceed to Phase 3 (Testing) only if all checkpoints pass.


Phase 3: Integration & Testing

TASK-3-1: Create Extended Test Models

Priority: P1 | Duration: 3h | Depends: TASK-2-6 Phase: 3 Status: Pending

Objective: Create 3-5 test models demonstrating various AST structures.

Subtasks:

  1. Create SimpleFunction.mps: Basic function (no loops, minimal types)
    • Function: greet(name: string) -> string
    • Body: Return StringLiteral
  2. Create ComplexFunction.mps: Nested control flow
    • Function with ForLoop → IfStatement → BinaryOperation
    • Demonstrates statement nesting
  3. Create NestedTypes.mps: Complex type structures
    • Variables with types: list[map[string, optional[int]]], tuple[int, string, bool]
    • Demonstrates type composition
  4. Create WithAnnotations.mps: Full example with annotations
    • Function with DerefStrategy, OptimizationLock, LangSpecific
    • Variables with annotations
    • Demonstrates annotation attachment
  5. Save all models and verify load without errors

Definition of Done:

  • 5 test models created
  • Each demonstrates different AST features
  • All load and render without errors
  • Each model documents its purpose in comments (if MPS supports)

TASK-3-2: Test Model Serialization Round-Trips

Priority: P0 | Duration: 2h | Depends: TASK-3-1 Phase: 3 Status: Pending

Objective: Verify models persist correctly and don't corrupt on save/reload.

Subtasks:

  1. For each test model:
    • Save model to disk (automatic via MPS)
    • Close MPS completely
    • Reopen MPS and reload project
    • Reload each test model
    • Verify no errors, warnings, or corrupted nodes
    • Verify content matches what was saved
  2. Test model properties:
    • All string properties preserved correctly
    • All enum values preserved
    • All references intact (no broken links)
    • Statement and type ordering preserved
  3. Document any serialization quirks or issues found

Definition of Done:

  • All test models round-trip successfully (save → close → reopen → load)
  • No corruption or data loss detected
  • Content and structure verified after reload

TASK-3-3: Quality & Correctness Verification

Priority: P0 | Duration: 2h | Depends: TASK-3-2 Phase: 3 Status: Pending

Objective: Run comprehensive checks to ensure language quality.

Subtasks:

  1. Rebuild SemAnno language in MPS:
    • Check for zero errors, zero warnings
    • Verify all concept definitions are complete
    • Verify all editor definitions are complete
  2. Run MPS consistency checks on all test models:
    • Check for dangling references
    • Check for orphaned nodes
    • Verify hierarchy is valid
  3. Test constraint enforcement:
    • Attempt to create invalid structure (e.g., Statement as Expression)
    • Verify constraint blocks it
  4. Document findings: Are there any edge cases or limitations?

Definition of Done:

  • Language rebuild: zero errors, zero warnings
  • All test models pass consistency checks
  • Constraints work as designed
  • No unresolved issues

TASK-3-4: Write Quickstart Guide

Priority: P1 | Duration: 2h | Depends: TASK-3-3 Phase: 3 Status: Pending

Objective: Document how to create AST in SemAnno for future users.

Deliverable: languages/SemAnno/QUICKSTART.md

Contents:

  1. Overview: What is SemAnno, what can you do with it
  2. Step-by-step guide: Create first Module
    • Create new model file
    • Add Module concept
    • Set module name
  3. Create first Function
    • Add Function to Module.functions
    • Set function name, return type
    • Add parameters
  4. Create statements and expressions
    • Add statements to function body
    • Show examples: ForLoop, Assignment, Return
    • Show expression examples: BinaryOperation, FunctionCall
  5. Work with types
    • Create primitive type
    • Create nested type (list[map[...]])
    • Show how types compose
  6. Add annotations
    • Attach DerefStrategy to function
    • Attach OptimizationLock to variable
  7. Tips & tricks
    • How to navigate references
    • How to edit properties
    • Keyboard shortcuts (if any)
  8. Examples section
    • Link to test models (SimpleFunction.mps, ComplexFunction.mps, etc.)
    • Show rendered output for each

Definition of Done:

  • QUICKSTART.md created
  • All major workflows documented
  • Step-by-step instructions clear
  • Examples provided with screenshots or ASCII renderings
  • No unexplained concepts

TASK-3-5: Prepare for Phase 2 Features (Python/C++ Projections)

Priority: P2 | Duration: 1h | Depends: TASK-3-4 Phase: 3 Status: Pending

Objective: Document how Phase 2 features will extend core AST.

Deliverable: languages/SemAnno/NEXT_PHASES.md

Contents:

  1. Overview: What comes next (Python Projection, C++ Projection, Tree-sitter Import)
  2. Python Projection (Week 3-4):
    • Will extend editors to show Python-syntax rendering
    • Will add Python text generator
    • Will not change core AST structure
    • Dependencies: This feature (core AST structure)
  3. C++ Projection (Week 5-6):
    • Will extend editors to show C++-syntax rendering
    • Will add C++ text generator
    • Will add deref strategy translation
    • Dependencies: This feature + Python Projection
  4. Tree-sitter Import (Week 7-8):
    • Will add behavior model (SemAnno.behavior.mps) with import logic
    • Will integrate tree-sitter-python and tree-sitter-cpp
    • Will parse source files into AST
    • Dependencies: This feature + both projections
  5. Warning System (Week 9-10):
    • Will add OptimizationLock enforcement logic
    • Will add warning UI to editors
    • Will add provenance tracking
    • Dependencies: All previous features
  6. Blockers or constraints for next phases (if any)

Definition of Done:

  • NEXT_PHASES.md created
  • Clear roadmap for future features
  • Dependencies documented
  • No surprises in Phase 2+ implementation

Phase 3 Completion Checkpoint

Validation Checklist:

  • 5 test models created (SimpleFunction, ComplexFunction, NestedTypes, WithAnnotations, etc.)
  • All models load and render without errors
  • Serialization round-trips work (save → close → reopen)
  • Language rebuild: zero errors, zero warnings
  • Consistency checks pass
  • Constraints work as designed
  • Quickstart guide complete and clear
  • NEXT_PHASES.md prepared

Approval: Feature 001 (Core AST Structure) is COMPLETE and ready for merge to parent branch.


Summary

Total Tasks: 26 Phases: 3 (Research, Implementation, Testing) Estimated Duration: 42-53 hours Status: Ready for execution

Next Step: Begin Phase 1 (TASK-1-1) with core structure definition.


Approval Signature

Once all tasks are complete and checkpoints pass:

Feature: 001 - Core AST Structure
Status: ✅ COMPLETE
Merged to: sprint-1-ast-redesign (parent branch)
Timestamp: [Completion date]