Skip to content

Water Rail V1

implemented unverified

Vertical Farm Pack (tilted flush row canon): the Base Water Rail — a level 248x248 module that transports and constrains a transient water pulse, never stores it. The open U-channel is cut from the SEAT FLOOR at CONSTANT depth: the rail itself is horizontal; the drainage slope comes from mounting the whole row on a standard straight 2020/3030 aluminum profile at 1.0-2.0 deg (assembly mount_context), never from the geometry. Modules sit FLUSH (dZ = 0, controlled 0.3-0.6 face gap) and hand water to each other over a lap-flow joint: a lip continuing the channel floor plane lands in the neighbour's through open-bottom receiver; the tip slot is a deliberate, visible, cleanable leak path — the seam is never the primary water path. A recessed drop-in seat carries any cassette honoring the Cassette Interface Standard. The body is a lightweight dry shell (param-gated): large smooth open-bottom windows between the channel and the profile bands — the profile carries the row, plastic pays for water, cassette and positioning. Optional sealed magnet pockets in both +-Y faces align neighbouring modules and NOTHING else — never a seal, never a support. Flow axis Y: inlet back (+Y), outlet front (-Y); prints flat, channel up, no supports in the wet path.

Built from a real example — orbit to inspect.

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_water_rail
archetype: water_rail_v1@2

params:
  module_l: 205mm
  module_w: 205mm
  channel_w: 16mm
  face_gap: 0.4mm
  lightweight: True
  under_cassette: skeleton
  magnet_enabled: False
  endcap_dock: none
  endcap_dock_style: top
  profile: 2020

Parameters

parametertypedefaultrangerole
module_louter module size along the line axis X. Default 205 keeps the printed rail (~209 with the tongue) well clear of a 256 bed's exclusion zones (P1S/X1); raise toward 250 only on a printer with a clean edge. ~200 is the design floor — below it the full-width collector no longer fits between the root troughs and the profile bandlength205mm200mm … 250mmfunctionalexposed
module_wouter module size along the flow axis Y (see module_l)length205mm200mm … 250mmfunctionalexposed
body_hrail body height; the seat and channel nest inside itlength30mm24mm … 60mmstructural
channel_wwater channel width — wide enough for a brushlength16mm12mm … 20mmfunctionalexposed
channel_dchannel depth — CONSTANT end to end; the mount supplies the slopelength5mm4mm … 8mmfunctional
channel_bottom_rrounded channel floor corners — cleanable, no crud linelength1.2mm0.8mm … 2mmmanufacturing
face_gapcontrolled gap between neighbouring module faces — flush means one plane, not contact; row pitch = module_w + face_gaplength0.4mm0.3mm … 0.6mmassemblyexposed
lip_lenlap lip protrusion past the outlet face — also the drip edge air gap on the last module of a rowlength4mm3mm … 6mmfunctional
lip_tlap lip thickness — its TOP is the channel floor planelength1.4mm1.2mm … 1.6mmfunctional
lap_pocket_lenthrough open-bottom lap receiver length in the inlet floorlength6mm5mm … 8mmfunctional
lap_side_clearanceper-side clearance of the neighbour's lip in the receiverlength0.4mm0.3mm … 0.5mmmanufacturing
cassette_lshared cassette envelope X — the Cassette Interface Standardlength177mm160mm … 236mmassembly
cassette_wshared cassette envelope Ylength177mm160mm … 236mmassembly
seat_depthhow deep the cassette sits in the raillength14mm10mm … 20mmstructural
seat_clearanceper-side drop-in clearance around the cassettelength0.75mm0.5mm … 1mmassembly
module_pitchnominal grid pitch between module origins along the LINE axis Xlength207mm200mm … 300mmassembly
corner_rlength4mm2mm … 8mmaesthetic
lightweightopen-skeleton windows on (reversible: false = solid slab); through cuts — no bridges by construction; the aluminum profile is the structural memberboolTruestructuralexposed
lw_ribcross-rib width between windowslength2mm1.8mm … 3mmstructural
under_cassetteunder-cassette volume: skeleton (-45% plastic, overflow drips through) | root_chamber (blind bottom contains overflow + open-top root troughs drained forward by the mount) — VF-5choiceskeletonskeleton | root_chamberstructuralexposed
trough_wroot trough width (root_chamber) — cassette spans it. Default 18 keeps the outer trough clear of the profile band on a ~205 module so the full-width collector's side wall still fits between themlength18mm18mm … 40mmfunctional
trough_ribrib between root troughs (cassette support)length6mm4mm … 10mmstructural
trough_depthroot trough depth — the root zone; blind bottom below itlength12mm8mm … 13mmfunctional
magnet_enabledoptional d6x2 alignment magnets in sealed dry pockets — alignment only, never a seal, never a supportboolFalseassemblyexposed
magnet_x_offsetmagnet pocket centers at +-x_offset on both +-Y faces. On a small root_chamber module the solid band between the root troughs and the profile is too narrow for a d6 magnet, so sit them OUTSIDE the profile band (~95 on a 205 module, between the profile and the rail edge) — clear of both the troughs and the profile slot; the magnet checks enforce drylength60mm40mm … 106mmassembly
magnet_fitdiametral press-fit of the d6x2 magnet in its dry pocket — pushes in from the mating face, a drop of CA recommendedlength0.2mm0.1mm … 0.3mmmanufacturing
endcap_dockVF-6 endcap docking magnets on the END(s): front (outlet, collector) / back (inlet, cap) / both. Only the terminal modules of a row need it — the collector/cap arm docks onto itchoicenonenone | front | back | bothassemblyexposed
endcap_dock_styledock pocket placement: top (UP Z pockets on the wall top, collector) or face (Y pockets in the end FACE, VF-9 support-free cap hook). Match the docking endcap's stylechoicetoptop | faceassemblyexposed
dock_xdock magnet centers at +-dock_x in the dry perimeter wall (clear of channel and root troughs); the endcap uses the same valuelength22mm14mm … 40mmassembly
dock_insetdock pocket step inboard from the end face — under the endcap arm footprint, ahead of the seat walllength7mm4mm … 12mmassembly
profilealuminum profile the module drops ontochoice20202020 | 3030assemblyexposed
profile_clearancelength0.2mm0.1mm … 0.5mmmanufacturing
profile_depthlength6mm4mm … 10mmstructural
profile_insetprofile slot centerline distance from the +-X edgeslength24mm16mm … 60mmassembly
tongue_wlength6mm4mm … 10mmassembly
tongue_hlength4mm3mm … 8mmassembly
tongue_lentongue protrusion past the +X facelength3.6mm2mm … 6mmassembly
edge_clearanceper-side tongue/groove clearance — aligns, never bindslength0.4mm0.3mm … 0.5mmassembly
tongue_z0length4mm2mm … 12mmassembly
tongue_bottom_marginextra groove depth so the tongue never bottomslength0.4mm0.3mm … 1mmassembly

