Blog
ProductGuideEngineeringAI AccuracyResearchPhase 203D ReconstructionMEP TakeoffSchedule CS33

Phase 20 — First Training 3D Model and a Count/Length Ledger, Without an 80–90% Claim

Teraquant Team15 min read
STATUS: SUCCESS_MODEL_PASS. G1 training model and G3 SOR ledger both hold. Training PDF: 澳門大學—S33教職員宿舍建造工程/圖則.pdf. Sole-storey G, four fittings, fabricatedGeometry false. Ledger: countRows = 11, lengthRows = 0, lengthMetresSum = 0. Not a Peak P&D 3D 80/80 claim. Not a measured pipe-length claim. Not a multi-floor aligned building. Not corpus 80–90%. Live Peak 3D tab remains empty (model persisted: false). Assumed 3.15 m is labelled assumed, never measured.

This is an investigation journal plus a product how-to. Every figure below is copied from the Phase 20 success report (docs/PEAK_PHASE20_SUCCESS_REPORT.md), the reconstruct ledger (reconstruct-ledger.v1.json), and the SOR count/length ledger (sor-qty-length-ledger.v1.json). Nothing was re-scored for publication. Zero metres means no centerline was lifted. It is not 0% length accuracy.

What Phase 20 asked

Phases 18 and 19 shipped the in-app world_metres_v1 path and planned a Peak P&D 3D Detection / QA@20 gate of at least 80%. The live Peak P drawing still stops on FLOOR_IDENTITY_AMBIGUOUS with zero floors. Phase 20 changed the first question: can one real training_data PDF reconstruct a non-fabricated model, and can we write SOR count items and length metres from that model?

The estimand is qty_3d (methodVersion phase20_qty_3d_v1). It is not Phase 5–17 2D QA@20. The two scores must not be blended. Opt-in research flags (EVIDENCE_TILED_EXTRACT, VECTOR_GEOMETRY_COUNT) stay off in the signed-in default extract; they are not this 3D path either.

Verdict: G1 and G3

All five Phase 20 gates passed on the artefacts. G1 and G3 are the public ones. G1 is not status: reconstructed. The clause used is floorKeys.length ≥ 1 and at least one fitting with world coordinates. G3 requires a tracked ledger that lists count items and length items, including an empty length section when no pipe_run or riser exists.

GateResultn / metresNote
G1 Training modelPASSfloorKeys = [G]; 4 fittingsS33 sole page 2. fabricatedGeometry false. Status stored partial (DISCIPLINE_UNRESOLVED is soft).
G3 SOR ledgerPASScountRows = 11; lengthRows = 0; lengthMetresSum = 0Count items written. Length section present as empty arrays. 0 m is not a length accuracy percent.

G2 (artefact on disk), G4 (expanded tests), and G5 (honesty: assumed height never labelled measured; blocked ≠ 0%; no IFC) also passed. Verification is PASS_WITH_BLOCKERS: automated suites are green; the live 3D tab was not certified because there was no signed-in Clerk session and the S33 model was never written to the product database.

The training model (S33, not Peak)

The SUCCESS_CASE is training_data/澳門大學—S33教職員宿舍建造工程/圖則.pdf (27 pages). Sole page 2 is the G1 primary: floor key G, four fittings with world coordinates, no pipe_run, no riser. Height provenance is assumed (3.15 m opted in). The survey stack on pages 1, 2, 3, 6, 7, 10 and 11 stays PLANS_UNALIGNED and is recorded, not promoted as a registered building.

DrawingStatusFloorsElementsPipes / risers
S33 sole p2 (G1 primary)partial / earned for G1G4 fittings0 / 0
S33 surveypartial / PLANS_UNALIGNEDB, G, 1, 11, R (as stored)12 fittings0 / 0
Peak P (product slice)FLOOR_IDENTITY_AMBIGUOUS000 / 0
S33 training PDF page 2, G/F potable-water plan, opened in the drawing viewer. No 3D pipes painted.
Real raster of training_data/澳門大學—S33教職員宿舍建造工程/圖則.pdf page 2 (2026-08-15). This is the G1 sole-storey sheet. Local capture of shipped drawing chrome. Not a signed-in production Clerk session. The model was not persisted (db.persisted: false). No fittings or pipes were painted on the page.

SOR count n = 11, length = 0 m

The tracked ledger (sor-qty-length-ledger.v1.json) scores sheet P&D from the page title, not from the filename 圖則.pdf (that filename stays soft DISCIPLINE_UNRESOLVED). Pairing on every count row is identity_only. Peak-SOR.xlsx was not loaded. Sole and survey are two ledger drawings of the same PDF, not 11 unique fittings added across buildings.

Roll-upCount rowsLength rowsMeasured mAssumed m
S33 sole p24000
S33 survey7000
Total11000

Sole page 2 count items (qty_3d, unit nos.): 25 mm potable_water fitting (1); 20 mm reclaimed_water fitting (1); 50 mm reclaimed_water fitting (1); 80 mm potable_water fitting (1). Survey adds further printed labels on other pages (potable_water 2, reclaimed_water 2, unlabelled fitting 4). Length items: none. The model had no measured-eligible pipe_run or riser metres.

What this is not

  • Not Peak P&D 3D Detection / QA@20 ≥ 80%. NJ left peak80Optional.claimStatus: not_evaluated with both percents null. That gate remains Phase 19.
  • Not a measured pipe-length pass. lengthMetresSum = 0 means no centerline, not perfect zero error.
  • Not a multi-floor aligned building. Survey stays PLANS_UNALIGNED.
  • Not a live in-app model. db.persisted is false. Peak /3d and the Peak P 3D tab stay empty.
  • Not corpus 80–90%. Phase 17 sufficiency remains INSUFFICIENT_CROSS_PROJECT_COVERAGE.

