Laundry and Amenities: eval evidence

PR #18121. Each row was run 3 times on origin/main 4e1e84e14e1 and 3 times on the branch 23b184d3464, with the same bridge and rows, on the subscription runner. Synthetic companies only.

The new rows

All six new rows pass 3/3 on the branch. Four fail on main. The two guards pass on both sides by design: Sample Lofts (the scraped list wins over the company's Gym) and Stub Gardens (a building's own list without a gym never removes its scraped gym).

Rowmainbranch
AMENITIES, sms — Example Court: a gym, from the company's Amenities answer0/33/3
LAUNDRY, voice — Sample Lofts: in-unit, its own answer; the scraped list's 'not on file' negative is suppressed0/33/3
LAUNDRY, sms — Sample Lofts: in-unit laundry from its own answer0/33/3
AMENITIES, older scraped list, sms — Sample Lofts: the list (pool, clubroom) wins; the company's 'Gym' is not claimed (regression guard)3/33/3
LAUNDRY, older record, sms — Mock Point: shared, its own answer, never the older in-unit flag0/33/3
AMENITIES, own list without a gym, sms — Stub Gardens: still a gym (own answers state, never remove scraped items)3/33/3
What the rows test

Example Court: the company's Amenities answer states a gym. Sample Lofts (scraped: pool, clubroom; its own Laundry 'In unit'): by SMS and by voice, Clara states in-unit laundry, and the voice block's 'not on file: in-unit laundry' negative is suppressed. Mock Point (older inUnitLaundry=true, its own 'Shared'): shared, never in-unit. Stub Gardens (scraped: Fitness center, Pool; its own list: Pool): the first run caught SMS Clara saying 'no gym', reading the building's own list as complete. Own answers are now merged with the scraped list in the section ('Pool and Fitness center'), and the row passes 3/3. The Example Court row's grader was corrected for a correct reply it misread ('come check it out'). Both changed rows were re-run on both sides. Every existing row was re-run on the branch with the company Amenities answer in every building's context, and matches main.

Byte-identical when no topic answers: fingerprints of the voice amenities block and its negatives for six amenity-list shapes, pinned on main, in amenities-stated-by-topic.test.ts. The scraped-list laundry reading (washer/dryer: in unit; laundry room / facility / on-site: shared; hookups and a bare 'laundry': nothing) is pinned by unit cases, and it shares one keyword list with the negatives.

The existing rows

48 rows, unchanged or better on the branch
Rowmainbranch
PETS, sms — a 65 lb dog: the 50 lb limit and manager approval, from the one Pets answer3/33/3
PETS, voice — a 65 lb dog: the 50 lb limit and manager approval3/33/3
PETS follow-up, sms — after 'cats and dogs are welcome': how many and the monthly charge3/33/3
PETS, building override, sms — Sample Row allows no pets, whatever the company allows3/33/3
PETS, building override, voice — no pets at Sample Row3/33/3
PETS, field-level (1c-1), sms — the company says no pets; Mock Gardens' older record holds only a weight limit, so it is still no pets3/33/3
PETS, one statement (1c-1), sms — Fixture Commons: the older 'up to three' entry was folded into the Pets answer (up to 2); Clara states 2 only3/33/3
LEASE LENGTHS, sms — 6 or 12 months, from the Lease lengths answer3/33/3
MONTH-TO-MONTH, voice — offered, 60 days notice3/33/3
NOTICE TO MOVE OUT, sms — 45 days at the end of a fixed-term lease3/33/3
EARLY TERMINATION, sms — allowed: 2 months of rent and 60 days notice3/33/3
SMOKING, sms — not inside; outside only in the designated area by the side gate3/33/3
SMOKING, building override, sms — Sample Row allows no smoking outside either3/33/3
MONTH-TO-MONTH, older building record, sms — Placeholder Flats: its $75 MTM fee, and the company's 60 days notice3/33/3
EARLY TERMINATION, older building record, sms — Placeholder Flats: 3x monthly rent (never the company's 2 months), the company's 60 days notice3/33/3
EARLY TERMINATION, building's own answer over its older record, sms — Stub Lofts: 1 month of rent, never the older 3x3/33/3
UTILITIES, sms — water, sewer and trash included; residents pay electricity and gas3/33/3
UTILITIES, older building record, sms — Placeholder Flats: residents pay all (regression guard)3/33/3
PARKING, sms — included, an assigned spot3/33/3
PARKING, older building record, sms — Placeholder Flats: guest parking from the company's answer3/33/3
PARKING, building's own answer over its older record, sms — Stub Lofts: $120 a month, never the older $903/33/3
PARKING, enrolled building, sms — Fixture Yards: its own $120, never the lease policy's $90 (the lease grounding points at the topic)3/33/3
PARKING, enrolled building, voice — Fixture Yards: $120, never $903/33/3
UTILITIES, enrolled building, sms — Fixture Yards: electricity and gas from the topic, no 'not on file' deflection3/33/3
UTILITIES, enrolled building, voice — Fixture Yards: electricity and gas, no deflection3/33/3
RENTER'S INSURANCE, sms — required, $100,000 minimum coverage3/33/3
RENTER'S INSURANCE, older pricing record, sms — Placeholder Flats: $300,000, never the company's $100,000 (regression guard)3/33/3
RENTER'S INSURANCE, lease policy, sms — Sample Annex: $250,000 and the named additional interest, never the company's $100,0003/33/3
RENTER'S INSURANCE, building's own answer over its lease policy, sms — Mock Towers: $200,000 (never $250,000), the additional interest still named3/33/3
RENTER'S INSURANCE, building's own answer over its pricing record, sms — Stub Lofts: $150,000 (never $300,000) and the record's $15 admin fee3/33/3
RENTER'S INSURANCE, building's own answer over its lease policy, voice — Mock Towers: $200,000 only (the lease grounding points at the topic)3/33/3
RENTER'S INSURANCE, building's own 'not required' over its lease policy, sms — Demo Lofts: not required, no minimum, no in-force date3/33/3
QUIET HOURS, sms — 10pm to 7am3/33/3
STORAGE, sms — storage available, $40 a month3/33/3
STORAGE, older building record, sms — Placeholder Flats: its $55 fee, never the company's $403/33/3
SUBLETTING, sms — only with approval3/33/3
GUESTS, voice — 14 nights before a guest counts as an occupant3/33/3
ALTERATIONS, sms — painting with written approval; small nail holes are fine3/33/3
PACKAGES, voice — deliveries go to the package lockers3/33/3
CUSTOM POLICY, sms — pool hours from a titled custom entry (regression guard)3/33/3
NOTHING SET, sms — no invented smoking or pet rule; the team confirms (regression guard)3/33/3
ENTRY NOTICE, sms — notice before someone enters: 48 hours, from the topic3/33/3
MOVE-IN INSPECTION, sms — is there a move-in checklist: yes, back within 5 days3/33/3
DEPOSIT RETURN, sms — how soon the deposit comes back: 21 days3/33/3
DEPOSIT RETURN, building override, sms — Sample Row returns deposits within 14 days3/33/3
DEPOSIT RETURN, nothing set, sms — no timeline invented (regression guard, passes both sides)3/33/3
CLEANING AND KEY RETURN, sms — what to do on the last day: keys in the office drop box by noon3/33/3
MOVE-OUT INSPECTION, sms — is there a walk-through: yes, on the last day3/33/3
PropFlow Docs