Skip to content

Ed-Fi Implementation Usage Profile — POC (Tracks A + B)#1

Draft
touchdownllc wants to merge 2 commits into
mainfrom
claude/edfi-profile-poc-cfdvC
Draft

Ed-Fi Implementation Usage Profile — POC (Tracks A + B)#1
touchdownllc wants to merge 2 commits into
mainfrom
claude/edfi-profile-poc-cfdvC

Conversation

@touchdownllc

Copy link
Copy Markdown
Owner

Ed-Fi Implementation Usage Profile — POC

Two complementary tools that let an Ed-Fi implementer describe which resources and elements of the ODS/API are actually in use, converging on one profile format and one shared validation core. The canonical model/OpenAPI doc is never mutated — usage lives in a sidecar profile.

Note: the repository was empty at session start, so an empty main was created as the PR base (per your choice) and the feature branch rebased onto it — the diff below is the entire POC.

Track A — generator pipeline

  • edfi-profile-core — shared model, YAML parser/serializer (deterministic, idempotent round-trip), OpenAPI SpecIndex, and validator. The single source of truth for profile semantics.
  • metaed-plugin-edfi-implementation-profile — three generators, shaped as a MetaEd plugin:
    • Overlay (overlay.yaml) — OpenAPI Overlay 1.0, purely additive x-edfi-usage blocks.
    • Stripped spec (openapi-stripped.yaml) — complete, valid OpenAPI 3.0: removes not-implemented paths and not-populated properties, fixes required, attaches x-edfi-usage, augments descriptions for Swagger UI.
    • Coverage report (coverage.json + coverage.md).
  • edfi-profile-cligenerate / validate; the stripped spec is verified against OpenAPI 3.0 with swagger-parser (hard acceptance criterion).

Track B — Profile Studio

  • edfi-profile-studio — React + Vite SPA (no backend). Load a Swagger spec (bundled sample / URL / upload), mark up resources & properties via clickable widgets, live validation, import/export profile YAML. Vite aliases edfi-profile-core to its TS source so the studio and plugin share one validation core — no drift.

Worked example

examples/sample-lea/ — Sample LEA profile covering all five usage statuses, a self-contained curated Ed-Fi 5.2 base spec, and golden output files. ./demo.sh runs the full pipeline.

Tests — 36 passing across node + jsdom projects

Parser round-trip, validator rules (all four error classes), spec-index resolution, golden-file diffs, OpenAPI round-trip validation, studio store round-trip (load → mark up → export → re-parse + validate), and a UsagePicker component test.

Docs

README.md, plus docs/: profile-format, extension-conventions, studio-walkthrough, design-rationale (incl. relationship to Ed-Fi Profiles and the AI/agent angle).

Remaining manual step

The studio walkthrough has placeholders for screenshots/GIF — the build is verified; only the image capture (running the dev server in a browser) is left as a manual step.

https://claude.ai/code/session_01J5FeYLPp9Mi9ZYxD3pv87T


Generated by Claude Code

Scaffold the monorepo and implement Track A of the Ed-Fi Implementation
Usage Profile POC:

- edfi-profile-core: shared model, YAML parser/serializer, OpenAPI spec
  index, and validator — the single source of truth for profile semantics.
- metaed-plugin-edfi-implementation-profile: overlay, stripped-spec, and
  coverage-report generators (shaped as a MetaEd plugin).
- edfi-profile-cli: generate/validate commands; stripped spec is verified
  against OpenAPI 3.0 via swagger-parser.
- Sample LEA worked example with pinned base spec and golden output files.
- 28 passing tests: parser round-trip, validator rules, spec index,
  golden-file diffs, and OpenAPI round-trip validation.
Add Track B (browser authoring tool) and project documentation:

- edfi-profile-studio: React + Vite SPA that loads a Swagger spec, marks up
  resources/properties via clickable widgets, validates live against the
  shared core, imports/exports profile YAML, and bundles the Ed-Fi 5.2
  sample. Vite aliases edfi-profile-core to its TS source so the studio and
  plugin share one validation core with no drift.
- Studio tests: UsagePicker component test (jsdom) and a store round-trip
  integration test (load spec -> mark up -> export -> re-parse + validate).
- jest multi-project config (node + jsdom).
- README, demo.sh, and docs: profile-format, extension-conventions,
  studio-walkthrough, design-rationale (incl. relationship to Ed-Fi Profiles
  and the AI/agent angle).

Full suite: 36 tests green across both projects.
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