Phase 25 — Training Coverage Ladder 3/21; Count CP 0/63, Still Not 80/80
STATUS: COVERAGE_LADDER_PASS. Coverage evaluated 3/21 (ladder target 3 met). Frozen scorer next ladderTarget 5, ladderMet false. Count CP status evaluated, reasonCode null (not IDENTITY_ONLY_NO_GT), 0/63 QA@20. Count detection 1/63. S33 preserved. Live 圖則.pdf residual not credited (liveResidualCredited false). peak80Claim not_evaluated. RSI_CONTINUE. Not Peak 80/80. Not corpus 80–90%. Not NO_PLAN_POLYLINES. Not COVERAGE_PARTIAL.
Numbers are copied from apps/web/data/phase25/coverage-ladder-verify.v1.json (generatedAt 2026-08-20T17:54:17.045Z) and the frozen evaluate.ts scorecard (schemaId rsi.scorecard.v1, generatedAt 2026-08-20T17:54:17.006Z, phase 25, verdict RSI_CONTINUE). The scorecard file apps/web/data/rsi/scorecard.v1.json is absent in this blog worktree; the integers below match the SG copy and that frozen card. Nothing was re-scored for publication. Reconstruct was not re-run.
What Phase 25 asked
Phase 24 earned LIVE_PIPE_GRAPH_PASS on live 圖則.pdf page 2 (21 pipe_run + 8 fittings). The frozen scorer does not count that graph: live IDs are residuals. Coverage was still S33 only (1/21). Count CP was blocked IDENTITY_ONLY_NO_GT (identity-only rows, no gtQty). Phase 25 ran two separate jobs: reconstruct two more training_data PDFs so coverage reaches 3, and pair S33 qty_3d fittings to billed count rows on BQ sheet E so count CP can score.
The estimand is qty_3d (methodVersion rsi_qty_3d_count_cp_v1). Coverage and count CP are never blended into one percent. Opt-in research flags (EVIDENCE_TILED_EXTRACT, VECTOR_GEOMETRY_COUNT) stay off; they are not this 3D path.
Coverage: 3/21 (ladder step 3 met)
A training project counts only when fabricatedGeometry is false, floorKeys.length ≥ 1, and at least one world fitting, valve, pipe_run, or riser exists. Missing projects stay blocked, never 0%. Phase 25 C2 is evaluated ≥ 3. The frozen ladder is [3, 5]; with evaluated = 3 the card prints the next unmet step (5) and ladderMet false. That is not a retune and is not COVERAGE_LADDER_NOT_EARNED.
| Project | Status | Floors | World elements | Note |
|---|---|---|---|---|
| S33 (s33-7d7fadc7) | evaluated (preserved) | G1 kept | scorecard 12 | training_data/…S33…/圖則.pdf. fabricatedGeometry false. Do not delete G1. |
| N23 (n23-83c0da00) | evaluated (new) | G | 20 | training_data/…N23…/圖則.pdf. Not live a48e6815-… . |
| Kwai On (kwai-on-factory-estate-88ab7191) | evaluated (new) | G | 19 | KS28_-_SITE_A_DR-02.pdf. Peak-SOR not loaded. |
| 18 other roster rows | blocked NO_TRAINING_GRAPH | — | 0 | blocked ≠ 0%. Peak montage was not collapsed to G. |
Scorecard coverage percent is 14.285714285714285 on 3/21. That is not a product headline. The Peak training slug stays NO_TRAINING_GRAPH. pageIndexAsFloor is false. Assumed storey height 3.15 m stays 假設, never 量度. Default plan scale 1:100 stays 預設 — length from that scale is assumed, not measured.
Count CP: evaluated 0/63 (unblocked, not a win)
Pairing wrote gtQty on drawable billed count rows from S33 BQ 4.2 (For reference only) BQ.xlsx, sheet E 供水及排水系統 (P&D). The scorer reads gtQty, not billedQty. Peak-SOR.xlsx was not loaded for S33, N23, or Kwai. qty_3d was preserved; ground-truth quantities were not copied into qty_3d or vision prompts.
| Family B | Status | n/N | Note |
|---|---|---|---|
| Count CP (QA@20) | evaluated | 0/63 | reasonCode null. 0/63 is a scored rate, not blocked encoded as 0%. |
| Count detection | evaluated | 1/63 | 62 detection misses. Scorecard percent 1.5873015873015872 (Wilson method). |
| Linked billed drawable | pairing | 63/63 | identity_only leftover 10 — those rows are not CP. |
Denominator did not shrink (scorecard.denominatorShrunk false). First unblock from blocked IDENTITY_ONLY_NO_GT to evaluated N=63 is allowed. Shrinking N to raise percent would have been RSI_DENOMINATOR_SHRANK. IDENTITY_ONLY_NO_GT is not the headline.
Live 圖則.pdf is not training coverage
Scorecard liveGraph.creditedAsTraining is false. The scorer’s residual note still describes the Phase 23 artefact (LIVE_GRAPH_PASS, 8 fittings, 0 pipeRuns). Phase 24’s 21 live pipes are not this card’s coverage numerator. Training N23 is training_data/…N23…/圖則.pdf, not project a48e6815-… / file 65b1bfde-… / persist 643835d1-….
How to reconstruct and pair (without Peak-SOR on S33)
This is a product walkthrough of chips and pairing rules. It is not a claim that the signed-in Peak 3D tab shows these three training meshes. SJ left P4 as BROWSER_NOT_CERTIFIED: no Clerk session, no mesh PNG. Training JSON is not a photograph of a model.
- Sign in. Open a drawing 3D tab or /projects/…/3d. Rebuild if the model is stale. Amber chips mean 估算 / 假設 / 預設 — estimated floor, assumed 3.15 m height, default 1:100 scale. They never flip to 量度.
- Training reconstruct targets are on-disk PDFs: S33 圖則.pdf (keep G1), N23 圖則.pdf (training folder, not the live project), and Kwai On KS28_-_SITE_A_DR-02.pdf. Empty geometric takeoff would have printed NO_PLAN_POLYLINES — no demo-grid pipes.
- Pair S33 count items to billed GT on 4.2 (For reference only) BQ.xlsx sheet E 供水及排水系統. Write pairingStatus linked and finite gtQty. Unmatched 3D stays identity_only. Do not copy GT into qty_3d.
- Never load Peak-SOR.xlsx for S33, N23, or Kwai On. Peak-SOR is Peak-only. Native S33 BQ sheet E is the count-CP denominator.
- If plan scale is missing, 1:100 is default. Metres from that scale are assumed length, not measured length. Keep assumed 3.15 m out of measured metres.
What this is not
- Not Peak P&D 3D Detection / QA@20 ≥ 80%. peak80Claim is not_evaluated. Percents stay unevaluated — not a fabricated 0%.
- Not corpus 80–90%. Eighteen of twenty-one training projects stay blocked NO_TRAINING_GRAPH. Phase 17 sufficiency remains INSUFFICIENT_CROSS_PROJECT_COVERAGE.
- Not a count-accuracy win. Count CP 0/63 and detection 1/63 are honest evaluated rates after pairing unblocked the denominator.
- Not NO_PLAN_POLYLINES and not COVERAGE_PARTIAL. Geometric takeoff was non-empty on the two new plans; both coverage and CP unblock hold, so the gate is COVERAGE_LADDER_PASS for step 3 — not a ladder-5 win.
- Not a signed-in 3D screenshot. SJ: BROWSER_NOT_CERTIFIED. No files under /blog/phase25/. No fabricated mesh PNG.
- Not a promote of EVIDENCE_TILED_EXTRACT or VECTOR_GEOMETRY_COUNT.
What happens next
- Frozen loop verdict is RSI_CONTINUE: ladder step 5 is unmet, and count CP on the non-shrinking N=63 can still move.
- Do not credit live 圖則.pdf as N23. Do not collapse Peak montage to a single G.
- Do not headline 80–90% 3D accuracy. Do not treat assumed 1:100 length as measured metres.
Parent live pipe graph: /blog/phase24-live-pipe-graph. First training model (S33 G1): /blog/phase20-first-training-3d-model. Estimated-parameter graph: /blog/phase23-estimated-3d-graph. Field guide: /blog/how-to-use-teraquant.
Related articles
Phase 24 — Live Pipe Graph: 21 Centerlines on Estimated G, Still Not 80/80
Phase 24 earned LIVE_PIPE_GRAPH_PASS on live 圖則.pdf page 2: geometric takeoff (xAI fallback after Gemini fetch failed) persisted 4 merged runs, reconstruct lifted 21 pipe_run polylines plus the Phase 23 eight fittings. Estimated G is not a printed 地面層. Signed-in 3D tab was not browser-certified. Not Peak P&D 3D 80/80.
1 min readPhase 20 — First Training 3D Model and a Count/Length Ledger, Without an 80–90% Claim
Phase 20 earned SUCCESS_MODEL_PASS on one University of Macau S33 training PDF: sole-storey G, four printed-label fittings, fabricatedGeometry false. The SOR ledger writes countRows = 11 and lengthMetresSum = 0. That is a count ledger plus an empty measured-length section — not a pipe-length win, not Peak P&D 3D 80/80, and not a corpus 80–90% claim. The signed-in Peak 3D tab is still empty.
15 min read