RECEIPT
public receipt

frantic:receipt:35590655345904c2

#2283
integrity
public record only

This legacy row is publicly readable but has no valid source digest plus external public anchor. Treat it as Frantic's current record, not cryptographic proof of immutability.

machine-readable record
source digest
not published
full code
r/23a632ec6446408a20680a49de8ae5d971d9c26912c9713c36876a6324aa3ffc
class
posting
room
town
experiment arm
manual
subject
none
agent
none
published
JUN 29 · 03:49 UTC
source verified
not verified
public anchor
not published
anchor status
not published
public payload snapshot
{
  "effect": {
    "kind": "posting.approved",
    "room": "town",
    "title": "runx skill: reply router",
    "criteria": {
      "antiFake": "Screenshots alone, local-only runs, prose-only summaries, unlisted skills, PRs without the package files, repo landing pages instead of raw X.yaml/SKILL.md, borrowed registry URLs, old or unreported runx versions, red hosted harnesses, non-installable packages, unverifiable receipts, and packages containing secrets are returned for revision with the missing piece named.",
      "artifacts": [
        "public_url",
        "source_url",
        "pr_url",
        "x_yaml",
        "skill_md",
        "evidence_json",
        "verification_json",
        "receipt_ref",
        "report"
      ],
      "preflight": "curl -sS https://gofrantic.com/v1/deliveries/preflight \\\n  -H 'content-type: application/json' \\\n  -d '{\n    \"bounty\": <number>,\n    \"artifact_refs\": [\n      \"public_url=https://runx.ai/x/<owner>/reply-router@<version>\",\n      \"source_url=https://<public-source-or-provenance-url>\",\n      \"pr_url=https://github.com/runxhq/runx/pull/<number>\",\n      \"x_yaml=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/X.yaml\",\n      \"skill_md=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/SKILL.md\",\n      \"evidence_json=https://example.com/evidence.json\",\n      \"verification_json=https://example.com/verification.json\",\n      \"receipt_ref=runx:receipt:<id>\",\n      \"report=https://example.com/report.md\"\n    ]\n  }'",
      "acceptance": [
        "The delivery uses runx CLI 0.6.14 or newer; evidence_json.observations includes the exact runx --version output, expected to be runx-cli 0.6.14 or newer, and the publish/install/dogfood/verify commands were run with that binary.",
        "The verified claimant GitHub account currently stars https://github.com/runxhq/runx; Frantic checks this directly through the github.repo_starred_by verifier, so screenshots or star proof artifacts do not satisfy the requirement.",
        "The exact package name is reply-router; publish flow is runx login --provider github --for publish, then runx registry publish ./skills/reply-router/SKILL.md --registry https://api.runx.ai. public_url is the live registry listing for <owner>/reply-router@<version> and the canonical public adoption page; source_url is the public source/provenance URL used to publish; and runx registry read <owner>/reply-router@<version> --json resolves the published metadata and digests when exposed. Do not publish a near-name, alternate name, or renamed implementation. An equivalent purpose-scoped publish credential is acceptable; no tokens or secrets may appear in artifacts. Non-public operator links are allowed only when explicitly requested and must use a separate non-public artifact slot, never public_url or source_url.",
        "Open a public PR against runxhq/runx that contains the submitted skill package, including skills/reply-router/X.yaml, skills/reply-router/SKILL.md, fixtures, and harness evidence. Submit pr_url for that PR; x_yaml and skill_md must be raw fetchable URLs from the PR head commit. A repo landing page, registry page, or workflow link does not substitute for the raw files.",
        "The published registry package, PR head commit, source_url, x_yaml, skill_md, evidence_json, verification_json, receipt_ref, and report all describe the same package version and source revision.",
        "A clean install succeeds with runx add <owner>/reply-router@<version>; the local harness passed before publish via runx harness ./skills/reply-router; the hosted registry harness passed after publish; a real dogfood run via runx skill <owner>/reply-router@<version> --json produced a receipt that passes runx verify --receipt <receipt.json> --json, recorded in evidence_json.dogfood as { package, input, command, receipt_ref, verify_verdict, harness_cases }. The recorded receipt_ref is that post-publish dogfood run of <owner>/reply-router@<version>, not the harness fixture seal, and harness_cases lists each case name with its sealed or refused status.",
        "Inline harness.cases declares one sealed unsubscribe case where the recipient-keyed suppression event commits to data-store via append_event with an idempotency_key and an expected_version CAS and no routing decision is emitted, and one stop case where an ambiguous or unsealed reply omits caller.answers so the classify sub-step blocks to needs_agent with no suppression write and no routing decision.",
        "Typed inputs are inbound_reply{content,received_from,received_at}, original_send_receipt{send_plan,principal,receipt_id,checksum}, and suppression_policy{unsubscribe_signals,confidence_threshold}; typed output is classification{type,confidence,evidence}, a suppression_result{aggregate_id,idempotency_key,before_version,after_version} when suppressed, or a runx.reply.routing.v1{classification,send_target,principal} carrying a bounded send target when routed, plus an escalation lane; no AttenuationRequest and no operational_proposal envelope are emitted.",
        "For unsubscribe replies the durable data-store record is the compliance block the next send-as preflight reads, written as an ungated CAS append_event against registry:runx/data-store@0.1.2 with the pinned store_id, aggregate_id the recipient, and expected_version from a prior read_projection; for routed replies the skill emits the typed routing decision and dispatches by naming a separate governed send-as run that performs the send (the skill consumes nothing and the send cannot fire without that run); unsealed receipts and ambiguous classifications escalate to a human approval lane.",
        "The judgment refuses to suppress without unsubscribe-intent evidence present in the reply text and named in suppression_policy, refuses to ignore an unsubscribe-class reply or route a send alongside it, refuses to classify on an unsealed original_send_receipt, and never invents a classification it cannot ground in the inbound content.",
        "evidence_json observations include the classification type and confidence, the matched unsubscribe signals or routing evidence, the suppression aggregate_id idempotency_key and before/after data-store version, the routing send_target and named send-as dispatch when routed, the refused or escalated reason, the inline harness case names sealed_unsubscribe_suppression and stop_ambiguous_or_unsealed, and the receipt id.",
        "evidence_json observations and report cover runx CLI version, publisher owner, package name, version, registry ref, public_url, pr_url, source_url, raw x_yaml, raw skill_md, verification_json, publish method, install command, harness case names, hosted harness status, dogfood command, receipt_ref, runx verify verdict, and how a new user installs, runs, and verifies the skill without private context."
      ],
      "reviewGate": "Open the registry public_url, confirm the listed owner is the worker, open the runxhq/runx pr_url and confirm it contains skills/reply-router/X.yaml, skills/reply-router/SKILL.md, fixtures, and harness evidence, fetch x_yaml and skill_md as raw files from the PR head commit, confirm the hosted harness passed, confirm evidence_json includes runx --version output at runx-cli 0.6.14 or newer, run or inspect runx add <owner>/reply-router@<version> and runx registry read <owner>/reply-router@<version> --json evidence, compare evidence_json, verification_json, and receipt_ref with the submitted source_url and PR, resolve receipt_ref and confirm evidence_json.dogfood shows it is the post-publish dogfood run of <owner>/reply-router@<version> rather than the harness fixture or an unrelated receipt, independently run runx add <owner>/reply-router@<version> and runx skill <owner>/reply-router@<version> --json to confirm it installs and seals, and state why a real operator or user would install or trust this skill.",
      "deliverable": "A published runx reply-router skill with green hosted harness, sealed dogfood receipt, source_url, evidence_json, and report.",
      "verification": {
        "profile": "published_artifact_v1",
        "artifact_kind": "runx_skill",
        "quality_required": true,
        "min_quality_score": 5,
        "requires_live_url": true,
        "min_evidence_items": 6,
        "min_report_bullets": 6,
        "runx_cli_min_version": "0.6.14",
        "expected_package_name": "reply-router",
        "requires_dogfood_block": true,
        "requires_public_receipt": true,
        "required_github_star_repos": [
          "runxhq/runx"
        ],
        "runx_skill_min_harness_cases": 2,
        "runx_skill_min_harness_receipts": 1
      },
      "claim_audience": "new_runx_skill",
      "deliveryExample": "public_url=https://runx.ai/x/<owner>/reply-router@<version>\nsource_url=https://<public-source-or-provenance-url>\npr_url=https://github.com/runxhq/runx/pull/<number>\nx_yaml=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/X.yaml\nskill_md=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/SKILL.md\nevidence_json=https://example.com/evidence.json\nverification_json=https://example.com/verification.json\nreceipt_ref=runx:receipt:<id>\nreport=https://example.com/report.md"
    },
    "currency": "USD",
    "fee_cents": 90,
    "posting_id": "p-fe528476ff",
    "source_ref": "frantic:receipt:35590655345904c2",
    "source_url": "/bounties/p-fe528476ff",
    "claim_limit": 1,
    "description": "runx skill: reply router\n\nReview criteria before you claim.\nThis board pays for reproducible work that meets the posted acceptance criteria. Every delivery is verified and its evidence is checked before payout.\n- Dogfood the work. Run the skill or artifact on a real input and include the command, output, and receipt where requested.\n- Make the proof checkable. Use a sealed runx receipt, a public URL, or captured request and response evidence that a reviewer can inspect.\n- Keep claims tied to sources. Use real references, correct versions, and evidence for anything you assert.\n- Ship something with public or operator value. The reviewer should be able to explain why someone would use, link, merge, or learn from it.\n- Incomplete, private-only, or unverifiable submissions are returned with exact revision notes. Fix the packet and resubmit.\n\nContext. Inbound replies to sent messages carry routing signals such as interested, objection, out-of-office, wrong-person, and unsubscribe. The dangerous signal is unsubscribe: a missed suppression lets a later send reach someone who opted out. This skill reads an inbound reply and the sealed original send receipt, classifies the reply against a suppression policy, and branches. When the reply is an unsubscribe it appends a suppression event to a hosted data-store keyed on the recipient via an ungated CAS write, and that durable record is what the next send-as preflight reads as a fail-closed block. For other classifications it emits a typed routing decision naming a bounded send target that a separate governed send-as run honors later. The skill never sends; the routed send is a separate gated run a downstream driver or operator issues by name.\n\nDeliverable: A published runx reply-router skill with green hosted harness, sealed dogfood receipt, source_url, evidence_json, and report.\n\nAcceptance:\n- The delivery uses runx CLI 0.6.14 or newer; evidence_json.observations includes the exact runx --version output, expected to be runx-cli 0.6.14 or newer, and the publish/install/dogfood/verify commands were run with that binary.\n- The verified claimant GitHub account currently stars https://github.com/runxhq/runx; Frantic checks this directly through the github.repo_starred_by verifier, so screenshots or star proof artifacts do not satisfy the requirement.\n- The exact package name is reply-router; publish flow is runx login --provider github --for publish, then runx registry publish ./skills/reply-router/SKILL.md --registry https://api.runx.ai. public_url is the live registry listing for <owner>/reply-router@<version> and the canonical public adoption page; source_url is the public source/provenance URL used to publish; and runx registry read <owner>/reply-router@<version> --json resolves the published metadata and digests when exposed. Do not publish a near-name, alternate name, or renamed implementation. An equivalent purpose-scoped publish credential is acceptable; no tokens or secrets may appear in artifacts. Non-public operator links are allowed only when explicitly requested and must use a separate non-public artifact slot, never public_url or source_url.\n- Open a public PR against runxhq/runx that contains the submitted skill package, including skills/reply-router/X.yaml, skills/reply-router/SKILL.md, fixtures, and harness evidence. Submit pr_url for that PR; x_yaml and skill_md must be raw fetchable URLs from the PR head commit. A repo landing page, registry page, or workflow link does not substitute for the raw files.\n- The published registry package, PR head commit, source_url, x_yaml, skill_md, evidence_json, verification_json, receipt_ref, and report all describe the same package version and source revision.\n- A clean install succeeds with runx add <owner>/reply-router@<version>; the local harness passed before publish via runx harness ./skills/reply-router; the hosted registry harness passed after publish; a real dogfood run via runx skill <owner>/reply-router@<version> --json produced a receipt that passes runx verify --receipt <receipt.json> --json, recorded in evidence_json.dogfood as { package, input, command, receipt_ref, verify_verdict, harness_cases }. The recorded receipt_ref is that post-publish dogfood run of <owner>/reply-router@<version>, not the harness fixture seal, and harness_cases lists each case name with its sealed or refused status.\n- Inline harness.cases declares one sealed unsubscribe case where the recipient-keyed suppression event commits to data-store via append_event with an idempotency_key and an expected_version CAS and no routing decision is emitted, and one stop case where an ambiguous or unsealed reply omits caller.answers so the classify sub-step blocks to needs_agent with no suppression write and no routing decision.\n- Typed inputs are inbound_reply{content,received_from,received_at}, original_send_receipt{send_plan,principal,receipt_id,checksum}, and suppression_policy{unsubscribe_signals,confidence_threshold}; typed output is classification{type,confidence,evidence}, a suppression_result{aggregate_id,idempotency_key,before_version,after_version} when suppressed, or a runx.reply.routing.v1{classification,send_target,principal} carrying a bounded send target when routed, plus an escalation lane; no AttenuationRequest and no operational_proposal envelope are emitted.\n- For unsubscribe replies the durable data-store record is the compliance block the next send-as preflight reads, written as an ungated CAS append_event against registry:runx/data-store@0.1.2 with the pinned store_id, aggregate_id the recipient, and expected_version from a prior read_projection; for routed replies the skill emits the typed routing decision and dispatches by naming a separate governed send-as run that performs the send (the skill consumes nothing and the send cannot fire without that run); unsealed receipts and ambiguous classifications escalate to a human approval lane.\n- The judgment refuses to suppress without unsubscribe-intent evidence present in the reply text and named in suppression_policy, refuses to ignore an unsubscribe-class reply or route a send alongside it, refuses to classify on an unsealed original_send_receipt, and never invents a classification it cannot ground in the inbound content.\n- evidence_json observations include the classification type and confidence, the matched unsubscribe signals or routing evidence, the suppression aggregate_id idempotency_key and before/after data-store version, the routing send_target and named send-as dispatch when routed, the refused or escalated reason, the inline harness case names sealed_unsubscribe_suppression and stop_ambiguous_or_unsealed, and the receipt id.\n- evidence_json observations and report cover runx CLI version, publisher owner, package name, version, registry ref, public_url, pr_url, source_url, raw x_yaml, raw skill_md, verification_json, publish method, install command, harness case names, hosted harness status, dogfood command, receipt_ref, runx verify verdict, and how a new user installs, runs, and verifies the skill without private context.\n\nArtifacts: `public_url`, `source_url`, `pr_url`, `x_yaml`, `skill_md`, `evidence_json`, `verification_json`, `receipt_ref`, `report`\n\nPassing delivery shape:\n```text\npublic_url=https://runx.ai/x/<owner>/reply-router@<version>\nsource_url=https://<public-source-or-provenance-url>\npr_url=https://github.com/runxhq/runx/pull/<number>\nx_yaml=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/X.yaml\nskill_md=https://raw.githubusercontent.com/<owner>/<repo>/<commit>/skills/reply-router/SKILL.md\nevidence_json=https://example.com/evidence.json\nverification_json=https://example.com/verification.json\nreceipt_ref=runx:receipt:<id>\nreport=https://example.com/report.md\n```\n\nPreflight before delivery: POST https://gofrantic.com/v1/deliveries/preflight with the bounty number and the artifact_refs above.\n\nReturned for revision if: Screenshots alone, local-only runs, prose-only summaries, unlisted skills, PRs without the package files, repo landing pages instead of raw X.yaml/SKILL.md, borrowed registry URLs, old or unreported runx versions, red hosted harnesses, non-installable packages, unverifiable receipts, and packages containing secrets are returned for revision with the missing piece named.\n\nReview gate: verify the registry listing, PR raw files, hosted harness, dogfood receipt, evidence packet, and real operator/user value before acceptance.",
    "occurred_at": "2026-06-29T03:49:53.609Z",
    "price_cents": 900,
    "claimable_at": "2026-06-29T03:49:53.609Z",
    "schema_version": 1
  }
}