Scope: seated/perch chair lifts that travel on a rail bolted to a staircase (straight, curved, indoor, outdoor) — not vertical/incline platform lifts, which both Bruno and Harmar sell as a separate product line from "stairlifts" in their own site navigation.

Seed: ran seed.py — kept the straight-vs-curved rail cost/customization split and the weight-capacity-vs-speed trade-off, both directly supported by brand spec pages fetched below.

Sources:
[wikipedia_stairlift] https://en.wikipedia.org/wiki/Stair_lift — straight/curved/outdoor/perch/AC-DC/safety taxonomy — fetched excerpt
[bruno_stairlifts_faq] https://www.bruno.com/stairlifts — 300-600 lb capacity range, curved cost $10-13k+, warranty lengths, multi-user mode — fetched excerpt
[bruno_elan_straight] https://www.bruno.com/stairlifts/elan-straight-indoor-stairlift — 300 lb, 90° swivel, folding rail option — fetched excerpt
[bruno_elite_straight] https://www.bruno.com/stairlifts/elite-straight-indoor-stairlift — 400 lb capacity — fetched excerpt
[bruno_elite_curved] https://www.bruno.com/stairlifts/elite-curved-indoor-stairlift — 400 lb curved, Park Position option — fetched excerpt
[bruno_elite_outdoor] https://www.bruno.com/stairlifts/elite-straight-outdoor-stairlift — 0-125°F rating, 5-yr warranty — fetched excerpt
[harmar_straight_archive] https://web.archive.org/web/20211218131816/https://harmar.com/stairlifts/straightstair/ — SL600/SL300/SL600HD/SL350AC specs — fetched excerpt (direct harmar.com blocked fetch, used Wayback snapshot)
[harmar_curved_archive] https://web.archive.org/web/20211218131816/https://harmar.com/stairlifts/curvedstair/ — CSL500 specs — fetched excerpt
[asme_a18] https://www.asme.org/codes-standards/find-codes-standards/a18-1-safety-standard-platform-lifts-stairway-chairlifts — governing US standard, 45° max test angle, speed governor rule — fetched excerpt

Branches: rail_type=curved → ask curve_complexity (custom rail lead time depends on turn/landing count, per wikipedia_stairlift). seat_type=standing_perch → seat_swivel made irrelevant (perch has no swivel chair to turn, per wikipedia_stairlift carriage section). install_environment=outdoor → ask weather_resistance_features (per bruno_elite_outdoor).

Noise: Acorn's straight/curved marketing pages (acorn_straight.html, acorn_curved.html) were lead-gen pages with no spec content — fetched but unused. Handicare and direct harmar.com product pages returned 403; stannahstairlifts.com would not connect at all — none used. Max rail travel length (Harmar SL600HD: up to 40 ft) dropped as a standalone numeric facet — single-sourced only, folded qualitatively into rail_type's definition instead. Operating-temperature rating (0-125°F) kept as prose in weather_resistance_features rather than a structured numeric range, since only one brand (Bruno) gave the figure. CSA B355 (Canada) and EN 81-40 (Europe) governing standards were not independently verified this run (web search exhausted, no reachable regulator page found) — governing_safety_standard facet scoped to ASME A18.1 (US) only.

Corrections (2026-10-26):
- seat_width.range narrowed to 19-19 in (was 19-20): both cited sources show only 19" on every model and Bruno's "Larger Seat" pages give no numeric width; 20 was invented and is dropped, with a `typical` note explaining the unsized upgrade option.
- Added `footrest_type` facet (manual_footrest/powered_footrest): "Power Footrest" is a named option re-fetched and confirmed in bruno_elan_straight and bruno_elite_straight's raw HTML, parallel to the existing seat_swivel split; added matching vocabulary entry and a supports line on bruno_elite_straight.
- `drive_mechanism.backfill_cost` lowered high→medium: the drive-type phrase sits in the same Harmar spec-sheet sentence block as weight_capacity (low) and carriage_speed (medium), so "high" overstated the extraction effort.
- Relabeled `source: listing → researched` on install_environment, weight_capacity, power_source, seat_swivel, rail_fold, remote_control_type, warranty_coverage: every fetched citation for these is a brand "Free Quote" page, not a confirmed third-party retail listing; backfill_cost left at low per the skill's own rule for brand-page-sourced fields.
- Softened `carriage_speed`'s why_experts_care/backfill_note to flag the 14-20 FPM range as one brand's (Harmar's) internal spread rather than an industry-wide fact — no second brand publishes FPM in any source fetched this run or in a follow-up check of the four Bruno product pages.
- Rejected: did not touch the two WEAK branch-documentation gaps (seated_swivel→seat_swivel, indoor→makes_irrelevant weather_resistance_features) or the undefined "landing" vocabulary term — check.md lists these as soft/minor observations, not among its 5 numbered Required fixes.