Regions

  • water_channel transient water path
  • lap_lip transient water path
  • lap_receiver transient water path
  • cassette_seat_walls interface keepout
  • tongue_edge interface keepout
  • groove_edge interface keepout
  • profile_seat_e interface keepout
  • profile_seat_w interface keepout
  • dry_zone_back mounting surface

Contract

Guarantees

must-have features and invariants — verified on every build

  • constant_depth_water_channel
  • lap_flow_handover
  • cassette_seat
  • face_gap >= 0.3 and face_gap <= 0.6
  • lip_len >= 3.0 and lip_len <= 6.0
  • seat_clearance >= 0.5 and seat_clearance <= 1.0
  • edge_clearance >= 0.3 and edge_clearance <= 0.5

Will refuse

explicit prohibitions — the engine refuses to build these

  • closed_water_reservoir
  • dead_water_pocket
  • secondary_water_channel
  • hidden_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

water_rail_bodylap_outlet_liplap_inlet_receiveredge_magnet_pocketsendcap_dock_pocketsprofile_seat_slottongue_groove_edges

Subscribed validators (29)

interface.frame_existsinterface.frame_orthonormalinterface.normal_points_outwardinterface.up_consistentinterface.keepouts_preservedform.water_channel_constant_depth_okform.water_channel_dims_okform.drainage_requires_mountform.lap_joint_geometry_okform.lap_slot_leak_path_controlledform.lap_receiver_has_floorform.lap_receiver_residual_volume_okform.rail_universal_inlet_accepts_cap_and_lapform.lightweight_windows_dry_okform.cassette_support_span_okform.root_chamber_okform.magnet_pockets_outside_water_zoneform.magnet_pockets_do_not_break_wallform.dock_pockets_dryform.no_standing_water_irform.no_secondary_water_channelform.cassette_seat_fit_okform.tongue_groove_profile_okform.profile_seat_dry_oktopology.water_channel_opentopology.water_channel_floor_solidtopology.single_connected_solidtopology.cutout_presenttopology.ribs_present