From b4ba0355c483f615ac4db534c670906bb86372cf Mon Sep 17 00:00:00 2001 From: Trey t Date: Sun, 18 Jan 2026 14:28:06 -0600 Subject: [PATCH] docs(02): capture phase context Phase 02: Constraint Validation - Implementation decisions documented - Phase boundary established Co-Authored-By: Claude Opus 4.5 --- .../02-constraint-validation/02-CONTEXT.md | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .planning/phases/02-constraint-validation/02-CONTEXT.md diff --git a/.planning/phases/02-constraint-validation/02-CONTEXT.md b/.planning/phases/02-constraint-validation/02-CONTEXT.md new file mode 100644 index 0000000..a41f481 --- /dev/null +++ b/.planning/phases/02-constraint-validation/02-CONTEXT.md @@ -0,0 +1,64 @@ +# Phase 2: Constraint Validation - Context + +**Gathered:** 2026-01-18 +**Status:** Ready for planning + + +## Phase Boundary + +The system prevents invalid positions and enforces item-specific rules. Games cannot be moved. Travel segments are constrained to valid day ranges and must respect game ordering within days. Custom items have no constraints within the trip's day range. + + + + +## Implementation Decisions + +### Rejection Feedback +- Silent snap-back on invalid drop — no toast or error message +- Games have a subtle visual cue indicating they're not draggable (e.g., pinned icon) +- During drag, valid drop zones get a border highlight (color TBD by implementation) +- No insertion line appears outside valid zones — clear signal of invalidity + +### Constraint Timing +- Hybrid approach: quick check on drag start, full validation on drop +- Drag start computes valid day range only — position within day checked on drop +- Validation is synchronous (no async complexity) +- Insertion line only appears in valid zones + +### Travel Segment Rules +- Travel can be on same day as from-city game IF positioned after it (higher sortOrder) +- Travel can be on same day as to-city game IF positioned before it (lower sortOrder) +- If a day has both from-city and to-city games, travel must be between them +- Travel can be placed on days with no games — any sortOrder valid +- Travel segment is single-day only (represents departure day) + +### Edge Cases +- Items constrained to trip days (1 through N) — no Day 0 or Day N+1 +- Empty days remain visible in UI (don't collapse) + +### Claude's Discretion +- Exact visual styling for "not draggable" indicator on games +- Border highlight color for valid drop zones +- sortOrder precision exhaustion handling (renormalize vs. block) + + + + +## Specific Ideas + +- Valid zone highlight should use border (not background tint) — keeps it subtle +- Games being undraggable should be discoverable but not distracting + + + + +## Deferred Ideas + +None — discussion stayed within phase scope + + + +--- + +*Phase: 02-constraint-validation* +*Context gathered: 2026-01-18*