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.

Fresh non-destructive recheck, 2026-06-22: 12dAITester is still PID 50252; no 12d process was killed, closed, or restarted. Snapshot C:\12d_agent_runtime\evidence\tester_state_snapshot_20260622_023200_202a07\summary.md reports tester ok, helper degraded, live worker transport stale, launcher ready, panel automation ready, and tester window hung=true. Preflight C:\12d_agent_runtime\evidence\live_control_preflight_20260622_023210_df95fc\summary.md still reports degraded state: three visible CSM Apply Profile - Review Seeded Survey Codes panels, the launcher, and tester window are hung=true; no safe modal was found; worker smoke failed because the expected result file was missing. Treat this as current live-control blocker evidence for G1/G2/G3.

Fresh non-destructive recheck, 2026-06-22 03:21: 12dAITester remains PID 50252; no 12d process was killed, closed, or restarted. Snapshot C:\12d_agent_runtime\evidence\tester_state_snapshot_20260622_032130_504210\summary.md again reports tester ok, helper degraded, live worker transport stale, launcher ready, panel automation ready, and tester window hung=true. Preflight C:\12d_agent_runtime\evidence\live_control_preflight_20260622_032137_64bee4\summary.md again found three visible hung CSM Apply Profile - Review Seeded Survey Codes panels, a hung launcher, a hung tester window, no safe modal, and a failed worker smoke because the expected result file was missing. This confirms the next proof step is safe recovery/cleanup of the existing hung CSM panels/control transport, not another macro launch or a static screenshot claim.

Fresh non-destructive recheck, 2026-06-22 03:45: 12dAITester remains PID 50252; no 12d process was killed, closed, or restarted. Snapshot C:\12d_agent_runtime\evidence\tester_state_snapshot_20260622_034518_f421a4\summary.md still reports tester ok, helper degraded, live worker transport stale, launcher ready, panel automation ready, and tester window hung=true. Preflight C:\12d_agent_runtime\evidence\live_control_preflight_20260622_034518_13e4be\summary.md again found three visible hung CSM Apply Profile - Review Seeded Survey Codes panels, a hung launcher, a hung tester window, no safe modal, and worker smoke failed because the result file was missing. This was the then-latest live-control blocker evidence for G1/G2/G3; do not claim accepted live proof from compile, static tests, stale launcher state, or screenshots.

Fresh non-destructive recheck, 2026-06-22 04:34: 12dAITester remains PID 50252; no 12d process was killed, closed, or restarted. Snapshot C:\12d_agent_runtime\evidence\tester_state_snapshot_20260622_043405_8697ca\summary.md reports tester ok, helper degraded, live worker transport stale, launcher ready, panel automation ready, and stale helper/launcher/panel state. Preflight C:\12d_agent_runtime\evidence\live_control_preflight_20260622_043405_111368\summary.md reports degraded state: launcher panel open, launcher heartbeat not fresh, no safe modal candidates, and smoke False. The worker smoke evidence folder C:\12d_agent_runtime\evidence\live_worker_worker-check-model-exists_20260622_043406_e8a1b2 has worker_result_guard.json with ok=false, wait_status=timeout, and result file missing for C:\12d_agent_runtime\results\live_control_preflight_20260622_043406_128e0d.json. This is the latest live-control blocker evidence for G1/G2/G3; do not claim accepted live proof from compile, static tests, stale launcher state, screenshots, or missing-result worker smoke.

Fresh non-destructive recheck, 2026-06-22 05:23: 12dAITester remains the single persistent tester session at PID 50252; no 12d process was killed, closed, or restarted, and no generated sandbox is open. Snapshot C:\12d_agent_runtime\evidence\tester_state_snapshot_20260622_052031_dd2af5\summary.md reports tester ok but degraded live control: helper degraded, live worker transport stale, launcher ready, panel automation ready, and the tester window hung=true. python -m veris_runtime.cli ensure returned {"ok": true}, but preflight C:\12d_agent_runtime\evidence\live_control_preflight_20260622_052314_7f573e\summary.md still failed. It found hung CSM Apply Profile - Review Seeded Survey Codes panels, a hung launcher/tester window, no safe modal candidates, launcher online, and worker smoke failed because the result file was missing. Worker evidence folder: C:\12d_agent_runtime\evidence\live_worker_worker-check-model-exists_20260622_052314_55874f. This supersedes the 04:34 marker as current live-control blocker evidence for G1/G2/G3; do not claim accepted live proof from compile, static tests, stale launcher state, screenshots, or missing-result worker smoke.

