Skip to content

feat: Phase 0 contract extraction from Next.js app code - #8

Merged
mikeylong merged 3 commits into
mainfrom
feat/phase-0-generate-contract
Feb 5, 2026
Merged

mikeylong merged 3 commits into
mainfrom
feat/phase-0-generate-contract

Conversation

@mikeylong

Copy link
Copy Markdown
Collaborator

Summary

Add interfacectl generate-contract to extract a deterministic contract from a Next.js app. Extraction only; no enforcement.

Changes

  • packages/interfacectl-extractor (new): extractContractFromNextApp() for routes, hasShell, designSystemComponents, authAware. Deterministic output, no network.
  • interfacectl generate-contract command with --app-root, --surface, --out, --report-out.
  • Optional x_extracted in contract schema (no validation semantics change).
  • Phase 0 extraction guardrails doc: no heavy AST; filesystem + regex for determinism, debuggability, minimal deps.
  • README and API.md updates.

Validation

  • pnpm run build ✓
  • pnpm --filter @surfaces/interfacectl-extractor run test ✓ (4 tests)
  • Generated contract passes schema validation before write.

Made with Cursor

mikeylong and others added 3 commits February 4, 2026 15:52
…ontract-baseline

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add packages/interfacectl-extractor: extractContractFromNextApp() for routes,
  hasShell, designSystemComponents, authAware. Deterministic output, no network.
- Add interfacectl generate-contract command with --app-root, --surface, --out,
  --report-out. Validates generated contract against schema before writing.
- Add optional x_extracted to contract schema (no validation semantics change).
- Update README and API.md with generate-contract and Phase 0 scope.

Extraction only; no enforcement.

Co-authored-by: Cursor <cursoragent@cursor.com>
- Add docs/plans/phase-0-extraction-guardrails.md: why we avoid Babel/AST,
  what we extract vs omit, trigger conditions for adding AST later
- Reference guardrails in README and API.md generate-contract sections
- Phase-scoped, revisitable; does not block later phases

Co-authored-by: Cursor <cursoragent@cursor.com>
@mikeylong
mikeylong merged commit 4bf23c2 into main Feb 5, 2026
@mikeylong
mikeylong deleted the feat/phase-0-generate-contract branch February 5, 2026 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant