02 — User intent and requirements
The requirements arrived in pieces, often as short mid-turn messages, and were refined by later corrections. What worked: capture each one in the user's own words, turn it into a named feature or check, and recompute anything that depends on it.
Capture each mid-turn requirement verbatim and give it a feature
- Rule: Record each user requirement word for word, map it to the feature that satisfies it, and carry it through every later revision.
- Incident: During the first review the user added: "we need counter-sunk holes under the heat sink hole location because the heat sink is most of the mass of the assembly... so the heatsink mass is attached to our housing". This became the cooler tie-down: four printed columns under the 92 × 79 cooler holes, with flat-head screws driven up from under the floor. It was also saved as a standing project memory.
- Check: A requirements table lists each quote, its feature, its check and its status. The final report names every requirement.
- Source: 2026-10-24T07:07, 07:41.
Pin down what a screw threads into before computing its length
- Rule: For each fastener, identify the mating thread (part and feature) explicitly. Do not infer it from the part's general role.
- Incident: Rev 0.5 said that the tie-down screws thread "into the cooler", and asked the user to confirm the direction. The user corrected this: "the standoffs between the orin AGX and the heatsink have female threads. So our screw lengths ... need to go into those standoffs, that sets our lengths", and "(the screws through the base of the housing plastic go up into the standoffs)". The agent later listed "docs saying 'thread into the cooler'" as one of the session's mistakes.
- Check: The fastener table has a "threads into" column (for example "female standoff between AGX module and heatsink, thread starts at Z 40.76").
- Source: 2026-10-24T07:41; 2026-10-25T00:32, 02:18.
Derive values your own geometry sets; ask the user only for outside facts
- Rule: If a value follows from the model (stack heights, screw lengths), compute it and decide. Ask the user only for facts the model cannot supply, such as part identity or a physical measurement.
- Incident: Rev 0.5 asked for "the original screw's length + 19.6 mm". Later the agent asked whether to keep the head flush or raise it. The user: "the screw length is basically set by the top of the AGX and the bottom of the housing, assuming we just go something like 8 threads into the standoff", then "I can't give you the screw lenght, that depends on your assembly." The agent then made the call itself (M3 × 35 with a raised seat; see 04).
- Check: Before asking a question, test whether the answer is computable from
parameters.jsonand the STEP. If it is, present a decision with its reasoning instead of a question. - Source: 2026-10-24T07:41; 2026-10-25T00:34, 00:36, 00:37, 00:38.
Model every interface layer the user mentions, and recompute what it moves
- Rule: Add every stack-up layer as a named parameter (thermal pads, gaskets, washers), then recompute both the fasteners and the clearances it affects.
- Incident: The user: "(also watching out for thermal interface pad, standard thickness between heatsink and AGX)".
A 0.5 mm pad became
cooler.tim_thickness. It lifts the heatsink but not the start of the standoff thread, so the screw length is unchanged. It does take 0.5 mm off the cooler-to-roof gap:assembly-checks.jsonnow reports 14.742 mm, where Rev 0.5.1 reported 15.24 mm. - Check: Each layer has a nominal value and a "measure the fitted part" note. Dependent outputs (screw engagement, roof gap) are regenerated after any change to it.
- Source: 2026-10-25T00:34, 00:36;
cad/parameters.json(tim_note);exports/assembly-checks.json.
Treat "doesn't block disassembly" as a hard requirement
- Rule: Before placing anything that is tethered to the internals, decide which part never comes off and attach it there.
- Incident: The user asked "where can we have RPSMA connectors for wifi and cellular without blocking disassembly?", then added "(2x each)" and "those are not mounted on the PCB, they would be extension cables with a RPSMA sticking through the housing with a nut". All four bulkheads went into the fixed base side walls, so the lid, both I/O plates and the side door lift away with the antennas still fitted.
- Check: For each removable part, list what is attached to it. No removable part may hold a cable that runs to the board.
- Source: 2026-10-24T16:35, 16:36, 17:10.
Turn a configuration list into named test cases
- Rule: When the user lists the configurations they want, make each one a named case in the check output.
- Incident: The user: "We want to be able to stack 1 or 2 of them and have them be 2.5" or 3.5" skinny 2.5" sata ssd
or thick regular 3.5" hdd", then "(1 of each or 2 of each, or 1 total)", and "The cables can be exposed but need
entry/exit points between the drives and the Orin carrier."
storage-checks.jsonhas seven named stacks, among them "1 total: 2.5 skinny SSDs on clips", "1 of each: 2.5 over 3.5, on plate" and "2 of each". Each one has its own plastic, hardware, chimney and bend-radius results. - Check: Each case the user named appears in the check JSON with
pass: true, and the review site shows it. - Source: 2026-10-25T00:39, 00:40, 01:23;
exports/storage-checks.json.
Report constraints that undercut the request, with a recommendation
- Rule: When a hard limit makes part of a request impractical (ports, power), say so plainly and recommend a default.
- Incident: After the 5 V finding the user asked: "Ok so this can only support the ssd SATA drives realistically?" The answer: yes, 2.5 in drives (SSD or spinning) run from the board, while 3.5 in drives need an added 12 V source. The board has only two SATA ports, so "2 of each" only makes sense with an M.2 SATA adapter. The agent recommended the 2.5 in tray as the standard option and offered to drop the 3.5 in tray.
- Check: Compare the number of drives in each configuration against the port count and the power budget (see 06).
- Source: 2026-10-25T01:34, 01:36.
Make "show it on the website" part of done
- Rule: For this user, a feature is not done until the review site shows it with evidence.
- Incident: Requests included "Also show them on the website..." (the drive options), "Launch the server again and show me how you are making progress", and "Where's the base for stacking with drives?". The last one was answered by stating that P1 is the stacking base and adding a "Which base do I print?" section. See 08.
- Check: Every change in the report links to the section or image on the site that shows it.
- Source: 2026-10-25T00:31, 00:40, 01:30, 01:36.