{
  "schema_version": "1.0",
  "method": {
    "id": "WHW-PORTFOLIO-EVIDENCE-METHOD-2026-08-26",
    "name": "Portfolio evidence and reversible-decision method",
    "status": "ready-for-evidence-intake",
    "owner": "Wong Hong Wei",
    "reviewed_on": "2026-08-26",
    "public_page": "/portfolio-evidence/",
    "purpose": "Require comparable evidence and a reversible implementation plan before changing a product's investment, maintenance, discovery, indexing or archive status.",
    "current_evidence_status": "No private analytics or maintenance evidence has been imported and no product decision has been issued under this method."
  },
  "boundaries": {
    "not_a_scorecard": "The five evidence families remain separate; a single weighted score cannot authorize a decision.",
    "no_traffic_only_pruning": "No product may be de-emphasised, noindexed, archived, merged or removed only because it falls below a traffic percentile.",
    "aggregate_only": true,
    "child_behavior_tracking_prohibited": true,
    "private_raw_metrics_publication_prohibited": true,
    "automatic_release_prohibited": true,
    "accuracy_boundary": "The validator checks structure and internal consistency. It cannot authenticate analytics, reviewer authority or the truth of a conclusion."
  },
  "route_week_grain": {
    "primary_key": [
      "week_start",
      "product_id",
      "route_group",
      "market",
      "device_class",
      "source_id"
    ],
    "route_groups": [
      "product-entry",
      "guide-or-knowledge",
      "play-or-session",
      "support-or-method"
    ],
    "privacy_rule": "Store aggregate route-week evidence only. Do not introduce child profiles, cross-site identity, session replay, advertising identifiers or fingerprinting."
  },
  "evidence_families": [
    {
      "id": "search-demand",
      "name": "Search demand and discoverability",
      "examples": [
        "non-identifying impressions and clicks",
        "query-theme coverage",
        "indexed-route health"
      ],
      "boundary": "Demand evidence is directional and cannot prove usefulness or product quality."
    },
    {
      "id": "direct-use",
      "name": "Aggregate actual use or service",
      "examples": [
        "useful-session completion",
        "aggregate return cohorts",
        "caregiver-reported utility collected with consent"
      ],
      "boundary": "Do not add remote child analytics. Family-product research requires consent and separate approval."
    },
    {
      "id": "reliability-quality",
      "name": "Reliability, correctness and quality",
      "examples": [
        "release checks",
        "reproducible defect rate",
        "rule-fixture conformance",
        "material corrections"
      ],
      "boundary": "Automated checks do not replace expert content review or manual accessibility testing."
    },
    {
      "id": "maintenance-burden",
      "name": "Maintenance burden",
      "examples": [
        "dependency and asset risk",
        "hours required for critical fixes",
        "release regressions",
        "unowned operational work"
      ],
      "boundary": "Estimate maintenance consistently and record uncertainty rather than inventing precision."
    },
    {
      "id": "strategic-option-value",
      "name": "Strategic fit and option value",
      "examples": [
        "shared capability",
        "distinct audience job",
        "knowledge-engine contribution",
        "reversible learning value"
      ],
      "boundary": "Strategic intent is not evidence of market demand, efficacy or commercial viability."
    }
  ],
  "hard_vetoes": [
    {
      "id": "child-safety",
      "label": "Unresolved child-safety or safeguarding risk"
    },
    {
      "id": "correctness",
      "label": "Repeated or material correctness failure"
    },
    {
      "id": "privacy-security",
      "label": "Unresolved privacy or security risk"
    },
    {
      "id": "critical-accessibility",
      "label": "Critical accessibility barrier"
    },
    {
      "id": "unsupported-claims",
      "label": "Unsupported educational, institutional, expert or compliance claim"
    },
    {
      "id": "ownerless",
      "label": "No accountable owner"
    }
  ],
  "evidence_grades": {
    "A": "Multiple recent, directly relevant and independently checkable evidence sources cover all five families, with limitations recorded.",
    "B": "Recent, directly relevant evidence covers all five families, but one material limitation or validation gap remains.",
    "C": "Some relevant evidence exists, but one or more evidence families are materially incomplete; only maintain, freeze or evidence-gathering changes are supported.",
    "D": "Evidence is absent, stale, non-comparable or largely inferred; no portfolio reduction or investment claim is supported."
  },
  "actions": {
    "invest": "Increase bounded development or distribution against a named hypothesis and rollback trigger.",
    "maintain": "Keep the product live with defined reliability and review obligations.",
    "freeze": "Accept critical fixes only while gathering evidence or resolving a veto.",
    "merge": "Move a product job or route into a named successor while preserving redirects and a rollback snapshot.",
    "de-emphasise": "Reduce catalogue prominence without changing indexability or deleting the route.",
    "noindex": "Keep the route accessible while requesting search engines not index it.",
    "archive": "Preserve a readable record and source snapshot while ending active maintenance.",
    "remove": "Remove the public route only after a preserved snapshot, successor or rationale and explicit rollback plan."
  },
  "reversibility_ladder": [
    {
      "step": "snapshot",
      "requirement": "Record the current route, source revision, dependencies and public discovery state."
    },
    {
      "step": "freeze",
      "requirement": "Stop feature work but retain critical safety, privacy, security and correctness fixes."
    },
    {
      "step": "de-emphasise",
      "requirement": "Reduce promotion for a defined observation window without hiding the route."
    },
    {
      "step": "noindex",
      "requirement": "Preserve direct access and monitor indexing changes with a rollback trigger."
    },
    {
      "step": "archive",
      "requirement": "Keep a public record, reason, successor where applicable and recovery snapshot."
    },
    {
      "step": "merge-or-remove",
      "requirement": "Require evidence grade A or B, a named owner, migration checks and a tested rollback path."
    }
  ],
  "required_conclusions": [
    "search_demand",
    "direct_use",
    "reliability_quality",
    "maintenance_burden",
    "strategic_option_value",
    "risk"
  ],
  "decision_rules": [
    "Assess and record every hard veto before selecting an action.",
    "An open hard veto blocks invest and may require a safety, privacy, correctness or accessibility remediation independent of demand.",
    "A reduction action requires more than search-demand evidence and must state an observation window and rollback trigger.",
    "Merge and remove require evidence grade A or B and a preserved snapshot.",
    "A completed decision card requires an accountable owner and evidence-through date; the blank template is never a decision.",
    "Changes to public indexing, discovery or availability are separate implementation releases and must pass normal site checks."
  ],
  "record_contract": {
    "blank_template": "/data/portfolio/decision-card-template.json",
    "validator_command": "node scripts/validate-portfolio-decision-card.mjs <completed-card.json>",
    "public_fields": [
      "decision_status",
      "evidence_through",
      "evidence_grade",
      "action",
      "indexing_policy",
      "discovery_policy",
      "maintenance_mode",
      "successor_product_id",
      "archive_reason",
      "decision_record_id",
      "rollback_available"
    ]
  }
}
