{
  "schema_version": "1.0",
  "portfolio": {
    "id": "WHW-PRODUCT-PORTFOLIO",
    "name": "WongHongWei.com product portfolio",
    "owner": "Wong Hong Wei",
    "last_reviewed": "2026-08-25",
    "classification_basis": "Provisional strategic intent, not evidence of demand, efficacy or commercial viability.",
    "status_definitions": {
      "flagship": "Named priority product with a distinct audience, job and validation plan.",
      "strategic-experiment": "Time-bounded hypothesis relevant to a flagship or reusable capability.",
      "portfolio-only": "Maintained demonstration or casual product without an active flagship claim.",
      "archived": "Preserved product record that is no longer kept live."
    }
  },
  "products": [
    {
      "id": "foxys-learning-patch",
      "title": "Foxy's Little Learning Patch",
      "url": "/foxys-learning-patch/",
      "homepage_family": "learning",
      "portfolio_status": "flagship",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Named priority product with a distinct audience, job and active validation plan."
    },
    {
      "id": "primary-power-quest-sg",
      "title": "Primary Power Quest SG",
      "url": "/primary-power-quest-sg/",
      "homepage_family": "learning",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "everyday-hero-quest",
      "title": "Everyday Hero Quest",
      "url": "/everyday-hero-quest/",
      "homepage_family": "learning",
      "portfolio_status": "flagship",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Named priority product with a distinct audience, job and active validation plan."
    },
    {
      "id": "relax-chess-studio",
      "title": "Relax Chess Studio 中国象棋",
      "url": "/relax-chess-studio/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "supply-chinese-chess",
      "title": "Supply Chinese Chess",
      "url": "/supply-chinese-chess/",
      "homepage_family": "table",
      "portfolio_status": "strategic-experiment",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Tests a cooperative two-board model and shared captured-piece supply."
    },
    {
      "id": "singapore-mahjong",
      "title": "Singapore Mahjong",
      "url": "/singapore-mahjong/",
      "homepage_family": "table",
      "portfolio_status": "flagship",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Named priority product with a distinct audience, job and active validation plan."
    },
    {
      "id": "transfer-mahjong",
      "title": "Transfer Mahjong",
      "url": "/transfer-mahjong/",
      "homepage_family": "table",
      "portfolio_status": "strategic-experiment",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Tests partnership play and private tile-transfer mechanics around Mahjong."
    },
    {
      "id": "checkers-club",
      "title": "Checkers Club",
      "url": "/checkers-club/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "calm-puzzles",
      "title": "Happy Puzzle Play",
      "url": "/calm-puzzles/",
      "homepage_family": "learning",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "prism-pop-quest",
      "title": "Prism Pop Quest",
      "url": "/prism-pop-quest/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "open-knights-tour",
      "title": "Open Knight's Tour",
      "url": "/open-knights-tour/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "power-lift-challenge",
      "title": "Power Lift Challenge",
      "url": "/power-lift-challenge/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "neon-racer",
      "title": "Neon Racer",
      "url": "/neon-racer/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "pulse-rhythm-reflex-arcade",
      "title": "PULSE",
      "url": "/pulse-rhythm-reflex-arcade/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "neon-fighter-arena",
      "title": "Neon Fighter Arena",
      "url": "/neon-fighter-arena/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "moon-man",
      "title": "Moon-Man",
      "url": "/moon-man/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "snakes",
      "title": "Snakes",
      "url": "/snakes/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "starline-defenders",
      "title": "Starline Defenders",
      "url": "/starline-defenders/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "are-you-actually-observant",
      "title": "Are You Actually Observant?",
      "url": "/are-you-actually-observant/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "spot-the-difference",
      "title": "Spot the Difference",
      "url": "/spot-the-difference/",
      "homepage_family": "learning",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "the-still-point",
      "title": "The Still Point",
      "url": "/the-still-point/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "trivia",
      "title": "Today in Singapore",
      "url": "/trivia/?mode=singapore",
      "homepage_family": "lab",
      "portfolio_status": "strategic-experiment",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Tests a finite daily Singapore knowledge format and dated-content workflow."
    },
    {
      "id": "minesweeper",
      "title": "Minesweeper",
      "url": "/minesweeper/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "tictactoe",
      "title": "Tic Tac Toe",
      "url": "/tictactoe/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "shadowdeep",
      "title": "Shadowdeep",
      "url": "/shadowdeep/",
      "homepage_family": "lab",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "covered-chess",
      "title": "Covered Chess 盖棋",
      "url": "/covered-chess/",
      "homepage_family": "table",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    },
    {
      "id": "aeroplane-chess",
      "title": "Aeroplane Chess",
      "url": "/aeroplane-chess/",
      "homepage_family": "table",
      "portfolio_status": "portfolio-only",
      "owner": "Wong Hong Wei",
      "status_review": "2026-08-25",
      "rationale": "Maintained public game or supporting table-game entry; no active flagship or outcome claim."
    }
  ],
  "franchises": [
    {
      "id": "singapore-mahjong",
      "name": "Singapore Mahjong",
      "primary_route": "/singapore-mahjong-companion/",
      "target_audience": "Singapore Mahjong learners, families and recurring table groups",
      "job": "Agree house rules, play, score, remember a table and resolve disputes.",
      "north_star": "Groups that complete a useful session and return to the same rule profile within 90 days.",
      "stage_gate": "integrity",
      "evidence_status": "Implementation and rule fixtures exist; repeat demand and physical-table utility remain unvalidated.",
      "claim_boundary": "Documents practice-table defaults and sourced alternatives; does not claim one universal Singapore ruleset."
    },
    {
      "id": "foxys-learning-patch",
      "name": "Foxy Learning Patch",
      "primary_route": "/foxys-learning-patch/",
      "target_audience": "Caregivers co-playing with children approximately 18 months to 3 years",
      "job": "Begin a short guided interaction that ends with an off-screen activity.",
      "north_star": "Caregiver-child sessions that reach the off-screen handoff and are judged useful by the caregiver.",
      "stage_gate": "integrity",
      "evidence_status": "External early-childhood, speech-language and accessibility review has not been completed.",
      "claim_boundary": "Public frameworks describe design intent only; no claim of accreditation, developmental efficacy or expert approval."
    },
    {
      "id": "everyday-hero-quest",
      "name": "Everyday Hero Quest",
      "primary_route": "/everyday-hero-quest/",
      "target_audience": "Singapore Primary 1-3 children using the product with a caregiver",
      "job": "Practise a practical situation and continue with a family discussion or rehearsal.",
      "north_star": "Family sessions that reach a real-world discussion or rehearsal and are judged useful by the caregiver.",
      "stage_gate": "integrity",
      "evidence_status": "External educator, safeguarding and digital-safety review has not been completed.",
      "claim_boundary": "Scenarios are practice prompts, not professional, safety, counselling or educational advice."
    }
  ],
  "review_register": [
    {
      "product_id": "foxys-learning-patch",
      "external_review_status": "not-completed",
      "required_lenses": [
        "early-childhood",
        "speech-language",
        "multilingual-language",
        "accessibility",
        "safety"
      ],
      "public_status_required": true,
      "next_action": "Commission independent activity-level review before outcome claims or paid or institutional distribution."
    },
    {
      "product_id": "everyday-hero-quest",
      "external_review_status": "not-completed",
      "required_lenses": [
        "primary-education",
        "safeguarding",
        "digital-safety",
        "accessibility",
        "parent-usability"
      ],
      "public_status_required": true,
      "next_action": "Commission independent scenario-level review before outcome claims or institutional distribution."
    },
    {
      "product_id": "primary-power-quest-sg",
      "external_review_status": "not-completed",
      "required_lenses": [
        "primary-english",
        "primary-mathematics",
        "primary-chinese",
        "primary-science",
        "accessibility",
        "parent-usability"
      ],
      "public_status_required": true,
      "next_action": "Commission independent question-level and difficulty review before curriculum, assessment, readiness or institutional claims."
    }
  ],
  "child_data_flows": [
    {
      "product_id": "foxys-learning-patch",
      "classification": "child-and-family",
      "data_item": "age-band, language, activity progress and local session state",
      "source": "caregiver interaction",
      "purpose": "resume progress on the same browser",
      "storage": "browser localStorage",
      "storage_key": "foxy_little_learning_patch_v2",
      "processor": "none for stored progress",
      "retention": "until site data is cleared or the in-product reset is used",
      "public_exposure": "none",
      "remote_product_analytics": "none",
      "approved_network": [
        "same-origin static assets",
        "same-origin service-worker cache"
      ],
      "verified_from": [
        "foxys-learning-patch/index.html",
        "foxys-learning-patch/sw.js"
      ]
    },
    {
      "product_id": "everyday-hero-quest",
      "classification": "child-and-family",
      "data_item": "chosen mode, local practice progress and preferences",
      "source": "family interaction",
      "purpose": "resume practice on the same browser",
      "storage": "browser localStorage",
      "storage_key": "everydayHeroQuestProfileV2",
      "processor": "none for stored progress",
      "retention": "until site data is cleared",
      "public_exposure": "none",
      "remote_product_analytics": "none",
      "approved_network": [
        "same-origin page assets"
      ],
      "verified_from": [
        "everyday-hero-quest/index.html"
      ]
    },
    {
      "product_id": "primary-power-quest-sg",
      "classification": "child-and-family",
      "data_item": "subject progress, earned stars and local practice state",
      "source": "family interaction",
      "purpose": "resume practice on the same browser",
      "storage": "browser localStorage",
      "storage_key": "coreFourQuestAcademySG.v3",
      "processor": "none for stored progress",
      "retention": "until site data is cleared or the in-product reset is used",
      "public_exposure": "none",
      "remote_product_analytics": "none",
      "approved_network": [
        "same-origin page assets"
      ],
      "verified_from": [
        "primary-power-quest-sg/index.html"
      ]
    }
  ],
  "release_controls": {
    "required_fields": [
      "product",
      "version or review date",
      "changed claims, rules or content",
      "data-flow change",
      "dependency change",
      "tests",
      "reviewer",
      "rollback plan",
      "public changelog entry"
    ],
    "automated_checks": [
      "portfolio catalogue completeness",
      "stable product IDs and allowed statuses",
      "flagship charter completeness",
      "family review-status disclosure",
      "declared local-storage keys match source",
      "child entrypoints contain no unapproved remote call mechanism",
      "generated methods page is current",
      "every child-and-family product has an external-review register entry"
    ]
  }
}
