Mark milestone 0.3 complete in PHASE0_PLAN and POA&M

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chris TonjesandClaude Opus 4.7 committed 2026-09-30 18:30:56 -04:00
1 parent 0501850a9c
commit 0050ad129e
2 files changed
+2 -1

No files matched your search

+1 -1
View File
@@ -73,7 +73,7 @@ Every Phase 0 component maps to a source-RFP requirement or a NIST control. Tabl
|---|---|---|
| **0.1** | Repo scaffold + Docker Compose boots | ✅ **Complete 2026-09-30.** Tree matches ARCH §5.1 (Phase 0 subset), `docker-compose.yml` boots app+Postgres+Adminer, `pytest` green (3 tests), ruff clean, mypy clean. Docker boot verified via config; live end-to-end verification on next docker-enabled workstation. |
| **0.2** | Framework vendor-in | ✅ **Complete 2026-09-30.** OWC framework (base, bulk, crud, pagination, router, version_history) + security (models, rbac) + audit (models, service) + users (models) + auth stub vendored with owc→ypms renames. YPMS-specific `framework/pii_audit.py` added on top. Pagination bug in upstream fixed here (peek-ahead cursor was silently dropping rows). 26 tests passing, 93.10% coverage. Migration `0002_framework_tables.py` creates the shared tables. |
| **0.3** | Auth + JWT + assurance_level | `POST /auth/login` returns a JWT with `sub`, `iat`, `exp`, `iam.assurance_level`, `roles` claims. `get_current_user` dep verifies. Local password auth uses pbkdf2_sha256. |
| **0.3** | Auth + JWT + assurance_level | ✅ **Complete 2026-09-30.** `POST /auth/login` (OAuth2 form) returns access + refresh JWTs; access token carries `sub`, `uid`, `roles`, `iam.assurance_level`, `mfa_verified`, `iat`, `exp`, `type`. `get_current_user` verifies and rejects refresh tokens. `/auth/refresh`, `/auth/me`, `/auth/change-password` (≥12 char floor) also shipped. Login lockout after 5 IP-scoped failed attempts / 15 min per NIST AC-7. 43 tests, 93.47% coverage. |
| **0.4** | RBAC seed loaded | `src/ypms/seed/permissions_matrix.json` loaded at startup; `can(user, action, entity)` returns correct decisions per matrix; `DOES_SYSTEM_ADMIN` bypasses. Seed round-trip test passes. |
| **0.5** | Registrant vertical slice | `Registrant` model + schemas + router + migration + permissions + tests. CRUD works end-to-end; SSN masked in serializer output; `@audit_read("pii_access")` fires on GET; every state change emits audit row. Coverage doc at `docs/coverage/registrant.md`. |
| **0.6** | 501-stub routers for remaining entities | Every entity in ARCH §6.1 (except Registrant, User, Role, Permission, AuditRow) has a router registered in `main.py` that returns 501 while still firing RBAC + audit. Test asserts RBAC decision and audit emission for each. |