Recovered live-control state, 2026-06-22 05:49: the 05:23 blocker is no longer the current worker-test blocker. Visual recovery exposed the existing CSM close prompts; the CSM panels were closed through their own Finish / Save Edits controls without killing or restarting 12d.exe. The single persistent tester remained PID 50252. Fresh worker transport then passed:

  • Model check proof: C:\12d_agent_runtime\evidence\live_worker_worker-check-model-exists_20260622_054250_7e9f42
  • Vida group bulk macro proof: C:\12d_agent_runtime\evidence\live_worker_csm-apply-profile-bulk_20260622_054329_6c4cfd
  • Independent group inspector proof: C:\12d_agent_runtime\evidence\live_worker_csm-group-vertex-inspector_20260622_054853_12a918

Helper/API-helper state may still report degraded because the foreground desktop was on LockApp.exe, but direct worker transport is fresh and usable. Do not launch extra 12d projects to work around this. Continue using the single C:\12d_auto\12dAITester session and worker-command bus for data proof.

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: closed for the Vida UG Gas bulk-edit acceptance example; broader full-client runtime acceptance remains covered by G4/G5. 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, target_vertices, wrote_count, verified_count, wrote_vertices, verified_vertices, skipped_nonmatching_count, failed_write_vertices, failed_verify_vertices, and zero_vertex_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).

2026-06-22 smoke-contract hardening: --csm-group-bulk-smoke now fails unless the selected group has target vertices and every target vertex is written and re-read. The result file distinguishes non-target skipped elements from matched target elements with skipped_nonmatching_count, records the expected write surface with target_vertices, and reports failed_write_vertices, failed_verify_vertices, and zero_vertex_count. Static regression tests now require those fields and the pass condition wrote_vertices == target_vertices and verified_vertices == target_vertices. Verification: focused tests 2 passed; macro audit 87 official calls / 0 unknown / 0 policy warnings; compile helper CLEAN COMPILE: CSM_Apply_Profile.4do (334308 bytes). This is still static/build evidence only until a live 12d run produces the result file and an independent inspector reads the vertex Attributes bag.

2026-06-22 live Vida proof accepted: the exact user example has now been run on real data in the persistent 12d tester. Source model CSM Vida Production Sample existed in C:\12d_auto\12dAITester. The fixed macro exports\CSM_Apply_Profile.4do ran:

--csm-group-bulk-smoke
source_model=CSM Vida Production Sample
group=UG Gas
attribute=Comment
value=CSM bulk proof 20260622

Macro result: C:\12d_agent_runtime\results\csm_vida_ug_gas_bulk_20260622_054328.txt reported status=pass, element_count=40, matched_count=1, target_vertices=2, wrote_vertices=2, verified_vertices=2, skipped_nonmatching_count=39, failed_write_vertices=0, failed_verify_vertices=0, and zero_vertex_count=0. Output Window XML saved with output_window_xml_rc=0 and no keyword hits in the live-worker evidence.

Independent inspector result: C:\12d_agent_runtime\results\csm-group-vertex-inspector_20260622_054853_8cee06.json reported status=pass, reason=selected_group_vertices_matched, group_elements=1, group_vertices=2, matching_vertices=2, missing_attr=0, mismatched_attr=0, off_group_vertices=78, and off_group_value_matches=0. Evidence CSV: C:\12d_agent_runtime\evidence\csm-group-vertex-inspector_20260622_054853_8cee06_group_vertex_attribute_inspection.csv.

