feat(taxonomy): PLANT_ROOM n=4 + honest-zero air-well/storage + ACMV↔plant correlation (weak/none) — drains the meshdb-livewire backlog#42
Merged
Conversation
… Modeller-only scope Renumber WalkerDoctrine.md's duplicate §13 to §14 (rooms rule) and fix the citation. Drop the dead SAMPLECASTLE_REAL_ROOMS_RECONCILE.md anchor (lives only on an unmerged branch, not this one). Reframe the Viewer Find Panel Room Lens reference as a one-way, read-only borrow-from source for the Modeller's ARC-import step, name its unfiltered query as a live false positive, and explicitly scope Task 5 to Modeller-only — no Viewer files touched. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MANAGER.md said "get the actual thing working" without citing what working means, letting review verdicts drift toward generic pass/fail instead of the actual product bar. Point at RESUME_GRAPH_MODELLER_INTEGRATION.md §VISION-LOCK's five sentences. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…t real Direct query (object_type=COMPILED, ≈-named) proves Terminal has zero real IfcSpace rooms — the doc previously miscounted them as "real rooms already baked in." Same correction applied to HHS's 14 rows (already caught by Task 5 but §2's table hadn't been updated to match). Adds the full 8-building room-count table: only Duplex has real, habitability-filtered data, and it isn't merged to main yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… bug Direct grep of internal/sources/Ifc4_SampleHouse.ifc finds 4 real IFCSPACE entities (Living room, Bedroom, Entrance hall, Roof) that never made it into the shipped SampleHouse_ARC.db (0 rooms) — an extraction gap, not a source-data gap as previously assumed. Clinic/Garage/Hospital/HHS have no source IFC in this checkout to check either way, so their "0 rooms" state is unverified, not confirmed-no-data. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…forward work to Sonnet Task 6: 3 usable real rooms exist in SampleHouse's source IFC but never reached the shipped ARC — an extraction bug, not a data gap. Per user directive, all further work on this doc goes to Sonnet, not Fable, from here on; Tasks 1+5's Fable history is left as an accurate record, not rewritten. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…/utility) below MIN_AREA
User-flagged, verified before fixing: HHS ("large U-shape office block, lots of office rooms
with doors") only compiled 2 rooms; restrooms/utility rooms were being missed across every
building, not just HHS. Instrumented the flood-fill to log ALL candidate pockets (not just
accepted ones) — confirmed this was NOT a mis-tuned MIN_AREA=4.0 threshold hiding rooms that
were actually detected: most sub-threshold pockets are <1.0 m^2 wall-joint/cavity artefacts
(noise), but a real population of 1.0-4.0 m^2 pockets IS a genuine small room (restroom/closet/
riser) wrongly dropped by the same blanket cutoff.
The user's hint ("rooms has doors" / "look for clues that define a toilet, utility that house
MEP") pointed at the fix: MEP fixture data isn't reliable (ARC-only discipline strip already
removed sanitary/plumbing elements from 4 of 5 buildings), but door adjacency is a real,
non-invented structural signal already in every ARC.db — a genuine small room a person uses
always has a door; a wall cavity never does. Measured before shipping: for HHS/Clinic/Hospital/
SampleCastle, pockets <1.0 m^2 are rarely door-adjacent (noise); pockets in [1.0, 4.0) m^2 are
door-adjacent in the large majority (real small rooms) — the two size bands are different
populations, not an arbitrary split.
- storey_doors() + _door_adjacent(): per-storey real IfcDoor centres, 1.0m buffer.
- flood_rooms(): a pocket in [DOOR_RESCUE_MIN_AREA=1.0, MIN_AREA=4.0) m^2 is now accepted iff
door-adjacent; still-tagged ≈/RM_/COMPILED (spacesOf()'s placement-exclusion untouched) but
predefined_type='INTERNAL_SMALL' (vs 'INTERNAL') for traceability of which path found it.
- Re-ran --write on the 5 gap buildings: HHS 2→5, Clinic 113→190, Hospital 142→213,
SampleCastle 25→47, Garage unchanged (0 door-adjacent small pockets found).
- W-ROOM-INJECT-ALL8 rerun 32/32 on bim-ootb worktree: placement-eligibility still 0 for every
synthetic-only building — door-rescued rooms are exactly as display-only as any other
compiled room, never reach schedule placement.
Doc: prompts/Modeller/DISC_Walker/ROOM_INJECTION_HYBRID.md updated with the finding + fix.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…bandwidth cap hit GitHub flagged 10GB/month LFS bandwidth usage. 59+ .db files already LFS-tracked (deploy/buildings/*, build/*.db) burn quota on every clone/fetch. Going forward: schema/rules DBs regenerate via migration/*.sql or their mining scripts; extracted/ derived building DBs distribute via OCI (already the dev/live channel), not git. Existing LFS-tracked files are left alone — this only stops new commits. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…rule User pushback (correct): the previous §DOOR-RESCUE fix used DOOR_RESCUE_MIN_AREA=1.0 and a flat 1.0m buffer picked by eyeballing HHS/Clinic/Hospital's specific data — a fitted band, not a rule. This generalizes it: - The room definition is now architectural, not size-banded: an enclosed pocket is a room if it is big enough on its own (area >= MIN_AREA, unchanged) OR it has a real door AND isn't a bare rasterization sliver. No area number stands between "noise" and "small room" anymore. - Door adjacency buffer is now each door's OWN extracted footprint (half its real leaf/frame span) + one grid cell of slack (RES) -- self-scaling to whatever doors a building actually has, not a fixed metre guess that happened to work on 5 sample buildings. - The noise floor is NOISE_FLOOR_DIM = 3*RES (0.6m) -- a pocket narrower than a few grid cells in EITHER axis is rasterization noise by construction, a property of the flood-fill's own resolution, not an area threshold reverse-engineered from observed rooms. Re-verified: HHS 6, Clinic 195, Hospital 201, SampleCastle 53, Garage 5 (close to, not identical to, the earlier fitted-band numbers -- expected, since the rule is now geometry-derived rather than tuned to match them). W-ROOM-INJECT-ALL8 rerun 32/32 on bim-ootb worktree. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…seded by abstract rule
…evidence
Tested SEAL=1 (narrower wall-dilation) to try to recover HHS's WC-stall spaces the user found
named in German ("WC Trennwand") — rejected: doesn't fix HHS (the WC block's OWN enclosing walls,
not just its internal stall partitions, are simply absent from this extraction, a resolution/
data-completeness issue SEAL can't touch) AND it fragments real rooms elsewhere into spurious
1-2 sq.m splinters in Hospital (142->253, mostly noise) and SampleCastle -- a regression, not an
improvement. Reverted to SEAL=2 (already-shipped, verified value unchanged).
Separately, user asked whether doors have standard dimensions we could use as a smell test.
Checked: real hinged doors cluster 0.7-1.1m (single leaf) / 1.2-2.7m (double leaf/wide entrance)
across all 5 buildings' door data -- consistent, no anomaly, EXCEPT SampleCastle: 28 IfcDoor rows
at 0.5m width, all named 'liftdeur' (Dutch: elevator door). Real, correctly-classified doors --
but they lead to a lift shaft, not a room, and 2 of them were rescuing actual elevator-shaft
fragments as fake compiled "rooms" (verified directly: room count with vs without lift doors as
the door-rescue signal differs). Same shape of problem as the existing §STAIR-EXCLUDE pattern --
excluded via a maintained, multi-language door-name keyword list (liftdeur/lift/elevator/aufzug/
fahrstuhl/hoist), not a width cutoff (a lift door's width isn't reliably distinct from a narrow
single-leaf door's).
SampleCastle 53->51 (the 2 lift-shaft fakes removed); HHS/Clinic/Hospital/Garage unchanged (no
lift doors in their door-rescue signal). W-ROOM-INJECT-ALL8 rerun 32/32.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…es, HHS WC gap flagged open
…en where walls can't User's repeated, correct point: HHS has 43/39/34 real doors across 3 floors (verified directly, German-named "Türelement... Drehflügel" = swing-door elements) -- "each door must be to a room." Flood-fill (even with §DOOR-RESCUE) only ever found 4/2/0 rooms on those floors because HHS's extraction is missing the walls that would divide the floor into individual offices at all (91%+ of each floor floods as one exterior-reachable blob) -- door-rescue only widens acceptance for pockets flood-fill ALREADY finds enclosed; it can't help where nothing is enclosed to begin with. New technique for where wall-enclosure structurally cannot work: partition the storey's free space by NEAREST DOOR (multi-source BFS through real free cells, real walls still block) -- each door claims whatever space no other door reaches first, exactly the "every door leads to a room" principle stated directly, not an area/threshold proxy for it. Gate (measured, not fitted per-building): use door-partition only where flood-fill's OWN result (with door-rescue already applied) finds fewer rooms than DOOR_SHORTFALL_RATIO=0.15 of the storey's real door count -- HHS's floors find 0-11% of their door count via flood-fill; every other building's WORKING floors find 20-100%+ of theirs (Garage's sparsest working floor: 5/8=62%; Hospital's sparsest: 1/5=20%) -- the ratio sits below every failing floor and above every working one, verified directly so it never overrides an already-functioning result (Garage's 5-room floor and Hospital's 1-room floor both correctly kept their flood-fill result unchanged). Result: HHS 6->105 (36/31/29/9 per floor -- in the "tens per floor" range the user predicted from door counts alone). Clinic/Hospital/Garage/SampleCastle counts unchanged except Clinic's near-empty 'Unknown' storey (0->2, same gate correctly firing there too). predefined_type='INTERNAL_DOORPART' marks these rows for traceability; object_type='COMPILED' (what tag-purity/placement-exclusion checks key on) unchanged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tability+door-partition results to Find Panel
…m-ootb port Records the merge (b202eb4) and hands off the one remaining task: port rule_frame_ref mining + walk-time zOff to bim-ootb's own disc_walker.js and terminal_rules.db — the fix is bim-compiler-only, the actual Modeller app still has the collapse bug live until this ports over. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Committing DBs wasn't the only cost: 49 bim-ootb worktrees + a duplicate ~/Projects/bim-ootb clone were each pulling fresh 100-250MB mesh.db/geo.db LFS blobs. Real end users never touch git LFS at all (they hit the deployed static site) — 100% of the quota was dev-side worktree churn. Removed the duplicate clone (confirmed clean, 100+ commits stale) and pruned 25 safe (clean + fully-pushed) stale worktrees in bim-ootb. Protocol: check `git worktree list` before creating a new one, one clone per repo, prune on sight. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…tions GitHub confirmed 0 bandwidth budget remaining, not just approaching the cap. Escalates the earlier reduce-usage guidance to a hard block: no pushing any commit that touches LFS-tracked content, no fetching/checking-out branches whose LFS blobs aren't already locally cached, until the user confirms the quota has reset. Applies to every Agent-tool prompt that touches git, not just this session. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…n guessing where no IfcSpace ever named it
…repo, right file, new findings User caught it: the doc anchored on bim-compiler/deploy/dev/navigate_find.js, which turns out to be a STALE, unmaintained fork (2859-line diff vs the live copy, no recent commits since this repo's initial migration). The actual, actively-developed Viewer code is bim-ootb/viewer/ navigate_find.js (3640 lines, commits as recent as pill-drawer/HBA work) -- same repo as Modeller's disc_walker.js, removing the cross-repo constraint the original doc assumed. Checked the live code directly and found it's further along than assumed (storey grouping + a Storey/Type toggle already exist) but also found a new, concrete bug: the Type toggle's `object_type || predefined_type` fallback never reaches predefined_type for compiled rooms, since object_type='COMPILED' is always truthy -- masks the INTERNAL/INTERNAL_SMALL/INTERNAL_DOORPART distinction compile_rooms.py now writes. Biggest correction: confirmed viewer/import_db_builder.js (the live "drop your own IFC" schema builder) never creates a spatial_structure table at all -- a user's own imported building gets ZERO room data today, real or synthetic. Scoped as its own Task 5, separate from the display-only fixes, since fixing it means porting compile_rooms.py's algorithm from Python to JS (no Python runs in a browser) -- not a quick win. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…e-once via explicit trigger User's call, this session: since real usage is 100% JS (no server, no Python runtime in the browser — confirmed for the live IFC-import path), retire compile_rooms.py in favor of one JS port usable both offline (Node CLI, replacing today's Python bake for the 8 shipped residents) and in-browser (a new Modeller Outliner "Room Walker" action, parallel to the existing Disc Walker convention). Explicitly NOT "recompute live on every open" -- user's own point that this costs real time (HHS's grid alone is ~90k cells/floor) -- compute once, on demand or at import, persist, same principle as today's offline bake just relocated to whichever moment actually needs it. 5 tasks specced: (1) verify how Disc Walker is actually triggered today before assuming a UI pattern to copy -- unconfirmed this session; (2) port the algorithm verbatim to a shared JS module; (3) Node CLI mode replacing compile_rooms.py, witnessed byte-for-byte against this session's Python counts (SampleHouse 3/Duplex 20/Terminal 43/SampleCastle 51/HHS 105/Clinic 197/Garage 5/Hospital 201) before Python is touched; (4) the browser-mode Room Walker Outliner action; (5) retire compile_rooms.py once Task 3's parity witness is 100% green. Cross-referenced from ROOM_INJECTION_HYBRID.md's Task 3 (now has a concrete trigger mechanism instead of an open-ended display spec) and VIEWER_FIND_PANEL_ROOM_ACCURACY.md's Task 5 (this doc is its actual breakdown). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…less of content User-confirmed reset date. Also sharpens the finding: a push touching zero LFS-tracked files still hung 2+ min and never landed (fix/dw-datum-port push attempt) - the git-lfs pre-push hook appears to probe the endpoint unconditionally. Rule is now "any push may hang until reset," not just LFS-content pushes. Don't retry a hung push blindly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…external target VISION-LOCK is the internal engineering bar; the guide site is the user-facing proof it's met. Notes current known gaps (Terminal datum port stuck behind LFS block, room-mode data coverage, x-ray bug, 2 live Viewer UI bugs) so a new session doesn't have to re-derive "how far are we" from scratch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Verified and pushed successfully (earlier push attempt's 2-min hang was transient, not a hard LFS block - retry succeeded in 25s). Terminal collapse bug heals once PR #726 merges (user's call). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…wcase ARC.db files, both required
…atus/total) as Task 3's actual output shape
…status, LFS quota, 2 Viewer bugs Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…llenge answered, W-SCHED-MINE 7/7 + W-DX-WALKBACK-RSGT 14/14 clean-room on committed state Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…l SQL, no-LFS channel for stale mesh.db copies (W-MESHDB-RESOLVE 2/5→5/5, byte-identical, idempotent) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…AGER-verified — both VISION-LOCK sentence-5 UI halves done Independently checked the diff: new modeller/building_parts_outliner.js mirrors the existing dw_instances_outliner.js extension-seam pattern correctly, bonsai_outliner.js untouched, real leaf-id bug caught+fixed during verification (compound id broke the existing click-to-frame path). Third Duplex Stairway data point (4, matching bim-compiler's own witness) narrows the earlier DB-divergence finding to the Viewer's specific served copy being the outlier, not a universal disagreement. Scoreboard row 15 bumped 8->9.
…Sonnet session User's own live review of today's Modeller work: LOD confirmed no longer bad, but material rendering still wrong (glass walls/windows not see-through, unlike the Viewer). Blocks adding today's Building Parts Outliner screenshot to docs/ModellerGuide.md — "not fitting for the guide." Also folds in a named UI quirk (Outliner panel collapse control not discoverable) per user request, tracked rather than dropped. Delegated as a written spec, not fire-fought reactively mid-session.
…missing Viewer-side spec User caught it live twice in one session: material-parity got a proper prompts/# after the first correction, but the Find-panel screenshot chase (3 failed attempts to find the panel-open mechanism) was still ad-hoc debugging inline in the MANAGER turn, not delegated. Hardened prompts/MANAGER.md with the rule (stop after a second failed quick-check, write the spec instead of continuing to guess) and wrote prompts/VIEWER_FIND_PANEL_PARTS_VERIFICATION.md so a dispatched session picks this up with the 3 known dead-ends already named, not repeated.
…ng-parts+disc-walk threads, note guide-blocker specs
…t re-open without new cause
…-open blocker solved + real bug found
Root cause of MANAGER's 3 failed guesses: window.A never existed, A is a local closure
parameter aliasing window.APP. window.APP.openFindPanel('') works; so does the real-user
path (press 'f', per scene.js's own keyboard shortcut). Live-driven evidence captured
(2 screenshots, §-tagged console logs) confirming the Parts axis renders real Stairway(4)/
Plant Room(6) counts on Duplex from a fresh page load.
Byproduct finding, not fixed (out of this file's verification-only scope): PLANT_KEYWORDS'
bare 'vent' substring match false-positives on "Backflow Preventer" (4 of 6 Duplex "Plant
Room" hits are false positives) and the live Parts axis has no class gate, unlike
checklistReport()'s class-gated report. Also a 4th confirmed instance of the DB-snapshot
divergence landmine (root buildings/Duplex_extracted.db vs the actually-served
viewer/buildings/Duplex_extracted.db disagree on Stairway count, 2 vs 4).
PUSH PAUSE in effect — commit local-only, no push, no PR.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…, both DONE bim-ootb fix/modeller-render-material-parity @ 2fc3964 (local, unpushed — push pause in effect): glass/window transparency threaded through from elements_meta.material_rgba alpha (mirrors viewer/streaming.js's own opacity gate), and the Outliner collapse button's discoverability fixed (was functionally correct, just zero visual weight at rest). Both verified in real headless Chrome against the real Duplex resident, no regressions in existing suites. Guide unblocked.
Cherry-picked from agent worktree (40d0c2444) to consolidate onto this branch. Documents the Find panel's open path, search/voice query box, and all six axes incl. the new Parts axis. Screenshot placeholders only (img/viewer/*.png), no images captured yet. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…g class-gate finding From VIEWER_FIND_PANEL_PARTS_VERIFICATION.md's byproduct bug (found, not fixed there). Row 15 now names both the substring-collision fix and the live-query class-gate fix so they aren't lost before the follow-up session picks them up. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ind-panel bugs Bounded follow-up to VIEWER_FIND_PANEL_PARTS_VERIFICATION.md's byproduct findings (substring false-positive + missing class-gate), ready to dispatch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ocalhost-gap root cause logged Session's own working file, not memory, per user's steer this turn. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ne + collapse-all button + Find-panel-highlight proposal Follow-up to the earlier findings entry: the fix wasn't reaching the user's actual test server (worktree vs shared checkout + stale SW precache, both now fixed and merged into ~/bim-ootb). Added a real Collapse All button. Documented 3 ranked options for the open "click a higher-level row to highlight the section" question — not yet implemented, needs user's pick given a real collision risk with the existing disc-walk-on-click wiring.
Lane sessions now self-review and administer their own follow-up prompts. User's own words captured verbatim so this doesn't drift back silently. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…+ verified live Documents the select-then-collapse conflict found and resolved (auto- expand-on-pick vs manual collapse-toggle, can't coexist on one click), the final select-only design, and live verification against the user's actual port-8080 server.
…ects stale marathon framing Investigated "the DiscWalk task" per user request. Found the 2026-07-10 marathon memory's framing is stale: the Z-datum bug it called "the actual next real gap" is fully done and merged in BOTH repos (bim-compiler PR #40, bim-ootb PR #726 squash 3d09ad6 — confirmed already an ancestor of local main, correcting PROGRESS.md's "open, not merged" note) — as is fix/dw-rot-units (PR #723). Only 3 small, already-verified, no-conflict branches remain genuinely unmerged (PRs #722/#724/#725), plus one real open question: the guide-screenshot camera bug from the same marathon, never diagnosed. Scoped a Fable session: re-verify the 3 branches fresh (no merge/push — Sonnet reviews before any of that), then chase the screenshot bug's root cause. Named the stale-radians migration question as explicitly out of scope (separate, harder design task).
prompts/FIND_PANEL_PLANT_ROOM_GATE_FIX.md Bug 1 (bim-ootb port ported byte-identical to viewer/navigate_find.js + modeller/building_parts_outliner.js, same session). build/building_parts_taxonomy.js's checklistReport() already class-gated PLANT_ROOM correctly via config/building_taxonomy.yaml (Bug 2 doesn't apply here) — only the bare LIKE '%vent%' substring match needed fixing. Real-data-driven: surveyed 59 distinct element_name templates across 5 buildings before picking the fix (token split on delimiters + camelCase, keyword-as-token-prefix match). Verified: Clinic 1890->1881 (9 "Backflow Preventer" false positives dropped, all real duct/fan/pump/chiller/vent rows kept). Terminal 74->74 unchanged (no true-positive regression). witness_building_parts_taxonomy.js 13/13 PASS, unchanged. PUSH PAUSE stands in this repo per CLAUDE.md standing directive — local commit only. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… Parts/glass section Cherry-picked from agent worktree (a77fcc2b0). Replaces the 5 Find-panel placeholders with real Playwright captures off bim-ootb main (f0f0994), corrects two prose details the source-only draft got wrong (search placeholder text, Navigate drawer row name). Adds ModellerGuide.md coverage for Building Parts Outliner + glass transparency, both previously undocumented. Two new findings flagged in-doc: NL-query hint never renders live (CSS gating bug), Parts axis Plant Room false-positive (tracked in FIND_PANEL_PLANT_ROOM_GATE_FIX.md, not duplicated here). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s already built, only the witness re-run + report remain
Found /tmp/wt-verify-{grid-tilt,oracle,dwprobe} already exist with the
target branches merged into fresh checkouts off current main (dwprobe hit
a real conflict since my last check, resolved KEEP-BOTH). None have a
logged witness re-run yet — that's the only remaining step before a
Manager-scoped session can make the merge call. Noted so the next
dispatch doesn't redo the merge work.
…ppended (3 PRs re-verified, guide-shot bug diagnosed+fixed) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…result, 2 merged 1 held #722 and #725 (as #741) merged after fresh re-verification. #724 held — real regression in the KEEP-BOTH conflict resolution (SampleCastle MEP disc node now absent from UI, was 8/8 historically, now 6/8), needs a fix, not Manager's to patch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ispatch WITNESS_SAMPLECASTLE_MEP_STALE.md Independently verified Manager's flagged "regression" on fable/dwprobe-dedup (#724): ran witness_modeller_disc_walk.js directly against pristine origin/main (9b62c4f, zero relation to the branch) and reproduced the IDENTICAL B5/B6 failure. Conclusive — the branch/merge isn't the cause. Root cause: SampleCastle_ARC.db is ARC-only (0 MEP rows, confirmed via direct SQL), a data-vs-witness staleness, not a code regression. #724 is clear to merge on the same terms as #722/#725. Scoped the actual fix (retarget or honestly skip B5/B6, fix the uncaught-rejection crash path) as its own small follow-up rather than blocking the branch verification task on it.
… merged My earlier "real regression" call was wrong — independently re-verified Sonnet 1's counter-finding (pristine main reproduces the same failure, unrelated to the branch) before merging. Root cause was stale SampleCastle_ARC.db data, not the KEEP-BOTH merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…/B6 retargeted to Clinic, 8/8 green (local-only per push pause) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ata, post-fix) The Duplex screenshot predated bim-ootb PR #740/#742 (word-boundary + class-gate fix) and showed the pre-fix false-positive behavior. Replaced with a real capture on HHS Office (complex-class): Stairway(20), Lift Shaft(3), Plant Room(1769) all visible at once, and updated the caveat note now that the fix is landed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ped next mission DiscWalk-strengthening + Plant Room industrial taxonomy expansion, next step on MANAGER.md's own "Flag on the Hill" mission. Grounded in live HHS Find-panel verification this session (real 1769-match Plant Room evidence, class-checked not just LIKE-counted). Terminal named explicitly as the calibration anchor (real professional project, not public-sourced like the other buildings). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
# Conflicts: # PROGRESS.md # prompts/MANAGER.md # prompts/Modeller/DISC_Walker/VIEWER_FIND_PANEL_ROOM_ACCURACY.md # prompts/ROOM_TYPE_TEMPLATE_CLASSIFIER.md # scripts/compile_rooms.py
… investigation only User spotted geometry chaos + no material/LOD400 on the live ModellerGuide's walker-fixtures screenshot. Traced to _renderDiscWalk in modeller.html (confirmed a separate, flat disc-tinted material path from today's ARC-seed glass fix, and confirmed placement x/y/z comes straight from disc_walker.js with no clamping in the renderer) before writing the spec, so the dispatched session isn't starting from a guess. Explicitly investigation-only, gates whether this is a render bug, a disc_walker placement-data defect, or a screenshot framing illusion, and whether it's ELEC-specific or a systemic DiscWalk-baseline risk. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… findings appended Investigation only (per file scope). Verdict: pre-existing cat[0]-fallback bug in _commitDiscWalk (folded unmatched fixtures as the catalog's first item -> full-height Column per outlet), already fixed on bim-ootb main (670bf0f, 2026-07-10, §LIVEWIRE). Deployed docs/img/modeller/walk-fixtures.png predates the fix by 2 days (bim-compiler 3ec99e8, 2026-07-08) -- stale screenshot, not a live defect. Confirmed via live puppeteer probe on current main: ELEC/PLB/FP/ACMV z-values all sane within envelope. Systemic (any discipline), not ELEC-specific, but moot -- #722/#741 density/clash witnesses already postdate the fix. Named follow-up: re-capture the guide screenshot (separate docs task, not actioned here). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…checked) + honest-zero air-well/storage + ACMV↔plant correlation measured WEAK/NONE DISCWALK_PLANT_ROOM_INDUSTRIAL_TAXONOMY.md Tasks 1+2. W-BUILDING-PARTS re-run 13/13 after the yaml update. Air well: geometric route blocked (size_z is a per-storey constant, verified by distribution). Storage: synthetic room names make label search structurally blind; no shelving classes. ACMV proximity: calibration falsifier PASSED (AHU-labeled walls 0.76m from found cluster); correlation 0.72-0.79 (Terminal) / 1.00-1.05 (HHS) vs pre-stated rule -> weak-to-none, disc_walker placement NOT modified. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executes prompts/DISCWALK_PLANT_ROOM_INDUSTRIAL_TAXONOMY.md (Tasks 1+2) and carries the branch's accumulated post-#41 backlog to master per the user's 2026-07-11 directive ("push all so we have no backlog").
Task 1 — Plant Room n=2→n=4 (class-checked on full extractions): Hospital 5391 (4816 IfcDuctSegment + 575 AHU/fan/damper proxies), Clinic 1881 (incl. 2 chillers, 5 fans/pumps), HHS 1769, Terminal 644 full / 74 ARC-resident (+6 walls literally typed A_Wall_Ext_230mm_AHU_V1). config/building_taxonomy.yaml updated, both scopes labeled. W-BUILDING-PARTS re-run: 13/13 PASS. Hospital_3 confirmed a duplicate import, not a variant.
Task 1 — Air well & Storage: honest zero. Air well: zero name evidence in all 5 DBs; geometric route blocked — spatial_structure.size_z is a per-storey constant (verified by distribution), so tall-void candidates are GIGO. Storage: compiled room names are synthetic (≈ Level N Rk) so label search is structurally blind; no shelving classes anywhere. Yaml deliberately unchanged for both.
Task 2 — ACMV↔Plant-Room proximity: weak-to-none, NOT wired. Calibration falsifier passed (clustering locates Terminal's labeled AHU enclosure at 0.76m median). Correlation vs pre-stated rule: Terminal ratios 0.72–0.79 (weak), HHS 1.00–1.05 (none) → disc_walker placement untouched, honest negative recorded (scoreboard row 15).
Full findings appended to prompts/DISCWALK_PLANT_ROOM_INDUSTRIAL_TAXONOMY.md; ROOM_INTELLIGENCE_SCOREBOARD.md row 15 + building table refreshed.
🤖 Generated with Claude Code