Files
FESADev/phases/1-linear-static-mitc4/step3.md
T
2026-05-01 02:40:19 +09:00

2.2 KiB

Step 3: parser-foundation

Sprint Contract

Objective

Implement the Abaqus input lexical/keyword parser foundation plus Factory + Registry plumbing for Phase 1 objects.

Required Reading

  • /AGENTS.md
  • /PROGRESS.md
  • /PLAN.md
  • /docs/README.md
  • /docs/HARNESS_ENGINEERING.md
  • /docs/ARCHITECTURE.md
  • /docs/ADR.md
  • /docs/ABAQUS_INPUT_SUBSET.md
  • /phases/1-linear-static-mitc4/step2.md

Scope

  • Tokenize Abaqus keyword lines, parameters, data lines, comments, continuations if documented, and source locations.
  • Add a parser result shape that returns Domain data or diagnostics.
  • Add keyword Factory + Registry structure without completing every Phase 1 keyword.
  • Add smoke parsing for a tiny supported subset such as *Node and *Element, TYPE=S4.

Allowed Files

  • include/**
  • src/**
  • tests/**
  • PLAN.md
  • PROGRESS.md
  • phases/1-linear-static-mitc4/index.json

Explicit Non-Goals

  • Do not complete all Phase 1 Abaqus keywords in this step.
  • Do not silently accept unsupported keywords or unknown parameters.
  • Do not parse quad_01.inp as a supported Phase 1 case.

Tests To Write First

  • Lexer tests for keyword names, parameters, comments, blank lines, and source locations.
  • Registry tests for supported and unsupported keyword dispatch.
  • Parser smoke tests for minimal nodes and S4 elements.

Reference Artifacts

  • None. Existing references/quad_01.inp is not a Phase 1 parser acceptance case.

Acceptance Commands

python scripts/validate_workspace.py

Evaluator Checklist

  • Unsupported input produces diagnostics with line context.
  • Factory + Registry is present and parser logic is not hardwired into Domain constructors.
  • Parser tests do not expand Phase 1 support beyond docs/ABAQUS_INPUT_SUBSET.md.

Handoff Requirements

  • Record progress and validation in PROGRESS.md.
  • Update PLAN.md if parser-scope risks change.
  • Update the matching phase index entry: use completed with a one-line summary, or blocked with blocked_reason, or error with error_message.

Verification

  1. Run the acceptance command.
  2. Inspect parser tests for line-numbered diagnostic coverage.

Do Not

  • Do not normalize away Abaqus labels that later diagnostics or references need.