This closes the group/bulk apply proof for the UG Gas bulk-comment workflow. It does not close visible panel screenshot proof (G1), or ADAC XML/report/read-back proof for MRBC/WAADAC. The full Vida runtime coverage gate is now closed separately under G4.

Required proof for future broader runs:

  • 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: closed for controlled live 12d proof of macro-native attribute_copy and fixed_default; open only where broader full-client runs depend on G4/G9. Owner: macro + independent inspector Current state: code shipped and controlled live proof accepted.

2026-06-22 static contract alignment: static support for macro-native attribute fill is now explicit and guarded. The runtime package emits attribute_copy and fixed_default rows from approved DB mappings, exports\CSM_Apply_Profile.4dm dispatches both action kinds, and writes go through csm_vset(...) into the 12d per-vertex Attributes bag. The deterministic runtime-package test now mutates a copied Vida DB to force one approved veris_attr copy and one approved fixed_default, then asserts both action kinds appear in csm_runtime_actions.csv. This corrects stale wording that made future agents treat the static executor as unshipped. Status remains open because live 12d inspector proof is still required.

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).

2026-06-22 live Vida project-default proof accepted: a live inspector found a real CSM package gap before it passed. The first fixed-macro run over CSM Proof 0616CSM Vida Production Sample wrote VT_UTL_DATA_ACQUISITION_METHOD = Total Station to 78/80 vertices; the two missing vertices were both 711 Light pole / ELLPS. Root cause was the live CSM database/package, not the inspector: Vida's own source schema states all 40 utility features share global VT_UTL_* attributes, but ELLPS had only 27 attributes and no approved SURVEY_METHOD mapping. The database was backed up and repaired with one missing VT_UTL_DATA_ACQUISITION_METHOD schema attribute and one approved project_default:SURVEY_METHOD mapping for ELLPS; the Vida runtime package was regenerated.

Fresh fixed-macro run: C:\12d_agent_runtime\evidence\live_worker_csm-apply-profile-vida-autorun_20260622_062730_9f9319 with package result exports\Vida\current\CSM_Apply_Profile_result.txt reported status=pass, element_count=40, applied_count=123, moved_count=40, and output_window_xml_rc=0; the Output Window XML had no error/warning keyword hits. Independent inspector: C:\12d_agent_runtime\results\csm_inspect_vida_apply_profile_20260622_0632.json reported status=pass, reason=all_vertices_matched, element_count=40, checked_vertices=80, matching_vertices=80, missing_attr=0, mismatched_attr=0, and debug_attr_count=0 against output model CSM Proof 0628CSM Vida Production Sample.

This closes the live Vida project_default/sub-profile write proof for SURVEY_METHOD -> VT_UTL_DATA_ACQUISITION_METHOD.

2026-06-22 live Vida attribute_copy/fixed_default proof accepted: the remaining native fill branches were proven through a proof-only Vida package generated from a copied DB: exports\Vida\current\_testing_and_proof\native_fill_20260622_064249\Vida\current. The package adds two controlled UG Gas / GAGUG actions without changing production Vida: attribute_copy writes CSM_PROOF_COPY_FROM_TYPE <- Type, and fixed_default writes CSM_PROOF_FIXED_DEFAULT = CSM fixed default proof. Source-prep worker C:\12d_agent_runtime\results\csm_set_uggas_type_source_20260622_0646.json set Type=Gas on exactly one UG Gas source element and produced clean Output Window XML. Fixed macro package result exports\Vida\current\_testing_and_proof\native_fill_20260622_064249\Vida\current\CSM_Apply_Profile_result.txt reported status=pass, element_count=40, applied_count=125, moved_count=40, and output_window_xml_rc=0 for output model CSM Native Fill 0738CSM Vida Production Sample; the Output Window XML check found zero warning/error keyword hits. Macro evidence rows show: attribute_copy/GAGUG/CSM_PROOF_COPY_FROM_TYPE/Gas/ok/copy:Type and fixed_default/GAGUG/CSM_PROOF_FIXED_DEFAULT/CSM fixed default proof/ok. Independent group-scoped readback results C:\12d_agent_runtime\results\csm_inspect_native_copy_20260622_0739.json and C:\12d_agent_runtime\results\csm_inspect_native_fixed_20260622_0739.json both reported status=pass, reason=selected_group_vertices_matched, group_elements=1, group_vertices=2, matching_vertices=2, missing_attr=0, mismatched_attr=0, missing_group_attr=0, and off_group_value_matches=0. This is accepted evidence that both native action kinds write through the 12d vertex Attributes bag and do not leak onto the 78 off-group vertices in the controlled 40-element model.

