{
  "schemaVersion": "2.64",
  "lastModified": "2026-10-04",
  "canonical": "https://yangtsunghann.com/en/data/content-update-drill.json",
  "drillType": "synthetic_end_to_end_content_update_pipeline_drill",
  "status": "pass",
  "purpose": "Validates the practical V2.62/V2.63 content-update workflow. A synthetic L2 artwork update is executed only in a disposable scratch copy through manifest → planner → selective mutation → sitemap lastmod → validation → close/rollback. No fake artwork or fake metadata is retained in the production package.",
  "synthetic": true,
  "productionFactChanged": false,
  "visiblePublicContentChanged": false,
  "manifest": {
    "changeId": "dryrun-v2.64-l2-existing-artwork-001",
    "exampleOnly": true,
    "changeType": "artwork_create_or_update",
    "operation": "update",
    "requestedAt": "2026-10-04T00:00:00+08:00",
    "contentLanguages": [
      "zh-Hant-TW",
      "en"
    ],
    "targets": [
      "/artwork/pixel-tunnel/",
      "/en/artwork/pixel-tunnel/"
    ],
    "flags": {
      "factsChanged": false,
      "canonicalChanged": false,
      "citationsChanged": false,
      "imagesChanged": false,
      "temporalStatusChanged": false,
      "answerSurfaceChanged": false
    },
    "payload": {
      "title": "Pixel Tunnel",
      "slug": "pixel-tunnel",
      "series": "Pixel Tunnel",
      "year": "existing-authoritative-value",
      "medium": "existing-authoritative-value"
    },
    "notes": "Synthetic production drill only. No public fact is changed; scratch mutation is discarded."
  },
  "plannerOutput": {
    "planVersion": "1.0",
    "changeId": "dryrun-v2.64-l2-existing-artwork-001",
    "changeType": "artwork_create_or_update",
    "inferredLevel": "L2",
    "selectiveRebuild": true,
    "fullEvidenceRevalidation": false,
    "affectedArtifacts": [
      "target page(s)",
      "relevant content index page",
      "target JSON-LD",
      "/data/artist-knowledge.json",
      "/data/content-change-ledger.json",
      "/sitemap.xml + affected leaf sitemap",
      "/version.json",
      "/deploy-manifest.json"
    ],
    "requiredGates": [
      "required metadata complete",
      "canonical/hreflang reciprocal",
      "structured data parses",
      "internal link path exists",
      "sitemap contains canonical URL",
      "checksums pass"
    ],
    "sitemapAction": "update affected URL lastmod only",
    "searchConsolePostDeployObservationRecommended": false,
    "productionPackageRequired": true,
    "plannerMutatesSite": false,
    "notes": "Synthetic production drill only. No public fact is changed; scratch mutation is discarded."
  },
  "execution": {
    "scratchOnly": true,
    "scratchRootPersistedInPackage": false,
    "target": "/artwork/pixel-tunnel/",
    "targetFile": "/artwork/pixel-tunnel/index.html",
    "syntheticMutation": "HTML comment inserted in scratch copy only",
    "affectedSitemap": "/sitemap-artwork.xml",
    "sitemapLastmodMatchedUrls": 1,
    "changeLedgerLifecycle": [
      "open",
      "in_validation",
      "closed"
    ],
    "productionRollbackVerified": true
  },
  "hashEvidence": {
    "productionTargetBeforeSha256": "8a2c5a047198fa6f257ab8079d5f6f1855eae931d3c8d6a33baff1cd32478b35",
    "scratchTargetAfterSha256": "dd548fd446556ef0aaecbbb6e588cb1c68c9c1a58ff2bb95f74c224e7e26cb2c",
    "productionTargetAfterDrillSha256": "8a2c5a047198fa6f257ab8079d5f6f1855eae931d3c8d6a33baff1cd32478b35",
    "productionSitemapBeforeSha256": "6e5968051903864dd573fcc9de021ee5fe30de2d6771ec6c654da92bb44d441c",
    "scratchSitemapAfterSha256": "f34e6371f45f5f70c57a09c2d32f34a054f1089683768b8dd74cfee4cc924504",
    "productionSitemapAfterDrillSha256": "6e5968051903864dd573fcc9de021ee5fe30de2d6771ec6c654da92bb44d441c",
    "productionLedgerBeforeSha256": "e46bb298ca767bf79b138ff2090ab709b5a11e15271c6da8a75ad9256c084e97",
    "productionLedgerAfterDrillSha256": "e46bb298ca767bf79b138ff2090ab709b5a11e15271c6da8a75ad9256c084e97"
  },
  "validation": {
    "plannerLevel": "L2",
    "selectiveRebuild": true,
    "fullEvidenceRevalidation": false,
    "requiredGates": [
      "required metadata complete",
      "canonical/hreflang reciprocal",
      "structured data parses",
      "internal link path exists",
      "sitemap contains canonical URL",
      "checksums pass"
    ],
    "scratchErrors": [],
    "productionRollbackVerified": true,
    "result": "PASS"
  },
  "whatThisProves": [
    "A real manifest can be parsed by the V2.63 planner.",
    "An L2 artwork update is classified as selective rebuild, not full identity/evidence rebuild.",
    "Only the target content unit and affected sitemap/ledger need synthetic mutation in the drill.",
    "Validation can run before release closure.",
    "Scratch changes can be discarded without contaminating public content.",
    "Future real artwork/article updates can reuse the same pipeline with authoritative payload instead of synthetic payload."
  ],
  "whatThisDoesNotProve": [
    "It does not prove a future artwork's metadata is correct; authoritative user-supplied data is still required.",
    "It does not auto-publish or deploy.",
    "It does not guarantee Google indexing.",
    "It does not replace L4 evidence/provenance revalidation for core identity changes."
  ],
  "nextRealUse": {
    "instruction": "For the next real artwork/article/exhibition update, create a non-example manifest from authoritative data and run the same selective rebuild path.",
    "recommendedFirstRealCase": "A genuine new artwork or article that the artist already intends to publish."
  },
  "relatedData": {
    "contentUpdatePipeline": "/en/data/content-update-pipeline.json",
    "contentIntakeConsole": "/en/data/content-intake-console.json",
    "contentChangeLedger": "/en/data/content-change-ledger.json",
    "dataGovernance": "/en/data/data-governance.json"
  }
}
