{
  "version": "product-settings-verification-v1",
  "recordedAt": "2026-09-26T03:09:54Z",
  "evidenceKind": "first-party-local-regression-receipt",
  "scope": "Selected settings, native forecast anchors, frozen report transport and scoped report/chat contracts. This is neither product certification nor prediction-accuracy measurement.",
  "provenance": "All listed commands were executed locally during this implementation session. Success lines are observed output, not newly inferred results. Ephemeris calls used captured fixtures or the local first-party ephemeris repository; no live paid AI providers or production database were used.",
  "replay": {
    "command": "node --import tsx scripts/replay-product-settings-verification.ts",
    "listOnly": "node --import tsx scripts/replay-product-settings-verification.ts --list",
    "behavior": "Runs only the listed focused test files, prints new JSON results, and does not overwrite this historical receipt. No aggregate, lint or production-build scripts are invoked.",
    "upstreamRequirement": "Set OPENFATE_ASTRO_API_PATH to the local OpenFate ephemeris repository before a full replay."
  },
  "fixes": [
    {
      "id": "astro-preview-profection-anchor",
      "observedBefore": "A Jan 1 UTC synthetic birth chart previewed at 2026-12-31 23:45 UTC used forecast year 2026; unanchored generation 20 minutes later used 2027 with unchanged natal planets.",
      "now": "New signed previews preserve the engine's profection start year through the natal route and relocation call; fresh previews still follow the current birthday-aware year."
    },
    {
      "id": "vedic-preview-instant",
      "observedBefore": "An unanchored recalculation after cache expiry changed forecastAnchorIso and the deterministic dasha forecast packet.",
      "now": "New signed previews preserve forecastAnchorIso through cache and generation; immediate generation reuses the preview calculation."
    },
    {
      "id": "combination-native-anchors",
      "observedBefore": "The same selected BaZi/Ziwei combination input changed its BaZi forecast start year from 2026 to 2027 across server-local New Year.",
      "now": "New combination inputs seal native BaZi forecast start year and Astro profection start year alongside the existing Ziwei timing anchor."
    }
  ],
  "checks": [
    {
      "id": "natal-forecast-anchor",
      "file": "tests/product/test-natal-forecast-anchor.ts",
      "products": [
        "astro",
        "vedic"
      ],
      "fixtureScope": "Captured synthetic natal geometry; actual signed-token route preparation across 2026/2027 and cache expiry.",
      "command": "node --import tsx tests/product/test-natal-forecast-anchor.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Natal forecast anchor passed: real route preparation, birthday/TTL rollover, Vedic dated facts, isolated cache keys, owner/module rejection, frozen JSON replay, five-language chat context."
    },
    {
      "id": "stored-report-context",
      "file": "tests/chat/test-report-birth-source-resolution.ts",
      "products": [
        "bazi",
        "astro",
        "ziwei",
        "vedic",
        "human-design",
        "sukuyo",
        "wealth",
        "love-bazi",
        "combination",
        "compatibility-bazi",
        "compatibility-astro",
        "compatibility-ziwei",
        "compatibility-vedic",
        "compatibility-combination",
        "compatibility-sukuyo"
      ],
      "fixtureScope": "In-memory Reading/ownership adapter and synthetic transport profiles; actual shared frozen-context loader.",
      "command": "node --import tsx tests/chat/test-report-birth-source-resolution.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "FROZEN REPORT CONTEXT MATRIX PASSED: 9 individual product types + 6 compatibility systems; exact settings/profile/prose, wrong-module/ownership denial and unresolved-party protection; in-memory persistence adapter."
    },
    {
      "id": "bazi-day-boundary",
      "file": "tests/bazi/test-day-boundary-doctrine.ts",
      "products": [
        "bazi",
        "wealth",
        "love-bazi"
      ],
      "fixtureScope": "Controlled late-Zi civil-time cases; MIDNIGHT_00 and ZI_HOUR_23 doctrine.",
      "command": "node --import tsx tests/bazi/test-day-boundary-doctrine.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "test-day-boundary-doctrine: ✅ 182 checks passed (夜子時 doctrine pinned per mode)"
    },
    {
      "id": "bazi-report-contract",
      "file": "tests/bazi/test-bazi-report-contract.ts",
      "products": [
        "bazi"
      ],
      "fixtureScope": "Synthetic engine profile and narrative fixtures; frozen forecast, DST receipts and five-language reading/chat contracts.",
      "command": "node --import tsx tests/bazi/test-bazi-report-contract.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "BAZI REPORT CONTRACT PASSED"
    },
    {
      "id": "astro-settings",
      "file": "tests/astro/test-astro-natal-settings.ts",
      "products": [
        "astro"
      ],
      "fixtureScope": "Captured seven-house protocol fixtures vary mean/true nodes, orb scales and asteroid inclusion; not all setting combinations.",
      "command": "node --import tsx tests/astro/test-astro-natal-settings.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Natal settings: seven-house pipeline, sealed input, snapshots, five-locale prompts, wheel, privacy and tampering passed."
    },
    {
      "id": "ziwei-settings",
      "file": "tests/ziwei/test-ziwei-calculation-settings.ts",
      "products": [
        "ziwei"
      ],
      "fixtureScope": "Synthetic lunar leap-month dates around day 15/16; same-month versus split-halves, selected fine timing and unchanged natal stars.",
      "command": "node --import tsx tests/ziwei/test-ziwei-calculation-settings.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Ziwei selected timing date: five-layer provenance, unchanged natal stars, replay and invalid date guards passed."
    },
    {
      "id": "ziwei-chat-timing",
      "file": "tests/ziwei/test-ziwei-chat-timing.ts",
      "products": [
        "ziwei"
      ],
      "fixtureScope": "Synthetic 1990-06-15 source chart; future month/day evidence, legacy parity and deliberate star mismatch.",
      "command": "node --import tsx tests/ziwei/test-ziwei-chat-timing.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "ZIWEI CHAT TIMING PASSED"
    },
    {
      "id": "vedic-settings",
      "file": "tests/vedic/test-vedic-calculation-settings.ts",
      "products": [
        "vedic"
      ],
      "fixtureScope": "Local ephemeris repository integration: synthetic 1990-06-15 Taipei, six ayanamsa/node combinations, ±5/15-minute sensitivity, DST folds and tamper cases.",
      "command": "OPENFATE_ASTRO_API_PATH=/path/to/local/astro-api node --import tsx tests/vedic/test-vedic-calculation-settings.ts",
      "requiredEnvironment": [
        "OPENFATE_ASTRO_API_PATH"
      ],
      "observedExitCode": 0,
      "observedSuccessLine": "Vedic local integration passed: 6 conventions, 11/31 minute samples, DST folds, replay, 5-language evidence, tamper rejection, unchanged defaults."
    },
    {
      "id": "human-design-contract",
      "file": "tests/human-design/test-human-design-contract.ts",
      "products": [
        "human-design"
      ],
      "fixtureScope": "Synthetic controlled ephemeris primitives plus pinned civil-time and advisory position references; complete BodyGraph independence is outside this check.",
      "command": "node --import tsx tests/human-design/test-human-design-contract.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "HUMAN DESIGN CONTRACT PASSED 236"
    },
    {
      "id": "human-design-closed-loop",
      "file": "tests/human-design/test-human-design-closed-loop.ts",
      "products": [
        "human-design"
      ],
      "fixtureScope": "Source contracts for input trust, report publication, shared prompt projection, registered chat and declared scope.",
      "command": "node --import tsx tests/human-design/test-human-design-closed-loop.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "HUMAN DESIGN CLOSED LOOP PASSED 56"
    },
    {
      "id": "sukuyo-report-contract",
      "file": "tests/sukuyo/test-sukuyo-contract.ts",
      "products": [
        "sukuyo"
      ],
      "fixtureScope": "Synthetic date-only chart and reader narrative fixtures; source scope, saved traditional cycles and report/chat boundaries.",
      "command": "node --import tsx tests/sukuyo/test-sukuyo-contract.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Sukuyo paid-report contract tests passed."
    },
    {
      "id": "sukuyo-editorial-contract",
      "file": "tests/sukuyo/test-sukuyo-editorial-quality.ts",
      "products": [
        "sukuyo"
      ],
      "fixtureScope": "Controlled narrative fixtures and five-language prompts; reader-depth/diversity and safety contracts.",
      "command": "node --import tsx tests/sukuyo/test-sukuyo-editorial-quality.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Sukuyo editorial depth, diversity, prompt, and safety contracts passed."
    },
    {
      "id": "wealth-love-report-contract",
      "file": "tests/bazi/test-wealth-love-publish-gates.ts",
      "products": [
        "wealth",
        "love-bazi"
      ],
      "fixtureScope": "Synthetic rooted-fire BaZi profile, narrative schema fixtures and mocked language retry; semantic audit is not universal rejection.",
      "command": "node --import tsx tests/bazi/test-wealth-love-publish-gates.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "Wealth/Love advisory quality audits and Love language retries passed."
    },
    {
      "id": "combination-calculation",
      "file": "tests/combination/test-combination-calculation-service.ts",
      "products": [
        "combination"
      ],
      "fixtureScope": "Synthetic selected BaZi/Ziwei pair, DST override, invalid input and exact server-local New Year replay; this test does not exercise all three engines together.",
      "command": "node --import tsx tests/combination/test-combination-calculation-service.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "COMBINATION CALCULATION SERVICE PASSED"
    },
    {
      "id": "combination-report-contract",
      "file": "tests/combination/test-combination-bulletproof.ts",
      "products": [
        "combination"
      ],
      "fixtureScope": "Controlled three-system comparisons and legacy/new narrative fixtures; native scales, frozen decade, unselected-system limits and visible source-chart contracts.",
      "command": "node --import tsx tests/combination/test-combination-bulletproof.ts",
      "requiredEnvironment": [],
      "observedExitCode": 0,
      "observedSuccessLine": "COMBINATION BULLETPROOF  PASSED 66  FAILED 0"
    }
  ],
  "limitations": [
    "These are first-party regression and integration checks, not an independent audit, scientific validation, prediction accuracy, a reader study, a conversion study or a production deployment receipt.",
    "Fixture coverage is selected. Passing settings cases does not prove every location, birth minute, calendar edge, configuration combination or legacy report.",
    "The stored-context matrix exercises the actual loader against an in-memory persistence adapter; it does not test production database data or a complete paid user journey.",
    "Prompt checks establish which stored facts are supplied. They do not prove that every generated deep-chat sentence is factually grounded.",
    "The six compatibility branches are covered here only for frozen context, ownership and party attribution; complete compatibility calculation accuracy is outside this receipt.",
    "Wealth and Love share the BaZi calculation profile. Human Design and Sukuyo have their declared fixed conventions; this receipt does not imply unsupported selectable settings.",
    "Combination retains its declared native/default system conventions. Independent custom natal Astro/Ziwei settings are not newly enabled for combined reports.",
    "Already stored reports are not recalculated. Older unexpired signed inputs without the added optional forecast anchors retain their previous behavior until refreshed.",
    "Lint and production build were not run because they were not authorized."
  ]
}