Required proof:

  • done for controlled Vida proof package: attribute_copy and fixed_default rows from csm_runtime_actions.csv are written to the 12d vertex Attributes bag
  • done: independent group-scoped inspector reads vertex attribute storage and checks off-group leakage
  • done: package result logs profile hash, project runtime path, source model, output model, actions CSV, evidence CSV, and Output Window XML

Acceptance evidence: independent 12d inspector report showing expected source/default value, written output value, group element count, checked vertex count, zero missing/mismatch counts, and zero off-group value leakage.

G4. Vida Full-Coverage Synthetic Survey Run

Status: closed for canonical Output\Vida\Vida_simulated_survey.12da controlled full-coverage proof. Owner: 12dAI / runtime acceptance Source: TESTS.md T4 and PROJECT_STATE.md C1.

2026-06-22 controlled Vida proof: the fixed macro ran through the current Vida runtime package against CSM Vida Production Sample, moved 40 elements to CSM Proof 0628CSM Vida Production Sample, and independently proved all 80 vertices carry VT_UTL_DATA_ACQUISITION_METHOD = Total Station. This proves the fixed runtime package, sub-profile value, ELLPS repair, and macro write/read path on the controlled 40-element tester fixture. This was not final G4 full-coverage acceptance until the canonical Output\Vida\Vida_simulated_survey.12da run and independent inspectors below passed.

2026-06-22 canonical Vida full-coverage proof accepted: the active Vida runtime profile had drifted back to the synthetic placeholder CSM Test SURVEY METHOD; the first independent inspector correctly failed 50 vertices because the pipeline status alone did not prove the 12d attributes. The active Vida Project Runtime Profile, locked JSON, and 12d sidecar were refreshed through the CSM profile API to SURVEY_METHOD = Total Station (profile_hash=a84eba7f9c6b5a2d9f3142ee6c8c020c7488d21c81ac55a6eddfd2484b4b7a6a), and Worker_CSM_Vida_Pipeline.4dm was regenerated and recompiled clean.

Fresh live worker proof imported the canonical fixture: Output\Vida\Vida_simulated_survey.12da.

  • Pipeline evidence: C:\12d_agent_runtime\evidence\live_worker_csm-vida-pipeline_20260622_080246_0c56fe
  • Pipeline result: C:\12d_agent_runtime\results\csm_vida_full_g4_20260622_0802.json
  • Result summary: status=pass, element_count=40, attrs_per_element_min=11, attmf_fallback_count=120, attmf_fallback_specs=3, value_map_rules=40, conditional_rules=2, blocked_rules=0, profile_missing_required=0, and output_window_errors=0.
  • Output Window XML: exports\Vida\current\Worker_CSM_Vida_Pipeline_output_window.xml parsed successfully with zero keyword hits.
  • Production evidence CSV: exports\Vida\current\CSM_production_model_run_Vida_evidence.csv records project_default,SURVEY_METHOD,,Total Station,sidecar.

Independent vertex inspectors then passed sequentially, avoiding command-bus lock contention:

  • C:\12d_agent_runtime\results\csm_vida_g4_inspect_method_20260622_0803.json proved all 50 checked vertices have VT_UTL_DATA_ACQUISITION_METHOD = Total Station.
  • C:\12d_agent_runtime\results\csm_vida_g4_inspect_feature_20260622_0803.json proved all 50 checked vertices have non-empty VT_UTL_FEATURE.
  • C:\12d_agent_runtime\results\csm_vida_g4_inspect_type_20260622_0803.json proved all 50 checked vertices have non-empty VT_UTL_TYPE.

