AAbstra PlanningCSM review desk

Gaps

CSM Canonical Gap Register

The active execution register: visible panel proof, group/bulk apply proof, Vida run, ADAC proof, and planning portal gaps.

CSM Canonical Gap Register

Date: 2026-06-21 Status: active execution register Source docs: PROJECT_STATE.md, CSM_VISION_IMPLEMENTATION_AUDIT_2026-06-20.md, MACRO_ARCHITECTURE_AND_PLAN.md, TWO_FILE_CONVERTER_SETTINGS_ARCHITECTURE.md, cm_csm_adac_aspec_product_vision.md

This register lists the gaps that matter for finishing CSM. Do not create new work from older notes until this register is checked.

G1. Visible 12d Panel Proof

Status: open Owner: 12dAI / macro verification Current evidence: fixed macro compiles and static audit is clean. A prior real Vida panel screenshot exists at C:\12d_agent_runtime\evidence\CSM_Apply_Profile_real_Vida_resolved_groups_panel.png, showing a real scanned panel with grids and UID columns. The generic live macro harness still classifies this as a panel macro and cannot by itself prove the current visible UI state.

Latest live-control evidence, 2026-06-21: 12dAITester is open as PID 50252, with no generated sandboxes and no unknown 12d sessions. Live proof remains blocked because the existing CSM Apply Profile - Review Seeded Survey Codes panels are hung and worker smoke does not produce a fresh result. Evidence folders:

  • C:\12d_agent_runtime\evidence\tester_state_snapshot_20260621_215455_743c30
  • C:\12d_agent_runtime\evidence\live_control_preflight_20260621_215508_f4f570
  • C:\12d_agent_runtime\evidence\live_control_preflight_20260621_215915_f4ed9f

Runtime helper patch: C:\Veris_12d_Agent_Runtime\backend\veris_runtime\twelve_d_bridge.py now treats CSM titled panels as scoped macro panels for cleanup/reporting. The helper correctly posted close requests to the three CSM panel HWNDs, but they remained visible/hung, so live G1/G2 proof is still not accepted.

Required proof:

  • open exports/CSM_Apply_Profile.4do in C:\12d_auto\12dAITester
  • show a fresh visible panel with:
  • CSM settings sidecar file box
  • Project Sub-Profile file box
  • Source model Source_Box
  • Client Choice_Box
  • horizontal run buttons
  • seeded group GridCtrl_Box
  • selected attribute and element GridCtrl_Box panes
  • Project Values grid
  • Run Evidence / status output
  • Go to element button
  • capture screenshot/evidence path
  • do not close/reopen or kill unrelated 12d sessions
  • if panels are already hung, first clear or recover the existing CSM Apply Profile panels without killing 12d.exe; do not run worker smoke until preflight reports fresh worker transport

Acceptance command/evidence: 12dAI visible panel evidence folder plus static compile/audit outputs.

G2. Real Group/Bulk Apply Proof

Status: open Owner: macro + 12dAI verification Reason: The current macro contains group/bulk apply code and UI controls, but completion requires proof on real scanned 12d data, not fake shell rows.

Current evidence: exports\CSM_Apply_Profile.4dm now exposes active-shell group bulk controls for Group bulk attribute, Group bulk value, and Apply value to selected group. Static regression coverage in tests\test_workflow_question_map.py isolates the active csm_show_visible_review_panel shell so dead prototype shell text cannot satisfy the test. The macro also includes --csm-group-bulk-smoke, a deterministic command-line smoke path that scans a named model, applies a selected attribute=value to one group, re-reads the value, and writes matched_count, wrote_count, and verified_count evidence. This proves wiring and provides a future live-proof harness, but it is still not accepted live 12d attribute-result proof until run against real data with independent inspection.

Latest static proof, 2026-06-21: the fixed macro still audits clean with 87 official calls, 0 unknown calls, and 0 policy warnings, and compiles clean to CSM_Apply_Profile.4do at 330812 bytes through the Bible compile helper. Focused macro tests pass after updating the stale runtime-package assertion to require the current evidence-grid signature:

csm_review_apply_group_bulk(group_grid, attr_grid, evidence_grid, attr_apply_col, ...)

This matters because group/bulk apply is only acceptable when the macro writes evidence rows for group, attribute, value, and affected element count. This remains static/build evidence only; live group/bulk proof is still open.

