{
  "schema_version": 8,
  "last_updated_sgt": "2026-07-23T18:10:00+08:00",
  "state": "PUBLISHED_INTEGRITY_PASS",
  "cohort_id": "OTR-PRED-2026-07-23-1012-SGT",
  "direct_cohort_id": "OTR-DIRECT-2026-07-23-1455-SGT",
  "meta_cohort_id": "OTR-DIRECT-META-2026-07-23-1531-SGT",
  "streams": {
    "everyday_signals": {
      "label": "Everyday signals",
      "status": "ACTIVE",
      "detail": "Each of the 35 engines published one main record and five clearly named readings. The run uses 46 different source links.",
      "last_observed_sgt": "2026-07-23T09:31:00+08:00"
    },
    "timed_predictions": {
      "label": "Timed predictions",
      "status": "LOCKED",
      "detail": "Five market predictions remain locked in their original batch. Later append-only batches add Alphabet, Bitcoin and Meta. All eight have BUY or NO ENTRY, SELL, stop and result rules.",
      "last_observed_sgt": "2026-07-23T15:31:00+08:00"
    },
    "backtesting_ledger": {
      "label": "Backtesting ledger",
      "status": "OPEN_BATCH",
      "detail": "Eight paper predictions have fixed buy times, sell times, stop rules and result rules. Bitcoin has one verified paper entry. No settled result has been published.",
      "last_observed_sgt": "2026-07-23T18:10:00+08:00"
    },
    "full_immersive": {
      "label": "Daily Full Immersive",
      "status": "LOCKED",
      "detail": "The 23 July Full Immersive shows the same five timed predictions as the prediction record. The locked 22 July edition remains visible.",
      "last_observed_sgt": "2026-07-23T10:12:00+08:00"
    },
    "live_market_pulse": {
      "label": "Live market pulse",
      "status": "HELD",
      "detail": "The 18:10 SGT resync is HELD. Thirty-three of 35 sources were reached. The next three-hour resync is due at 21:10 SGT.",
      "last_observed_sgt": "2026-07-23T18:10:00+08:00"
    }
  },
  "loop": ["observe", "predict", "freeze", "compare", "enter_or_abstain", "exit", "grade", "diagnose", "remember", "publish_next"],
  "current_counts": {
    "active_engine_lanes": 35,
    "root_evidence_records": 35,
    "evidence_reads": 175,
    "unique_source_urls": 46,
    "locked_predictions": 8,
    "timed_buy_windows": 8,
    "timed_sell_windows": 8,
    "verified_entry_hits": 1,
    "locked_calls": 5,
    "verified_outcomes": 0,
    "performance_weight_changes": 0,
    "held_engine_lanes": 2
  },
  "surface_contract": {
    "central_feed": {
      "path": "/central-feed",
      "role": "Publishes 35 root evidence records as 175 inspectable readings and preserves root, reading and source-set identifiers."
    },
    "prediction_contract": {
      "path": "/predictions-2026-07-23.json",
      "role": "Freezes the five timed research predictions before their entry windows can be evaluated."
    },
    "direct_prediction_contract": {
      "path": "/direct-predictions-2026-07-23.json",
      "role": "Adds Alphabet, Bitcoin and Meta through separate locked batches without changing any earlier contract."
    },
    "full_immersive": {
      "path": "/the-full-immersive",
      "role": "Explains the locked daily thesis, shows BUY and SELL timing, and preserves yesterday's edition."
    },
    "backtesting_ledger": {
      "path": "/backtesting",
      "role": "Records entry, abstention, exit, settlement and final grade without rewriting the prediction."
    },
    "learning_page": {
      "path": "/proof",
      "role": "Links evidence, predictions, results, reviews and limited system decisions."
    },
    "my_radar": {
      "path": "/my-radar",
      "role": "Changes only a user's display priority; preferences never alter global grading or engine weights."
    },
    "engine_audit": {
      "path": "/engine-run-2026-07-23.json",
      "role": "Proves the 35-by-5 engine-to-signal mapping and public source trail."
    },
    "canonical_memory": {
      "path": "/learning-loop.json",
      "role": "Provides the machine-readable public memory and decision ledger used by every learning surface."
    },
    "system_health": {
      "path": "/system-health",
      "role": "Scores ten release-integrity controls while keeping predictive, automation and business maturity limits visible."
    },
    "release_integrity": {
      "path": "/release-integrity.json",
      "role": "Publishes the 1000-point release-integrity contract and its open maturity gates in machine-readable form."
    },
    "editorial_standard": {
      "path": "/editorial-standard",
      "role": "Explains the Secondary 3 writing rules and defines key terms in plain English."
    }
  },
  "release_integrity": {
    "score": 1000,
    "maximum": 1000,
    "scope": "RELEASE_INTEGRITY",
    "definition": "The release follows its stated rules for evidence, predictions, archives, fresh data, personal settings and public records.",
    "exclusions": [
      "predictive_accuracy",
      "investment_performance",
      "always_on_automation",
      "licensed_real_time_market_coverage",
      "user_growth_revenue_or_valuation"
    ],
    "proof_path": "/release-integrity.json",
    "editorial_standard": {
      "audience": "Singapore Secondary 3",
      "promise": "Clear language without weaker facts, missing warnings or reduced meaning.",
      "proof_path": "/editorial-standard.json"
    }
  },
  "reconciliation": {
    "primary_keys": {
      "signal": "signal.id",
      "prediction": "prediction.id",
      "cohort": "cohort_id",
      "observation": "observation.id",
      "decision": "decision.id"
    },
    "join_order": ["signal_id", "prediction_id", "cohort_lock", "entry_or_no_entry", "exit", "verified_grade", "diagnosis", "bounded_decision", "next_publication"],
    "rules": [
      "A prediction may cite many signals, but it must keep one fixed ID and one locked batch.",
      "A missed BUY condition becomes NO ENTRY; it is never rewritten as a successful trade.",
      "A SELL record cannot decide the result until the stated exit or stop rule is proven.",
      "My Radar affects local presentation order only and is excluded from performance learning.",
      "The next publication may adopt a lesson only after the public decision ledger records its evidence, scope and reversal condition."
    ]
  },
  "observations": [
    {
      "id": "verified-bitcoin-entry-2026-07-23-1700",
      "stream": "backtesting_ledger",
      "observed_at_sgt": "2026-07-23T18:10:00+08:00",
      "title": "Bitcoin passed its locked paper-entry range at 17:00 SGT.",
      "evidence": "The Coinbase BTC-USD five-minute candle starting at 17:00 SGT opened at $65,596.22. That was inside the locked $65,500 to $67,500 range.",
      "policy": "Show green only after a source verifies both the locked price condition and the locked time. Green means entry, not profit or advice.",
      "status": "ENTRY_HIT"
    },
    {
      "id": "meta-watchboard-and-three-hour-resync-2026-07-23-1531",
      "stream": "timed_predictions",
      "observed_at_sgt": "2026-07-23T15:31:00+08:00",
      "title": "Meta, a twenty-investible watchboard and a three-hour resync record were added without resetting prior work.",
      "evidence": "Meta has its own 15:31 SGT contract. The watchboard keeps twenty sourced ideas separate from active predictions. The latest resync remains 15:04 SGT and the next is 18:04 SGT.",
      "policy": "Add new batches and resyncs only. Never replace an earlier prediction or pulse. A watch item needs fixed timing before it can count as a prediction.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "direct-investibles-2026-07-23-1455",
      "stream": "timed_predictions",
      "observed_at_sgt": "2026-07-23T14:55:00+08:00",
      "title": "Direct investibles need their own locked prediction batch.",
      "evidence": "Alphabet reported strong Q2 growth and traded at $344.62 after hours. Coinbase showed Bitcoin near $65,862 before this batch was locked.",
      "policy": "Keep direct-asset predictions separate from the earlier batch. Fix every entry, exit, stop and grade rule before the entry window.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "secondary-three-editorial-2026-07-23-1252",
      "stream": "everyday_signals",
      "observed_at_sgt": "2026-07-23T12:52:00+08:00",
      "title": "Every public page now follows one Secondary 3 writing standard.",
      "evidence": "The site uses shorter sentences, plain labels and a public guide for technical terms. Facts, scores, source links, warnings and timing rules stay unchanged.",
      "policy": "Simplify the language, not the meaning. Keep every risk warning and explain any technical term that must remain.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "truthful-counting-and-integrity-2026-07-23-1232",
      "stream": "everyday_signals",
      "observed_at_sgt": "2026-07-23T12:32:45+08:00",
      "title": "Release integrity now has a public 1000-point contract.",
      "evidence": "The run shows 35 main records, 175 evidence readings and 46 unique source links. Ten release checks pass. Five future tasks remain open.",
      "policy": "Use 1000/1000 only for release integrity. Do not present it as prediction accuracy, investment gains, automation, wide use or company value.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "reconciled-learning-surfaces-2026-07-23-1136",
      "stream": "timed_predictions",
      "observed_at_sgt": "2026-07-23T11:36:00+08:00",
      "title": "Every public surface now participates in one prediction-to-proof contract.",
      "evidence": "The feed, prediction data, Full Immersive, prediction record, learning page, My Radar and check files now have clear and separate jobs.",
      "policy": "Link records with fixed IDs. A page cannot invent another result. Personal feed choices cannot change global learning.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "live-pulse-2026-07-23-1106",
      "stream": "live_market_pulse",
      "observed_at_sgt": "2026-07-23T11:06:00+08:00",
      "title": "Freshness failure must produce a visible held pulse.",
      "evidence": "Thirty-four engine sources still agreed. One source was unavailable. Fresh official Brent and STI/ES3 values were missing during open trading.",
      "policy": "Keep the 09:31 report locked. Save the available market facts. Publish HELD instead of guessing a new direction.",
      "status": "HOLD"
    },
    {
      "id": "timed-prediction-contract",
      "stream": "backtesting_ledger",
      "observed_at_sgt": "2026-07-23T10:12:00+08:00",
      "title": "A prediction needs fixed entry and exit times before its result can count.",
      "evidence": "The 23 July batch has five paper predictions with clear buy times, sell times, entry conditions, stop rules and result rules.",
      "policy": "Record BUY, SELL, NO ENTRY and final grade against the frozen contract; never add timing after the outcome is known.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "engine-run-2026-07-23-0931",
      "stream": "everyday_signals",
      "observed_at_sgt": "2026-07-23T09:31:00+08:00",
      "title": "Every official engine now has five evidence readings.",
      "evidence": "All 35 engines produced five clearly named readings with public source links and a record that connects each reading to its engine.",
      "policy": "Require five unique reading IDs and at least one public source for every engine. Never fill an engine with a claim that has no source.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "date-confidence",
      "stream": "everyday_signals",
      "observed_at_sgt": "2026-07-22T05:00:00+08:00",
      "title": "Weak date proof must lower confidence.",
      "evidence": "In the supplied issue record, 127 of 139 rows had source dates that were not confirmed.",
      "policy": "Use stricter labels for freshness. Never guess how recent a source is.",
      "status": "POLICY_ACTIVE"
    },
    {
      "id": "interim-versus-final",
      "stream": "live_market_pulse",
      "observed_at_sgt": "2026-07-22T23:50:00+08:00",
      "title": "An early disagreement is evidence, not a final result.",
      "evidence": "An early market move may oppose a locked direction before the fixed result rule is met.",
      "policy": "Add market updates to the check record. Do not replace the final result.",
      "status": "OBSERVING"
    },
    {
      "id": "outcome-threshold",
      "stream": "backtesting_ledger",
      "observed_at_sgt": "2026-07-22T23:50:00+08:00",
      "title": "No resolved calls means no performance update.",
      "evidence": "Zero verified outcomes are currently available.",
      "policy": "Do not change engine scores or confidence settings until a result is proven.",
      "status": "HOLD"
    }
  ],
  "decisions": [
    {
      "id": "adopt-green-entry-light-2026-07-23-1810",
      "decided_at_sgt": "2026-07-23T18:10:00+08:00",
      "action": "APPEND",
      "scope": "backtesting_entry_state",
      "reason": "Readers need to see which paper calls have entered without confusing entry with a winning result.",
      "reversal_condition": "Remove green only if the cited timestamp or price is proven wrong. Keep the correction in the public record."
    },
    {
      "id": "append-meta-and-three-hour-live-2026-07-23-1531",
      "decided_at_sgt": "2026-07-23T15:31:00+08:00",
      "action": "APPEND",
      "scope": "meta_prediction_investible_watchboard_and_resync_schedule",
      "reason": "Readers need direct named assets, a clear separation between WATCH and active predictions, and an obvious Live update clock.",
      "reversal_condition": "A newer append-only format may replace the display only if it preserves all prior contracts, resync timestamps, source links and result rules."
    },
    {
      "id": "lock-direct-investibles-2026-07-23-1455",
      "decided_at_sgt": "2026-07-23T14:55:00+08:00",
      "action": "LOCK",
      "scope": "direct_investible_prediction_batch",
      "reason": "Alphabet and Bitcoin now have named, price-based paper tests that readers can check directly.",
      "reversal_condition": "If a starting source is corrected before entry, record NO ENTRY. Never rewrite the price gate or timing after the result is known."
    },
    {
      "id": "adopt-secondary-three-editorial-2026-07-23-1252",
      "decided_at_sgt": "2026-07-23T12:52:00+08:00",
      "action": "ADOPT",
      "scope": "public_editorial_language",
      "reason": "Readers should understand the system without losing facts, warnings, source links or prediction rules.",
      "reversal_condition": "A future standard may replace this one only if it stays at least as clear and keeps the same factual meaning."
    },
    {
      "id": "publish-release-integrity-2026-07-23-1232",
      "decided_at_sgt": "2026-07-23T12:32:45+08:00",
      "action": "PUBLISH",
      "scope": "release_integrity",
      "reason": "Every point now links to a public check and proof page. Important unfinished work stays clear in the public data.",
      "reversal_condition": "Any integrity pillar fails its public contract or its linked proof becomes unavailable, inconsistent or misleading."
    },
    {
      "id": "reconcile-learning-loop-2026-07-23-1136",
      "decided_at_sgt": "2026-07-23T11:36:00+08:00",
      "action": "LINK",
      "scope": "prediction_to_proof_surfaces",
      "reason": "Predictions, pages and public data need one clear set of rules. Entry, exit, results and learning decisions must agree everywhere.",
      "reversal_condition": "A newer data format may replace this one only if it keeps fixed IDs, past records and the limit between personal order and global learning."
    },
    {
      "id": "hold-live-pulse-2026-07-23-1106",
      "decided_at_sgt": "2026-07-23T11:06:00+08:00",
      "action": "HOLD",
      "scope": "live_market_pulse",
      "reason": "Fresh official prices for Brent and Singapore assets were missing. One official engine source also could not be read.",
      "reversal_condition": "Fresh authoritative observations become available for every locked market instrument and the held lane source is restored or independently replaced without changing the frozen issue."
    },
    {
      "id": "lock-predictions-2026-07-23-1012",
      "decided_at_sgt": "2026-07-23T10:12:00+08:00",
      "action": "LOCK",
      "scope": "timed_prediction_batch",
      "reason": "Five paper predictions now have fixed buy times, sell times, entry conditions, stop rules and result rules. Each can be proven right or wrong.",
      "reversal_condition": "If a source correction makes the starting market value wrong before entry, record NO ENTRY. Do not rewrite the prediction."
    },
    {
      "id": "publish-signals-2026-07-23-0931",
      "decided_at_sgt": "2026-07-23T09:31:00+08:00",
      "action": "PUBLISH",
      "scope": "everyday_signal_set",
      "reason": "One hundred and seventy-five readings passed the engine ID, source, topic and uncertainty checks. Each of the 35 engines has five.",
      "reversal_condition": "A main source is corrected, removed, strongly opposed by new proof or becomes too old for the claim."
    },
    {
      "id": "weights-hold-2026-07-22",
      "decided_at_sgt": "2026-07-22T23:50:00+08:00",
      "action": "HOLD",
      "scope": "engine_performance_weights",
      "reason": "No verified outcomes are available.",
      "reversal_condition": "At least one locked call reaches a proven result and completes a full review."
    }
  ],
  "guardrails": ["immutable_inputs", "no_future_leakage", "verified_outcomes_only", "bounded_updates", "public_memory"],
  "research_only": true
}
