TST-08: Manual validation slice B - authz, cross-user isolation, error contracts#475
Conversation
…checklist Comprehensive two-user authz matrix covering all 29 controller families with step-indexed checks (B-01 through B-175) for unauthenticated denial, cross-user board isolation, non-board-scoped isolation, true-missing vs opaque denial, and error payload contract verification.
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Adversarial Self-ReviewController coverage verificationAll 28 concrete controller classes in
Expected status code accuracy
Two-user setup realism
Potential gaps noted
VerdictNo blocking issues. The two minor fixture gaps (agent profile, knowledge item) are documented and can be addressed by testers during execution. |
Follow-up: fixture gaps addressedAdded agent profile and knowledge item creation steps (steps 8-9) to the fixture bootstrap script, and updated B-161/B-162/B-166 to reference the |
Fresh Adversarial ReviewCritical Issues1. Fixture script: Agent profile payload missing required fields (will crash fixture setup) 2. Fixture script: Knowledge document payload missing required field 3. Fixture script: Label creation sends 4. B-104: Test will hit 404 before reaching Idempotency-Key validation Minor Issues5. B-91: 6. B-151: Abuse override is NOT admin-gated in the code 7. B-31: Method mismatch 8. Missing 401 coverage for several endpoints
9. Observations
VerdictDo not merge as-is. The fixture script issues (#1, #2, #3) will cause the setup to fail, making the entire checklist non-executable. Fix those three plus #4 (B-104 will never test what it claims) and #5 (B-91 wrong expected status). The remaining items are improvements that can be addressed in a follow-up. |
…adversarial review
- Label fixture: use `colorHex` instead of `color` to match CreateLabelDto
- Agent fixture: add required `templateKey` and `scopeType` fields
- Knowledge fixture: add required `sourceType` field
- B-31: use POST method (ExternalImportsController has no GET)
- B-91: use `/cards/{id}/provenance` (no single-card GET endpoint exists)
- B-104: note that fake proposal ID returns 404 before Idempotency-Key check
- B-151: correct expected status to 200 (no admin gate in current code)
- Add AbuseContainmentActive to status-to-errorCode mapping table
Summary
Closes #131
docs/testing/manual-validation-b-authz-contracts.md) with two-user cross-isolation fixture and step-indexed checks (B-01 through B-175)docs/MANUAL_TEST_CHECKLIST.mdas Section PScope
Seven test sections:
[Authorize]endpoints (B-01 to B-32){ errorCode, message }shape on auth/validation/sandbox paths (B-100 to B-110)Test plan
backend/src/Taskdeck.Api/Controllers/