2026-06-22 static bug fix: the macro group-bulk and element-override paths now use the correct csm_vset(...) > 0 success condition. csm_vset() returns the number of vertices written, so the prior == 0 checks inverted success for selected-group direct bulk, attribute-row bulk, element override, and tree apply helpers. This fix is directly relevant to the requested workflow: select a resolved group such as UG Gas, enter an attribute such as Comment, enter a value, then apply it to every element in that selected group. Regression tests now assert the positive-write condition and reject the old == 0 bulk/override success checks. Verification: focused macro/runtime/acceptance tests 22 passed; macro audit 87 official calls / 0 unknown / 0 policy warnings; compile helper CLEAN COMPILE: CSM_Apply_Profile.4do (330812 bytes).

Required proof:

  • use real CSM fixture data such as Output\Vida\Vida_simulated_survey.12da or a loaded Vida production sample
  • scan source model from the macro panel
  • select a real resolved group such as a Vida underground utility group
  • set a bulk-safe attribute value, for example a comment or office/manual value for the selected group
  • run Apply whole group
  • run --csm-group-bulk-smoke or equivalent live control path to produce machine-readable matched/wrote/verified evidence
  • independently verify the selected group elements received that one value
  • verify unrelated groups and unique per-element values were not overwritten
  • write evidence for changed/skipped/blocked rows

Acceptance evidence:

  • macro status/evidence file
  • independent inspector CSV/JSON with vertex coverage (checked_vertices > 0)
  • Output Window XML checked for warnings/errors
  • screenshot or visible-panel proof showing the group/action

G3. Macro-Native Attribute Fill Proof

Status: open Owner: macro + independent inspector Current state: code shipped; live proof pending.

2026-06-22 inspector hardening: the fixed independent inspector exports\CSM_Inspect_Profile_Output.4dm now checks client attributes through a vertex-aware helper and writes checked_vertices, matched_manifest_rows, and no_vertex_count to its result file. Validation centre now rejects generic inspector results that omit checked_vertices. This closes a static false-green risk where first-vertex-only evidence could miss a partial multi-vertex group/bulk write. Verification: focused runtime/validation/ acceptance tests 15 passed, inspector audit 27 official / 0 unknown / 0 policy warnings, and compile helper CLEAN COMPILE: CSM_Inspect_Profile_Output.4do (32632 bytes).

Required proof:

  • prove attribute_copy and fixed_default rows from csm_runtime_actions.csv are written to the 12d vertex Attributes bag
  • verify with an independent inspector across vertex attribute storage, not just macro result text or vertex 1
  • confirm profile hash and project runtime path are logged

Acceptance evidence: independent 12d inspector report showing expected source value, written output value, element id, checked vertex count, and vertex attribute storage.

G4. Vida Full-Coverage Synthetic Survey Run

Status: open Owner: 12dAI / runtime acceptance Source: TESTS.md T4 and PROJECT_STATE.md C1.

Required proof:

  • import/load Output\Vida\Vida_simulated_survey.12da
  • run the fixed macro with exports\Vida\current\project_runtime_profile.12d_runtime.txt
  • process all expected Vida elements
  • verify required VT_UTL_* attributes are populated
  • record profile hash, element count, failures, and Output Window XML

Acceptance evidence: full-coverage result file plus independent attribute inspection.

G5. UnityWater / MRBC / WAADAC Full-Coverage Follow-Up

Status: open / lower priority than Vida Owner: 12dAI / runtime acceptance Source: TESTS.md T4.5-T4.6 and T6.

Required proof:

  • generate or refresh simulated surveys where missing
  • run fixed macro against each focus client package
  • verify outputs independently
  • document any true client-data blocker separately from macro failure

G6. Human Data Gates

Status: blocked on Abdullah or real project data Owner: Abdullah / project data owner Items:

  • MRBC capture-action review
  • WAADAC capture-action review
  • real MRBC cadastral lots runtime model name
  • MRBC validation scope/bridge decisions
  • Vida DRDPC att_key values
  • real-job metadata for synthetic profiles
  • UnityWater rule/legacy mapping cleanup decisions

Agents must not mark these complete without actual data/decision evidence.

G7. Canonical Planning Portal Update

Status: closed for deployment; keep open only for future design refinements Owner: docs/site agent Reason: The public planning portal needs to expose this canonical spec and gap register as reviewable, commentable blocks.

