Skip to content

Latest commit

 

History

History
61 lines (42 loc) · 2.08 KB

File metadata and controls

61 lines (42 loc) · 2.08 KB

ADR-0001: Use a discrete 2D rack model and exact bounded search

Status

Accepted

Date

2026-08-23

Context

A household tool must produce a plan a person can reproduce, but dishwasher racks vary by model and arbitrary 3D reconstruction would require images, manufacturer geometry, or a simulation stack. Those inputs are unavailable and would turn v0.1.0 into an unverified vision project.

The useful common denominator is a rack profile whose author declares bounds, keep-outs, candidate anchors, tags, and height limits. Loaded items can be represented by the rectangular space they occupy when placed.

Decision

Use separate bounded 2D planes for racks. Generate 0/90-degree rectangular placement candidates at declared anchors, reject candidates that violate declared constraints, and solve the remaining assignment with deterministic branch-and-bound search.

An exhausted node budget is an error state. Only a completed search may set optimal: true.

Alternatives Considered

Camera or 3D reconstruction

  • Pros: lower manual setup and visually impressive.
  • Cons: training data, model weights, calibration, privacy, and unreliable geometry would dominate the project.
  • Rejected: cannot meet the real-function and reproducibility bar in v0.1.0.

Generic bin packing without rack anchors

  • Pros: simpler input.
  • Cons: ignores tines, spray zones, support points, and model-specific limits.
  • Rejected: produces arrangements that may be geometrically dense but not executable on a real rack.

Heuristic-only placement

  • Pros: handles larger inputs quickly.
  • Cons: cannot distinguish a proven best load from a merely convenient one.
  • Rejected: bounded household scenarios are small enough for exact search, and explicit failure is more honest than an unlabeled approximation.

Consequences

  • Users must author or adapt a rack profile once.
  • Every accepted placement is inspectable and independently verifiable.
  • The solver remains local, deterministic, and runtime dependency-free.
  • Curved items, water flow, drainage, and cleaning results stay outside the claim boundary.