Regression guard: tests\test_vida_pipeline_end_to_end.py::test_active_vida_runtime_profile_uses_real_g4_survey_method now fails if the active Vida locked profile or 12d sidecar contains CSM Test SURVEY METHOD instead of Total Station.

Required proof for future reruns:

  • 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: current full-coverage result file plus independent attribute inspections listed above. This does not close G1 visible panel proof or G9 ADAC validation/report/XML/read-back proof.

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
  • real-job metadata for synthetic profiles
  • UnityWater real-job metadata and any still-valid demo/test rule cleanup

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

2026-06-22 acceptance triage update: current generated acceptance reports now include an Open Failure Triage section before the JSON evidence details. The section routes failed automated checks without downgrading them: Vida and UnityWater A12 are real_job_metadata; MRBC A0 is mixed live_12d_proof + real_project_data + source_backed_mapping_decision, A4 is human_review, and A12 is real_project_runtime_value for MRBC_CADASTRAL_LOTS_MODEL; WAADAC A0 is mixed live_12d_proof + source_backed_mapping_decision, and A4 is human_review. This makes the current action owner visible in the report while preserving FAIL status until real evidence exists.

2026-06-22 Vida qualifier closure: Vida DRDPC is no longer a human data gate. The four duplicate rows now use the source-proven qualifier CSM_CLIENT_FEATURE_CODE with match_value equal to the source client feature code already present in Output\Vida\Vida_simulated_survey.12da. Vida A0 passes; Vida remains blocked only by A12 synthetic Project Runtime Profile metadata.

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

2026-06-22 ADAC/status review-page refresh: the portal now exposes the generated status/action reports and the ADAC/12d research brief as first-class commentable pages. The deployed command was:

npx wrangler pages deploy planning_portal\dist --project-name csm-review-docs --branch main --commit-dirty=true --commit-message "Publish CSM ADAC research and status reports"

Wrangler uploaded 9 changed files, deployed preview https://6be71eac.csm-review-docs.pages.dev, and custom-domain HTTP checks returned 200 for:

  • https://planning.abstrasolutions.com/
  • https://planning.abstrasolutions.com/adac-12d-research
  • https://planning.abstrasolutions.com/csm-status-truth-audit
  • https://planning.abstrasolutions.com/csm-validation-blocker-actions

The local route guard is tests\test_planning_portal.py; it verifies these pages are generated and include the comment system. The ADAC research brief is docs\CSM_ADAC_12D_RESEARCH_BRIEF_2026-06-22.md.

Acceptance result:

  • canonical spec and gap register are published to planning.abstrasolutions.com
  • ADAC/12d research, status-truth audit, and validation blocker actions 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: closed for current authority drift; reopen only if a current handoff doc contradicts generated evidence Owner: docs maintainer Reason: PROJECT_STATE.md is the status authority; TESTS.md is a runnable procedure register; DONE.md is append-only evidence history; STATUS.md is explicitly superseded. Agents should not use old failed rows without checking current state.

Required work:

  • keep PROJECT_STATE.md current after gap closure
  • keep TESTS.md as runnable procedure history, not current status truth
  • keep DONE.md append-only and explicitly historical
  • 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).

2026-06-22 status-truth slice: docs\CLIENT_READINESS_MATRIX.md now matches the current WAADAC acceptance report instead of an older handoff note: WAADAC bridge coverage is 80/81, not 81/81, and the remaining production blocker is the pending ASLID -> SWLID Veris/national-code decision, not a duplicate-code qualifier issue. Regression coverage in tests\test_status_docs.py now checks that the WAADAC readiness text mentions the pending bridge and rejects the stale duplicate-qualifier wording.

2026-06-22 executable audit slice: csm.reports.status_truth_audit now compares the focus-client readiness matrix, generated acceptance reports, WAADAC pending-bridge wording, and latest live 12d blocker markers. The current report is docs\CSM_STATUS_TRUTH_AUDIT_2026-06-22.md with overall PASS. This is still a status-truth audit only; it does not close G1 visible panel proof or G9 ADAC validation/report/XML/read-back proof.

