Covers the 9 scenarios from the §6.3 plan brief, mapped to the harness's sessionless reality: - client propose refuses without a session and does not write fields - rescheduleCardAction refuses a Done card with 'Card is done' - foreign-client propose path: PocketBase read rule denies the cross-tenant lookup (anti-enumeration per access.ts:57-59) - accept/dismiss/returnToScheduled refuse without a session and are no-ops - buildActivityRows collapses same-date patches into zero rows and emits one row when the date actually changes HARNESS-LIMIT: the actions that need an owner session (accept, dismiss, returnToScheduled) cannot be driven successfully in vitest. They are covered by the manual smoke checklist at the workspace path. The sessionless refuse path proves the gate fires for every call; the positive path is exercised by the live smoke run. Test file: tests/integration/plan-puzzle.test.ts (single new file) |
||
|---|---|---|
| .. | ||
| integration | ||