{
  "schema": "codebase-takeover-first10-synthetic-sample-v1",
  "boundary": "fictional_synthetic_not_buyer_delivery",
  "fixture": {
    "project_name": "fictional-uniapp-order-panel",
    "safe_environment": "synthetic-local",
    "handoff_sha256": "d7e48d9fe7693fa066a5f36d1157c5c31585be6b025fbcb3e3757ec9bbae74de",
    "package_sha256": "d6f33bae5c0b3708e3af2ea52d1ae2aab8f619919924e1dbbe9f626d1443b138"
  },
  "findings": [
    {
      "id": "BOOT-01",
      "severity": "BLOCKER",
      "evidence": "npm run dev:h5 is absent from package.json scripts",
      "action": "Add dev:h5 as a reviewable alias to the existing dev script",
      "acceptance": "dev:h5 resolves to an existing script without changing production configuration"
    },
    {
      "id": "RUNTIME-02",
      "severity": "HIGH",
      "evidence": "Declared Node 18; observed Node 22",
      "action": "Pin the first reproduction to the declared runtime before upgrading",
      "acceptance": "The same command is run on the declared runtime and its first failure is recorded"
    },
    {
      "id": "DEP-03",
      "severity": "HIGH",
      "evidence": "No lockfile is present in the handoff fixture",
      "action": "Recover or regenerate one lockfile only after the runtime is fixed",
      "acceptance": "A clean install produces a stable dependency graph twice"
    },
    {
      "id": "API-04",
      "severity": "MEDIUM",
      "evidence": "API base is fixed at src/config.js:4",
      "action": "Move the base URL to a non-secret environment contract",
      "acceptance": "Synthetic local and buyer-owned test environments select different bases without source edits"
    },
    {
      "id": "AUTH-05",
      "severity": "HIGH",
      "evidence": "Refresh failure has no explicit error contract",
      "action": "Define expired, rejected and unavailable states before touching a real account",
      "acceptance": "Three synthetic refresh outcomes map to deterministic UI states"
    },
    {
      "id": "DATA-06",
      "severity": "HIGH",
      "evidence": "Order amount is represented as string",
      "action": "Define decimal precision and serialization before migration",
      "acceptance": "Boundary fixtures preserve 0, decimal and large values without implicit coercion"
    },
    {
      "id": "BUILD-07",
      "severity": "MEDIUM",
      "evidence": "Mini-program build still uses a placeholder AppID",
      "action": "Keep buyer-owned AppID and signing steps outside the public sample",
      "acceptance": "A buyer-owned test build records the exact account-side gate without exposing the identifier"
    },
    {
      "id": "RELEASE-08",
      "severity": "MEDIUM",
      "evidence": "No CI or reproducible release command is declared",
      "action": "Add one bounded build check after the first boot chain is fixed",
      "acceptance": "The same commit produces one named artifact with a recorded hash"
    },
    {
      "id": "TEST-09",
      "severity": "HIGH",
      "evidence": "No smoke test is present",
      "action": "Add one synthetic order-path smoke test before wider refactoring",
      "acceptance": "The test fails before the patch and passes after it"
    },
    {
      "id": "HANDOFF-10",
      "severity": "MEDIUM",
      "evidence": "No startup or handoff README is present",
      "action": "Record runtime, install, start, test and known-stop commands",
      "acceptance": "A clean workspace can reach the same first failure from the README"
    }
  ],
  "first_patch": {
    "file": "package.json",
    "operation": "add",
    "path": "/scripts/dev:h5",
    "value": "npm run dev",
    "reason": "Restore the declared handoff command as an alias before wider dependency changes."
  },
  "acceptance": {
    "finding_count": 10,
    "unique_ids": 10,
    "patch_alias_resolves_to_existing_script": true,
    "production_credentials_used": false,
    "personal_data_used": false,
    "result": "PASS"
  }
}