2026-06-22 authority-banner closure: STATUS.md remains explicitly superseded and points to PROJECT_STATE.md; TESTS.md states that it is a runnable procedure register, not the current status source; and DONE.md now states that it is an append-only evidence log, not the current status source. tests\test_status_docs.py::test_historical_status_files_defer_to_current_authority guards the hierarchy so future agents do not treat historical proof logs as the latest production truth.

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 11 after the representative live macro-result gap was reduced; unresolved duplicate Veris-code qualifier collisions remain 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: 11 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. The latest representative live macro result is present, but independent fixed output-inspector proof is still missing.
  • 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.

2026-06-22 research refresh: current public ADAC guidance still reinforces the same implementation boundary. IPWEA-QNT lists ADAC 6.00 as current but also directs suppliers to the receiving organisation's capture guidelines. Gold Coast publishes date-based version windows (ADAC 6.0 from 1 July 2026 and ADAC 5.01 until 30 June 2026). Sunshine Coast has a January 2026 ADAC 6.0.0 capture/submission guideline. Moreton Bay and Unitywater keep their own submission/capture guidance. CSM therefore must keep standard_version and capture_guideline_source as production-scope gates and must not treat an XML schema shell as final ADAC acceptance.

2026-06-22 ADAC research refresh: the generated matrix now explicitly includes current council/utility capture-guideline anchors and the 12d ADAC data-prep-before-processing rule. Unitywater's current ADAC XML capture guidance reinforces that ADAC XML accompanies signed drawings/redlines and must stay tied to real design/as-constructed evidence. Logan's current guidance reinforces accepted-version metadata by project/date. The 12d ADAC training/manual evidence reinforces that data preparation is a prerequisite step before ADAC processing, not a result of pressing export. This is now guarded in tests\test_mrbc_adac_prep_matrix.py.

2026-06-22 representative live 12d proof update: MRBC and WAADAC now have fresh worker-backed representative source-model runs against their local .12da fixtures. MRBC ran Output\MRBC\MRBC_sample_survey.12da with source model CMCAG; result C:\12d_agent_runtime\results\csm_g9_mrbc_cmcag_baked_20260622_0822.json reports status=pass, element_count=1, output_window_errors=0, profile_missing_required=1, and clean Output Window XML at exports\MRBC\current\Worker_CSM_Vida_Pipeline_output_window.xml. WAADAC ran Output\WAADAC\WAADAC_sample_survey.12da with source model ADWHD; result C:\12d_agent_runtime\results\csm_g9_waadac_adwhd_baked_20260622_0823.json reports status=pass, element_count=1, output_window_errors=0, profile_missing_required=0, and clean Output Window XML at exports\WAADAC\current\Worker_CSM_Vida_Pipeline_output_window.xml. This reduces the missing latest fixed/production result blocker for both clients. It does not close G9 because both representative runs report attrs_per_element_min=0, the fixed independent output-inspector result is still missing, MRBC still needs MRBC_CADASTRAL_LOTS_MODEL and source-backed duplicate-code qualifiers, and WAADAC still needs ASLID -> SWLID, scope confirmation, and capture-action review.

2026-06-22 worker-generator hardening: csm\exporters\worker_pipeline.py now preserves an existing project_runtime_profile.csm.json when generating a worker macro if the active-profile marker is missing or stale. This prevents WAADAC's real-job profile from being overwritten by a generic Current export profile. Regression coverage: tests\test_runtime_package.py::test_worker_pipeline_preserves_existing_runtime_profile_when_marker_missing.

