Changelog

2026-09-07 — PayAna Market Sentinel 1.2.0 RC1

Agent OS connection verification

  • Added stable production endpoint https://payana-agent-os.val.run/ and CIMD client identity at /oauth/client-metadata.json.
  • Added user-initiated Authorization Code + PKCE S256 flow with /oauth/start and /oauth/callback.
  • Added one-time OAuth state/verifier storage with 10-minute TTL, replay rejection, concurrent single-consumer behavior and a hard 500-row pending-state cap.
  • Access tokens and refresh tokens are never durably stored; callback use is ephemeral.
  • Authorized-catalog probe reads only server/discover / tools/list; no tools/call is performed automatically.
  • Added MCP 2026-07-28 protocol/method headers and _meta protocol version, client capabilities and client identity, with legacy initialize fallback retained.
  • Added direct unauthenticated Agent OS transport probe: server/discover returned method-not-found while tools/list returned OAuth 401, proving the current connection gate.
  • Added canonical authorization-surface probe; Binance returned a JavaScript anti-robot interstitial (HTTP 202), so provider CIMD acceptance remains PARTIAL until a real browser/client flow completes.

Falsification and security

  • Added OAuth flow suite: 34/34 PASS.
  • Added synthetic token/MCP catalog suite: 25/25 PASS.
  • Added OAuth-state storage/replay suite: 6/6 PASS.
  • Synthetic tool catalog includes safe Market Data and dangerous order/account/transfer tools; dangerous tools are excluded and automatic tool invocation is prohibited.
  • Hardened modern MCP request metadata to current 2026-07-28 structure.
  • Bounded abandoned OAuth state growth and verified zero pending self-test states after execution.
  • Fixed a reproduced LibSQL SQLITE_BUSY race in concurrent OAuth-state consumption by replacing SELECT+DELETE batching with atomic DELETE ... RETURNING, bounded busy retry and best-effort expiry pruning.
  • OAuth-state concurrency suite passed five consecutive executions after the fix; full 224-check release audit passed again at 2026-09-07T22:31:20Z.

Release validation

  • Core/live market suite: 101/101 PASS.
  • Source failure/malformed-response suite: 23/23 PASS.
  • OAuth flow suite: 34/34 PASS.
  • OAuth token/MCP suite: 25/25 PASS.
  • OAuth state storage suite: 6/6 PASS.
  • Rate-limit mutation: 35/35 expected transitions PASS.
  • Aggregate: 189 assertions + 35 mutation steps = 224 executed checks PASS.
  • A test-harness race was discovered when global fetch mutation suites were statically imported; aggregate execution now imports mutation suites sequentially.

Submission readiness

  • Updated README, architecture, evidence and submission checklist to distinguish public Market Data from MCP connection authorization.
  • Current technical blockers are external proof gates: real supported-client MCP connection, final screen recording, GitHub mirror if used, X submission and Binance survey.

2026-09-07 — PayAna Market Sentinel 1.0 candidate

Agent / methodology

  • Added SKILL.md: evidence-first Binance Agent OS market-data workflow.
  • Added winning/opposite/alternative hypothesis branches and observable falsifiers.
  • Added explicit negative-space / missing-context reporting.
  • Added hard NO_TRADE_DECISION and MARKET_DATA_READ != TRADING_AUTH boundaries.
  • Replaced misleading "model confidence" language with a heuristic stabilityScore that explicitly states it is not a calibrated probability.

Binance runtime discovery

  • Probed the official Agent OS MCP endpoint.
  • Confirmed unauthenticated initialize produces an OAuth 401 challenge rather than a usable session.
  • Retrieved OAuth Protected Resource Metadata and Authorization Server Metadata.
  • Confirmed Authorization Code, PKCE S256, public-client token auth (none), and Client ID Metadata Document support.
  • Confirmed Val Town runtime receives HTTP 451 from api.binance.com/fapi.binance.com.
  • Confirmed data-api.binance.vision works for public spot ticker, depth and klines and promoted it as the hosted-demo runtime champion.

Evidence engine

  • Added five-symbol allowlist: BTCUSDT, ETHUSDT, BNBUSDT, SOLUSDT, XRPUSDT.
  • Added 24h ticker, top-20 order-book and 36 × 5m candle acquisition.
  • Added source receipts with HTTP state and duration.
  • Added PASS/PARTIAL/FAIL evidence-state classification.
  • Added spread, notional depth, order-book imbalance, realized volatility, momentum and volume-z calculations.
  • Added descriptive directional pressure and explicit falsifiers.
  • Added method/formula metadata directly to API responses.

API and security

  • Added /api/health, /api/symbols, /api/analyze.
  • Added strict symbol validation and allowlisting.
  • Added Cache-Control: no-store for API responses.
  • Added CSP, nosniff, frame denial, Referrer-Policy and restrictive Permissions-Policy.
  • Removed React inline-style dependencies so the strict style-src 'self' CSP remains viable.
  • Added best-effort per-runtime request limiting.
  • No trade, account, transfer, wallet or arbitrary upstream forwarding endpoint exists.

Frontend

  • Replaced the template UI with the PayAna dark evidence cockpit.
  • Added market metrics, short-horizon sparkline, source receipts, stability indicator, risk flags, falsifiers and blind spots.
  • Added automatic 30-second evidence refresh while the page is visible.
  • Added responsive desktop/mobile layout.

Validation

  • Core/live self-test: 101/101 PASS across five symbols and NEURON hypothesis fields.
  • Source-failure/malformed-response mutation suite: 23/23 PASS, including explicit proof that missing evidence is not zero-imputed.
  • Rate-limit mutation: requests 1–30 return 200; 31–35 return 429 — PASS.
  • Aggregate release audit: 124 assertions + 35 mutation steps = 159 executed checks, PASS.
  • Invalid/injection-like symbols are rejected.
  • Write-like POST access to analysis route is rejected.
  • Immutable frontend entry and App assets return 200 and compile to JavaScript.
  • Root HTTP response contains final CSP and security headers.
  • JavaScript-rendering content extraction matched React-only .app-shell and .source-item selectors after CSP hardening.
  • Interactive screenshot/browser automation was attempted but external TinyFish and Firecrawl accounts reported insufficient credit; this remains explicitly unverified instead of being promoted to PASS.

Documentation

  • Rebuilt README for the hackathon candidate.
  • Added docs/ARCHITECTURE.md.
  • Added docs/SUBMISSION_CHECKLIST.md.
  • Organized probes under audits/ and executable checks under tests/.