How to open the 3D tab and read the blockers

The rest of this post is a walkthrough of the shipped drawing viewer. It is not a claim that 3D takeoff is product-default accurate. For upload, extract, legend takeoff, geometric length and Schedule C review, start at /blog/how-to-use-teraquant. The Phase 18 3D path post is /blog/phase18-pdf-to-in-app-3d.

Host: https://www.teraquant.ai. The signed-in vertical slice is still Peak (143a3a07-99c1-46b4-809c-716365a673b8), P drawing 198b4105-324b-4ded-8cf8-a267248b19c4. The S33 SUCCESS_CASE is not in that project database. You will see Peak’s empty / partial chrome, not four S33 fittings.

1. Sign in and open the drawing

Sign in at https://www.teraquant.ai/sign-in. From /projects open The Peak, or go directly to /projects/143a3a07-99c1-46b4-809c-716365a673b8. Open P 06 AI007_Construction Drawing(12-6-2026).pdf. The centre canvas stays on 圖則 / Drawing. The right inspector defaults to 圖紙總覽 / Drawing summary — a 2D extract and Schedule C narrative, not a 3D scoreboard.

TeraQuant drawing viewer on Peak P page 1, CAD tab selected, drawing summary tab visible
Peak P page 1 from training_data/The Peak/P 06 AI007_Construction Drawing(12-6-2026).pdf, display orientation after 270° (MediaBox 2384×3370). Local capture of shipped chrome on 2026-08-15. Not a certified production Clerk session. No extract overlays painted.

2. Switch the inspector to 3D 模型 / 3D model

On the right inspector, open 3D 模型 (English: 3D model). The PDF canvas can stay visible. Below the inspector hint sits the Phase 20 SOR 3D strip: count rows, length metres, a phase20 badge, and a status that must say blocked (not 0%) when there is no model. Peak P shows dashes, not a fabricated qty_3d.

Inspector 3D model tab on Peak P with SOR 3D strip blocked, zero floors, FLOOR_IDENTITY_AMBIGUOUS
Shipped Model3dInspectorPanel plus SOR 3D strip on Peak P (2026-08-15 local capture). Strip: Count —, Length —, status 已封鎖(不是 0%), reason FLOOR_IDENTITY_AMBIGUOUS. Floors 0. 3D elements 0. This is not a 3D Detection or QA@20 score.

3. Read the empty 3D canvas diagnostics

Flip the centre canvas from 圖則 / Drawing to 3D 模型 / 3D model. Phase 20 added an empty-state diagnostic: Why this 3D view is empty. Peak P is partial, 0 floors, 0 elements, FLOOR_IDENTITY_AMBIGUOUS on pages 2 and 3. The copy says the tab will not invent pipes. Do not read this as 3D Detection = 0%.

Peak P 3D canvas showing empty-state diagnostics, no mesh, FLOOR_IDENTITY_AMBIGUOUS, SOR 3D strip blocked
Shipped Model3dEmptyDiagnostics on Peak P (2026-08-15). Title 為何這個 3D 檢視是空的. Causes: floor identity ambiguous, 0 floors, no 3D elements. Overlay: world_metres_v1, 部分重建. No mesh. The Phase 5 demo-grid annotator is not used.

4. Assumed storey height is labelled assumed

The control reads 以假設層高 3.15 m 預覽(非量度) / Preview with assumed 3.15 m storey height (not measured). After you opt in, both the canvas and the inspector must show 假設標準層高(非量度) / Assumed typical storey height (not measured). Assumed height does not fabricate a building and is excluded from lengthMetresSum. On Peak P the floor count stays 0.

Assumed typical storey height banner on Peak P 3D tab; still zero floors and FLOOR_IDENTITY_AMBIGUOUS
Opt-in assumed preview on Peak P (2026-08-15). Canvas and inspector banners: 假設標準層高(非量度). Floors still 0, elements still 0, FLOOR_IDENTITY_AMBIGUOUS unchanged. Assumed height is not a measured height and did not paint pipes.

5. What the SOR 3D strip will and will not show

  • On Peak P today: blocked / not run. Count and length cells are dashes. Reason FLOOR_IDENTITY_AMBIGUOUS. The strip repeats: blocked is not a 0% quantity.
  • On the offline S33 ledger (not in the product database): countRows 11, lengthRows 0, lengthMetresSum 0, badge phase20. That strip is not what the signed-in Peak tab shows.
  • 圖紙總覽 / Drawing summary stays on 2D extract plus live SOR match. It does not carry qty_3d. Do not blend Phase 17 2D QA@20 into this strip.

What not to expect

  • No fabricated pipe tree. If the model is empty, the UI stays empty.
  • No IFC, Revit or glTF export. Artefacts record ifcOutput: false.
  • Do not headline 80–90% 3D accuracy. Phase 17 corpus coverage is still insufficient. Phase 19 Peak 80/80 was not evaluated here.
  • Do not treat 0 m as a length win.

What happens next

  • Lift real pipe_run / riser centerlines on a 1:N plan before any length_3d_m KPI. Keep assumed 3.15 m out of measured metres.
  • S33 multi-storey survey still needs an evidenced XY datum. No centroid nudge.
  • Persist the S33 model only via the opt-in reconstruct path. Peak P still needs title-block floor identity before the live tab can show this kind of mesh.
  • Do not promote 3D quantity as a product accuracy headline.

Internal report: docs/PEAK_PHASE20_SUCCESS_REPORT.md. Verification: docs/PHASE20_VERIFICATION.md. Broader 3D path: /blog/phase18-pdf-to-in-app-3d. S33 classification study: /blog/s33-cross-market-verification. Field guide: /blog/how-to-use-teraquant.