{
 "present": true,
 "seq": 0,
 "ts": "2026-09-24T17:06:25.418975Z",
 "hash": "ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5",
 "genesis": {
  "bgc_package": "@bitget-ai/bitget-agent-cli@3.0.0",
  "code_commit": "3059fcf473927093af35d9af4c999c6d135b331a",
  "contract_version": "1.0.0",
  "created_at": "2026-09-24T17:06:23.178588Z",
  "dependency_lock_hashes": {
   "tools/agent-hub/package-lock.json": "73973309493d9913aaffb5f8024b2454bd27279059ec74eb5485170cbc072eec",
   "uv.lock": "c418913f24b7226ed86beddd67575d3d724a6029e0e6652772e8777c87446950"
  },
  "expected_envelope": {
   "closed_trades": "median 11",
   "max_drawdown_pct": "median -0.42, p95 -1.10, worst -2.48",
   "return_on_equity_bps": "median -8.6, p05 -88.1, p95 +80.6",
   "sharpe_ann": "median -2.3, p05 -20.2, p95 +16.8",
   "source": "validation/demo_venue/envelope_clean.json (no-edge coin-flip book, 17,400 windows of 72h, 25% gross)",
   "win_rate": "median 0.45, p05 0.18, p95 0.71"
  },
  "metric_definitions": [
   {
    "formula": "r_t = E_t / E_{t-1} - 1 on the UTC hour grid, E = equity_book",
    "name": "hourly_return",
    "notes": "Same grid and definition as validation/demo_venue/envelope_clean.py",
    "unit": "fraction"
   },
   {
    "formula": "mean(r) / pstdev(r) * sqrt(8760)",
    "name": "sharpe_ann",
    "notes": "Population stdev, as envelope_clean.py. Undefined (None) when pstdev is 0.",
    "unit": "annualised ratio"
   },
   {
    "formula": "sqrt((1 + 0.5 * S_h^2) / n) * sqrt(8760), S_h = mean(r) / pstdev(r)",
    "name": "sharpe_se_ann",
    "notes": "Lo (2002) iid standard error; about 11 at n = 72 with S_h near 0",
    "unit": "annualised ratio"
   },
   {
    "formula": "mean(r) / sqrt(mean(min(r, 0)^2)) * sqrt(8760)",
    "name": "sortino_ann",
    "notes": "",
    "unit": "annualised ratio"
   },
   {
    "formula": "min_t (E_t / max_{s<=t} E_s - 1)",
    "name": "max_drawdown",
    "notes": "",
    "unit": "fraction (non-positive)"
   },
   {
    "formula": "count(net_pnl > 0) / count(closed trades)",
    "name": "win_rate",
    "notes": "A closed trade is one symbol from flat to flat; a flip closes one and opens one. net_pnl includes both fees. None when no trade has closed.",
    "unit": "fraction"
   },
   {
    "formula": "sum(|fill notional|) / mean(E)",
    "name": "turnover",
    "notes": "",
    "unit": "multiple of equity"
   },
   {
    "formula": "moving-block bootstrap of r, block = ceil(n^(1/3)) hours, 10,000 resamples, seed 20260924; 5th and 95th percentiles over the resamples where the statistic is defined, the share where it is not published beside the band; the Sharpe ratio of an all-zero resample is 0",
    "name": "ci90",
    "notes": "Descriptive, not inferential: 72 hourly marks cannot separate skill from luck.",
    "unit": "per metric"
   }
  ],
  "mode": "paper",
  "policy": {
   "breaker": {
    "basis": "See GuardBasis G10",
    "halt_drawdown": 0.04,
    "losing_streak_reduce_only": 4,
    "quote_max_age_seconds": 120,
    "reduce_only_drawdown": 0.025,
    "snapshot_max_age_minutes": 15
   },
   "daily_kill_pct": 0.015,
   "decision": {
    "basis": "FULL reasoning on the <=4 daily heartbeats, LOW on <=8 event decisions: measured FULL ~4.3k and LOW ~0.8k completion tokens per call (ARGUS llm/qwen.py). Streaming is required for FULL: the gateway closes unstreamed requests at ~120 s. The cap is sized to the budget's own projection (llm/budget.py: one token per prompt byte plus the completion cap), prompt included, for the busiest day the trigger rules allow: recorded dry-run prompt 40,784 B (system 11,898 + user 28,886), x1.25 headroom = 50,980 B; one attempt = 50,980 + 2x16 + 128 + 8,192 = 59,332; a retry adds 8,192 + 32 = 67,556; three attempts = 194,444 per decision; (4 heartbeats + 8 events) x 194,444 = 2,333,328, rounded up to 2,400,000. Real spend is lower (a byte bounds a token from above); the prompt_tokens of the first live calls re-check it before genesis. Owner requests are outside this sum; the heartbeats left in the day are reserved before an event decision is admitted. The cap is the owner's to approve.",
    "call_timeout_seconds": 600,
    "daily_token_cap": 2400000,
    "max_attempts": 3,
    "max_completion_tokens": 8192,
    "min_horizon_hours": 24,
    "model": "qwen3.8-max",
    "temperature": 0.0,
    "thinking_event": "low",
    "thinking_heartbeat": "full"
   },
   "excluded": [
    "ETHUSDT",
    "SOLUSDT",
    "XRPUSDT",
    "DOGEUSDT"
   ],
   "expected_envelope": {
    "closed_trades": "median 11",
    "max_drawdown_pct": "median -0.42, p95 -1.10, worst -2.48",
    "return_on_equity_bps": "median -8.6, p05 -88.1, p95 +80.6",
    "sharpe_ann": "median -2.3, p05 -20.2, p95 +16.8",
    "source": "validation/demo_venue/envelope_clean.json (no-edge coin-flip book, 17,400 windows of 72h, 25% gross)",
    "win_rate": "median 0.45, p05 0.18, p95 0.71"
   },
   "fee_budget_daily_bps": 7.0,
   "fee_budget_window_bps": 20.0,
   "gross_max": 0.25,
   "grounding_tolerance": 0.02,
   "guard_bases": [
    {
     "basis": "Demo flash prints (BTCUSDT Demo mark 65.6% from its index, 2026-06-29 00:00 UTC); excursion counts and p99 gaps in demo_integrity.json and fade_demo.json; weekend Demo index moves 0.1-1.5 bps/h vs 18-66 bps/h on weekdays (weekend_vol.json)",
     "guard": "G1_venue_integrity",
     "rule": "Refuse or exit an instrument whose Demo mark departs more than 3% from its Demo index, whose Demo-live price gap exceeds its measured p99, or whose Demo index has not moved (mean |1H move| over 3h below 2 bps) while its session should be open."
    },
    {
     "basis": "UTA Demo does not track these perps on weekends. Mostly it freezes: weekend mean |1H move| of the Demo index 0.1-1.5 bps against 5.6-29.1 bps live (weekend_vol.json); MSTR +204 bps live vs +5 bps Demo from Saturday 00:00 to 12:00 UTC on 2026-09-19. Sometimes it jumps on its own: AAPL +80 bps Demo vs +17 bps live on 2026-09-12 (fade_demo2.txt)",
     "guard": "G2_weekend_freeze",
     "rule": "US-equity and US-index legs flat from Friday 20:00 UTC to Monday 00:00 UTC; pre-flatten from 19:45; no new equity exposure in the 2h before the freeze."
    },
    {
     "basis": "Envelope at 25% gross: worst 72h drawdown -2.48% under no edge (envelope_clean.json); the drawdown is the one quantitative number design controls",
     "guard": "G3_size",
     "rule": "At most 5% of equity per name and 25% gross."
    },
    {
     "basis": "Envelope simulation uses -4% per position (envelope_clean.py); a stop that lives on the venue survives a crashed agent, one that lives in our loop does not",
     "guard": "G4_stop",
     "rule": "Every exposure-adding order carries a venue stop 4% from entry, triggered on mark."
    },
    {
     "basis": "Envelope simulation uses a -1.5% daily kill (envelope_clean.py)",
     "guard": "G5_daily_kill",
     "rule": "Book down 1.5% from the 00:00 UTC equity flattens everything; halted until the next UTC day."
    },
    {
     "basis": "Round-trip cost 12-16 bps against a measured intraday edge of ~0.00% on these perps; 360+ intraday variants were negative in the author's earlier study (not in this repository)",
     "guard": "G6_turnover",
     "rule": "At most 2 model-initiated orders per name per UTC day; no increase or side flip within 24h of the last increase unless the model declares the stated invalidation fired. Reductions are never blocked (see DESIGN.md §10.4)."
    },
    {
     "basis": "Demo taker fee 6 bps (instruments takerFeeRate 0.0006 on all 14 names, universe_probe.json); envelope expects ~11 round trips at 5% = 6.6 bps of equity per 72h; caps are about 3x that",
     "guard": "G7_fee_budget",
     "rule": "No new exposure once fees paid today reach 7 bps of equity, or 20 bps over the window."
    },
    {
     "basis": "Maker fills are adversely selected: a +90% limit-fill simulation replayed at -0.45% in the author's earlier fill-model replay (not in this repository). Demo spreads measured 0.1-6.6 bps (universe_probe.json)",
     "guard": "G8_taker_only",
     "rule": "Market (taker) orders only; refuse an opening when the Demo spread exceeds 20 bps."
    },
    {
     "basis": "An unattributable figure is where an unsupported fact enters a trade. The check is ported from ARGUS agents/grounding.py (MIT); its fabricated-figure test set is re-run in this repository (tests/decision/test_grounding.py) rather than cited",
     "guard": "G9_grounding",
     "rule": "A target whose thesis, invalidation or view states a number that does not resolve to a snapshot fact within 2% may not add exposure."
    },
    {
     "basis": "2.5% is past the worst no-edge 72h drawdown (-2.48%, envelope_clean.json); losing-streak and staleness rules ported from ARGUS risk/circuit.py (MIT); a model outage never leads to a deterministic trade (DESIGN.md §9.5)",
     "guard": "G10_breaker",
     "rule": "Drawdown from peak 2.5% -> reduce-only; 4% -> halted; 4 losing trades in a row -> reduce-only; a snapshot older than 15 min or a quote older than 120 s cannot open; a model outage flattens the book."
    },
    {
     "basis": "Demo instrument limits (e.g. NVDAUSDT maxMarketOrderQty 60, minOrderQty 0.01) in universe_probe.json",
     "guard": "G11_eligibility",
     "rule": "Only the 14 universe symbols, only when Demo lists them online, only at or above minOrderQty and minOrderAmount after rounding to quantityMultiplier; orders above maxMarketOrderQty are split."
    }
   ],
   "mandate": {
    "min_horizon_hours": 24,
    "per_name_max": 0.05,
    "risk_budget_gross": 0.25,
    "text": "You manage a paper book on Bitget's Demo venue. You hold a risk budget of up to 25% of equity gross, at most 5% of equity in any one name, long or short. At every decision you either deploy some of that budget, with a written thesis and invalidation per position, or decline it in writing. Flat with reasons is a valid, counted answer. A risk kernel you do not control may shrink or refuse what you ask for; it can never add to it."
   },
   "mark_index_max_gap": 0.03,
   "max_open_spread_bps": 20.0,
   "max_rebalances_per_name_per_day": 2,
   "metrics": [
    {
     "formula": "r_t = E_t / E_{t-1} - 1 on the UTC hour grid, E = equity_book",
     "name": "hourly_return",
     "notes": "Same grid and definition as validation/demo_venue/envelope_clean.py",
     "unit": "fraction"
    },
    {
     "formula": "mean(r) / pstdev(r) * sqrt(8760)",
     "name": "sharpe_ann",
     "notes": "Population stdev, as envelope_clean.py. Undefined (None) when pstdev is 0.",
     "unit": "annualised ratio"
    },
    {
     "formula": "sqrt((1 + 0.5 * S_h^2) / n) * sqrt(8760), S_h = mean(r) / pstdev(r)",
     "name": "sharpe_se_ann",
     "notes": "Lo (2002) iid standard error; about 11 at n = 72 with S_h near 0",
     "unit": "annualised ratio"
    },
    {
     "formula": "mean(r) / sqrt(mean(min(r, 0)^2)) * sqrt(8760)",
     "name": "sortino_ann",
     "notes": "",
     "unit": "annualised ratio"
    },
    {
     "formula": "min_t (E_t / max_{s<=t} E_s - 1)",
     "name": "max_drawdown",
     "notes": "",
     "unit": "fraction (non-positive)"
    },
    {
     "formula": "count(net_pnl > 0) / count(closed trades)",
     "name": "win_rate",
     "notes": "A closed trade is one symbol from flat to flat; a flip closes one and opens one. net_pnl includes both fees. None when no trade has closed.",
     "unit": "fraction"
    },
    {
     "formula": "sum(|fill notional|) / mean(E)",
     "name": "turnover",
     "notes": "",
     "unit": "multiple of equity"
    },
    {
     "formula": "moving-block bootstrap of r, block = ceil(n^(1/3)) hours, 10,000 resamples, seed 20260924; 5th and 95th percentiles over the resamples where the statistic is defined, the share where it is not published beside the band; the Sharpe ratio of an all-zero resample is 0",
     "name": "ci90",
     "notes": "Descriptive, not inferential: 72 hourly marks cannot separate skill from luck.",
     "unit": "per metric"
    }
   ],
   "min_hold_hours": 24,
   "per_name_max": 0.05,
   "stale_index_min_move_bps_3h": 2.0,
   "stop_loss_pct": 0.04,
   "stop_trigger": "mark",
   "taker_only": true,
   "triggers": {
    "basis": "Heartbeat and event list: DESIGN.md §8. Fear & Greed bands are Bitget's own (bitget-signal skills/sentiment-analyst/SKILL.md: 0-25 extreme fear, 76-100 extreme greed). Coordination constants from ARGUS agents/novelty.py (3 sources inside 2h). Live BTCUSDT funding settles every 8h (instruments fundInterval, re-read at genesis).",
    "cooldown_minutes": 240,
    "coordinated_min_sources": 3,
    "coordinated_window_minutes": 120,
    "earnings_lookahead_hours": 24,
    "fear_greed_high": 76,
    "fear_greed_low": 25,
    "funding_heartbeat_hours_utc": [
     0,
     8,
     16
    ],
    "funding_z_lookback_settlements": 90,
    "funding_z_threshold": 2.0,
    "max_event_decisions_per_day": 8,
    "oi_jump_lookback_days": 30,
    "oi_jump_quantile": 0.99,
    "us_open_local": "09:30"
   },
   "universe": [
    {
     "asset_class": "crypto",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/demo_integrity.json); 0 mark-vs-index excursions over 3% in the last 30 days",
     "demo_live_gap_p99_bps": 8.3,
     "symbol": "BTCUSDT"
    },
    {
     "asset_class": "us_index",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/demo_integrity.json); listed on Demo 2026-09-03",
     "demo_live_gap_p99_bps": 266.5,
     "symbol": "SP500USDT"
    },
    {
     "asset_class": "us_index",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/demo_integrity.json); listed on Demo 2026-09-03",
     "demo_live_gap_p99_bps": 63.2,
     "symbol": "NDX100USDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 316.2,
     "symbol": "MSTRUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 383.0,
     "symbol": "HOODUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 308.7,
     "symbol": "CRCLUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 348.2,
     "symbol": "SNDKUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 165.0,
     "symbol": "COINUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 113.7,
     "symbol": "TSLAUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 104.7,
     "symbol": "GOOGLUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 67.2,
     "symbol": "METAUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 129.9,
     "symbol": "NVDAUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 92.0,
     "symbol": "AMZNUSDT"
    },
    {
     "asset_class": "us_equity",
     "basis": "p99 of |Demo close / live close - 1| over the Demo history, 1H candles (validation/demo_venue/fade_demo.json (tracking)); 0 mark-vs-index excursions over 3% since Demo listing 2026-08-25",
     "demo_live_gap_p99_bps": 82.3,
     "symbol": "AAPLUSDT"
    }
   ],
   "version": "policy-v1",
   "weekend": {
    "basis": "Same window as the envelope simulation's tradable() (envelope_clean.py); the Demo freeze itself is in weekend_vol.json",
    "freeze_hour": 20,
    "freeze_weekday": 4,
    "no_open_buffer_hours": 2.0,
    "preflatten_minutes": 15,
    "reopen_hour": 0,
    "reopen_weekday": 0
   }
  },
  "policy_hash": "55ff779b5d6f2c55082be1b4db6c9fde53865213cade58232f64f372ad73aeaf",
  "project": "t2-sentiment-agent",
  "prompt_hashes": {
   "decision/prompt.py": "15f825ced789b7fb9c809685fd67546b466de45c3b8cf9846695e839b8715e0d",
   "decision/prompts/output_schema_v1.md": "9675a8b18c2ee0a1371d95ae13b9c7dda2284473f687376a38f4a78768aa373a",
   "decision/prompts/system_v1.md": "67773d85dbebbd0e6b0db5dba48b558ac97e231aa1e37db39b23201da095007e"
  },
  "qwen_model": "qwen3.8-max",
  "statement": "Pre-registration of the t2-sentiment-agent paper run on Bitget UTA Demo, written before its first paper order. It fixes the policy (every guard, limit and threshold, each with its measured basis), the prompt files, the universe, the metric definitions, the expected no-edge envelope, the code commit, the dependency locks, the Agent Hub CLI package and the Qwen model. Any change after this event is a logged, owner-confirmed amendment in this ledger, and thresholds are not tuned inside the window. Results are reported against the envelope with n and a block-bootstrap interval, labelled descriptive, not inferential.",
  "universe": [
   "BTCUSDT",
   "SP500USDT",
   "NDX100USDT",
   "MSTRUSDT",
   "HOODUSDT",
   "CRCLUSDT",
   "SNDKUSDT",
   "COINUSDT",
   "TSLAUSDT",
   "GOOGLUSDT",
   "METAUSDT",
   "NVDAUSDT",
   "AMZNUSDT",
   "AAPLUSDT"
  ]
 },
 "anchors": [
  {
   "seq": 1,
   "record": {
    "detail": "pending in 4 calendar(s): https://alice.btc.calendar.opentimestamps.org, https://bob.btc.calendar.opentimestamps.org, https://finney.calendar.eternitywall.com, https://btc.calendar.catallaxy.com. A Bitcoin attestation follows once a block confirms the calendars' aggregate (typically hours); ots upgrade collects it. Check with: ots verify -d ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "421d631cb5bacb04172225e875905e6e0c7400bb8d5ec161ada7bfa1c3394a8e",
     "size": 665
    },
    "status": "submitted",
    "submitted_at": "2026-09-24T17:06:25.431387Z",
    "target_hash": "ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5",
    "target_seq": 0
   }
  },
  {
   "seq": 117,
   "record": {
    "detail": "complete as of 2026-09-24T23:12:59.845045Z: the proof carries a Bitcoin attestation at block 968433, 968437, 968448, 968453. It is not verified against Bitcoin here; check with: ots verify -d ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "baa629fa33e45283c5caf393bd24cc169416ce0ac0c6e55f906af01900158f98",
     "size": 4845
    },
    "status": "upgraded",
    "submitted_at": "2026-09-24T17:06:25.431387Z",
    "target_hash": "ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5",
    "target_seq": 0
   }
  },
  {
   "seq": 138,
   "record": {
    "detail": "pending in 4 calendar(s): https://bob.btc.calendar.opentimestamps.org, https://finney.calendar.eternitywall.com, https://alice.btc.calendar.opentimestamps.org, https://btc.calendar.catallaxy.com. A Bitcoin attestation follows once a block confirms the calendars' aggregate (typically hours); ots upgrade collects it. Check with: ots verify -d c43ee814576c21e60345efb649dcdf115c490c2a5e26c9662e24430a831d7312 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "c97e2190fcbba2d60009779c15e55acfd759f92b3d4ed2b7096571f8c841c040",
     "size": 805
    },
    "status": "submitted",
    "submitted_at": "2026-09-25T00:10:29.331128Z",
    "target_hash": "c43ee814576c21e60345efb649dcdf115c490c2a5e26c9662e24430a831d7312",
    "target_seq": 137
   }
  },
  {
   "seq": 225,
   "record": {
    "detail": "complete as of 2026-09-25T05:12:33.982096Z: the proof carries a Bitcoin attestation at block 968473, 968487, 968498. It is not verified against Bitcoin here; check with: ots verify -d c43ee814576c21e60345efb649dcdf115c490c2a5e26c9662e24430a831d7312 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "3909e454f72dd32497d140fac101e3d5439322285f756965652c062f7af2e8a2",
     "size": 4021
    },
    "status": "upgraded",
    "submitted_at": "2026-09-25T00:10:29.331128Z",
    "target_hash": "c43ee814576c21e60345efb649dcdf115c490c2a5e26c9662e24430a831d7312",
    "target_seq": 137
   }
  },
  {
   "seq": 574,
   "record": {
    "detail": "pending in 4 calendar(s): https://alice.btc.calendar.opentimestamps.org, https://btc.calendar.catallaxy.com, https://bob.btc.calendar.opentimestamps.org, https://finney.calendar.eternitywall.com. A Bitcoin attestation follows once a block confirms the calendars' aggregate (typically hours); ots upgrade collects it. Check with: ots verify -d efdb540eb6f7d1b26be1de26fbc6171588ad29da3fe2b93670bf9f7f2e889e45 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "bbaa89b5fca8bf929bf64ab71a80e903ecc5dbc129ff3b171487d5d5711274ce",
     "size": 910
    },
    "status": "submitted",
    "submitted_at": "2026-09-26T00:10:22.317618Z",
    "target_hash": "efdb540eb6f7d1b26be1de26fbc6171588ad29da3fe2b93670bf9f7f2e889e45",
    "target_seq": 573
   }
  },
  {
   "seq": 663,
   "record": {
    "detail": "complete as of 2026-09-26T05:14:58.430230Z: the proof carries a Bitcoin attestation at block 968608, 968621, 968635. It is not verified against Bitcoin here; check with: ots verify -d efdb540eb6f7d1b26be1de26fbc6171588ad29da3fe2b93670bf9f7f2e889e45 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "fdff0639370176776cac6428d84daae799f7aca243e0cc82cc2bfedd2a42f1fd",
     "size": 4090
    },
    "status": "upgraded",
    "submitted_at": "2026-09-26T00:10:22.317618Z",
    "target_hash": "efdb540eb6f7d1b26be1de26fbc6171588ad29da3fe2b93670bf9f7f2e889e45",
    "target_seq": 573
   }
  },
  {
   "seq": 991,
   "record": {
    "detail": "pending in 4 calendar(s): https://alice.btc.calendar.opentimestamps.org, https://btc.calendar.catallaxy.com, https://bob.btc.calendar.opentimestamps.org, https://finney.calendar.eternitywall.com. A Bitcoin attestation follows once a block confirms the calendars' aggregate (typically hours); ots upgrade collects it. Check with: ots verify -d 1a63efaae30d1693aa33d641379635e1ee67c72d51d28ca448de55dd3891d38f <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "0c10a636e870a19ad67408ee9ebac2e14cacc1b5cb699f8357acb7aa737c3b00",
     "size": 875
    },
    "status": "submitted",
    "submitted_at": "2026-09-27T00:10:22.075437Z",
    "target_hash": "1a63efaae30d1693aa33d641379635e1ee67c72d51d28ca448de55dd3891d38f",
    "target_seq": 990
   }
  },
  {
   "seq": 1023,
   "record": {
    "detail": "complete as of 2026-09-27T02:00:25.865366Z: the proof carries a Bitcoin attestation at block 968761, 968762. It is not verified against Bitcoin here; check with: ots verify -d 1a63efaae30d1693aa33d641379635e1ee67c72d51d28ca448de55dd3891d38f <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "2c7fb0de1eb65887f886fb819577fa8ed91ef31832525e538de4d6993c882f5f",
     "size": 2879
    },
    "status": "upgraded",
    "submitted_at": "2026-09-27T00:10:22.075437Z",
    "target_hash": "1a63efaae30d1693aa33d641379635e1ee67c72d51d28ca448de55dd3891d38f",
    "target_seq": 990
   }
  }
 ],
 "genesis_anchors": [
  {
   "seq": 1,
   "record": {
    "detail": "pending in 4 calendar(s): https://alice.btc.calendar.opentimestamps.org, https://bob.btc.calendar.opentimestamps.org, https://finney.calendar.eternitywall.com, https://btc.calendar.catallaxy.com. A Bitcoin attestation follows once a block confirms the calendars' aggregate (typically hours); ots upgrade collects it. Check with: ots verify -d ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "421d631cb5bacb04172225e875905e6e0c7400bb8d5ec161ada7bfa1c3394a8e",
     "size": 665
    },
    "status": "submitted",
    "submitted_at": "2026-09-24T17:06:25.431387Z",
    "target_hash": "ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5",
    "target_seq": 0
   }
  },
  {
   "seq": 117,
   "record": {
    "detail": "complete as of 2026-09-24T23:12:59.845045Z: the proof carries a Bitcoin attestation at block 968433, 968437, 968448, 968453. It is not verified against Bitcoin here; check with: ots verify -d ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5 <proof>.ots",
    "ots_blob": {
     "media_type": "application/vnd.opentimestamps.v1",
     "sha256": "baa629fa33e45283c5caf393bd24cc169416ce0ac0c6e55f906af01900158f98",
     "size": 4845
    },
    "status": "upgraded",
    "submitted_at": "2026-09-24T17:06:25.431387Z",
    "target_hash": "ebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5",
    "target_seq": 0
   }
  }
 ],
 "amendments": [],
 "x_post_text": "t2-sentiment-agent: a Market Sentiment Agent paper-trading on Bitget Demo. Qwen decides, a reduce-only risk kernel gates, Agent Hub executes.\n\nGenesis hash:\nebbf607a8fe199bccc0f612ededf2a6902e4884a38d21fbfea498dff7da453a5\n\n#BitgetHackathon @Bitget_AI\nhttps://x.com/Bitget_AI/status/2100519318824055159",
 "x_post": null
}
