← Planner5D: Plan, Build, CreateCONTENT HISTORY

Update to Planner5D: Plan, Build, Create

Snapshot Oct 9, 2026 · 18:02 UTC · version 1.3.1

Collection source: downloaded plugin package.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Recognize, recreate or audit Planner5D floor plans from plan drawings/images, PDF/CAD, or measured scan geometry. Compare source dimensions, rooms, walls and openings, then make native corrections while preserving valid work. Use for recognition quality and measured source-plan fidelity, not ordinary interior/facade photographs without a plan.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 481
    },
    {
      "relative_path": "references/geometry-correction.md",
      "size_in_bytes": 2023
    },
    {
      "relative_path": "references/measurement-ledger.md",
      "size_in_bytes": 1982
    },
    {
      "relative_path": "references/recognition.md",
      "size_in_bytes": 2050
    },
    {
      "relative_path": "scripts/compare_measurements.py",
      "size_in_bytes": 3390
    }
  ],
  "name": "planner5d-floorplan-recheck",
  "skill_md_contents": "---\nname: planner5d-floorplan-recheck\ndescription: Recognize, recreate or audit Planner5D floor plans from plan drawings/images, PDF/CAD, or measured scan geometry. Compare source dimensions, rooms, walls and openings, then make native corrections while preserving valid work. Use for recognition quality and measured source-plan fidelity, not ordinary interior/facade photographs without a plan.\nmetadata:\n  version: \"0.1.9\"\n---\n\n# Planner5D floorplan recheck\n\nFor a Planner 5D MCP App, use the server relay described in `planner5d-native-app` and invoke native `goToEditorProject` through `change_planner5d` to open the verified target. Read the live editor context after navigation. The ordinary browser route and the app route use the same native operations and measurement contracts.\n\nFor an already-recognized project, start with comparison; do not upload the source again. Honor read-only/manual-construction requests. Read [recognition and recovery](references/recognition.md) only for submission/recovery, and [geometry correction](references/geometry-correction.md) only for a measured geometry defect.\n\n**Removal gate:** do not call `remove` unless actual `selected` is nonempty and matches the intended source-absent IDs exactly. A wanted window/door in that set means stop before removal. `editorClearSelection` clears focus; it does **not** ungroup objects. Never replace a wanted original opening with a catalog substitute to repair this mistake.\n\n## Establish source and target\n\nInspect the source. Record page/floor, scale, labeled lengths and their **basis** (inner span, wall path, exterior span, opening width), room functions, access and openings. Keep measurements, visual estimates and defaults distinct. Identify plan pages/floor order in multipage PDFs; do not silently omit floors. Missing scale blocks exact length claims, not useful topology review.\n\nUse all assigned sources and the user's requested contents: an item omitted from one plan view may be supported by another photo or by the furnishing brief. `Ns` can also be a roof, stair or other architectural catalog component. Do not delete every `Ns` merely because the plan drawing is unfurnished.\n\nSet tolerance from user requirements and source precision; a label rounded to 0.1 m is not centimeter-exact. Keep a compact ledger: source reference, expected value/basis, object IDs, observed value/method/basis, units and tolerance. Use the [ledger reference and optional arithmetic helper](references/measurement-ledger.md) for complex comparisons; do not reread an already-loaded entrypoint.\n\nStart with `editorGetContext({})`: bind the project hash, floor, permissions and revision. Omit `includeCamera` in 2D. Read `getWebMcpGuide` once; request help only for unfamiliar registered tools, at most eight names per call. Follow live schemas, without guessed tools or private-state fallbacks.\n\n## Measure before diagnosing\n\n1. List the complete scoped inventory with `editorListObjects` (up to 100 per page). `Room`, `Wall` and `Point` are structure; `Door` and `Window` are openings; `Ns` denotes catalog models such as furniture or curtains, and `Pr` denotes primitives. Inspect and classify every `Ns`/`Pr` against the source before claiming no additions. Empty names or unloaded bounds do not mean absent objects. Batch related IDs in `editorInspectObjects`, `fields:[\"geometry\",\"properties\"]` (up to 50 IDs). Retain original opening IDs, catalogs, positions, dimensions and attachments. Read `data` only for missing required fields.\n2. Read wall properties whose `property` is `length`, including their returned `units`, paired with wall paths. **`editorGetSceneMeasurements` supplies flooring areas/counts, not room width/depth.** Repeating it cannot supply a missing length. Context/outline bounds are path evidence.\n3. Confirm the length's basis from native geometry and flooring area, with 2D dimensions when available; do not label `length` as a path measurement merely because it belongs to a wall. For a verified rectangle, cover both opposing side chains on each axis, summing contiguous collinear segments. Compare `widthCm × depthCm / 10000` with native `flooringArea`: agreement within measurement rounding, together with both opposing reported lengths being materially smaller than their measured paths (beyond native rounding), corroborates the inline/usable basis. Record this method; 2D labels are additional evidence, not mandatory when the cross-check is decisive. Missing labels alone do not mean the returned length is a path measurement or require repeated previews. Area alone or an irregular/clipped floor cannot establish width/depth. Do not require four wall records.\n4. Compare matching bases/units only. Source inner spans versus path bounds means **insufficient measurement evidence**: inspect native wall measurements before judging size. Do not rescale or report a mismatch from an unresolved basis.\n\nCheck floor/room functions, shared boundaries, entrance-to-room connections and source-supported opening positions, widths, directions/heights. When repositioning an opening, `offsetCm` is its center's distance along the inspected wall path; centered means half that path length, not half its usable interior `length` or a near-edge gap. Preserve the opening ID and inspect the applied center and aperture ends. In default 2D, X grows right and Y downward; a 3D orbit does not redefine north/south. Room-owned walls at a shared boundary are not by themselves erroneous duplicates.\n\n## Correct only demonstrated differences\n\nWhen dimensions/topology match, preserve geometry; correct only wrong functions/names and unwanted additions. Set inspected editable keys with string values. Room titles use `customName` when exposed, not `name`. A native room-type label may already satisfy the source; skip redundant custom titles unless exact wording matters. One rejected key does not prove naming is unsupported.\n\nFinish this sequence for one saved `targetId` before selecting another group. Reuse returned IDs verbatim; an invalid ID is not evidence that a different object disappeared.\n\n1. `editorSelectObject(targetId)` → `editorGetSelectionActions()`. Compare returned `selected` with the intended removal IDs, not just the requested ID.\n2. If a wanted companion is selected, call `editorRunSelectionAction({action:\"ungroup\"})` only when available, then **reselect that same `targetId`** and read selection/actions again. Checking another curtain/window group cannot establish whether this ungroup succeeded.\n3. Call `editorRunSelectionAction({action:\"remove\"})` only after the removal gate passes. If ungrouping is unavailable or the selection still includes a wanted object, leave it intact and report the blocker.\n4. Verify this target is gone and its original opening is intact, then advance to the next target. If a mistake required Undo, verify restoration and change the failed selection procedure before retrying. Clearing selection and repeating the same group removal is not a recovery.\n\nUse current revisions, stable operation keys and terminal business results; preserve partial IDs. Reuse measurements after name/type/decor-only edits when geometry preservation agrees. Inspect affected objects after correction and perform one final scoped check. Avoid full-document/measurement/preview loops without a new discrepancy. For persistent errors, revise the diagnosis or report a blocker.\n\n## Verify and deliver\n\nCapture 2D/3D with `editorGetScenePreview({view:\"2d\",scope:{kind:\"floor\"},maxImageBytes:1000000})` and the corresponding 3D call. Default width is 768, maximum 1024. Inspect actual image blocks, not serialized base64. The preview switches view and waits for readiness; wait separately only for reported pending IDs, in the required view. Use a smaller relevant scope for unreadable details.\n\nRun scoped `editorValidateScene`; retain inherited warnings when geometry otherwise matches. A clean structure result does not certify circulation, door swing, wall clearance or exact mesh contact. State checked and unresolved constraints. Finish the shell before cosmetics/furnishing.\n\nReturn the project link (using the native result URL or the connected Planner origin with the verified project hash), source-versus-actual measurements with basis/tolerance, corrections, inventory counts, preservation checks and blockers. Normal autosave suffices for routine edits; idle is not a server receipt. Reload for requested persistence tests. Test Undo/Redo when geometry/history recovery needs it, checking neighbors and attachments. Keep credentials and signed access tokens out of links/results.\n\nFor plan import followed by furnishing or an AI render, continue from this verified native project: use `planner5d-webmcp` for the requested room design, `planner5d-model-import` for specific real furniture, then `planner5d-ai-render` for the completed source scene. Return the requested final image and editable project; recognition alone does not finish that combined brief.\n"
}

SHA-256 of public snapshot: 17508c2385a9b2de1caef2e7cfb112fa8193e65c456cf3dfc4a747c67f1a7bfa