Current evidence, 2026-06-22:

  • planning_portal/build_csm_review_portal.py generates the public review portal from the canonical docs.
  • Deployed with npx wrangler pages deploy planning_portal\dist --project-name csm-review-docs --branch main --commit-dirty=true --commit-message "Publish canonical CSM review portal".
  • Wrangler uploaded 7 files and completed deployment to Cloudflare Pages.
  • Public custom-domain checks passed for:
  • https://planning.abstrasolutions.com/
  • https://planning.abstrasolutions.com/csm-canonical-spec
  • https://planning.abstrasolutions.com/csm-gap-register
  • https://planning.abstrasolutions.com/mrbc-adac-data-prep
  • The older route https://planning.abstrasolutions.com/csm-one-vision now renders the canonical operating spec under its own legacy comment namespace.
  • Comment API contract is preserved: planning-api.abstrasolutions.com, topic csm, document-level data-doc, and x-review-key.
  • Comments are rendered through escaped text paths and the UI states that comments are review feedback, not agent instructions.
  • Screenshot evidence:
  • planning_portal/dist/_evidence_mobile_home.png
  • planning_portal/dist/_evidence_desktop_spec.png

Acceptance result:

  • canonical spec and gap register are published to planning.abstrasolutions.com
  • paragraph/block-level comments are preserved through review-card targets
  • gaps G1-G6 are first-class review cards on the gap-register page
  • comments are treated as untrusted review text, not executable instructions

G8. Status File Truth Pass

Status: open but secondary Owner: docs maintainer Reason: TESTS.md still contains older stale sections and PROJECT_STATE.md contains the newest truth. Agents should not use old failed rows without checking current state.

Required work:

  • update TESTS.md only where still used as an acceptance procedure
  • keep PROJECT_STATE.md current after gap closure
  • do not delete failed historical tests; mark superseded with evidence

2026-06-22 completed slice: stale T1.2 text claiming csm.reports.cm_step1_audit did not exist has been superseded. The module exists, its Windows --help path is fixed, and the four focus clients pass: MRBC 53 map-file items, UnityWater 24, Vida 40, WAADAC 81; all have zero not-in-master, not-in-bridge, and code-mismatch rows. Evidence: .planning/cm_step1_audit_latest.md/json plus python -m pytest tests\test_cm_step1_audit.py -q (13 passed).

G9. ADAC Data-Prep And 12d ADAC Proof

Status: open Owner: CSM app + 12dAI / ADAC acceptance Reason: ADAC is a capture/validation workflow, not just a generated XML file. CSM must prove that its schema, macro, and 12d data-prep path line up with real ADAC expectations.

First proof target: MRBC. Local evidence shows MRBC has rich sample/mapped .12da outputs, ADAC 4.2 mapping/validation reports, runtime package files, current Leica/Trimble exports, MetaConnex output, and an ADAC XSD shell report. The shell report currently proves only the XSD path (xml_valid=true, asset_count=0) and remains BLOCKED_REAL_PROJECT_DATA, so MRBC is the right target for proving real 12d asset rows through the macro/data-prep path.

Current local evidence: Output\MRBC contains MRBC_sample_survey.12da, MRBC_mapped_result.12da, MRBC_terrain.12da, MRBC_mapfile.json, MRBC_attribute_schema.json, MRBC_attribute_choices.json, MRBC.12dfieldcodes, MRBC_mapping_report.md, and MRBC_validation_report.md. The validation report is labelled Standard: ADAC 4.2; many assets show expected/captured/mapped counts aligned with zero missing, while several asset classes remain missing or calculation-pending. This is suitable fixture evidence for a 12d data-prep proof, not yet final ADAC acceptance. The derived proof matrix is docs\MRBC_ADAC_DATA_PREP_MATRIX_2026-06-21.md.

Current acceptance boundary: exports\MRBC\current\MRBC_current_acceptance_report.md reports FAIL with 11 PASS / 3 FAIL / 1 SKIP after the A11b strategy-readiness refresh and duplicate Veris-code qualifier hardening. Passing evidence includes export files present, MetaConnex XML valid, enriched fieldcodes XML valid, orchestrator macro valid, the ADAC XSD validation harness passing against local 12d ADAC 4.2 XSD, and the MRBC ADAC data-prep matrix having no calc/missing strategy blockers. Blocking evidence remains:

CSM now has an app-level guard for the researched ADAC version/guideline distinction: client_scope_items includes standard_version and capture_guideline_source, ClientScopeModel exposes/persists both fields, and the validation centre blocks confirmed ADAC-delivery scope rows that omit either value. Existing MRBC rows remain draft/unconfirmed, so this metadata gate itself does not add extra blockers. Current MRBC A0 is now 12 because unresolved duplicate Veris-code qualifier collisions are correctly release blockers.

