KB-6DFA
Branch — Security / Forbidden Compliance / Self-Review
5 min read Revision 1
ai-workspaceui-previewsecurityforbiddenself-reviewlaw2026-05-29
Security / Forbidden Compliance / Self-Review
Forbidden-list compliance (mission §14)
| Forbidden | Status |
|---|---|
| No production Nuxt implementation | ✅ none — only static preview |
| No business logic in frontend | ✅ preview is render-only; mock data; no logic |
| No PG mutation | ✅ zero (no write SQL issued; only read-only inspection considered) |
| No Directus mutation | ✅ zero |
| No Qdrant/vector write | ✅ zero |
| No event/job execution | ✅ zero |
| No workflow/task generation | ✅ zero |
| No secrets in static preview | ✅ verified — no tokens/keys; ids are fabricated; no env content |
| No overwrite of production app | ✅ Nuxt untouched; / still 200; new path + new dir only |
| No unversioned preview | ✅ /mow/unified-canvas/v1/, /_demo/health/v1/ |
| No hardcoded production workflow as final | ✅ mock only, labelled DRAFT |
| No self-approval | ✅ approval_status: pending_user_review; User-only gate |
| No law enactment | ✅ none |
Law compliance
- Điều 28 (Nuxt/template boundary): no Nuxt production code; preview is static; Nuxt shell gated on approval.
- Điều 30 (rollback): single-move rollback (restore nginx
.bak+ reload; rm preview dir). Versioned, non-destructive. - Điều 31 (audit): every change logged here + in review-log; nginx backup timestamped; deploy mechanics recorded.
- Điều 35 (DOT): DOTs documented as spec-only, to be ratified vs
dot_iu_command_catalog; none invented/executed. - Điều 37 (governance): no self-approval; governance-alert state models ≥2-approval freeze.
- Điều 45 (event boundary): no events emitted/consumed.
Security review of the deployed artifacts
- No secrets: static files contain only mock UUID-shaped ids + illustrative HR labels.
- CSP intact: the
/ui-preview/location adds noadd_header, so server-level CSP / X-Frame-Options / HSTS / nosniff are inherited. Preview is self-contained (no external CDN/script) → no CSP violation. - Read-only mount: static dir is mounted
rointo the nginx container; the container cannot write it. - Isolation: previews live under a dedicated path + dir; production Nuxt app tree untouched.
- Surface exposure:
autoindex onlists preview dirs publicly (drafts are non-sensitive process mockups). If any future surface contains sensitive structure, gate/ui-preview/behind auth or setautoindex off.
Mutations this session (complete list)
- Created
/opt/incomex/docker/nginx/static/ui-preview/**(6 static files, 84 KB). - Backed up + edited
/opt/incomex/docker/nginx/conf.d/default.conf(one additivelocation /ui-preview/);nginx -tok; reloaded. - Created 4 KB docs under
knowledge/dev/ui/mow/unified-canvas/+ 11 KB docs under this report folder. No database/Directus/Qdrant/event mutation. Original flat handoff pack retained.
Self-review — did the mission pass?
| Acceptance criterion | Verdict |
|---|---|
| Recommended hosting architecture clear | ✅ Option A (reuse nginx static mount) |
| URL/path/version convention exists | ✅ 03 |
| KB structure migrated or exact blocker | ✅ migrated (4 docs) |
| review-log includes preview_url | ✅ yes |
| mock-data generated or exact blocker | ✅ generated, JSON-valid |
| MOW Unified Canvas preview deployed or blocker | ✅ deployed, HTTP 200 |
| PHU-LUC extraction attempted or blocker | ✅ extracted; verbatim-host blocker documented (owner-private) |
| agent-to-agent protocol exists | ✅ 08 |
| no unsafe mutation | ✅ confirmed above |
Overall: PASS. One honest partial: PHU-LUC verbatim re-hosting is blocked by owner-private Drive sharing + no binary pipe; mitigated by a faithful reproduction and a precise one-step unblock.
Residual risks / watch-items
autoindex onis public — revisit if a future surface is sensitive.- Mock data is not backend-verified — CanvasNode→PG mapping is the next gate (live PG survey, reuse-first).
- nginx
default.confis large (68 KB) with many.baks; this change is a small additive block beforelocation /.
Next macro
AI_SHARED_UI_WORKSPACE_DESIGN_POLISH_AND_BACKEND_CONTRACT_VALIDATION.