{"schemaVersion":"developer.reits.tech/ui-ci/v1","generatedAt":"2026-07-17","policy":"This packet proves a registered design contract only. Repository-owned evidence is required for merge, release and production readiness.","packet":{"screenId":"target-trading-transfer","slice":"K11","title":"配置迁移、差异与 Secret Gate","product":"trading-data-source","productLabel":"行情后台 · 控制面","route":"/admin/market-data/migrations","platform":"Admin","pattern":"form","source":"docs/ui-blueprint/17-k11-trading-data-control-plane.md","checkedAt":"2026-07-17","owners":{"architecture":"Architecture Office","implementation":"行情后台 · 控制面","quality":"QA Architecture"},"viewports":["1440×900","1280×800","390×844"],"stateFamily":[{"key":"READY","definition":"控制面就绪"},{"key":"LOADING","definition":"目录与运行加载"},{"key":"EMPTY","definition":"当前范围为空"},{"key":"PARTIAL_ERROR","definition":"部分来源或依赖失败"},{"key":"ERROR","definition":"页面读取失败"},{"key":"OFFLINE_STALE","definition":"离线只读快照"},{"key":"FORBIDDEN","definition":"资源操作权限不足"},{"key":"DESTRUCTIVE_CONFIRM","definition":"高影响操作确认"},{"key":"SUCCESS_RECEIPT","definition":"带 revision 的操作回执"}],"contracts":["SettingsPackageV1","PackageManifest","StableObjectKey","SecretScanResult","SettingsDiff","DependencyPlan","MigrationCommand","MigrationReceipt"],"actions":["创建安全导出","上传配置包","选择记录","映射 Secret","导出脱敏 diff","批准覆盖","执行迁移","回退 revision"],"guards":["CURRENT 10 个模块集中在单个 App.vue，导航只使用 hash 与 localStorage；TARGET 路由拆分尚未进入产品仓","所有数值、趋势、SLO、探测和运行详情均为 STRUCTURE SAMPLE，只有主干字段、端点和动作属于 CURRENT 证据","CURRENT 仅有单一管理员 session，没有对象级 action scope、CSRF、通用 audit receipt 或多角色授权","CURRENT 导出包含 auth_value；导入是按固定顺序逐对象覆盖 upsert，没有签名、全包事务、dry-run diff 或 revision rollback"],"policyChecks":[{"id":"stable-id","label":"Stable Screen ID","pass":true},{"id":"f4-target","label":"Isolated F4 TARGET","pass":true},{"id":"nine-state","label":"Nine-state family","pass":true},{"id":"interaction","label":"Actions defined","pass":true},{"id":"contracts","label":"Data contracts defined","pass":true},{"id":"guards","label":"Architecture guards defined","pass":true},{"id":"evidence-plan","label":"G1–G8 evidence plan","pass":true}],"evidence":[{"id":"task-packet","gate":"G1","label":"Task packet","proof":"scope、owner paths、依赖、non-goals 与 rollback","path":"ui-ci/target-trading-transfer/task-packet.yaml","status":"missing"},{"id":"screen-contract","gate":"G1","label":"Screen contract","proof":"稳定 Screen ID、route、regions、actions、states、contracts 与 risks","path":"/api/ui-ci/target-trading-transfer","status":"registered"},{"id":"static-report","gate":"G2","label":"Static report","proof":"format、lint、typecheck、schema 与 secret scan","path":"ui-ci/target-trading-transfer/static/report.json","status":"missing"},{"id":"fixture-pack","gate":"G3","label":"State fixture pack","proof":"九态确定性 fixture、long/large/locale 与错误注入","path":"ui-ci/target-trading-transfer/fixtures/manifest.json","status":"missing"},{"id":"consumer-contract","gate":"G4","label":"Consumer contract","proof":"producer schema、consumer fixtures、compatibility 与 migration window","path":"ui-ci/target-trading-transfer/contracts/results.json","status":"missing"},{"id":"experience-bundle","gate":"G5","label":"Experience bundle","proof":"visual、a11y、interaction、responsive 与 native device matrix","path":"ui-ci/target-trading-transfer/experience/manifest.json","status":"missing"},{"id":"security-negative","gate":"G6","label":"Security negative","proof":"authz、resource binding、abuse、privacy、redaction 与 artifact integrity","path":"ui-ci/target-trading-transfer/security/results.json","status":"missing"},{"id":"release-manifest","gate":"G7","label":"Release manifest","proof":"exact commit、artifact digest、SBOM、config、migration 与 rollback drill","path":"ui-ci/target-trading-transfer/release/manifest.json","status":"missing"},{"id":"production-proof","gate":"G8","label":"Production proof","proof":"external synthetic、telemetry、error budget、owner ack 与 incident link","path":"ui-ci/target-trading-transfer/production/evidence.json","status":"missing"}],"registryValid":true,"mergeReady":false,"releaseReady":false,"productionReady":false}}