docs(06.2-01): complete Wave 0 Nyquist scaffold — 11 xfail stubs across 3 test files
- 3 stubs in test_shares.py (SHARE-03 permission field, PATCH, IDOR) - 3 stubs in test_documents.py (cloud delete propagation, failure, remove_only) - 5 stubs in test_audit.py (handle enrichment, handle filter x2, daily exports x2) - All 11 reported as XFAIL; full 3-file suite: 35 passed, 15 xfailed, exits 0
This commit is contained in:
+117
@@ -0,0 +1,117 @@
|
|||||||
|
---
|
||||||
|
phase: 06.2-close-v1-sharing-cloud-delete-csv-export-gaps
|
||||||
|
plan: "01"
|
||||||
|
subsystem: testing
|
||||||
|
tags: [pytest, xfail, nyquist, tdd, shares, cloud-delete, audit]
|
||||||
|
|
||||||
|
# Dependency graph
|
||||||
|
requires:
|
||||||
|
- phase: 06.1-close-v1-audit-gaps
|
||||||
|
provides: "test_shares.py, test_audit.py, test_documents.py with existing passing tests"
|
||||||
|
provides:
|
||||||
|
- "11 named xfail stubs (3 in test_shares.py, 3 in test_documents.py, 5 in test_audit.py)"
|
||||||
|
- "Nyquist contract: every Wave 1 and Wave 2 gap has a test function before implementation begins"
|
||||||
|
affects:
|
||||||
|
- 06.2-02 (SHARE-03 — must promote test_share_create_with_permission, test_share_patch_permission, test_share_patch_idor)
|
||||||
|
- 06.2-03 (cloud-delete — must promote test_delete_cloud_document_propagates, test_delete_cloud_document_failure, test_delete_cloud_remove_only)
|
||||||
|
- 06.2-04 (ADMIN-06 — must promote all 5 test_audit_log_* and test_daily_* stubs)
|
||||||
|
|
||||||
|
# Tech tracking
|
||||||
|
tech-stack:
|
||||||
|
added: []
|
||||||
|
patterns:
|
||||||
|
- "inline pytest.xfail() as first function statement (strict=False by pytest default for inline calls)"
|
||||||
|
|
||||||
|
key-files:
|
||||||
|
created: []
|
||||||
|
modified:
|
||||||
|
- backend/tests/test_shares.py
|
||||||
|
- backend/tests/test_documents.py
|
||||||
|
- backend/tests/test_audit.py
|
||||||
|
|
||||||
|
key-decisions:
|
||||||
|
- "Used inline pytest.xfail() call (not decorator) — matches existing Wave 0 stub pattern across Phase 4/5"
|
||||||
|
- "All stubs accept the exact fixture signatures required by Wave 1/2 implementations to avoid signature drift"
|
||||||
|
|
||||||
|
patterns-established:
|
||||||
|
- "Wave 0 Nyquist stub pattern: inline pytest.xfail(), exact function name, fixtures pre-declared, no implementation"
|
||||||
|
|
||||||
|
requirements-completed:
|
||||||
|
- SHARE-03
|
||||||
|
- SHARE-05
|
||||||
|
- ADMIN-06
|
||||||
|
|
||||||
|
# Metrics
|
||||||
|
duration: 8min
|
||||||
|
completed: 2026-05-31
|
||||||
|
---
|
||||||
|
|
||||||
|
# Phase 06.2 Plan 01: Wave 0 Nyquist Xfail Stubs Summary
|
||||||
|
|
||||||
|
**11 named xfail stubs planted across test_shares.py, test_documents.py, and test_audit.py — establishing the Nyquist contract for all SHARE-03, cloud-delete, and ADMIN-06 gaps before Wave 1/2 implementation begins**
|
||||||
|
|
||||||
|
## Performance
|
||||||
|
|
||||||
|
- **Duration:** ~8 min
|
||||||
|
- **Started:** 2026-05-31T09:50:00Z
|
||||||
|
- **Completed:** 2026-05-31T09:58:12Z
|
||||||
|
- **Tasks:** 3
|
||||||
|
- **Files modified:** 3
|
||||||
|
|
||||||
|
## Accomplishments
|
||||||
|
|
||||||
|
- Added 3 xfail stubs to test_shares.py covering SHARE-03 permission field (POST), PATCH endpoint, and IDOR protection
|
||||||
|
- Added 3 xfail stubs to test_documents.py covering cloud document delete propagation, structured failure response, and remove_only path
|
||||||
|
- Added 5 xfail stubs to test_audit.py covering user_handle enrichment, handle-based filtering (known + unknown), daily exports listing, and daily export download
|
||||||
|
- All 11 stubs report as XFAIL (not ERROR, not FAILED); full 3-file suite exits 0: 35 passed, 15 xfailed
|
||||||
|
|
||||||
|
## Task Commits
|
||||||
|
|
||||||
|
Each task was committed atomically:
|
||||||
|
|
||||||
|
1. **Task 1: Add xfail stubs to test_shares.py (SHARE-03)** - `ecdeffb` (test)
|
||||||
|
2. **Task 2: Add xfail stubs to test_documents.py (cloud-delete)** - `bbf5355` (test)
|
||||||
|
3. **Task 3: Add xfail stubs to test_audit.py (ADMIN-06 gaps)** - `7271eeb` (test)
|
||||||
|
|
||||||
|
## Files Created/Modified
|
||||||
|
|
||||||
|
- `backend/tests/test_shares.py` - Appended 3 xfail stubs (test_share_create_with_permission, test_share_patch_permission, test_share_patch_idor)
|
||||||
|
- `backend/tests/test_documents.py` - Appended 3 xfail stubs (test_delete_cloud_document_propagates, test_delete_cloud_document_failure, test_delete_cloud_remove_only)
|
||||||
|
- `backend/tests/test_audit.py` - Appended 5 xfail stubs (test_audit_log_includes_user_handle, test_audit_log_filter_by_handle, test_audit_log_filter_unknown_handle, test_daily_exports_list, test_daily_export_download)
|
||||||
|
|
||||||
|
## Decisions Made
|
||||||
|
|
||||||
|
- Used inline `pytest.xfail("Phase 6.2 — not implemented yet")` as first statement rather than `@pytest.mark.xfail` decorator — matches existing inline pattern in test_documents.py and Wave 0 stubs in prior phases. Inline calls have `strict=False` by default (no CI breakage on unexpected pass).
|
||||||
|
- All stubs include the full fixture signature required by Wave 1/2 implementations (async_client, auth_user, second_auth_user, db_session, admin_user) so Wave 1/2 executors can promote without changing the function signature.
|
||||||
|
|
||||||
|
## Deviations from Plan
|
||||||
|
|
||||||
|
None - plan executed exactly as written.
|
||||||
|
|
||||||
|
## Issues Encountered
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
## User Setup Required
|
||||||
|
|
||||||
|
None - no external service configuration required.
|
||||||
|
|
||||||
|
## Next Phase Readiness
|
||||||
|
|
||||||
|
- Wave 0 Nyquist contract complete: all 11 test function names exist in their target files
|
||||||
|
- Wave 1 (Plans 06.2-02 and 06.2-03) can promote stubs by implementing them in place without any rename
|
||||||
|
- Wave 2 (Plan 06.2-04) can promote all 5 audit stubs once ADMIN-06 enrichment and daily exports are implemented
|
||||||
|
- Pre-existing test suite health: 35 passed, 15 xfailed, exits 0 — no regressions introduced
|
||||||
|
|
||||||
|
---
|
||||||
|
*Phase: 06.2-close-v1-sharing-cloud-delete-csv-export-gaps*
|
||||||
|
*Completed: 2026-05-31*
|
||||||
|
|
||||||
|
## Self-Check: PASSED
|
||||||
|
|
||||||
|
Verified:
|
||||||
|
- `backend/tests/test_shares.py` — contains 3 new xfail stubs (ecdeffb)
|
||||||
|
- `backend/tests/test_documents.py` — contains 3 new xfail stubs (bbf5355)
|
||||||
|
- `backend/tests/test_audit.py` — contains 5 new xfail stubs (7271eeb)
|
||||||
|
- All commits confirmed in git log
|
||||||
|
- `pytest tests/test_shares.py tests/test_audit.py tests/test_documents.py -x -q` exits 0: 35 passed, 15 xfailed
|
||||||
Reference in New Issue
Block a user