Collector Endcap V1
implemented unverified
Vertical Farm Pack (tilted flush row canon, VF-4.2): the Collector/Drain Endcap — a sloped catch tray under the LAST rail's lap lip on a STURDY U-frame (two full side walls carry the cantilever, not thin columns). The tray drains through a VERTICAL bore out the sump bottom: the push-in tube enters from below and routes under the row (no sagging horizontal ceiling). The lip continuing the channel floor plane is the drip edge, its protrusion IS the air gap. Droplets detach at the lip tip, fall into the tray mouth, run down the tray floor to a push-in drain bore enclosed below the rim at the floor's lowest point — the tray empties completely, verified not postulated (form.collector_tray_drains + topology.fluid_path_open). Hangs tool-free on the rail FRONT wall: arm over the wall top, side cheeks outside the drip band, dry tongue riding the outlet corridor ABOVE the exiting water. Mates the rail's drain_edge port. Prints as modeled. Local frame: y=0 = the rail front face; the catch datum sits at the lip tip on the handover plane.
Declaration example
A minimal product declaration for this archetype — exposed parameters at
their defaults. Validate and build it with
forge validate / forge build.
schema: product/v1
id: my_collector_endcap
archetype: collector_endcap_v1@1
params:
tray_w: 20mm
tube_od: 9mm
dock_magnets: False
screen_seat: False Parameters
| parameter | type | default | range | role | |
|---|---|---|---|---|---|
tray_wtray inner width — wider than the rail channel's drip band | length | 20mm | 16mm … 180mm | functional | exposed |
tube_odouter diameter of the silicone drain tube (hardware, BOM) | length | 9mm | 6mm … 13mm | assembly | exposed |
bore_clearance | length | 0.4mm | 0.2mm … 0.8mm | manufacturing | |
cassette_w | length | 177mm | 160mm … 236mm | assembly | |
seat_clearance | length | 0.75mm | 0.5mm … 1mm | assembly | |
module_w | length | 205mm | 200mm … 250mm | assembly | |
seat_depth | length | 14mm | 10mm … 20mm | assembly | |
channel_d | length | 5mm | 4mm … 8mm | assembly | |
lip_tshared rail lap-lip thickness — the handover plane is the lip tip underside | length | 1.4mm | 1.2mm … 1.6mm | assembly | |
lip_lenshared rail lap-lip protrusion (same name as the rail's parameter — shared: injects both) — how far outside the wall face the drip edge and the catch datum sit | length | 4mm | 3mm … 6mm | assembly | |
channel_w | length | 16mm | 12mm … 20mm | assembly | |
tongue_wdry locator tongue width — must fit INSIDE the rail channel | length | 14mm | 8mm … 18mm | functional | |
tray_slope_degtray floor slope toward the drain — the drain sits at the tray's low point so the floor empties to it (VF-7); the mounted row tilt adds to this | number | 2.5 | 0.8 … 3.0 | functional | |
catch_falldrop from the lip to the tray floor — deep enough to enclose the drain bore below the rim | length | 8.5mm | 6mm … 12mm | functional | |
capture_depthreceiver capture past the rail face — the lip tip must keep >= 2 to the apron wall (VF-4.1 end receiver) | length | 8mm | 6mm … 8mm | functional | |
drain_extensionsump length past the mouth so the VERTICAL drain has solid body to grip the push-in tube (VF-4.2) | length | 10mm | 8mm … 14mm | functional | |
wall_extraextra U-frame side wall thickness beyond a molded skin — carries the cantilevered tray as a wall, not a column | length | 3mm | 1.6mm … 4mm | structural | |
saddle_fit | length | 0.4mm | 0.2mm … 0.8mm | manufacturing | |
corner_r | length | 3mm | 2mm … 6mm | aesthetic | |
dock_magnetsVF-6: dock the collector arm onto the LAST rail's front wall-top magnets (rail needs endcap_dock: front) — alignment only | bool | False | — | assembly | exposed |
dock_xdock magnet centers at +-dock_x — must match the rail | length | 22mm | 14mm … 40mm | assembly | |
dock_insetdock pocket step inboard from the rail face — match the rail | length | 7mm | 4mm … 12mm | assembly | |
dock_fitdiametral press-fit of the d6x2 dock magnet | length | 0.2mm | 0.1mm … 0.3mm | manufacturing | |
screen_seatVF-8: carve a LOWERED sump WELL fed by a radial funnel — the tray floor slopes to the drain from every side, the drain sits at the absolute low point, and a drop-in strainer basket seats in the well over it. The seat keys are always published; the funnel + well are cut only when this is on (and the drain shifts to the tray centre) | bool | False | — | assembly | exposed |
screen_seat_wstrainer basket OUTER footprint across X; the funnel well mouth is this + 2*clearance (match the drain_screen basket screen_l) | length | 24mm | 18mm … 90mm | assembly | |
screen_seat_dstrainer basket footprint along Y — must overhang the drain bore so water passes only through the mesh (fits the shallow sump) | length | 13mm | 10mm … 24mm | assembly | |
screen_sump_depthhow far the sump well floor drops below the tray floor — the radial funnel converges over this depth to the drain (absolute low) | length | 5mm | 3mm … 9mm | assembly | |
screen_funnel_wthe funnel opening width across X — the tray floor slopes in from here to the well mouth (clamped to the tray interior) | length | 74mm | 40mm … 120mm | assembly | |
screen_seat_clearance | length | 0.75mm | 0.5mm … 2mm | assembly |
Regions
-
catch_traytransient water path -
saddleinterface keepout
Contract
Guarantees
must-have features and invariants — verified on every build
hose_takeoffcatch_traytongue_w <= channel_w - 2tray_slope_deg >= 0.8 and tray_slope_deg <= 3.0
Will refuse
explicit prohibitions — the engine refuses to build these
closed_water_reservoirdead_water_pockethidden_wet_cavity
Not claimed
what passing validation does not mean
- Provided “as is” under Apache-2.0 — no warranty of fitness for a particular purpose.
Built from operations
Subscribed validators (20)
interface.frame_existsinterface.frame_orthonormalinterface.normal_points_outwardinterface.up_consistentinterface.keepouts_preservedform.hose_bore_okform.collector_tray_drainsform.collector_receiver_matches_final_lapform.receiver_open_top_cleanableform.collector_drain_bore_supportlessform.collector_structure_sturdyform.dock_pockets_dryform.no_standing_water_irform.collector_sump_is_lowest_pointform.tray_floor_slopes_to_sumpform.basket_not_transverse_flow_barrierform.no_standing_water_before_screentopology.fluid_path_opentopology.single_connected_solidtopology.ribs_present