Pascal Editor
A Pascal learning project: an explainable scene-repair and version lab
Design a proposed lab that shows before/after graph repairs, GPU fallback and stale-write decisions with purposeful diagrams and optional spatial interaction.
What you will learn
- Make invisible data changes visible
- Use 3D interaction only for spatial questions
- Connect graphics acceptance to durable state
Before you start
- Basic scene-graph, JavaScript and HTTP concepts
- An owned small scene with expected dimensions and relationships
Explain the implementation boundary and reproduce the chapter’s checklist or narrow graph exercise.
Key takeaways
- Show repair decisions alongside the original graph.
- Use 3D for spatial inspection and 2D for state changes.
- Link accepted revisions to reopened, checked scenes.
Make invisible data changes visible
A useful learning project would display a scene before import, the repair decisions and the resulting graph beside its visual preview. This is an editorial proposal, not an announced Pascal roadmap item. The learner should be able to identify which wall was removed, which reference was stale and why a parent link remained ambiguous.
Begin with the deterministic fixtures already used by the source probe: a childless zero wall, a wall hosting a door, duplicate child references and one-versus-two parent claims. Preserve the original input and show repair counts separately from schema warnings. A repair animation should not suggest that an unresolved conflict was automatically solved.
Use 3D interaction only for spatial questions
Here an optional Three.js view can be genuinely useful: rotate a small wall and opening, switch between stacked and separated levels, or compare the retained geometry of a hosted degenerate wall. A graph diff and version timeline remain clearer in two dimensions. Choosing different representations for different questions makes the material richer without turning every article into a heavy demo.
Keep a static SVG explanation and textual result available when graphics are unsupported or motion is reduced. Load an interactive module only when requested, use owned assets and release its resources on exit. These are design requirements for the proposed lab, not a claim that this article already ships or tested that interactive application.
Connect graphics acceptance to durable state
Add a conceptual version exercise: two readers observe version three, one saves version four, and the second stale writer receives a conflict rather than silently overwriting. Link the accepted revision to a reopened scene and a clear artifact verdict. Do not use the local store’s published flag as a substitute for public deployment evidence.
The lab is complete only when its expected outcomes are reproducible, unsupported cases are visible and source revision plus test scope are recorded. Our current evidence covers pure graph/slug helpers and fake renderer orchestration; full SQLite, editor and GPU runs remain unperformed. A learning project should make that evidence ladder explicit rather than presenting every green check as equivalent.
Implementation steps
- 1
Create a tiny owned graph fixture with known corruption.
- 2
Display original, repaired and unresolved states separately.
- 3
Add optional spatial inspection with a static fallback.
- 4
Test stale-write and reopen behavior as separate integration layers.
Copy-ready example
{"proposal":"scene-repair-and-version-lab","staticFallbackRequired":true,"interactiveDemoShipped":false,"sourceHelperProbeExecuted":true,"actualGpuRuns":0,"upstreamRoadmapClaim":false}Frequently asked questions
Is the interactive lab already included in this article?
No. It is a proposed extension; the article provides static diagrams and executable narrow examples, not a shipped full editor demo.
Why use both 2D and 3D explanations?
Geometry inspection benefits from rotation, while graph ownership, repair decisions and version conflicts are clearer as diagrams or timelines.
Sources
- README.mdSource checked 2026-09-08
- LICENSESource checked 2026-09-08
- packages/cli/package.jsonSource checked 2026-09-08
- packages/core/package.jsonSource checked 2026-09-08
- packages/viewer/README.mdSource checked 2026-09-08
- packages/cli/src/runtime.tsSource checked 2026-09-08
- packages/cli/src/editor-process.tsSource checked 2026-09-08
- packages/cli/src/mcp-connector.tsSource checked 2026-09-08
- packages/mcp/src/transports/http.tsSource checked 2026-09-08
- packages/mcp/src/storage/sqlite-scene-store.tsSource checked 2026-09-08
- packages/core/src/store/use-scene.tsSource checked 2026-09-08
- packages/viewer/src/components/renderers/node-renderer.tsxSource checked 2026-09-08
- packages/viewer/src/lib/renderer-capability.tsSource checked 2026-09-08
- packages/core/src/validation/validate-build-json.tsSource checked 2026-09-08
- packages/core/src/utils/heal-scene-graph.tsSource checked 2026-09-08
- packages/mcp/src/storage/slug.tsSource checked 2026-09-08