{"generatedAt":"2026-07-31T18:33:39.541Z","scope":{"countrySlug":"sg","assetSlug":null,"formatKey":null,"consumer":"ops-console","surface":null,"releaseStatus":null,"action":null,"actionStatus":null,"auditStatus":null,"status":"rollback-package-ready"},"metrics":{"rollbackPackageCount":4,"rollbackPackageReadyCount":4,"needsAuditLogCount":0,"needsRollbackFieldsCount":0,"blockedByPolicyCount":0,"rollbackDryRunCount":4,"rollbackWriteDisabledCount":4,"rollbackOnlyCount":4,"operatorReviewRequiredCount":4,"appendCompensationOnlyCount":4,"publicSurfaceWriteDisabledCount":4,"consumerCacheWriteDisabledCount":4,"bbsPostDisabledCount":4,"aiPersistDisabledCount":4,"mapMutationDisabledCount":4,"vrMutationDisabledCount":4,"rollbackPackageWrittenCount":0,"rollbackExecutedCount":0,"auditCompensationWrittenCount":0,"releasePromotionRevertedCount":0,"consumerCachePurgedCount":0,"bbsReplyDeletedCount":0,"aiAnswerDeletedCount":0,"mapLayerRevertedCount":0,"vrSceneRevertedCount":0,"mcpIndexWrittenCount":0,"productionReleaseAllowedCount":0,"tradingUseDisabledCount":4,"rollbackDigestCount":4,"uniqueSourceEvidenceDigestCount":5,"mcpResourceCount":4},"records":[{"generatedAt":"2026-07-31T18:33:39.541Z","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-approve-surface-release-dry-run","rollbackDigest":"b3c2f1c44b0944b132e6d5ca388a859e791c7edf9ecdd9e987f4de39b16cba39","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-approve-surface-release-dry-run","auditDigest":"8c42b01951c6159f09bb11953f8c96667de073c3a1caba615d94488ef72cc3e0","actionId":"asset-visual-local-source-surface-release-action-approve-surface-release-dry-run-sg-commercial-harbor-block-ops-console","actionDigest":"3006c2b7529ac944392c9fe5ae537eeee4afe6bc76349e06d96455f249536734","action":"approve-surface-release-dry-run","actionLabel":"批准发布 dry-run","actionStatus":"action-draft-ready","auditStatus":"audit-schema-ready","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","releaseStatus":"surface-release-preview-ready","assetSlug":"sg-commercial-harbor-block","assetName":"新加坡 S-REIT Harbor Block","shortName":"Harbor Block","nftStyleName":"REITs Pixel Asset #SG-Commercial-05","countrySlug":"sg","countryName":"新加坡","cityName":"Singapore","assetType":"商业不动产","consumer":"ops-console","consumerLabel":"运营台","surface":"ops-console","surfaceLabel":"运营台人审","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","sourceEvidenceDigestCount":5,"requiredMarkers":["LSE:af86cb696408","LSE:b3599f953443","LSE:1d3f0a43b3bd","LSE:3db7f6e914da","LSE:03d25d3167cc"],"status":"rollback-package-ready","statusLabel":"回滚包可校验","rollbackDryRun":true,"rollbackWriteDisabled":true,"rollbackOnly":true,"operatorReviewRequired":true,"appendCompensationOnly":true,"auditLogWriteDisabled":true,"actionWriteDisabled":true,"mcpIndexWriteDisabled":true,"publicSurfaceWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionDisabled":true,"imageReplacementDisabled":true,"externalMintDisabled":true,"tradingUseDisabled":true,"rollbackPackageWritten":false,"rollbackExecuted":false,"auditCompensationWritten":false,"releasePromotionReverted":false,"consumerCachePurged":false,"bbsReplyDeleted":false,"aiAnswerDeleted":false,"mapLayerReverted":false,"vrSceneReverted":false,"mcpIndexWritten":false,"productionReleaseAllowed":false,"requiredInputs":["rollbackDryRun","rollbackWriteDisabled","rollbackOnly","operatorReviewAccepted","auditAppendOnlyAccepted","rollbackSchemaVersion","rollbackReason","idempotencyKey","mcpIndexWriteDisabled","publicSurfaceWriteDisabled","consumerCacheWriteDisabled"],"blockers":[],"rollbackEnvelope":{"table":"asset_visual_local_source_surface_release_rollback_packages","schemaVersion":"2026-07-local-source-surface-release-rollback-package-dry-run-v1","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-approve-surface-release-dry-run","rollbackMode":"dry-run-only","rollbackStrategy":"append-compensation-event-only","action":"approve-surface-release-dry-run","actionDigest":"3006c2b7529ac944392c9fe5ae537eeee4afe6bc76349e06d96455f249536734","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-approve-surface-release-dry-run","auditDigest":"8c42b01951c6159f09bb11953f8c96667de073c3a1caba615d94488ef72cc3e0","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","assetSlug":"sg-commercial-harbor-block","consumer":"ops-console","surface":"ops-console","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","createdAt":"2026-07-31T18:33:39.541Z","writeDisabled":true},"rollbackSteps":[{"id":"assert-audit-digest","label":"校验审计 digest","operation":"assert","writeDisabled":true,"publicVisible":false,"note":"必须先匹配 auditDigest=8c42b01951c6...，否则不能进入任何回滚动作。"},{"id":"append-compensation-event","label":"追加补偿事件","operation":"append-compensation-event","writeDisabled":true,"publicVisible":false,"note":"真实上线时只能追加 compensation event，不允许覆盖原审计日志。当前 dry-run 不写。"},{"id":"revert-surface-promotion","label":"撤回消费面发布","operation":"revert-surface","writeDisabled":true,"publicVisible":true,"note":"运营台人审 当前未被发布，本步骤只描述未来撤回路径。"},{"id":"purge-consumer-cache","label":"清理消费面缓存","operation":"purge-cache","writeDisabled":true,"publicVisible":false,"note":"consumer=ops-console 的缓存清理仅生成计划，不清 CDN、BBS、AI 或 VR 缓存。"},{"id":"mcp-index-no-op","label":"MCP 索引 no-op","operation":"no-op","writeDisabled":true,"publicVisible":false,"note":"当前不会写 MCP index，也不会把回滚包推入正式治理索引。"}],"preconditions":[{"id":"audit-schema-ready","label":"审计日志已 ready","satisfied":true,"digest":"8c42b01951c6159f09bb11953f8c96667de073c3a1caba615d94488ef72cc3e0","note":"auditStatus=audit-schema-ready，当前只读取审计预演。"},{"id":"no-production-write","label":"生产写入为 0","satisfied":true,"digest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","note":"actionCommitted、surfacePromotionWritten、consumerCacheWritten、bbsReplyPosted、aiAnswerPersisted、mapLayerMutated、vrSceneMutated 全部为 false。"},{"id":"source-manifest-bound","label":"源图 manifest 已绑定","satisfied":true,"digest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","note":"5 个源图 digest marker 进入回滚包上下文。"}],"publicSideEffectGuard":{"surfacePromotionWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionAllowed":false,"nftMintDisabled":true,"tradingUseDisabled":true},"mcpRollbackIndexPlan":{"resourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/approve-surface-release-dry-run","indexKey":"surface-release-rollback:sg-commercial-harbor-block:ops-console:approve-surface-release-dry-run","visibility":"ops-governance","noindex":true,"writeDisabled":true,"sourceDigest":"8ab7ff316bdc1233ce0dde005a1a667808ffe9ef1935a782a7b3173ee1b89e6b","rollbackDigest":"b3c2f1c44b0944b132e6d5ca388a859e791c7edf9ecdd9e987f4de39b16cba39","auditDigest":"8c42b01951c6159f09bb11953f8c96667de073c3a1caba615d94488ef72cc3e0","actionDigest":"3006c2b7529ac944392c9fe5ae537eeee4afe6bc76349e06d96455f249536734","entities":["sg-commercial-harbor-block","ops-console","ops-console","approve-surface-release-dry-run","sg"]},"links":{"rollbackApi":"/api/public/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","rollbackPage":"/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","auditLog":"/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","auditLogApi":"/api/public/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","action":"/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","actionApi":"/api/public/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=approve-surface-release-dry-run","releasePage":"/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","releaseApi":"/api/public/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","lookupPage":"/operations/asset-visual-local-source-mcp-citation-lookup-dry-run?asset=sg-commercial-harbor-block","manifestPage":"/operations/asset-visual-local-source-manifest?asset=sg-commercial-harbor-block","assetDetail":"/api/public/virtual-assets/sg-commercial-harbor-block/detail","pixelAtlas":"/pixel-atlas?asset=sg-commercial-harbor-block#atlas","bbs":"/bbs/topics/103","search":"/search?q=S-REIT%20%E6%B1%87%E7%8E%87%20%E6%B4%BE%E6%81%AF"},"mcp":{"rollbackPackageResourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/approve-surface-release-dry-run","actionAuditLogResourceUri":"reits://asset-visual-local-source-surface-release-action-audit-log/sg-commercial-harbor-block/ops-console/approve-surface-release-dry-run","actionResourceUri":"reits://asset-visual-local-source-surface-release-action/approve-surface-release-dry-run/sg-commercial-harbor-block/ops-console","releasePreviewResourceUri":"reits://asset-visual-local-source-surface-release/sg-commercial-harbor-block/ops-console","lookupCandidateResourceUri":"reits://asset-visual-local-source-mcp-citation-lookup/sg-commercial-harbor-block","manifestResourceUri":"reits://asset-visual-local-source-manifest/sg-commercial-harbor-block","assetResourceUri":"reits://asset/sg-commercial-harbor-block","citationPreviewResourceUri":"reits://asset-visual-local-source-citation-preview/sg-commercial-harbor-block/ops-console","sourceEvidenceResourceUris":["reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/bbs-thumbnail","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/map-pin","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/news-cover","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/nft-card","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/vr-plaque"]}},{"generatedAt":"2026-07-31T18:33:39.541Z","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-reject-surface-release","rollbackDigest":"477c2921fa956b440057736742fae9abffd43f2f2cb9d861173a25e57fce6906","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-reject-surface-release","auditDigest":"2de7df27e96b34d3bf6a059d9c99743e73186d975d12bf5c8231698791ce39b5","actionId":"asset-visual-local-source-surface-release-action-reject-surface-release-sg-commercial-harbor-block-ops-console","actionDigest":"ada9223f8a1f4e80edbb39a3bd2de19cdaa477ccfea36644e754b21615179353","action":"reject-surface-release","actionLabel":"拒绝发布","actionStatus":"action-draft-ready","auditStatus":"audit-schema-ready","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","releaseStatus":"surface-release-preview-ready","assetSlug":"sg-commercial-harbor-block","assetName":"新加坡 S-REIT Harbor Block","shortName":"Harbor Block","nftStyleName":"REITs Pixel Asset #SG-Commercial-05","countrySlug":"sg","countryName":"新加坡","cityName":"Singapore","assetType":"商业不动产","consumer":"ops-console","consumerLabel":"运营台","surface":"ops-console","surfaceLabel":"运营台人审","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","sourceEvidenceDigestCount":5,"requiredMarkers":["LSE:af86cb696408","LSE:b3599f953443","LSE:1d3f0a43b3bd","LSE:3db7f6e914da","LSE:03d25d3167cc"],"status":"rollback-package-ready","statusLabel":"回滚包可校验","rollbackDryRun":true,"rollbackWriteDisabled":true,"rollbackOnly":true,"operatorReviewRequired":true,"appendCompensationOnly":true,"auditLogWriteDisabled":true,"actionWriteDisabled":true,"mcpIndexWriteDisabled":true,"publicSurfaceWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionDisabled":true,"imageReplacementDisabled":true,"externalMintDisabled":true,"tradingUseDisabled":true,"rollbackPackageWritten":false,"rollbackExecuted":false,"auditCompensationWritten":false,"releasePromotionReverted":false,"consumerCachePurged":false,"bbsReplyDeleted":false,"aiAnswerDeleted":false,"mapLayerReverted":false,"vrSceneReverted":false,"mcpIndexWritten":false,"productionReleaseAllowed":false,"requiredInputs":["rollbackDryRun","rollbackWriteDisabled","rollbackOnly","operatorReviewAccepted","auditAppendOnlyAccepted","rollbackSchemaVersion","rollbackReason","idempotencyKey","mcpIndexWriteDisabled","publicSurfaceWriteDisabled","consumerCacheWriteDisabled"],"blockers":[],"rollbackEnvelope":{"table":"asset_visual_local_source_surface_release_rollback_packages","schemaVersion":"2026-07-local-source-surface-release-rollback-package-dry-run-v1","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-reject-surface-release","rollbackMode":"dry-run-only","rollbackStrategy":"append-compensation-event-only","action":"reject-surface-release","actionDigest":"ada9223f8a1f4e80edbb39a3bd2de19cdaa477ccfea36644e754b21615179353","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-reject-surface-release","auditDigest":"2de7df27e96b34d3bf6a059d9c99743e73186d975d12bf5c8231698791ce39b5","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","assetSlug":"sg-commercial-harbor-block","consumer":"ops-console","surface":"ops-console","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","createdAt":"2026-07-31T18:33:39.541Z","writeDisabled":true},"rollbackSteps":[{"id":"assert-audit-digest","label":"校验审计 digest","operation":"assert","writeDisabled":true,"publicVisible":false,"note":"必须先匹配 auditDigest=2de7df27e96b...，否则不能进入任何回滚动作。"},{"id":"append-compensation-event","label":"追加补偿事件","operation":"append-compensation-event","writeDisabled":true,"publicVisible":false,"note":"真实上线时只能追加 compensation event，不允许覆盖原审计日志。当前 dry-run 不写。"},{"id":"revert-surface-promotion","label":"撤回消费面发布","operation":"revert-surface","writeDisabled":true,"publicVisible":true,"note":"运营台人审 当前未被发布，本步骤只描述未来撤回路径。"},{"id":"purge-consumer-cache","label":"清理消费面缓存","operation":"purge-cache","writeDisabled":true,"publicVisible":false,"note":"consumer=ops-console 的缓存清理仅生成计划，不清 CDN、BBS、AI 或 VR 缓存。"},{"id":"mcp-index-no-op","label":"MCP 索引 no-op","operation":"no-op","writeDisabled":true,"publicVisible":false,"note":"当前不会写 MCP index，也不会把回滚包推入正式治理索引。"}],"preconditions":[{"id":"audit-schema-ready","label":"审计日志已 ready","satisfied":true,"digest":"2de7df27e96b34d3bf6a059d9c99743e73186d975d12bf5c8231698791ce39b5","note":"auditStatus=audit-schema-ready，当前只读取审计预演。"},{"id":"no-production-write","label":"生产写入为 0","satisfied":true,"digest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","note":"actionCommitted、surfacePromotionWritten、consumerCacheWritten、bbsReplyPosted、aiAnswerPersisted、mapLayerMutated、vrSceneMutated 全部为 false。"},{"id":"source-manifest-bound","label":"源图 manifest 已绑定","satisfied":true,"digest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","note":"5 个源图 digest marker 进入回滚包上下文。"}],"publicSideEffectGuard":{"surfacePromotionWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionAllowed":false,"nftMintDisabled":true,"tradingUseDisabled":true},"mcpRollbackIndexPlan":{"resourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/reject-surface-release","indexKey":"surface-release-rollback:sg-commercial-harbor-block:ops-console:reject-surface-release","visibility":"ops-governance","noindex":true,"writeDisabled":true,"sourceDigest":"ce9fa7488604072dfbf6691ee2810ebcad4c167e01d5376e7d6b15b84c12d366","rollbackDigest":"477c2921fa956b440057736742fae9abffd43f2f2cb9d861173a25e57fce6906","auditDigest":"2de7df27e96b34d3bf6a059d9c99743e73186d975d12bf5c8231698791ce39b5","actionDigest":"ada9223f8a1f4e80edbb39a3bd2de19cdaa477ccfea36644e754b21615179353","entities":["sg-commercial-harbor-block","ops-console","ops-console","reject-surface-release","sg"]},"links":{"rollbackApi":"/api/public/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","rollbackPage":"/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","auditLog":"/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","auditLogApi":"/api/public/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","action":"/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","actionApi":"/api/public/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=reject-surface-release","releasePage":"/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","releaseApi":"/api/public/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","lookupPage":"/operations/asset-visual-local-source-mcp-citation-lookup-dry-run?asset=sg-commercial-harbor-block","manifestPage":"/operations/asset-visual-local-source-manifest?asset=sg-commercial-harbor-block","assetDetail":"/api/public/virtual-assets/sg-commercial-harbor-block/detail","pixelAtlas":"/pixel-atlas?asset=sg-commercial-harbor-block#atlas","bbs":"/bbs/topics/103","search":"/search?q=S-REIT%20%E6%B1%87%E7%8E%87%20%E6%B4%BE%E6%81%AF"},"mcp":{"rollbackPackageResourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/reject-surface-release","actionAuditLogResourceUri":"reits://asset-visual-local-source-surface-release-action-audit-log/sg-commercial-harbor-block/ops-console/reject-surface-release","actionResourceUri":"reits://asset-visual-local-source-surface-release-action/reject-surface-release/sg-commercial-harbor-block/ops-console","releasePreviewResourceUri":"reits://asset-visual-local-source-surface-release/sg-commercial-harbor-block/ops-console","lookupCandidateResourceUri":"reits://asset-visual-local-source-mcp-citation-lookup/sg-commercial-harbor-block","manifestResourceUri":"reits://asset-visual-local-source-manifest/sg-commercial-harbor-block","assetResourceUri":"reits://asset/sg-commercial-harbor-block","citationPreviewResourceUri":"reits://asset-visual-local-source-citation-preview/sg-commercial-harbor-block/ops-console","sourceEvidenceResourceUris":["reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/bbs-thumbnail","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/map-pin","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/news-cover","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/nft-card","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/vr-plaque"]}},{"generatedAt":"2026-07-31T18:33:39.541Z","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-request-risk-review","rollbackDigest":"d5af3fd30c89f3632cdced1178de5ae944a705dd94aa8706dceb7cf00671e117","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-request-risk-review","auditDigest":"6f8a219c2de76905ab276bb4fde2f162a113a6a34ab8c56d164430d277b8e1eb","actionId":"asset-visual-local-source-surface-release-action-request-risk-review-sg-commercial-harbor-block-ops-console","actionDigest":"bae080d3956827f7e4dfe0bdeead8a27e3fa5f82a5dc598187d2b0a6dc0ea720","action":"request-risk-review","actionLabel":"请求风控复核","actionStatus":"action-draft-ready","auditStatus":"audit-schema-ready","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","releaseStatus":"surface-release-preview-ready","assetSlug":"sg-commercial-harbor-block","assetName":"新加坡 S-REIT Harbor Block","shortName":"Harbor Block","nftStyleName":"REITs Pixel Asset #SG-Commercial-05","countrySlug":"sg","countryName":"新加坡","cityName":"Singapore","assetType":"商业不动产","consumer":"ops-console","consumerLabel":"运营台","surface":"ops-console","surfaceLabel":"运营台人审","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","sourceEvidenceDigestCount":5,"requiredMarkers":["LSE:af86cb696408","LSE:b3599f953443","LSE:1d3f0a43b3bd","LSE:3db7f6e914da","LSE:03d25d3167cc"],"status":"rollback-package-ready","statusLabel":"回滚包可校验","rollbackDryRun":true,"rollbackWriteDisabled":true,"rollbackOnly":true,"operatorReviewRequired":true,"appendCompensationOnly":true,"auditLogWriteDisabled":true,"actionWriteDisabled":true,"mcpIndexWriteDisabled":true,"publicSurfaceWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionDisabled":true,"imageReplacementDisabled":true,"externalMintDisabled":true,"tradingUseDisabled":true,"rollbackPackageWritten":false,"rollbackExecuted":false,"auditCompensationWritten":false,"releasePromotionReverted":false,"consumerCachePurged":false,"bbsReplyDeleted":false,"aiAnswerDeleted":false,"mapLayerReverted":false,"vrSceneReverted":false,"mcpIndexWritten":false,"productionReleaseAllowed":false,"requiredInputs":["rollbackDryRun","rollbackWriteDisabled","rollbackOnly","operatorReviewAccepted","auditAppendOnlyAccepted","rollbackSchemaVersion","rollbackReason","idempotencyKey","mcpIndexWriteDisabled","publicSurfaceWriteDisabled","consumerCacheWriteDisabled"],"blockers":[],"rollbackEnvelope":{"table":"asset_visual_local_source_surface_release_rollback_packages","schemaVersion":"2026-07-local-source-surface-release-rollback-package-dry-run-v1","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-request-risk-review","rollbackMode":"dry-run-only","rollbackStrategy":"append-compensation-event-only","action":"request-risk-review","actionDigest":"bae080d3956827f7e4dfe0bdeead8a27e3fa5f82a5dc598187d2b0a6dc0ea720","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-request-risk-review","auditDigest":"6f8a219c2de76905ab276bb4fde2f162a113a6a34ab8c56d164430d277b8e1eb","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","assetSlug":"sg-commercial-harbor-block","consumer":"ops-console","surface":"ops-console","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","createdAt":"2026-07-31T18:33:39.541Z","writeDisabled":true},"rollbackSteps":[{"id":"assert-audit-digest","label":"校验审计 digest","operation":"assert","writeDisabled":true,"publicVisible":false,"note":"必须先匹配 auditDigest=6f8a219c2de7...，否则不能进入任何回滚动作。"},{"id":"append-compensation-event","label":"追加补偿事件","operation":"append-compensation-event","writeDisabled":true,"publicVisible":false,"note":"真实上线时只能追加 compensation event，不允许覆盖原审计日志。当前 dry-run 不写。"},{"id":"revert-surface-promotion","label":"撤回消费面发布","operation":"revert-surface","writeDisabled":true,"publicVisible":true,"note":"运营台人审 当前未被发布，本步骤只描述未来撤回路径。"},{"id":"purge-consumer-cache","label":"清理消费面缓存","operation":"purge-cache","writeDisabled":true,"publicVisible":false,"note":"consumer=ops-console 的缓存清理仅生成计划，不清 CDN、BBS、AI 或 VR 缓存。"},{"id":"mcp-index-no-op","label":"MCP 索引 no-op","operation":"no-op","writeDisabled":true,"publicVisible":false,"note":"当前不会写 MCP index，也不会把回滚包推入正式治理索引。"}],"preconditions":[{"id":"audit-schema-ready","label":"审计日志已 ready","satisfied":true,"digest":"6f8a219c2de76905ab276bb4fde2f162a113a6a34ab8c56d164430d277b8e1eb","note":"auditStatus=audit-schema-ready，当前只读取审计预演。"},{"id":"no-production-write","label":"生产写入为 0","satisfied":true,"digest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","note":"actionCommitted、surfacePromotionWritten、consumerCacheWritten、bbsReplyPosted、aiAnswerPersisted、mapLayerMutated、vrSceneMutated 全部为 false。"},{"id":"source-manifest-bound","label":"源图 manifest 已绑定","satisfied":true,"digest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","note":"5 个源图 digest marker 进入回滚包上下文。"}],"publicSideEffectGuard":{"surfacePromotionWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionAllowed":false,"nftMintDisabled":true,"tradingUseDisabled":true},"mcpRollbackIndexPlan":{"resourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/request-risk-review","indexKey":"surface-release-rollback:sg-commercial-harbor-block:ops-console:request-risk-review","visibility":"ops-governance","noindex":true,"writeDisabled":true,"sourceDigest":"9edd3d13bc376a5d14073dc8c0d615ed28e18f333b1d1b763c9175864e39d376","rollbackDigest":"d5af3fd30c89f3632cdced1178de5ae944a705dd94aa8706dceb7cf00671e117","auditDigest":"6f8a219c2de76905ab276bb4fde2f162a113a6a34ab8c56d164430d277b8e1eb","actionDigest":"bae080d3956827f7e4dfe0bdeead8a27e3fa5f82a5dc598187d2b0a6dc0ea720","entities":["sg-commercial-harbor-block","ops-console","ops-console","request-risk-review","sg"]},"links":{"rollbackApi":"/api/public/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","rollbackPage":"/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","auditLog":"/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","auditLogApi":"/api/public/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","action":"/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","actionApi":"/api/public/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-risk-review","releasePage":"/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","releaseApi":"/api/public/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","lookupPage":"/operations/asset-visual-local-source-mcp-citation-lookup-dry-run?asset=sg-commercial-harbor-block","manifestPage":"/operations/asset-visual-local-source-manifest?asset=sg-commercial-harbor-block","assetDetail":"/api/public/virtual-assets/sg-commercial-harbor-block/detail","pixelAtlas":"/pixel-atlas?asset=sg-commercial-harbor-block#atlas","bbs":"/bbs/topics/103","search":"/search?q=S-REIT%20%E6%B1%87%E7%8E%87%20%E6%B4%BE%E6%81%AF"},"mcp":{"rollbackPackageResourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/request-risk-review","actionAuditLogResourceUri":"reits://asset-visual-local-source-surface-release-action-audit-log/sg-commercial-harbor-block/ops-console/request-risk-review","actionResourceUri":"reits://asset-visual-local-source-surface-release-action/request-risk-review/sg-commercial-harbor-block/ops-console","releasePreviewResourceUri":"reits://asset-visual-local-source-surface-release/sg-commercial-harbor-block/ops-console","lookupCandidateResourceUri":"reits://asset-visual-local-source-mcp-citation-lookup/sg-commercial-harbor-block","manifestResourceUri":"reits://asset-visual-local-source-manifest/sg-commercial-harbor-block","assetResourceUri":"reits://asset/sg-commercial-harbor-block","citationPreviewResourceUri":"reits://asset-visual-local-source-citation-preview/sg-commercial-harbor-block/ops-console","sourceEvidenceResourceUris":["reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/bbs-thumbnail","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/map-pin","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/news-cover","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/nft-card","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/vr-plaque"]}},{"generatedAt":"2026-07-31T18:33:39.541Z","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-request-surface-copy-fix","rollbackDigest":"b8a043d375178161ee1889855ff53f623270c5dd2892a4520104698446047d41","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-request-surface-copy-fix","auditDigest":"812480bfcf73189fcebf4600183dd3896b697857ff1bed38436b05ad0205ac0e","actionId":"asset-visual-local-source-surface-release-action-request-surface-copy-fix-sg-commercial-harbor-block-ops-console","actionDigest":"b04b10a830780b2bc67ac3288c9583b9fcbadfaaad1f3053a33cda39da5bab75","action":"request-surface-copy-fix","actionLabel":"请求文案修复","actionStatus":"action-draft-ready","auditStatus":"audit-schema-ready","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","releaseStatus":"surface-release-preview-ready","assetSlug":"sg-commercial-harbor-block","assetName":"新加坡 S-REIT Harbor Block","shortName":"Harbor Block","nftStyleName":"REITs Pixel Asset #SG-Commercial-05","countrySlug":"sg","countryName":"新加坡","cityName":"Singapore","assetType":"商业不动产","consumer":"ops-console","consumerLabel":"运营台","surface":"ops-console","surfaceLabel":"运营台人审","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","sourceEvidenceDigestCount":5,"requiredMarkers":["LSE:af86cb696408","LSE:b3599f953443","LSE:1d3f0a43b3bd","LSE:3db7f6e914da","LSE:03d25d3167cc"],"status":"rollback-package-ready","statusLabel":"回滚包可校验","rollbackDryRun":true,"rollbackWriteDisabled":true,"rollbackOnly":true,"operatorReviewRequired":true,"appendCompensationOnly":true,"auditLogWriteDisabled":true,"actionWriteDisabled":true,"mcpIndexWriteDisabled":true,"publicSurfaceWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionDisabled":true,"imageReplacementDisabled":true,"externalMintDisabled":true,"tradingUseDisabled":true,"rollbackPackageWritten":false,"rollbackExecuted":false,"auditCompensationWritten":false,"releasePromotionReverted":false,"consumerCachePurged":false,"bbsReplyDeleted":false,"aiAnswerDeleted":false,"mapLayerReverted":false,"vrSceneReverted":false,"mcpIndexWritten":false,"productionReleaseAllowed":false,"requiredInputs":["rollbackDryRun","rollbackWriteDisabled","rollbackOnly","operatorReviewAccepted","auditAppendOnlyAccepted","rollbackSchemaVersion","rollbackReason","idempotencyKey","mcpIndexWriteDisabled","publicSurfaceWriteDisabled","consumerCacheWriteDisabled"],"blockers":[],"rollbackEnvelope":{"table":"asset_visual_local_source_surface_release_rollback_packages","schemaVersion":"2026-07-local-source-surface-release-rollback-package-dry-run-v1","rollbackPackageId":"asset-visual-local-source-surface-release-rollback-sg-commercial-harbor-block-ops-console-request-surface-copy-fix","rollbackMode":"dry-run-only","rollbackStrategy":"append-compensation-event-only","action":"request-surface-copy-fix","actionDigest":"b04b10a830780b2bc67ac3288c9583b9fcbadfaaad1f3053a33cda39da5bab75","auditLogId":"asset-visual-local-source-surface-release-action-audit-sg-commercial-harbor-block-ops-console-request-surface-copy-fix","auditDigest":"812480bfcf73189fcebf4600183dd3896b697857ff1bed38436b05ad0205ac0e","releasePreviewId":"asset-visual-local-source-surface-release-sg-commercial-harbor-block-ops-console","releaseDigest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","assetSlug":"sg-commercial-harbor-block","consumer":"ops-console","surface":"ops-console","sourceManifestDigest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","createdAt":"2026-07-31T18:33:39.541Z","writeDisabled":true},"rollbackSteps":[{"id":"assert-audit-digest","label":"校验审计 digest","operation":"assert","writeDisabled":true,"publicVisible":false,"note":"必须先匹配 auditDigest=812480bfcf73...，否则不能进入任何回滚动作。"},{"id":"append-compensation-event","label":"追加补偿事件","operation":"append-compensation-event","writeDisabled":true,"publicVisible":false,"note":"真实上线时只能追加 compensation event，不允许覆盖原审计日志。当前 dry-run 不写。"},{"id":"revert-surface-promotion","label":"撤回消费面发布","operation":"revert-surface","writeDisabled":true,"publicVisible":true,"note":"运营台人审 当前未被发布，本步骤只描述未来撤回路径。"},{"id":"purge-consumer-cache","label":"清理消费面缓存","operation":"purge-cache","writeDisabled":true,"publicVisible":false,"note":"consumer=ops-console 的缓存清理仅生成计划，不清 CDN、BBS、AI 或 VR 缓存。"},{"id":"mcp-index-no-op","label":"MCP 索引 no-op","operation":"no-op","writeDisabled":true,"publicVisible":false,"note":"当前不会写 MCP index，也不会把回滚包推入正式治理索引。"}],"preconditions":[{"id":"audit-schema-ready","label":"审计日志已 ready","satisfied":true,"digest":"812480bfcf73189fcebf4600183dd3896b697857ff1bed38436b05ad0205ac0e","note":"auditStatus=audit-schema-ready，当前只读取审计预演。"},{"id":"no-production-write","label":"生产写入为 0","satisfied":true,"digest":"81c084f93fb2125e6f5c8271e466deda004eb5c93d0020558e56d9c6e2940cdd","note":"actionCommitted、surfacePromotionWritten、consumerCacheWritten、bbsReplyPosted、aiAnswerPersisted、mapLayerMutated、vrSceneMutated 全部为 false。"},{"id":"source-manifest-bound","label":"源图 manifest 已绑定","satisfied":true,"digest":"e8697bcb7e114031877b80144f6ed05ae2ab204e09d6f55ac7176ed83df0635d","note":"5 个源图 digest marker 进入回滚包上下文。"}],"publicSideEffectGuard":{"surfacePromotionWriteDisabled":true,"consumerCacheWriteDisabled":true,"bbsPostDisabled":true,"aiPersistDisabled":true,"mapMutationDisabled":true,"vrMutationDisabled":true,"registryPromotionAllowed":false,"nftMintDisabled":true,"tradingUseDisabled":true},"mcpRollbackIndexPlan":{"resourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/request-surface-copy-fix","indexKey":"surface-release-rollback:sg-commercial-harbor-block:ops-console:request-surface-copy-fix","visibility":"ops-governance","noindex":true,"writeDisabled":true,"sourceDigest":"a26b1ec6a16bfca0bfc4d0e3fe08ac206ee58f3a31aeede5a4798f4df270dff2","rollbackDigest":"b8a043d375178161ee1889855ff53f623270c5dd2892a4520104698446047d41","auditDigest":"812480bfcf73189fcebf4600183dd3896b697857ff1bed38436b05ad0205ac0e","actionDigest":"b04b10a830780b2bc67ac3288c9583b9fcbadfaaad1f3053a33cda39da5bab75","entities":["sg-commercial-harbor-block","ops-console","ops-console","request-surface-copy-fix","sg"]},"links":{"rollbackApi":"/api/public/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","rollbackPage":"/operations/asset-visual-local-source-surface-release-rollback-package-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","auditLog":"/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","auditLogApi":"/api/public/operations/asset-visual-local-source-surface-release-action-audit-log-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","action":"/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","actionApi":"/api/public/operations/asset-visual-local-source-surface-release-actions?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console&action=request-surface-copy-fix","releasePage":"/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","releaseApi":"/api/public/operations/asset-visual-local-source-surface-release-dry-run?asset=sg-commercial-harbor-block&consumer=ops-console&surface=ops-console","lookupPage":"/operations/asset-visual-local-source-mcp-citation-lookup-dry-run?asset=sg-commercial-harbor-block","manifestPage":"/operations/asset-visual-local-source-manifest?asset=sg-commercial-harbor-block","assetDetail":"/api/public/virtual-assets/sg-commercial-harbor-block/detail","pixelAtlas":"/pixel-atlas?asset=sg-commercial-harbor-block#atlas","bbs":"/bbs/topics/103","search":"/search?q=S-REIT%20%E6%B1%87%E7%8E%87%20%E6%B4%BE%E6%81%AF"},"mcp":{"rollbackPackageResourceUri":"reits://asset-visual-local-source-surface-release-rollback-package/sg-commercial-harbor-block/ops-console/request-surface-copy-fix","actionAuditLogResourceUri":"reits://asset-visual-local-source-surface-release-action-audit-log/sg-commercial-harbor-block/ops-console/request-surface-copy-fix","actionResourceUri":"reits://asset-visual-local-source-surface-release-action/request-surface-copy-fix/sg-commercial-harbor-block/ops-console","releasePreviewResourceUri":"reits://asset-visual-local-source-surface-release/sg-commercial-harbor-block/ops-console","lookupCandidateResourceUri":"reits://asset-visual-local-source-mcp-citation-lookup/sg-commercial-harbor-block","manifestResourceUri":"reits://asset-visual-local-source-manifest/sg-commercial-harbor-block","assetResourceUri":"reits://asset/sg-commercial-harbor-block","citationPreviewResourceUri":"reits://asset-visual-local-source-citation-preview/sg-commercial-harbor-block/ops-console","sourceEvidenceResourceUris":["reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/bbs-thumbnail","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/map-pin","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/news-cover","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/nft-card","reits://asset-visual-local-source-evidence/sg-commercial-harbor-block/vr-plaque"]}}],"statusBreakdown":[{"status":"rollback-package-ready","label":"回滚包可校验","count":4},{"status":"needs-audit-log","label":"需要审计日志","count":0},{"status":"needs-rollback-fields","label":"需要回滚字段","count":0},{"status":"blocked-by-policy","label":"策略阻断","count":0}],"actionBreakdown":[{"action":"approve-surface-release-dry-run","label":"批准发布 dry-run","count":1,"readyCount":1},{"action":"request-surface-copy-fix","label":"请求文案修复","count":1,"readyCount":1},{"action":"request-risk-review","label":"请求风控复核","count":1,"readyCount":1},{"action":"reject-surface-release","label":"拒绝发布","count":1,"readyCount":1}],"consumerBreakdown":[{"consumer":"ops-console","label":"运营台","count":4,"readyCount":4}],"publicNotes":["当前筛选范围输出 4 个消费面发布回滚包 dry-run，全部继承发布动作审计日志。","回滚包只生成 append-compensation-event 策略、MCP rollback resource 预览和禁写步骤，不执行撤回。","真实上线前必须把回滚包交给独立变更单、双人审批和事故复盘流程，避免运营误删公开内容。"],"qaWarnings":["rollbackPackageWritten、rollbackExecuted、auditCompensationWritten、mcpIndexWritten 必须始终为 0。","releasePromotionReverted、consumerCachePurged、bbsReplyDeleted、aiAnswerDeleted、mapLayerReverted、vrSceneReverted 必须始终为 0。","rollbackWriteDisabled、rollbackOnly、publicSurfaceWriteDisabled、consumerCacheWriteDisabled、tradingUseDisabled 必须始终为 true。"]}