docs(prompts): PATH_LEGAL_SEGMENTS — spec + DONE, mesh-derived storey raster#43
Merged
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>
…y blobs in extracted DBs (jkr georeferenced Revit series) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-REJECT/R-DOOR-SCORE/R-SPINE), Task 0 traced, Task 3 no-evidence Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ier (1/1b/2), Lane B judgment-tier (Task 0 trace + R-SPINE non-convex validation) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…grind prompt (§POC0c/§POC5)
Lane B was judgment-shaped ("trace," "watch," "expect"); rewritten as a deterministic
compute-don't-judge prompt for Fable — Task 0's Terminal load-path trace and R-SPINE's
AABB-vs-true-polygon containment question both resolve to a measured geometry number,
not a read. No pipeline code changes in this pass.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…er move to bim-ootb/buildings JKR_Project.db relocated from ~/Downloads/OPEN SOURCE BIM/ to the canonical ~/bim-ootb/buildings/JKR_extracted.db (same naming convention as Duplex/Terminal) — provisional, not yet confirmed for ARC-walk promotion. Pointer added so a future session doesn't look in Downloads. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…0 closed (Terminal_ARC.db traced, §POC0c), R-SPINE AABB containment rejected+corrected (§POC5, 1188 violations/10 of 14 clusters) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ng>_ARC.db from an extracted DB No generic discipline='ARC' filter script existed (confirmed by search — the 8 shipped *_ARC.db files were built ad-hoc per-building, upstream of any extracted DB). Fills that gap by reusing two already-established patterns: str_walker_outliner.js's _filterArc() predicate and project_spaces_to_arcdb.py's verbatim-column-copy shape. Run against JKR_extracted.db to produce JKR_ARC.db (3118/3118 ARC elements + transforms + instances read back clean, 83 spatial_structure rows carried verbatim) — schema/table-set matches every sibling *_ARC.db exactly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… moved to canonical bim-ootb/buildings/JKR_extracted.db, corpus verified identical Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…both mirrors, 6/6 parity Ports the POC-validated split-hallway merge rule and enclosure-based non-room rejection into scripts/compile_rooms.py and build/room_walker.js — pseudocode/parameters taken verbatim from the spec's Task 1/1b sections. R-MERGE unions same-storey pockets whose shared seam has no real wall backing it (a synthetic flood-fill/door-partition split, not architecture); R-REJECT drops pockets whose wall-backed perimeter fraction (enclosure) falls below 0.25, flags 0.25-0.50 as SUSPECT_OPEN. Runs merge-then-reject per storey, after flood_rooms/partition_by_doors, before guid assignment. Verified: build/witness_room_walker_parity.js 6/6 PASS byte-identical (SampleCastle/HHS/Clinic/ Garage/Hospital/Terminal). Found + fixed a real cross-language determinism bug along the way: JS Object.keys() on a union-find-root-keyed object silently reorders to ascending numeric order (array-index-like key enumeration) instead of Python dict's insertion order, desyncing which physical room got which guid between mirrors on Hospital/Terminal — fixed via an explicit group-encounter-order array. Session-scratchpad witness (not committed, see spec doc) confirms the named acceptance cases: JKR 66 logical rooms -> 51 after merge (independently reproduces the spec's own row-level 79->51 number), storey '01 Aras Satu' 31->16 (the split-hallway chain fix), 0 false rejects among 34 pre-merge non-OPEN rooms, Duplex 0 merges/0 rejects (21 real ground-truth rooms untouched, confirmed byte-identical before/after --write). R-DOOR-SCORE (Task 2, common/room_graph.js, bim-ootb) was also implemented per spec but DISPROVEN by witness_room_graph_path.js's existing G3a real-path regression check (LAMBDA=0.8 overrides a 9x distance gap on real door 204034) -- reverted, not shipped. Full finding + handoff recorded in this file's new dated section. PUSH PAUSE in effect -- committed locally only, not pushed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…it check feat/room-pathfind-graph (bim-ootb) traced and confirmed STALE, not unmerged prior art: its common/room_graph.js is byte-identical to what's already live on main (PR #746, commit 3f6dbbc) — branch forked before that merge and was never fast-forwarded. Removed (0 unique commits). Verified directly (real Duplex_ARC.db) that room_graph.js's existing shortestPath() already serves R-SPINE's spine-restricted routing need when fed a node-filtered graph object -- no new pathfinding algorithm required. 4/4 checks pass (session scratchpad witness_rspine_fit.js). Remaining gap for a full R-SPINE build (not attempted, correctly out of scope this pass): spine selection, a ~10-line restriction wrapper, and conduit-polyline geometry -- none are pathfinding. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…Viewer 0→59 rooms, Modeller self-heal loader + fresh room set), browser-proven Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e-press room injection + IDB persist Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… + stair + exit edges, human-walk pathfinding, POC-gated Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e, needle=manual replace, embeds preprocessed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…3-state standardization)
Implementation landed in /tmp/wt-terminal-rooms (fix/terminal-rooms-selfheal @ 91e28ce, local
only, no push per PUSH PAUSE). All three witnesses PASS incl. the mid-flight §STANDARDIZATION
amendment (zero/recompute/none three-state model, replace semantics, double-press idempotency).
Logs: scratchpad/logs/w_needle_{terminal,patchsrc,healthy}.log. Honest findings: no building in
the local fixture set has real (non-RM_) extracted rooms — proven via a labeled synthetic
single-row fixture instead; old 12-column spatial_structure schema (Duplex) would throw inside
the walker's room_guid INSERT if ever pressed (caught gracefully, not exercised, flagged as
deferred, out of scope for this task).
…t camera-zoom gap noted Room highlight verified live on HHS Office (31 real rooms on Level 2 alone): a single room isolates as a clean, correctly-bounded translucent box, confirming the geometry is well-formed. Removed the guide's unverified "tap a room to zoom to it" claim — confirmed live 3x that room-select doesn't actually reframe the camera; flagged as a known gap instead of leaving a false claim in place. Also appends a deferred design spec (corridor/hallway findability — TYPE/ROOM/PATH surfaces) to ROOM_TAXONOMY_STRATEGY_2026-07-12.md, captured per user direction, explicitly future work. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
# Conflicts: # docs/BIMUserGuide.md
…in bim-ootb) POC-gate-first per spec: Terminal 1.5%->68.7% raw reachable room pairs (100% of the 49 rooms that have any door at all, the other 10 are pre-existing SUSPECT_* zero-door rooms), Duplex E1-only shortest paths byte-identical before/after (26 pairs, 0 mismatches), JKR logged honestly (not gating). Engine shipped in bim-ootb common/room_graph.js on feat/occupant-pathfinder (off fix/terminal-rooms-selfheal), API-compatible, four witnesses quoted in this file's # DONE section. PUSH PAUSE in effect — local commit only, no push, no PR.
…, mobile QR) + OCCUPANT_PATHFINDER follow-up lane (exit detection first) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ug A fix now proven live Both images predated the DiscWalk containment fix (Bug A, resolved+5-axis-verified 2026-07-12). Re-ran the existing proven E2E witnesses unmodified (witness_e2e_walk.js, witness_e2e_seedtrunk.js, both 100% pass) against bim-ootb main with the fix merged, rather than write new capture scripts. walk-fixtures.png: 267→102 fixtures (space-scoped walk superseded the old density walk since these were last captured) — building now reads as a clean, fully-contained shell from outside, no stray geometry. seedtrunk-trunk.png: real post-route state (0→3,922 trunk segments, framebuffer-verified), replacing the honestly-labeled pre-route placeholder that stood in after the 2026-07-09 retraction. route-run.png/route-spine.png/samplecastle-arc-open.png intentionally NOT touched — unrelated tools (Route sketch, ARC-open), not implicated in the containment bug; recapturing those is a separate guide-freshness task. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ect small tasks + report-not-build Codifies today's actual operating model: overlook admin/parallel sessions (standing), do small bounded tasks directly (guide staleness checks/fixes — no need to dispatch an agent for a few-file, reuse- existing-tooling job), and for anything that turns out bigger than "small" (a real feature/code fix surfaced while checking a guide), name it precisely and hand it to another session rather than silently expanding scope under cover of "fixing the guide." Adds §GUIDE STALENESS METHOD — the concrete 7-step workflow proven this session (mtime vs fix-date comparison, reuse existing E2E witnesses rather than hand-rolling capture scripts, look at the actual image, shrink-guard-aware deploy via safe_gh_deploy.sh with explicit ALLOW_SHRINK blessing, verify the live gh-pages branch directly rather than trust a curl that can lag CDN propagation). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…th mirrors, parity 6/6 (user-reported stairwell-as-room) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fix verified live Reports the STAIRWELL-STACK reject fix from today's Fable session: Terminal healed from 59 to 40 clean rooms via self-heal patch, verified live on localhost. New section documents the Type taxonomy (INTERNAL/INTERNAL_SMALL/SUSPECT_OPEN/SUSPECT_NO_DOOR) with the real SUSPECT_NO_DOOR demo screenshot, names the corridor/CIRCULATION_DISPLAY gap honestly, and confirms the Path sub-mode's multi-step stair-crossing routing now verified live. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…shipped (PR763), two measured open lanes (air-room containment, courtyard chord) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…oor-waypoint detour, POC-gated, Sonnet-executable Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… landmine + the fix (bim-ootb #764/#765) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…l misfires, root-caused POC gate ran against real HHS (patched) + Duplex data per the spec's own POC-first fence. The named control case (HHS R18->R31 courtyard chord) does not classify illegal under G3's room-rects+floor-slabs union — root cause measured: this building's per-storey IfcSlab is a single concave (U-shaped) element stored as one axis-aligned bbox in element_transforms, so its AABB overreaches into the courtyard notch (same failure shape as a concave room's AABB). Duplex control passed clean. A room-rects-only diagnostic (not applied) correctly flags the same chord — reported to inform, not decide, the next call. Per the preamble: STOP on a misfiring control case, report the numbers, don't improvise a replacement definition solo. No engine files touched; evidence (poc_path_legal.js) pushed to bim-ootb fix/path-legal-segments, not merged.
…raster, coordinator decision Neither of the two bbox-only options in the prior DONE section is used. The real fix is not a better bbox rule but dropping bboxes entirely for the slab half of the union: real triangulated mesh geometry already exists one join away (element_instances -> component_geometries, the same table modeller/real_geometry.js already decodes for rendering) and was simply unused by the original G3 definition. New architecture: precompute a per-storey walkable bitset raster from real slab mesh triangles (offline, node), ship it as a self-heal patch per this project's existing DB- change doctrine, and have room_graph.js do a plain O(1) bitset lookup at query time — no mesh decode in the browser, "instant next time" per the user's framing. Implementing directly this session per user directive, not queued as a further open question.
…tb PR #767 Mesh-derived storey raster implemented, witnessed (POC re-run, real-browser HHS live check, Duplex byte-identical regression, SampleCastle structurally immune), and pushed with a PR open (auto-merge armed) — see the DONE section for the full numbers and the one real bug found and fixed during witnessing (DOOR_BUFFER_SLACK tolerance on the room-rects fallback).
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.
Summary
courtyard), root-cause + diagnostic, coordinator decision (§G3-REVISED: mesh-derived storey
raster instead of a better bbox rule), and the DONE section with the implementation shipped in
bim-ootb PR #767 (auto-merge armed).
prompts/Modeller/DISC_Walker/PATH_LEGAL_SEGMENTS.md.Test plan
🤖 Generated with Claude Code