2026-06-22 fixed output-inspector live proof attempt: MRBC and WAADAC wrapper macros now run the fixed inspector against the representative imported models (CMCAG and ADWHD). The inspector generator was hardened so raw imported fixtures that lack CSM_CLIENT_FEATURE_CODE can fall back to the element/code prefix when the manifest client code and Veris code align. WAADAC now proves manifest linkage for ADWHD: matched_manifest_rows=1, issue_count=3, and the evidence CSV reports missing required Comments at vertices 1-3. It remains blocked because checked_values=0 and checked_vertices=0, meaning the macro has not written the required vertex attribute. MRBC remains zero-coverage (matched_manifest_rows=0) because the selected CMCAG communications model is not an MRBC ADAC manifest row. G9 remains open until MRBC is tested with a valid MRBC ADAC manifest code/model and WAADAC writes positive required attribute coverage.

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. Vida's equivalent DRDPC collision has been closed with a source-backed qualifier: the four affected rows match on CSM_CLIENT_FEATURE_CODE and the source client feature name already written into the Vida 12da sample. Verification: tests\test_audit_fixes_2026_06.py::test_s12_vida_duplicate_drdpc_bridges_are_disambiguated_on_real_data passed, python -m csm.reports.validation_centre --client Vida --schema-version current reports validation_centre=pass, and python -m csm.reports.validation_centre --client MRBC --schema-version current still emits the row-level MRBC details.

2026-06-22 qualifier wording correction: the validation-centre duplicate-code message no longer says to add a generic Sub Type att_key. It now requires a source-backed att_key / match_attr qualifier, such as Sub Type only when that discriminator is present in source data, and explicitly says not to invent a discriminator. This distinction matters for MRBC because direct source search did not prove CSM_CLIENT_FEATURE_CODE in the MRBC .12da files, and the source-backed subtype repair probe for MRBC returned status=noop, repairs=0, already_count=52, conflict_count=0. Verification: tests\test_audit_fixes_2026_06.py::test_s12_mrbc_duplicate_bridge_message_requires_source_backed_qualifier, tests\test_audit_fixes_2026_06.py::test_s12_vida_duplicate_drdpc_bridges_are_disambiguated_on_real_data, and tests\test_acceptance.py::TestAcceptanceReport::test_vida_duplicate_veris_code_collision_is_disambiguated passed (3 passed). MRBC remains blocked until real qualifier decisions/data are supplied.

2026-06-22 MRBC duplicate qualifier audit: docs\MRBC_DUPLICATE_QUALIFIER_AUDIT_2026-06-22.md now ties the MRBC duplicate-code blockers to the live CSM DB, Output\MRBC\MRBC_mapfile.json, and exports\MRBC\current\csm_inspection_manifest.csv. It finds 19 approved MRBC bridge rows still missing qualifiers across DRDPC, RDFPE, RDPRP, SSBOU, STBEN, STPAV, STPLA, and SWSUG, with zero source-backed automatic repairs available from the conservative subtype repair probe. This keeps the current blocker actionable without allowing guessed macro-side values. Verification: tests\test_mrbc_adac_prep_matrix.py::test_mrbc_duplicate_qualifier_audit_blocks_only_source_backed_repairs guards the row counts and explicit no-guessing decision.

2026-06-22 validation actionability update: docs\CSM_VALIDATION_BLOCKER_ACTIONS_2026-06-22.md is now generated from csm.reports.validation_centre.validate_client for MRBC and WAADAC. It routes 16 blocked and 3 needs-review issues by owner, route/tab/feature, and next action. The report keeps the current guardrails explicit: live macro and output-inspection blockers require fresh 12d/inspector evidence, MRBC duplicate Veris-code qualifiers must be source-backed, and WAADAC ASLID -> SWLID must not be approved or remapped to SWMHC without human source approval. Regression coverage in tests\test_validation_action_report.py guards these counts and guardrails.

2026-06-22 machine-readable action register update: csm.reports.validation_action_report now also emits docs\CSM_VALIDATION_BLOCKER_ACTIONS_2026-06-22.csv from the same validation-centre issue list. The CSV has stable columns for client, severity, category, owner, fix route, fix tab, feature code, attribute id, route label, next action, and message. planning_portal/build_csm_review_portal.py copies CSV sidecars for published docs into planning_portal/dist, so the public review portal can expose the action register without scraping markdown. Focused verification: python -m pytest tests\test_validation_action_report.py tests\test_planning_portal.py tests\test_status_docs.py -q passed (10 passed).

