{
  "schemaVersion": "2.73",
  "lastModified": "2026-10-04",
  "canonical": "https://yangtsunghann.com/en/data/content-update-pipeline.json",
  "pipelineVersion": "1.0",
  "pipelineType": "selective_static_site_content_update_workflow",
  "backgroundAutomationClaimed": false,
  "cmsClaimed": false,
  "purpose": "Provides a selective content-update workflow so future artwork, article, exhibition, image, Biography, award, or experience changes do not require rebuilding the entire AI/SEO architecture. A change manifest is classified L1–L4, and only affected pages, structured data, machine-readable registries, sitemap entries and release checks are rebuilt. Core identity/authority changes alone trigger the full evidence → provenance → dependency → revalidation chain.",
  "canonicalInvariants": {
    "site": "https://yangtsunghann.com/",
    "canonicalArtistId": "https://yangtsunghann.com/#artist",
    "legacyDomain": "yangtsunghan.com",
    "legacyDomainRole": "historical_former_official_alias_only",
    "visibleContentMustComeFromAuthoritativeContent": true,
    "machineDerivativesMustNotInventFacts": true,
    "unknownFieldsRemainUnknown": true,
    "openIntervalsRemainSnapshotBound": true
  },
  "changeLevels": [
    {
      "id": "L1",
      "name": "Presentation / image / typo",
      "examples": [
        "replace image",
        "fix typo",
        "alt text refinement",
        "non-factual copy polish"
      ],
      "defaultChangeTypes": [
        "image_or_typo"
      ],
      "rebuildProfile": "presentation_selective",
      "fullEvidenceRevalidation": false
    },
    {
      "id": "L2",
      "name": "Single content unit",
      "examples": [
        "new artwork",
        "artwork metadata update",
        "new article",
        "article update"
      ],
      "defaultChangeTypes": [
        "artwork_create_or_update",
        "article_create_or_update"
      ],
      "rebuildProfile": "content_unit_selective",
      "fullEvidenceRevalidation": false
    },
    {
      "id": "L3",
      "name": "Collection / series / exhibition",
      "examples": [
        "new series",
        "series reorganization",
        "new exhibition"
      ],
      "defaultChangeTypes": [
        "series_create_or_update",
        "exhibition_create_or_update"
      ],
      "rebuildProfile": "collection_selective",
      "fullEvidenceRevalidation": false
    },
    {
      "id": "L4",
      "name": "Core identity / authority fact",
      "examples": [
        "Biography identity fact",
        "award",
        "experience interval",
        "birth/work-location fact"
      ],
      "defaultChangeTypes": [
        "biography_core_update",
        "award_update",
        "experience_update"
      ],
      "rebuildProfile": "identity_full_revalidation",
      "fullEvidenceRevalidation": true
    }
  ],
  "classificationRules": [
    "Explicit changeLevel may be supplied only if it is not lower than the inferred minimum.",
    "image_or_typo defaults to L1.",
    "artwork_create_or_update and article_create_or_update default to L2.",
    "series_create_or_update and exhibition_create_or_update default to L3.",
    "biography_core_update, award_update and experience_update are always L4.",
    "If factsChanged=true and the changed fact is artist identity, award, experience, birth/work location, or authority evidence, minimum level is L4.",
    "If canonicalChanged=true, the plan must include canonical, hreflang, sitemap, redirect and search-index derivative checks.",
    "If citationsChanged=true, evidence/citation/provenance stages are added even for L2/L3."
  ],
  "rebuildProfiles": {
    "presentation_selective": {
      "requiredArtifacts": [
        "target HTML/page asset",
        "ImageObject/image graph when image changed",
        "sitemap lastmod when public page changed",
        "deploy manifest/checksums",
        "version/build marker"
      ],
      "requiredGates": [
        "target route present",
        "canonical unchanged unless declared",
        "no accidental noindex",
        "image metadata valid when applicable",
        "checksums pass"
      ]
    },
    "content_unit_selective": {
      "requiredArtifacts": [
        "target content page(s)",
        "language counterpart when supplied",
        "relevant series/article index page",
        "JSON-LD",
        "entity/image graph as applicable",
        "artist knowledge when representative content changes",
        "query/answer mapping only when answer surface changes",
        "sitemap + lastmod",
        "content change ledger",
        "deploy manifest/checksums",
        "version/build marker"
      ],
      "requiredGates": [
        "required content metadata complete",
        "canonical/hreflang reciprocal",
        "structured data parses",
        "internal link path exists",
        "sitemap contains canonical URL",
        "machine derivatives match authoritative page",
        "checksums pass"
      ]
    },
    "collection_selective": {
      "requiredArtifacts": [
        "collection/series/exhibition page(s)",
        "affected child/index relationships",
        "entity graph",
        "artist knowledge",
        "query intent/answer coverage when discoverability changes",
        "dependency propagation registry",
        "sitemap + lastmod",
        "content change ledger",
        "deploy manifest/checksums",
        "version/build marker"
      ],
      "requiredGates": [
        "collection membership consistent",
        "all child canonical URLs resolve in build",
        "bilingual routing consistent",
        "entity relationships valid",
        "dependency closure passes",
        "checksums pass"
      ]
    },
    "identity_full_revalidation": {
      "requiredArtifacts": [
        "authoritative Biography/experience/award source page",
        "artist knowledge",
        "entity graph",
        "search identity",
        "entity disambiguation",
        "citation graph",
        "evidence quality",
        "conflict arbitration",
        "temporal truth",
        "claim provenance",
        "dependency propagation",
        "revalidation ledger",
        "answer coverage/query intent",
        "sitemap when public URL changes",
        "content change ledger",
        "deploy manifest/checksums",
        "version/build marker"
      ],
      "requiredGates": [
        "authoritative source changed first",
        "supporting evidence present",
        "identity/disambiguation remains unique",
        "temporal classification valid",
        "lineage fingerprints regenerated",
        "dependency impact closed",
        "revalidation release blocker cleared",
        "checksums pass"
      ]
    }
  },
  "contentTypeContracts": {
    "artwork_create_or_update": {
      "requiredPayloadFields": [
        "title",
        "slug",
        "series",
        "year",
        "medium"
      ],
      "recommendedPayloadFields": [
        "imageSize",
        "framedSize",
        "edition",
        "description",
        "images"
      ],
      "authoritativePageFamily": "/artwork/",
      "defaultLevel": "L2"
    },
    "article_create_or_update": {
      "requiredPayloadFields": [
        "title",
        "slug",
        "publicationDate"
      ],
      "recommendedPayloadFields": [
        "description",
        "bodySource",
        "citations",
        "heroImage"
      ],
      "authoritativePageFamily": "/bibliography/",
      "defaultLevel": "L2"
    },
    "exhibition_create_or_update": {
      "requiredPayloadFields": [
        "title",
        "startDate",
        "city",
        "country"
      ],
      "recommendedPayloadFields": [
        "endDate",
        "venue",
        "url"
      ],
      "authoritativePageFamily": "/exhibitions/",
      "defaultLevel": "L3"
    },
    "series_create_or_update": {
      "requiredPayloadFields": [
        "title",
        "slug",
        "yearOrRange"
      ],
      "recommendedPayloadFields": [
        "description",
        "artworkIds"
      ],
      "authoritativePageFamily": "/artwork/",
      "defaultLevel": "L3"
    },
    "biography_core_update": {
      "requiredPayloadFields": [
        "field",
        "newValue",
        "evidenceSources"
      ],
      "recommendedPayloadFields": [
        "effectiveFrom",
        "effectiveTo",
        "reason"
      ],
      "authoritativePageFamily": "/biography/",
      "defaultLevel": "L4"
    },
    "award_update": {
      "requiredPayloadFields": [
        "awardName",
        "year",
        "result",
        "evidenceSources"
      ],
      "recommendedPayloadFields": [
        "category",
        "officialUrl"
      ],
      "authoritativePageFamily": "/biography/",
      "defaultLevel": "L4"
    },
    "experience_update": {
      "requiredPayloadFields": [
        "organization",
        "role",
        "startYear",
        "evidenceSources"
      ],
      "recommendedPayloadFields": [
        "endYear",
        "officialUrl"
      ],
      "authoritativePageFamily": "/biography/",
      "defaultLevel": "L4"
    },
    "image_or_typo": {
      "requiredPayloadFields": [
        "description"
      ],
      "recommendedPayloadFields": [
        "imagePath",
        "altTextBefore",
        "altTextAfter"
      ],
      "authoritativePageFamily": "manifest.targets",
      "defaultLevel": "L1"
    }
  },
  "selectiveRebuildFlags": {
    "factsChanged": "Adds knowledge-consistency review; identity/authority facts escalate to L4.",
    "canonicalChanged": "Adds redirect, canonical, hreflang, sitemap and search-index derivative checks.",
    "citationsChanged": "Adds citation graph, evidence quality and provenance review.",
    "imagesChanged": "Adds image graph, ImageObject and asset metadata checks.",
    "temporalStatusChanged": "Adds temporal truth and provenance review.",
    "answerSurfaceChanged": "Adds query intent and answer coverage review."
  },
  "workflow": [
    "1. Create a content change manifest before editing.",
    "2. Infer minimum L1–L4 level from changeType and flags.",
    "3. Update the authoritative public content first.",
    "4. Rebuild only the profile-required derivatives plus flag-triggered derivatives.",
    "5. Run targeted consistency/dependency/revalidation gates.",
    "6. Recompute sitemap/lastmod only for actual public changes.",
    "7. Recompute deploy manifest/checksums and bump version/build marker.",
    "8. Deploy the FULL package.",
    "9. For important new/changed URLs, observe Search Console after deployment; do not treat deployment as proof of indexing."
  ],
  "mutationBoundaries": {
    "noAutomaticFactInference": true,
    "noSilentCoreIdentityMutation": true,
    "noMassSitemapLastmodRewrite": true,
    "noAutomaticIndexingGuarantee": true,
    "noBackgroundMonitoring": true,
    "plannerDoesNotEditSite": true,
    "plannerRole": "validate manifest and produce selective rebuild plan"
  },
  "tooling": {
    "planner": "/tools/content-update-plan.py",
    "manifestSchema": "/data/content-update-schema.json",
    "changeLedger": "/data/content-change-ledger.json",
    "examplesDirectory": "/tools/examples/",
    "usage": "python tools/content-update-plan.py <manifest.json> [--output plan.json]",
    "console": "/tools/content-intake-console.html",
    "consoleRegistry": "/en/data/content-intake-console.json",
    "ruleModelFingerprintSha256": "3c73e24ae9eda22f44883a7707377c0477f3eb748b4337315b51231cd8f1f082"
  },
  "baseline": {
    "sourceBuild": "2.62",
    "htmlFiles": 88,
    "indexablePages": 84,
    "canonicalArtistId": "https://yangtsunghann.com/#artist",
    "openContentChanges": 0
  },
  "selfTest": {
    "examples": 4,
    "levelsCovered": [
      "L1",
      "L2",
      "L3",
      "L4"
    ],
    "results": [
      {
        "example": "change-l1-image.json",
        "expectedLevel": "L1",
        "actualLevel": "L1",
        "passed": true
      },
      {
        "example": "change-l2-artwork.json",
        "expectedLevel": "L2",
        "actualLevel": "L2",
        "passed": true
      },
      {
        "example": "change-l3-exhibition.json",
        "expectedLevel": "L3",
        "actualLevel": "L3",
        "passed": true
      },
      {
        "example": "change-l4-biography.json",
        "expectedLevel": "L4",
        "actualLevel": "L4",
        "passed": true
      }
    ],
    "passed": 4,
    "failed": 0,
    "status": "pass"
  },
  "relatedData": {
    "contentUpdateSchema": "/en/data/content-update-schema.json",
    "contentChangeLedger": "/en/data/content-change-ledger.json",
    "dataGovernance": "/en/data/data-governance.json",
    "knowledgeConsistency": "/en/data/knowledge-consistency.json",
    "dependencyPropagation": "/en/data/dependency-propagation.json",
    "revalidationLedger": "/en/data/revalidation-ledger.json",
    "claimProvenance": "/en/data/claim-provenance.json",
    "contentIntakeConsole": "/en/data/content-intake-console.json",
    "contentUpdateDrill": "/en/data/content-update-drill.json",
    "performanceDashboard": "/en/data/performance-dashboard.json",
    "bilingualContentFinalPass": "/en/data/bilingual-content-final-pass.json"
  },
  "visibleContentChanged": false,
  "productionDrill": {
    "registry": "/en/data/content-update-drill.json",
    "status": "pass",
    "drillLevel": "L2",
    "productionFactChanged": false,
    "productionRollbackVerified": true
  },
  "latestAppliedProductionChange": {
    "changeId": "production:v2.73:bilingual-content-final-pass",
    "minimumLevel": "L3",
    "status": "applied_and_validated",
    "visibleContentChanged": true
  }
}
