feat(slice-7): T3 dataset review lifecycle, job queue, provenance retention
- Add dataset_review.py: registered→pending_review→approved|rejected state machine with RejectionReasonCode enum (no free-text reflection) - Add DatasetStore with fixture pre-approval; job creation gate checks DatasetStore.is_approved() and raises DATASET_NOT_APPROVED (HTTP 403) - Add max_concurrent_running to TrainingJobStore (default 1, FIFO bound) - Add queue_state() to store and GET /training/queue to API - Fix expiry path: sweep-triggered deletion retains provenance on tombstone; explicit deleteArtifact still wipes provenance (Slice-5 contract preserved) - Fix fake_worker: provenance validation failure marks job failed, never silently succeeds - Add dataset registration/review/submit/get HTTP routes to api.py - Remove hardcoded ALLOWED_DATASET_IDS contract check; DatasetStore is now the single approval authority (fixture:synthetic-tiny-v1 pre-approved, no regressions) - Add DATASET_NOT_APPROVED to ErrorCode with public safe message - Add 7-tier T3 tests (66 new tests): unit, integration, e2e, stress, data-integrity, performance, security - Update docs/TRAINING-API-CONTRACT.md with T3 section and Slice 9 fixture shapes
All 102 tests pass; provenance self-check, BOM audit, and gitleaks clean.
Semantic Changes
262 symbols
Files Changed
+8
~7
47 in snapshot
0 comments
muse hub commit comment sha256:fc4c9ad652d1fff3dc508cb6ea02ee710ee6dfc4cb3761291d9900b5e029ea8a --body "your comment"
No comments yet. Be the first to start the discussion.