ZZD public AI gateway · zzd_public_ai_gateway_v3 Resource: 05 · Code and experience quality / 双门槛 Canonical map: https://zzd.show/docs/ai/map.json Full handbook: https://zzd.show/llms-full.txt REST capabilities: https://zzd.show/api/v1/capabilities/ # ZZD Show quality standard A Show passes only when two independent gates pass. ## Gate A — rendered experience The intended layout, content, responsive behavior, motion, media, input, and recursively revealed states must work. Test the experience rather than a single first-frame screenshot. Where applicable, use real wheel/touch, pointer movement, hover, click, keyboard, drag, camera permission, video progress, canvas/WebGL time, routes, menus, drawers, detail states, and return paths. ## Gate B — live source quality Editor-visible Pieces must be readable, formatted, maintainable, and must actually own the result. Vendor/minified/generated binaries may remain support assets, but meaningful structure, content, state, media roles, and motion orchestration stay live and editable. Hard failures: - a root-only loader that injects an uploaded site; - an all-in-one uploaded HTML page; - hiding the application in an iframe/re-frame, document swapper, or hosted-page wrapper instead of exposing its live core; - a generic runtime transport or global fetch/XHR rewrite bridge; - an opaque/minified blob owning the meaningful content or state; - unused readable sidecar Pieces that do not affect the renderer; - a giant absolute asset URL map standing in for an asset model; - only one initial state implemented or tested; - stale compiled output masking the raw source; - a generic factory topology reused across unrelated Shows. Technology is intentionally flexible. Choose vanilla, React, Vue, GSAP, Three.js, WebGL/WebGPU, SVG, canvas, Lottie, Rive, video, or other tools based on the experience. Flexibility does not waive the two gates. ## Compatibility findings are adaptation work A compatible implementation and the user's intended feature are separate questions. An iframe, anchor, external dependency, or startup finding must name the affected file/owner, observed runtime surface, limitation, and concrete repair. Preserve the current draft and continue the supported source work. Do not declare the user's goal invalid just because the first implementation needs adaptation. A finding alone neither approves arbitrary execution nor proves that a requested feature is impossible. Use the existing reported file, line/column, reason and guidance to make the repair; optional extra recovery metadata is not required to proceed. `POST /api/v1/shows/{show_id}/pieces/validate/` supplies source coordinates against this Show's currently saved dependencies only. When proposing `cdns` / `esm` and Pieces together, jointly preflight the same Show through `POST /api/v1/shows/{show_id}/deployments/plan/` with the complete candidate `manifest.metadata.cdns`, `manifest.metadata.esm` and `manifest.pieces`. Plan validates their joint candidate without saving source or dependency metadata. Do not send new metadata to `pieces/validate/`, or PATCH declarations first just to pass that source-only check. Follow the accepted plan's asset actions and then apply its exact manifest with the signed plan token and existing compare-and-swap checks. Current scopes, live Pack release/file rights and licensing remain required at preflight and apply. Do not create a replacement Show, rotate credentials, or weaken a source/security check to clear the finding. Distinguish the platform-owned outer preview/embed iframe, which is the expected isolation boundary, from child iframes created by Show content. Child content is not automatically malicious, and arbitrary third-party embeds are not universally supported. An owned or authorized child page should have its real DOM, state, interactions and animation owners adapted into editable Pieces/modules. For a third-party widget, inspect its purpose, embedding rules, available source/media and rights; adapt authorized source. Same-content media can replace a media-only embed, not an interactive feature. Preserve the integral behavior. Do not substitute a screenshot, remove an interaction, invent a working embed, or hide the entire site behind an uploaded document/loader. Identify any genuinely unavailable behavior and the concrete supported option. Discover required libraries and dynamic imports, then declare suitable pinned public dependencies through current `cdns` / `esm` / importmap metadata. Use supported filename imports such as `import { x } from "a.js"` for project modules; do not assume npm or Node resolution. Editable core stays in Pieces. Media, vendor and data support use the existing authorized asset surfaces and semantic roles. Fix the actual source loader/configuration; do not replace fetch/XHR or introduce a hidden whole-site runtime. A missing dependency declaration calls for a declaration/source repair. Classify anchors before changing them. Section jumps use the actual scroll owner without changing the shell URL; tabs, menus, details and local routes use explicit in-memory state. Preserve keyboard semantics and focus. Genuine platform navigation, sharing or external opening uses only methods advertised by `AppRuntime` in that environment. Do not blanket-disable all anchors/forms or leave meaningful controls as no-ops. Existing authentication, payment, mutation and external-opening restrictions still apply. Bootstrap idempotently with readyState/immediate fallback and bounded owner-ready checks. Dispose this Show's listeners, RAF, observers and animation contexts when stopped/replaced; do not depend on replaying global load events. Register GSAP plugins on the exact GSAP instance constructing the timelines, select one real scroll/progress owner, and refresh after relevant fonts/media, layout and resize. Avoid native-plus-scripted double scrolling. A narrow editor frame does not alone mean a touch/mobile device. Validate the repaired feature through native Run/standalone, actual Edit and available Embed, including later/reverse states, physical input, visible source edits through Run, stop/restart and resource failures. Keep unsupported or untested behavior explicit. No custom preview/bundler, broad security relaxation or fabricated capability is an adaptation. Ownership/scopes, origin/isolation/CSP, credentials, licensing/fees and existing safety holds remain in force. A real limit requires a source-specific supported plan, not an opaque error with no next action. ## Environment parity Verify independently: 1. blank/fullscreen runtime on desktop and mobile; 2. the actual editor preview after native Run; observe the ready frame/document and its isolation transport rather than assuming `about:blank`, `srcdoc`, a fixed URL, or a persistent frame node; 3. the ordinary embed iframe when available. Check console errors/warnings, page errors, unhandled rejections, failed requests and HTTP 4xx/5xx, broken images/video/fonts/models/ decoders/wasm/workers, WebGL errors, unsafe anchors/forms, horizontal overflow, loading/empty/error states, and explicit backgrounds. For canvas/WebGL, prove a nonblank result and motion using time-separated and interaction-separated evidence. For video, check the final local URL, ready state, dimensions, time progress, and media error. A successful HTTP response alone does not prove a valid codec or binary. Compare maintenance candidates with the last known-good Show at the same states. Readability that changes timing, camera, layout, media, or interaction is a regression, not a successful refactor.