UI Preview Master Manifest — Replace from Cowork 61-Item Source Doc (2026-05-30)
UI Preview Master Manifest — Replace from Cowork 61-Item Source Doc
report: ui-preview-master-manifest-replace-from-cowork-61-source
date: 2026-05-30
host: contabo VPS (vmi3080463)
verdict: PASS
mutation_class: static-file replace (manifest.json only) — additive/reversible
db_mutation: NONE (no PG / Directus / Qdrant)
html_changed: NO (index.html untouched)
0. Mission
Replace the incomplete Master Home manifest.json (UI-only: 19 surfaces / 4 groups) with the
authoritative 61-item list (DATA layer + UI layer) from the Cowork Google Drive source doc.
- Target:
/opt/incomex/docker/nginx/static/ui-preview/_master/v1/manifest.json - Master Home URL:
https://vps.incomexsaigoncorp.vn/ui-preview/_master/v1/
1. Source doc — read verdict: PASS (live read)
- Doc:
UI-MASTER-GOVERNANCE-61-ITEMS-SOURCE - Drive id:
1VtOjX0m44taOv9YySKNZ_yV8nKX7YKyKAKa7qv5Bm5g - Read live via Google Drive connector. Not reconstructed from memory or a summary.
- Content: 16 groups + 61 items (Part 1 = 36 data tables/registries; Part 2 = 25 UI screens),
with per-item
id, group, name, description,cowork_sketch(true/wip/false),preview_url,spec_path, and a status-mapping rubric.
2. Hard Gate 0 (all PASS, pre-edit)
| Check | Result |
|---|---|
| Host = contabo VPS | vmi3080463, root. OK |
| Master Home HTTP 200 | 200 OK |
| manifest.json HTTP 200 | 200 OK |
| MOW Unified Canvas v1 HTTP 200 | 200 OK |
| Backup current manifest | manifest.json.bak-20260530T065336Z (19530 B, sha256 62a11741…290e6) |
| No production Nuxt touched | confirmed (static dir only) |
| No PG/Directus/Qdrant mutation | confirmed (ssh/scp/curl on static files only) |
3. Replacement performed
- Replaced
groups(4 → 16) andsurfaces(19 → 61) from the source doc. - Preserved top-level metadata:
schema_version(1.0),workspace,generated_by,preview_base,status_vocab,approval_vocab. - Added provenance:
source{doc_name, drive_id, read_at, note}andlayers[](data/ui counts). - Per item emitted:
id, optionalscreen_id,group,layer,surface_name,description,status,approval_status,current_version,preview_url, optionalpreview_note,spec_path,review_log_path,design_brief_path,owner_agent,next_action,dependencies[],checklist{9},updated_at. - New manifest: 61223 B, sha256
0554fbb7…7c52f.
Counts (verified, served over HTTPS)
| Dimension | Value |
|---|---|
| Total items | 61 |
| By layer | data 36 · ui 25 |
| Groups | 16 (9 data Nhóm 1–9 + 7 UI Nhóm A–G) |
| By status | spec_ready 41 · preview_deployed 2 · cowork_sketch 2 · not_started 16 |
Deployed previews (checklist.preview_deployed=true) |
2 |
| Duplicate ids | 0 |
| Orphan group refs | 0 |
Per-group counts match the source doc exactly: data-infrastructure 4, data-hierarchy 6, data-mothers 4, data-personnel 4, data-blueprint 4, data-assets 2, data-runtime 5, data-governance 3, data-mapping 4, ui-mow 4, ui-mot 3, ui-moit 2, ui-mout 2, ui-registry 6, ui-mowd 4, ui-ops 4.
4. Truthfulness decision — v2 placeholder (KEY)
The source doc maps cowork_sketch=true + preview_url set → preview_deployed, and points 5 UI
items at the v2 canvas URL:
mow-normal-mode(A1),mow-proposal-mode(A2),mot-task-card(B1),moit-form-renderer(C1),mout-table-renderer(D1).
https://…/ui-preview/mow/unified-canvas/v2/ returns HTTP 200 but is a placeholder scaffold:
its index.html says "placeholder, NOT final v2 … has NOT been designed or fabricated by an
agent", and preview.meta.json has status: scaffold, approval_status: awaiting_cowork_html,
source: "scaffold — awaiting Cowork HTML (not agent-designed)".
Decision (faithful reporting > mechanical mapping): keep the source preview_url (v2) on
those 5 items but set status: spec_ready with checklist.preview_deployed=false and a
preview_note flagging the placeholder. They flip to preview_deployed only when Cowork ships
real v2 HTML. Only the 2 items backed by the real, live v1 canvas (mow-treeview A4,
workflow-design-registry F1) are preview_deployed. No user_approved/fake approvals.
ID disambiguation
Source items B2 and G1 share screen_id my-tasks-dashboard. To keep 61 distinct manifest ids,
G1's manifest id is my-tasks-dashboard-ops (screen_id: "G1", description "= B2"); B2 keeps
my-tasks-dashboard (screen_id: "B2"). No rows dropped; no rows invented.
Source-doc inconsistency flagged
The doc's aggregate summary ("24 done / 2 WIP / 35 not-started") disagrees with its own per-row
cowork_sketch column (all 36 data rows = true). Status was derived from the explicit per-row
values (authoritative), and the discrepancy is flagged for GPT/User reconciliation.
5. Verification (post-replace, all PASS)
…/_master/v1/→ HTTP 200.…/_master/v1/manifest.json→ HTTP 200, JSON valid, 61 surfaces / 16 groups / 36 data + 25 UI; deployed-checklist = 2 (cache-busted fetch).- HTML render:
index.htmlis data-driven (fetch('manifest.json'), iteratesgroups[], reads per-item fields that are all present). New 16-group/two-layer structure renders with no JS change required. (Render verified by contract: valid manifest + all required fields present.) - MOW Unified Canvas v1 → HTTP 200 (untouched).
- No
index.htmlcarries the deploy mtime (08:55) — every preview HTML predates it → no HTML modified, no existing preview overwritten. - No PG / Directus / Qdrant access at any point.
6. KB updates
knowledge/dev/ui/_master/review-log.md— added "manifest replace — 61-item Cowork source doc" entry (drive id, counts, URLs, backup, v2 decision). rev 4.knowledge/dev/ui/_master/spec.md— added "Scope — covers BOTH layers" (36 data + 25 UI). rev 2.- This report.
7. Rollback
ssh contabo "cd /opt/incomex/docker/nginx/static/ui-preview/_master/v1/ && \
cp manifest.json.bak-20260530T065336Z manifest.json"
Restores the 19-surface manifest (sha256 62a11741…290e6). No other change to reverse
(HTML untouched, no DB writes).
8. Forbidden-compliance
No PG mutation · No Directus mutation · No Qdrant/vector mutation · No production Nuxt change ·
No HTML redeploy (manifest-only) · No fake approvals (approval_status never user_approved) ·
No invented rows (exactly the 61 source rows) · No dropped rows. All honored.