Implementation Plan: Simple App - Base Uncontainerized App
Branch: 001-baseline-uncontainerized-parity | Date: 2026-03-28 | Spec: /specs/001-baseline-uncontainerized-parity/spec.md
Input: Feature specification from /specs/001-baseline-uncontainerized-parity/spec.md
Summaryβ
Capture and enforce TraderX baseline runtime behavior in canonical Spec Kit feature artifacts at repo root, while preserving current generated runtime behavior and compatibility contracts.
Generation Approachβ
Spec Kit is the requirements/planning workflow and does not impose a single code-emission engine.
For TraderX baseline parity, generation uses this chain:
- Plain-English FR/user-story requirements define behavior.
- Technical NFRs define implementation shape (language/framework/ports/env/contracts/dependencies).
- Component manifests compile deterministic generation inputs.
- Synthesis generators emit code from manifests and templates.
- Conformance + semantic compare gates verify closeness to approved baseline.
Technical Contextβ
Language/Version: Java 21 (Spring Boot services), TypeScript/Node.js (Nest + Socket.IO + Angular), C# (.NET 9), SQL (H2)
Primary Dependencies: Spring Boot, Gradle, NestJS, Socket.IO, ASP.NET Core, Angular, H2
Storage: H2 over TCP/PG/Web ports
Testing: Existing overlay smoke scripts in scripts/*.sh
Target Platform: Local developer workstation (macOS/Linux), pre-containerized process runtime
Project Type: Distributed multi-service web application
Performance Goals: Functional parity and deterministic startup/health behavior over raw throughput
Constraints: Contract compatibility, CORS in pre-ingress mode, stable port mapping, no hidden hydration dependency
Scale/Scope: 9 baseline processes/services + Angular UI
Constitution Checkβ
- Pass: Root-level feature-scoped spec pack created.
- Pass: Contract compatibility explicitly gated.
- Pass: Deterministic startup and evidence-gated verification included.
- Pass: Hydration treated as transitional, not end-state.
Project Structureβ
Documentation (this feature)β
specs/001-baseline-uncontainerized-parity/
βββ spec.md
βββ plan.md
βββ research.md
βββ data-model.md
βββ fidelity-profile.md
βββ quickstart.md
βββ contracts/
β βββ account-service/openapi.yaml
β βββ people-service/openapi.yaml
β βββ position-service/openapi.yaml
β βββ reference-data/openapi.yaml
β βββ trade-processor/openapi.yaml
β βββ trade-service/openapi.yaml
βββ tasks.md
Source Code (repository root)β
pipeline/
scripts/
templates/
catalog/
generated/ # ephemeral output workspace (gitignored)
βββ code/components/
βββ code/target-generated/
βββ manifests/
βββ api-docs/
.specify/
specs/
Structure Decision: Root .specify/ + specs/NNN-* are canonical, with generated runtime/code/docs outputs emitted under root generated/.
Complexity Trackingβ
| Violation | Why Needed | Simpler Alternative Rejected Because |
|---|---|---|
Temporary coexistence of legacy TraderSpec/** notes with root-canonical workflow | Preserve migration history and traceability during cleanup | Immediate hard-delete would remove useful migration evidence before Phase C closure |