☰
▤ Project Setup
▤ Tower-A_Setup.rvt
Setup readiness: 67% · 4 of 6 domains compliant (round 15)

Project Setup — Readiness

One scan answers "is this model set up to firm standard?". The dashboard aggregates the six read-only audits PSU already runs — links, link paths, project metadata, levels, view templates, shared parameters, standards — into a single readiness view. Click any domain to jump straight to its page.
LINKED MODELS
12
8 Revit · 3 CAD · 1 Navis
COMPLIANCE ISSUES
15
across all configured domains
DOMAINS COMPLIANT
4 / 6
1 not yet configured
SETUP READINESS
67%
scanned just now · preview only

◔ SETUP READINESS

67% READY
Compliant 4
Needs attention 1
Blocked 1
Not configured 1
Runs every audit once (read-only) and fills this dashboard + each page's grid. Nothing is written — each domain still applies from its own page with preview-before-commit.

▤ COMPLIANCE BY DOMAIN (click a row to open that page)

🔗Link Worksets
7
🖇Link Paths
1
ⓘProject Info (IFD)
0
▤Levels
0
▦View Templates
14
▧Shared Parameters
0
⚖Standards Sync
—
Bar length auto-scales to the largest issue count (icz.dashboard.bars). "—" = domain has no standard file configured yet (Standards Sync needs a standards JSON; set it on that page's gear). Bars are the read side of the same engines the pages apply.

▦ SETUP ENGINES (Dash_* → _select_page — every page reachable in one click)

7🔗Link Worksets
✓ⓘProject Info
✓▤Levels
14▦View Templates
1🖇Link Paths
✓▧Shared Params
—⚖Standards Sync
▥BEP Import
The badge on each tile mirrors the domain's live issue count from the last scan — so the dashboard now tells you where to go instead of just listing what exists. Same Dash_* handlers, no new navigation code.

Link Worksets — Compliance Engine

Auto-assign Revit / CAD / Navis link instances to their standard worksets by pattern rule. UNCHANGED this round — reachable from the dashboard; its scan now also feeds the readiness donut.
3 CAD imports (should be linked) 4 links unpinned 12 links routed
LinkKindCurrent workset→ TargetPinned
Tower-A-ARC.rvtRevitWorkset1XXX_Links_Revitno
Tower-A-STR.rvtRevitXXX_Links_RevitXXX_Links_Revityes
SURVEY_M4.dwgCAD (import!)—delete + re-link—
Real seams: link_logic.assign_link_worksets_routed (Lnk_Run, inside Transaction), detect_cad_imports, pin_all_links. NEW read-only helper for the dashboard: count_unpinned(doc) (the read side of pin_all_links — iterates _collect + Element.Pinned, verified 2023–2026). No page-layout change.

Level Consolidator

Bulk-rehost elements across levels with offset compensation; optionally delete a redundant source level (views rehosted first). UNCHANGED this round.
This page and its engine (level_logic.py: list_levels · change_levels · delete_level · _rehost_views) are untouched. The dashboard reads list_levels(doc) for its Levels count only. Preview-before-commit, source-level filter, and the view-rehost guard all stay as-is.
Follow-up noted (not this round): PSU mutates workshared models (workset moves, level rehosts) without WorksharingUtils.CheckoutElements first — the B9 "checkout seam" from the mining report (verified 2023–2026). Worth folding into the shared mutation seam, but it's a behaviour change gated on the suite's ≥2-model diff-harness rule, so it stays a follow-up, not a mockup item.

Project Info — Federated JSON Sync

UNCHANGED.
proj_info_logic.py — collect_params / compare_to_master / sync_to_master. Dashboard reads the IFD/master mismatch count from compare_to_master (0 issues when the model matches the master JSON, or when no master_sync_path is set the domain shows "not configured").

View Template Sweep

UNCHANGED.
viewtpl_logic.py — scan(doc, rules) returns views whose template differs from the rule-matched target; that count (14) drives the dashboard bar + nav badge. Apply Selected via the shared icz.review_grid.

Link Paths & Coordinates

UNCHANGED.
link_logic.audit_link_paths flags broken/cloud link paths (1 broken → the fail bar); repair_link_path (outside a Transaction) + acquire_coordinates_from (inside one) apply. Dashboard reads the broken count.

Shared Parameters — Audit + Bind + Drift

UNCHANGED.
sparam_logic.py — scan_shared_parameters (bound params) + missing_standard_params (drift vs icz.paramreg). The drift count (0 here) drives the dashboard.

Standards Sync — Units + Object Styles

UNCHANGED.
standards_logic.py — audit_units + audit_object_styles vs a firm standards JSON. No standards_file set → the dashboard shows this domain as "not configured" (grey), not a false pass. Configure the file on this page's gear to activate it.

BEP Rule Import

UNCHANGED.
bepimport_logic.py — extract a .docx table → map columns → write link_routing_rules. Not an audited domain (it's an importer), so it has no dashboard bar — only a quick-launch tile.
Scan complete: 6 domains audited · 15 issues · readiness 67%. Compliance Log
Project Setup — session log
---------------------------
Scan: 12 links (3 CAD imports, 4 unpinned) · 1 broken path · IFD matches master.
View templates: 14 views off the rule-matched template.
Shared params: firm standard fully bound (0 drift).
Standards Sync: no standards JSON configured — domain skipped (set it on the page).