An agent can propose a payment. It cannot declare its own work accepted.
An Evidence-bound Payment Permit (EPP) is scoped authorization grounded in accepted evidence. It binds an accepted obligation to one exact, bounded payment attempt. Krafthaus connects the owner’s signature, a Decide check and the original receipt retained on retries.
Read-only proof · No wallet connection · No real money · No new transfer
One engine. A workflow. An execution boundary.
Evidence in. Controlled action out.
A wallet limit answers how much. This system also preserves why it was owed, what was authorized and what already happened.
01
YOUR OPERATION
Agreement + acceptance
The owner’s key attests to an exact milestone, delivery, recipient and amount.
02
DECIDE / ENGINE
Rules + decision record
The local wrapper derives trusted facts. Decide evaluates the permitted proposal.
03
KRAFTHAUS / WORKFLOW
Evidence-bound Payment Permit
The EPP binds accepted evidence to exact Solana bytes with short-lived authority. One obligation reserves one attempt.
04
SOLANA / SETTLEMENT RAIL
Execution + original receipt
The local executor reconciles chain evidence. Retrying retains the original outcome.
Implemented local devnet path. The wallet-free rehearsal below verifies synthetic acceptance and simulates the ledger; it does not call Decide or Solana. Native MCP integration is a future adapter, not a feature claimed here.
Application 01 / Contractor milestones
Simulated / no chain writes
Accepted work. One payout. A retained receipt.
A contractor submits a landing-page handoff. The invoice is within budget, but that alone is not authority. This application rehearses the EPP primitive: load acceptance, alter the delivery evidence, and see where authorization breaks.
A signature proves which owner assertion was accepted, not that the work objectively meets a quality standard.
2 / Trusted owner acceptance
The agent cannot accept its own work
No owner acceptance loaded.
Load a pre-signed fictional record. This button does not mint acceptance or call an owner signing endpoint. Its public key is pinned separately, never chosen by the supplied record.
Inspect agreement, signed acceptance and trust key
Checking the public fixture…
3 / Check & one outcome
Should this invoice be paid?
NOT CHECKED
Checking the shared verifier…
Simulated payments for this obligation: 0
No simulated receipt.
The public rehearsal never signs or pays. The downloadable local service uses this verifier before the actual devnet executor. Its obligation ledger is in memory, not restart-safe.
This public check verifies a synthetic owner assertion only; it does not call Decide, a signer or RPC. The local contractor service adds the actual Decide evaluation and devnet execution boundary.
Loading the public case and verifying the artifact hash…
Local integration verified: the frozen local wrapper obtained a real Decide approval and unsigned devnet transaction; changed payment bytes were refused. Inspect source-matched evidence ↗. Fresh contractor settlement is pending because the free faucet quota refused. The ephemeral signer was stopped; no new contractor transfer is claimed.
Prior executor evidence / October 12, 2026
One earlier confirmed devnet payout.
This is historical proof of the underlying transaction executor, not a payment from the contractor rehearsal above or proof that its new acceptance layer has settled onchain.
The local qualification verified the message, signature and payer/recipient balance changes. This page checks the recorded message hash, not current chain state. Download dated proof.
Transaction lab / devnet only / no execution
Change the payout. Watch the approval stop matching.
Type a different amount or public recipient. We edit those fields in the actual recorded Solana message and calculate its SHA-256 in your browser. A different hash means this transaction cannot use the recorded approval.
The recorded approval
Network
Solana devnet
Amount
0.001 test SOL
Recipient
Loading recorded address…
Approved message hash
Loading recorded hash…
This approval has expired. Matching historical bytes is not permission to spend again.
Choose a check
No new payment is possible from this viewer.
Browser binding check, not a live executor rejection. The downloadable executor enforces this boundary before signing. Retry/expiry buttons illustrate recorded behavior. No wallet, signer, agent or RPC is called here.
Development disclosure
From decision evidence to one accepted obligation.
This builds on our previously submitted Frontier project, not a brand-new foundation.
Frontier: decision + Memo
Evaluate a proposed treasury action, return APPROVE / DEFER / BLOCK, and optionally anchor the decision-packet hash on devnet. The Memo is audit evidence, not payment enforcement.
A separately signed acceptance binds the invoice, milestone and delivery to the permitted recipient and amount. One obligation ledger wraps the exact-message executor: missing acceptance waits, valid acceptance permits one attempt, and retries retain its original receipt. The shared verifier powers the fictional rehearsal above and the local service.
The historical test-SOL receipt below proves the earlier executor, not a new contractor settlement. No production custody, onchain enforcement, native MCP integration or customer demand is claimed.
The business / Integration + ongoing operation
Built into the way your team pays.
For agent developers, agency operations and teams preparing contractor payouts. Krafthaus provides the workflow integration and execution adapter; your operation defines acceptance and controls its mandate.
Define the payable obligation. Map one agreement, evidence source and owner-acceptance step.
Integrate the control boundary. Connect the existing engine and a deliberately scoped execution adapter.
Operate the workflow. Maintain rules, adapters and evidence/reconciliation paths.
The Solana offer is a scoped implementation engagement, with optional recurring operation/support to validate with customers. No transaction rake or token is required. Existing commercial scope and pricing stay unchanged.
Contractor milestones are the implemented prototype. Agent task payouts and other accepted-obligation workflows are expansion directions, not additional finished products. This prototype uses a Local HTTP client; a native MCP adapter is future work.
What this does not prove
A narrow prototype, not production custody.
Enforcement is inside the local executor, not an onchain program or wallet-wide policy.
A fixed address allowlist is not recipient identity verification or a proved DAO quorum.
The generated devnet key and approvals live only in memory. Restart loses them; no durable crash recovery is claimed.
The 0.003-session cap covers principal, not network fees.
The original signer ran SDK 1.91.1 before the final input-copy safeguard. Final tests and independent chain decoding used pinned 1.98.4. No fresh source-matched funded run is claimed.
Reproducible / Node 22+
Run the bounded executor locally.
The download contains reviewed prototype source, tests, a pinned lockfile and runbook. It contains no private key, funded wallet, service credential or production backend. Each launch generates a fresh devnet wallet.
unzip source.zip
cd solana-bound-devnet-20261012
npm ci --ignore-scripts --no-audit --no-fund
npm test
node contractor-local.cjs
The operator types accept in the local terminal to issue the fixed fictional job’s acceptance. The agent HTTP service has no acceptance-issuer route. Fund only the newly displayed address with free devnet SOL if deliberately testing a transfer. Never use a real wallet or real money. Read RUNBOOK.md first; unknown/submitted outcomes must reconcile the original attempt, not create a replacement payment.
The SDK dependency tree has four moderate advisories and no high/critical entries at the original audit. This experimental package is separate from the production app dependencies.