{
  "schema": "attestable.sentinel.launch/v1",
  "product": "Sentinel — Telegram scam screener",
  "vendor": "Attestable Research",
  "recordDateUtc": "2026-08-12T22:30:00+00:00",
  "attestedBy": "Veronica Burnz <veronica.burnz@proton.me>",
  "attestationKey": "184E449FE256871DFFFBAD33F3D00D36427DEBC5",
  "executedBy": "Claude Code (Opus 5) in an operator-attested session, on the operator's instruction",
  "ledger": {
    "kind": "append-only product record",
    "previous": "sentinel-evolution-20260811.json",
    "note": "This record marks the deployment the evolution record described becoming fully reproducible from version control, and the payment rail being exercised live on the same day."
  },
  "environment": {
    "host": "[redacted — build host]",
    "container": "attestable-sentinel",
    "containerStartedUtc": "2026-08-12T22:13:28.62432301Z",
    "imageName": "attestable-sentinel-sentinel",
    "imageId": "sha256:36a3ba8d1a0232807c676c1a2ddf14b709a350fa06f850bec00cc564c3201c67",
    "buildCommit": "cf0bce33cf4",
    "buildTimeUtc": "2026-08-12T22:11:47Z",
    "entrypoint": "src.detector.analyze(text, allow_third_party=False)",
    "aiStage": "house-local model, no third-party call (verified per case below)"
  },
  "launch": [
    {
      "title": "The deployed system now rebuilds exactly from version control",
      "statement": "The previous deployment ran source that matched no single revision in version control — working, but not reproducible, and a rebuild would silently have removed live behaviour. That gap is closed: the running images were rebuilt from one committed revision, the build is stamped with that revision, and the deployment verifier confirms the live containers match the tree they were built from.",
      "verification": "Deployment verifier run after rebuild: compose configuration parses, every declared mount source exists, live container mounts match the compose file, the advisory-head service reports the full expected head set, and the bot is polling. Build stamp read back from inside each running container matches the committed revision."
    },
    {
      "title": "All five advisory readers are live",
      "statement": "The advisory principle-head layer that was absent in the first proof-of-concept record (disclosed there as principleHeads: null) and partially restored since is now fully live: five in-house advisory readers score every screening, including the recruitment/control reader added for anti-trafficking resource routing. They remain advisory — they inform prose shown to the user and never decide a verdict.",
      "verification": "The head service healthcheck asserts the exact five-reader set rather than a count or a 200. Each executed case below carries headsActive: 5, and the recruitment/control channel is present (null when not triggered)."
    },
    {
      "title": "Screenings run on Attestable hardware in Canada, and each screening now says so",
      "statement": "Every case in this record was processed entirely on Attestable's own hardware; the per-check provenance the evolution record introduced is populated in each verdict below (processedBy, processedThirdParty, attemptedThirdParty). The runs were executed with the third-party fallback disabled, the same fail-closed configuration house screenings always use.",
      "verification": "processedThirdParty is false and attemptedThirdParty is false in every executed case in this record."
    },
    {
      "title": "The payment rail is live and accepting",
      "statement": "Sentinel's Telegram Stars rail was exercised against the live bot on the record date: the bot identity answered, the update queue was in long-poll mode with nothing pending, and a real, payable invoice for the 100-screening pack was created and delivered through the production payment path. Completed Stars charges already exist on the bot's ledger from prior purchases. Current tiers: 3 free screenings per day, premium month at 50 Stars, or a 100-screening pack at 100 Stars.",
      "verification": "Invoice creation was accepted by the payment platform at 2026-08-12T22:04Z (an invoice is only accepted for a bot with payments enabled) and the delivered message carried a payable invoice object. No customer payment was simulated and no charge was created for this record."
    }
  ],
  "disclosures": [
    "This record describes the deployment as verified on 2026-08-12. Earlier records remain published unchanged beside it.",
    "Per-reader scores existed for every case below and are deliberately not published, in any form. Naming the readers or publishing their individual figures is a rewrite guide for evasion; what users see — and what this record repeats — is the one-sentence prose summary and nothing finer-grained. The aggregate figure that earlier appeared alongside the prose has been removed from user-facing output entirely.",
    "The advisory readers are advisory. No accuracy claim is made for them, and the prose they inform never overrides a verdict.",
    "The signal prose is generated by the house-local model from an aggregate alone, is checked mechanically, and is replaced by a fixed neutral sentence if it names any mechanism or figure. Its wording varies between runs; the wording below is what this run produced.",
    "Three cases is a demonstration, not a benchmark. No accuracy, precision or recall claim is made or implied by this record.",
    "Inputs were authored for this run. No real user's message was used.",
    "Sentinel retains no record that a screening happened; the zero-retention property described in the evolution record is unchanged by this deployment.",
    "This record was drafted by the executing agent and is published only once signed by the attestation key above; an unsigned copy of this file is a draft, not a claim."
  ],
  "cases": [
    {
      "case": "impersonation-giveaway",
      "input": "Hi! I'm Vitalik Buterin. To celebrate the Ethereum upgrade I'm giving back to the community. Send 0.5 ETH to the address below and you will receive 5 ETH back within 10 minutes. This offer is only valid for the next 30 minutes, act fast and don't miss out!",
      "inputChars": 256,
      "verdict": "dangerous",
      "explanation": "The message contains patterns consistent with a crypto drainer and impersonation scam. It uses the identity of a known figure (Vitalik Buterin) to establish false authority and pairs it with an unrealistic return promise (0.5 ETH for 5 ETH). The mechanism relies on manufactured urgency ('30 minutes') to trigger an irreversible payment action before the recipient can verify the claim.",
      "heuristics": ["URGENCY_TACTIC", "CRYPTO_DRAINER"],
      "aiConfidence": 0.95,
      "headsActive": 5,
      "signalProse": "The internal checks show a moderate response to potential risks.",
      "traffickingSignal": null,
      "degraded": false,
      "processedBy": "House Attestable hardware in Canada",
      "processedThirdParty": false,
      "attemptedThirdParty": false,
      "tokensUsed": 6631,
      "latencySeconds": 3.36
    },
    {
      "case": "benign-logistics",
      "input": "Hi Sam, confirming our call is moved to Thursday at 2pm your time. I've attached the agenda we discussed last week and the notes from the previous session. Let me know if that time no longer works and we can find another slot.",
      "inputChars": 226,
      "verdict": "safe",
      "explanation": "The message confirms a rescheduled meeting with a named contact, referencing a prior discussion and attached documents. It contains no links, payment requests, or urgency mechanisms, and the tone is consistent with ordinary professional coordination.",
      "heuristics": [],
      "aiConfidence": 0.95,
      "headsActive": 5,
      "signalProse": "The internal checks show a moderate level of activity.",
      "traffickingSignal": null,
      "degraded": false,
      "processedBy": "House Attestable hardware in Canada",
      "processedThirdParty": false,
      "attemptedThirdParty": false,
      "tokensUsed": 6513,
      "latencySeconds": 4.56
    },
    {
      "case": "too-short-abstention",
      "input": "click here",
      "inputChars": 10,
      "verdict": "unassessable",
      "explanation": "There isn't enough here for Sentinel to check. If the real content is in an image, attachment, or a chat this message points to, Sentinel cannot see it — forward the text itself, or treat the message as unverified rather than safe.",
      "heuristics": [],
      "aiConfidence": null,
      "headsActive": null,
      "signalProse": "",
      "traffickingSignal": null,
      "degraded": false,
      "processedBy": null,
      "processedThirdParty": null,
      "attemptedThirdParty": false,
      "tokensUsed": 0,
      "latencySeconds": 0.0
    }
  ]
}