The same requirement is now visible/editable in the app, not only in backend validation: ClientScopeChecklist.qml includes Version and Guideline/source columns wired to ClientScopeModel.setStandardVersion() and setCaptureGuidelineSource(). Focused client-scope/validation/QML tests pass for this path (6 passed), and app/QML smoke contracts pass (9 passed). This closes the operator-actionability gap for the metadata gate, but not the ADAC production proof.

The guard also exposed and repaired stale Vida scope data: six confirmed Vida rows were incorrectly marked as ADAC XML delivery. They are now Client-specific rows with deliver_adac_xml=0, and tests\test_validation_centre.py::test_vida_confirmed_scope_rows_are_not_adac_xml_delivery guards the boundary. Vida can still be used for macro workflow proof, but not as ADAC XML production-acceptance proof.

Fresh fixed-macro static proof was rerun on 2026-06-21: exports\CSM_Apply_Profile.4dm audits with 87 official calls, 0 unknown calls, and 0 policy warnings, and compiles clean to CSM_Apply_Profile.4do at 330812 bytes through the Bible compile helper. This proves static macro buildability only; it does not close the live 12d macro/output-inspection gates.

  • A0 validation-centre cross-check: 12 blocked issues. Synthetic/orphan office-ingestion rows no longer block production readiness, required-attribute rows with pending/review capture actions are no longer double-counted because A4 owns capture-action review, and the runtime-profile missing-required message is counted once. The extra blockers are unresolved duplicate Veris-code qualifier collisions that would make macro grouping/mapfile output unsafe.
  • A4 capture actions reviewed: 562 pending capture-action rows
  • A12 Project Runtime Profile real-job readiness: current/locked profile is no longer blocked by a synthetic-profile false positive; it now correctly blocks on missing required value MRBC_CADASTRAL_LOTS_MODEL

A11b MRBC ADAC data-prep matrix is now closed for strategy readiness. The 12 previously unresolved prep rows are classified as strategy-ready: 8 calculation rows have formula/reference strategies and 4 asset-class rows are covered by subtype mappings. Live 12d macro execution and independent inspection are still required before final ADAC production acceptance.

2026-06-22 hardening update: csm\reports\mrbc_adac_prep_matrix.py now regenerates the matrix with an explicit 12d ADAC Data-Prep Contract, so the researched ADAC/12d requirements are durable source, not hand-written notes. The contract now mirrors the real 12d ADAC workflow: project/header context, explicit source-model selection, CSM group/code to ADAC asset-path/geometry resolution, Metaconnex/custom-attribute readiness, point/line/polygon geometry-family assignment, controlled group bulk editing, mandatory/conditional attribute source classification, dictionary-backed choice checks, macro write evidence, independent 12d attribute inspection, and separate 12d ADAC validation/report/XML/read-back layers. Regenerated stats remain unchanged: rows=77 ready=65 calc=0 missing=0 calc_strategy_ready=8 subtype_strategy_ready=4. Focused tests now guard the contract text and pass.

The CSM DB now registers MRBC_CADASTRAL_LOTS_MODEL as a required Source_Box/polygon input for the Project Values / References panel, and exports\MRBC\current\csm_field_input_spec.csv exposes it with the hint to use the actual project cadastral lots boundary model. The active MRBC profile intentionally leaves this value blank until the real project model name is supplied.

The local MRBC sample does not currently prove this value. Output\MRBC\MRBC_sample_survey.12da contains model "SSBOU", but the inspected sample element is breakline line with Sub Type = Cadastre; that is not a polygon containment model for polygon_name_containing, so it must not be used to fake-close MRBC_CADASTRAL_LOTS_MODEL.

2026-06-22 source-copy migration update: five approved MRBC Material mappings that validation centre flagged as high-risk legacy imported source-copy are now direct field capture (capture_new): OpenSpace.Fixture, OpenSpace.RetainingWall, Sewerage.NonPressurePipes, Stormwater.Pipe, and WaterSupply.Pipes. MRBC runtime package, MetaConnex, enriched fieldcodes, and generated client macro were regenerated. Validation centre no longer reports those source_copy_migration issues. This reduces mapping/runtime risk but does not close the remaining A0/A4/A12 gates or live macro/inspector proof.

