{
  "generatedAt": "2026-05-04T14:12:00Z",
  "issueNumber": 371,
  "issueUrl": "https://github.com/HotsumaX/community-sandbox/issues/371",
  "goal": "Prepare issue #371 for the next safe Codex cycle by narrowing it to a deterministic real-estate proof freshness update across the property trail summary and the mirrored freshness proof artifact.",
  "targetFiles": [
    "artifacts/pillars/property-trail.json",
    "artifacts/implementation/pillars/real-estate-proof-freshness.json",
    "deployment/portal/artifacts/implementation/pillars/real-estate-proof-freshness.json"
  ],
  "allowedDirectories": [
    "artifacts/pillars",
    "artifacts/implementation/pillars",
    "deployment/portal/artifacts/implementation/pillars"
  ],
  "hardConstraints": [
    "GitHub is source of truth",
    "Local commit -> push -> webhook deploy only",
    "No direct Pi edits",
    "No Codex execution in this planning packet",
    "No issue creation",
    "No issue closure",
    "No cron execution changes",
    "Only modify the three listed target files and keep the freshness proof artifact mirrored exactly into the portal copy.",
    "Only add or normalize a proofReadiness section plus a bounded freshness evidence section; do not rewrite unrelated property content."
  ],
  "exactChangeDescription": [
    "Add or normalize proofReadiness in artifacts/pillars/property-trail.json and artifacts/implementation/pillars/real-estate-proof-freshness.json.",
    "Mirror artifacts/implementation/pillars/real-estate-proof-freshness.json into deployment/portal/artifacts/implementation/pillars/real-estate-proof-freshness.json byte-for-byte.",
    "Set proofReadiness.issueNumber to 371.",
    "Set proofReadiness.readinessStatus to ready-for-codex-execution.",
    "Set proofReadiness.deterministicVerification to true.",
    "Set proofReadiness.expectedEvidence to property trail artifact exists, freshness proof exists, freshness proof mirror matches, and freshness timestamp is explicitly updated.",
    "Constrain the change so one future Codex pass can complete it without widening scope beyond the listed files."
  ],
  "successCriteria": [
    "All three target files exist after the future execution pass.",
    "The source freshness proof artifact exactly matches its portal mirror counterpart.",
    "property-trail.json and real-estate-proof-freshness.json contain proofReadiness.issueNumber == 371.",
    "proofReadiness.readinessStatus equals ready-for-codex-execution.",
    "proofReadiness.deterministicVerification equals true.",
    "proofReadiness.expectedEvidence includes property trail artifact exists, freshness proof exists, freshness proof mirror matches, and freshness timestamp is explicitly updated."
  ],
  "verificationCommands": [
    "python3 - <<'PY'\nimport json\nfrom pathlib import Path\nproperty_trail = json.loads(Path('artifacts/pillars/property-trail.json').read_text())\nsource = json.loads(Path('artifacts/implementation/pillars/real-estate-proof-freshness.json').read_text())\nmirror = json.loads(Path('deployment/portal/artifacts/implementation/pillars/real-estate-proof-freshness.json').read_text())\nassert source == mirror, 'freshness mirror mismatch'\nassert property_trail.get('proofReadiness', {}).get('issueNumber') == 371\nassert source.get('proofReadiness', {}).get('issueNumber') == 371\nassert source.get('proofReadiness', {}).get('deterministicVerification') is True\nprint('issue-371-proof-ready')\nPY",
    "python3 - <<'PY'\nimport json\nfrom pathlib import Path\nsource = json.loads(Path('artifacts/implementation/pillars/real-estate-proof-freshness.json').read_text())\nexpected = {\n  'property trail artifact exists',\n  'freshness proof exists',\n  'freshness proof mirror matches',\n  'freshness timestamp is explicitly updated',\n}\nactual = set(source.get('proofReadiness', {}).get('expectedEvidence', []))\nassert expected.issubset(actual), f'missing expected evidence: {expected - actual}'\nprint('issue-371-evidence-complete')\nPY"
  ],
  "maxFilesChanged": 3,
  "maxLinesChanged": 260,
  "codexExecutionAllowed": false,
  "githubWritePerformed": false,
  "futureProofReadinessSection": {
    "issueNumber": 371,
    "readinessStatus": "ready-for-codex-execution",
    "deterministicVerification": true,
    "mirrorArtifactsMustMatch": true,
    "expectedEvidence": [
      "property trail artifact exists",
      "freshness proof exists",
      "freshness proof mirror matches",
      "freshness timestamp is explicitly updated"
    ]
  }
}