2026-06-22 app readiness actionability update: csm.ui.backend.validation_centre_model.ValidationCentreModel now exposes the same owner, route label, and next-action fields used by the generated validation-action report. csm\ui\qml\Validation.qml shows the next action as the primary row text in the Readiness Gate, with owner and fix route beside the severity/category. This keeps the app aligned with the canonical report and reduces the need to cross-reference markdown while reviewing blockers. Verification: python -m pytest tests\test_validation_centre_model.py tests\test_qml_scroll_contracts.py tests\test_validation_action_report.py tests\test_readiness_navigation.py::test_issue_has_fix_route -q passed (11 passed), and python -m py_compile csm\ui\backend\validation_centre_model.py passed.

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 11 PASS / 1 FAIL / 1 SKIP: A0 passes and A12 still fails on synthetic Project Runtime Profile metadata. Regenerated MRBC acceptance still 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.

2026-06-22 UnityWater A0 update: the last blocked UnityWater A0 issue, LotParcel.PlanNo, is closed. Evidence shows the row was a stale blocked_gap: accepted capture action 5755 says add_text_attr, the UnityWater validation report marks SSBOU / PlanNo as SURVEY_CAPTURED, and the generated field outputs already treat the row as field capture. Mapping 673 is now capture_new; UnityWater Mapfile, MetaConnex, Leica/FXL, runtime package, and acceptance report were regenerated. Current UnityWater acceptance is 11 PASS / 1 FAIL / 1 SKIP: A0 passes, A12 remains failed on synthetic/test Project Runtime Profile metadata. The six source-copy advisories referenced in older notes are now closed by the UnityWater source-copy update below.

2026-06-22 UnityWater source-copy update: the six remaining approved UnityWater source_copy_migration advisories are closed. The affected rows are Sewer.Connection.Material, Sewer.Connection.Type, Sewer.NonPressurePipe.Material, Sewer.PressurePipe.Material, Sewer.PressurePipe.Type, and Water.Pipe.Material. Each row had must_capture_in_field=1, field_capture_required=1, accepted capture-action evidence, and stale source_kind=veris_attr; they now use source_kind=capture_new with no source_veris_attr, preserving previous source attributes in notes. UnityWater Mapfile, MetaConnex, Leica/FXL, runtime package, validation-centre report, and acceptance report were regenerated. Validation centre now reports validation_centre=pass; current UnityWater acceptance remains 11 PASS / 1 FAIL / 1 SKIP, with only A12 synthetic/test Project Runtime Profile metadata failing. Verification: focused source-copy regressions 4 passed, wider exporter/acceptance slice 39 passed, and the UnityWater inspection manifest lists the target attributes as capture_new.

2026-06-22 WAADAC ADAC field-capture update: five stale WAADAC source-copy rows are now corrected to field capture because they are part of ADAC data-prep, not optional operator convenience. The affected rows are ADMHC.Material, AOFNB.Height, AOFNB.Material, ARSIN.Type, and AWPUG.Material. Each row had must_capture_in_field=1, field_capture_required=1, and accepted capture-action evidence, but still used source_kind=veris_attr. They now use source_kind=capture_new with no source_veris_attr; previous source attributes are preserved in row notes. WAADAC Mapfile, MetaConnex, Leica/FXL, runtime package, acceptance report, and validation-centre report were regenerated. Validation centre no longer emits those source_copy_migration advisories. WAADAC remains not production-ready: A0 still blocks on unconfirmed scope rows, missing fixed output-inspector proof, and pending_veris_bridge for ASLID -> SWLID; A4 still has 117 pending capture-action rows. The earlier agent-approved ASLID -> SWMHC remap is not accepted because it collides with ASMHC and can group the wrong elements. SWLID is documented as a pending national-code/master-code decision and must not be invented or approved by an agent without human approval.

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 if the user needs visual acceptance rather than data proof.
  • G9 ADAC data-prep proof on an ADAC client/fixture.
  • Patch CSM app only where G1/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.