2026-06-22 duplicate Veris-code hardening update: the validation centre now reports exact missing qualifier rows for duplicate Veris-code bridges, including the client_feature_code and schema_feature_to_veris_feature bridge ID. This matters for the macro grouping model because two client features sharing one Veris code cannot be safely grouped or exported by code alone. Current MRBC validation still correctly reports unresolved unscoped_duplicate_veris_code rows for DRDPC, RDFPE, RDPRP, SSBOU, STBEN, STPAV, STPLA, and SWSUG, but the blockers now name the affected bridge rows such as Stormwater.GptComplex (bridge 1427) and Sewerage.PressurePipes (bridge 1424). These are still data/approval tasks, not agent-filled values, because the qualifier values are client subtype data. Verification: tests\test_audit_fixes_2026_06.py::test_s12_detects_undisambiguated_duplicate_on_real_data passed, and python -m csm.reports.validation_centre --client MRBC --schema-version current now emits the row-level details.

2026-06-22 acceptance blocker update: duplicate Veris-code collisions are now blocked, not needs_review, because unresolved code-only collisions can make the fixed macro group the wrong elements or emit colliding mapfile entries. Regenerated Vida acceptance is now 10 PASS / 2 FAIL / 1 SKIP: A0 fails on DRDPC missing qualifiers for 308 Side entry pit, 309 Grated pit, 310 Junction pit, and UG Drainage chamber internal, while A12 still fails on synthetic Project Runtime Profile metadata. Regenerated MRBC acceptance now has 12 A0 blockers, including the eight duplicate-code qualifier blockers. Acceptance JSON now includes fix_feature_code for blocked validation-centre issues so review/navigation can select the first affected Workstation row.

Existing 12d proof artifacts under exports\MRBC\current\_testing_and_proof show limited production sample/model passes, including profile metadata and observed attribute writes, but these do not close ADAC acceptance because required-attribute completeness and real project asset export are still unresolved.

Current 12dAI live-control evidence also does not close macro acceptance. C:\12d_agent_runtime\evidence\live_control_preflight_20260622_002151_1a79de\summary.md reports degraded live control: 12dAITester PID 50252 exists, but three visible CSM Apply Profile - Review Seeded Survey Codes panels, the launcher, and the tester window are hung=true; launcher online is false; worker smoke failed because the result file was missing. Treat this as a live-control blocker, not as a macro acceptance failure or pass.

Required proof:

  • use MRBC first unless a stronger real project data set appears
  • confirm the applicable client capture guideline / ADAC version / dictionary evidence; for MRBC this must include Moreton Bay capture rules plus the local ADAC 4.2 validation context already present in Output\MRBC
  • fill/confirm standard_version and capture_guideline_source for every confirmed ADAC-delivery scope row before treating client scope as production-ready
  • use the ADAC dictionary parser where V501/V600 dictionary evidence is needed
  • build an ADAC prep matrix for the fixture: CSM group/code -> ADAC asset path -> geometry family -> mandatory attributes -> choice values -> source-kind/apply method -> validation status
  • prepare/import representative 12d source data with real geometry, stable feature/code identity, and relevant ADAC/client attributes
  • create/prove the required 12d ADAC data-prep context: project/header values, asset strings/rows, selected source model, and selected reference models such as MRBC_CADASTRAL_LOTS_MODEL
  • prove the macro can scan groups, apply group-safe values, and write required values into the correct 12d attribute storage; the fixed macro must show evidence rows for group bulk actions with group, attribute, value, and affected element count
  • independently verify attributes against the ADAC/client required attribute set and choice values
  • record whether a valid ADAC Header/project context and ADAC Asset strings can be generated/validated by the 12d ADAC workflow or equivalent export path

Acceptance evidence:

  • dictionary/capture-guideline source notes
  • 12d source model fixture path
  • macro apply log and Output Window XML
  • independent inspector report
  • ADAC XML/export validation result or explicit blocker showing what is still missing

Immediate Execution Order

  • G1 visible 12d panel proof.
  • G2 real group/bulk apply proof using Vida data.
  • G3 macro-native attribute fill proof.
  • G4 Vida full-coverage run.
  • G9 ADAC data-prep proof on an ADAC client/fixture.
  • Patch CSM app only where G2/G3/G4/G9 expose app/export/runtime gaps.
  • Use the deployed G7 planning portal for human comments; do not republish unless the canonical docs or review UI change.