The next goal is not broad hype. It is getting the right early people to run the proof, understand the boundary, and contribute to the missing loop.
| Audience | Why They Matter | First Ask |
|---|---|---|
| Solana program builders | Finish live claim/attest/release safely. | Review lifecycle account transitions and SPL vault authority design. |
| Indexer/search builders | Turn signed-and-funded evidence into public inventory. | Run admission validators and propose account discovery. |
| Verification engineers | Make task completion objectively checkable. | Add verifier fixtures and artifact-hash flows. |
| Static web/product builders | Make the feed usable without hosted infra. | Improve web/ into a public demo. |
| Task designers | Find useful $10 / 60s tasks that can be verified. |
Submit new .tasc examples and verifier rules. |
Done:
- public repo exists
- secret ignore rules exist
- devnet SPL custody proof exists
- live claim/attest proof exists
- worker token account and release CPI plan artifacts exist
- validators exist
- Apache-2.0 license exists
- GitHub topics and starter issues exist
- guarded Solana wallet transaction construction exists in the static operator console
- static feed import exists for
tasc.index, raw entry arrays, and hosted proof-summary indexes npm run beta:feedbuilds a same-originweb/feed/proof-feed.jsonbundle for free static hostingnpm run beta:claimable:planplans a guarded fresh active task publisher that writesweb/feed/claimable-feed.jsonnpm run beta:session:planplans the guarded fresh active task plus localhost app/verifier session, with the verifier pinned toweb/feed/active.claimable.index.jsonnpm run earn:devnet:planplans a guarded 60-second devnet release proof whose live output measures claim-to-payout timing for the 10-unit test-token pathnpm run real:env:init:plan,npm run real:env:init,npm run real:env:plan,npm run real:env:validate, and.env.exampleprovide the safe ignored mainnet env setup path, chmod the private env file to0600, preserve existing values unless forced, derive standard buyer/worker USDC associated token accounts from public wallet + mint values when blank, reject private-key-like entries and devnet/test/local/example RPC hosts, and report the public values needed before preflightnpm run real:pause:plan,npm run real:pause, andnpm run validate:production-pause-checkpointprovide a read-only no-spend checkpoint that prints no env values, calls no RPC, sends no transactions, validates canonical production artifacts when present, and flags capture/payout evidence that implies mainnet spend already happenednpm run real:budget:plan,npm run real:budget, andnpm run validate:production-budget-gatevalidate an ignored local budget policy with USD caps and explicitly allowed spend phases before resuming mainnet spend; it calls no RPC, writes nothing, sends no transactions, and does not prove payout readinessnpm run real:resume:plan,npm run real:resume, andnpm run validate:production-resume-checkpointcompose pause, budget, and env readiness into one no-spend restart gate; it calls no RPC, writes nothing, sends no transactions, and still requires explicit operator unpause before any mainnet actionnpm run real:deploy:plan,npm run real:deploy:build, andnpm run real:deploy:validatecreate a sanitized Solana mainnet deploy handoff that verifies the SBF artifact/manifest/program id without calling RPC, sending transactions, printing key material, or persisting the full RPC URLnpm run real:intent:plan,npm run real:intent:build, andnpm run real:intent:attach-signaturecreate the unsigned mainnet buyer intent, exact canonical wallet-signing payload, and verified signed intent with env-backed buyer/verifier/program/token values and without accepting private keysnpm run real:preflight:planandnpm run real:preflightcheck mainnet RPC identity, deployed program, role SOL balances, USDC mint, and buyer/worker USDC token accounts before a real runnpm run real:fund:plan,npm run real:fund:build, andnpm run real:fund:validatecreate a buyer-wallet unsigned mainnet fund transaction for the signed intent, deterministic task account, PDA-owned vault token account, and exact 10 USDC transfer, loading RPC and buyer USDC source account from env when provided, without accepting private keys, sending transactions, or persisting the full RPC URLnpm run real:lifecycle:plan,npm run real:lifecycle:build, andnpm run real:lifecycle:validatecreate unsigned mainnet role-wallet transactions for worker claim, verifier attest, and worker release, loading role signers, worker destination token account, and RPC from env when provided, without accepting private keys, sending transactions, or persisting the full RPC URLnpm run real:capture:plan,npm run real:capture:init,npm run real:capture:record,npm run real:capture:validate, andnpm run real:capture:payoutrecord production fund/claim/attest/release signatures and timing into an ignored capture file, using generated transaction artifacts to infer task/vault/destination/result fields before deriving the ignored production payout artifact with optional env-backed RPC reads, without private keys or transaction sendsnpm run real:payout:planandnpm run real:payout:buildremain the lower-level direct payout artifact builder with optional env-backed public values/RPC, andnpm run real:readiness -- --env .env.solana-mainnet.localrejects devnet/example evidence or production JSON without live mainnet RPC verification of genesis, signatures, decoded released task-account state, and token balances as not real-money readynpm run real:packet:plan,npm run real:packet:build, andnpm run real:packet:validateassemble the timed proof, deploy handoff, signed mainnet intent, capture artifact, fund and lifecycle transaction handoffs, payout evidence, redacted RPC host, evidence checklist, and env-first final command sequence into a sanitized production run packet without private keys, transaction sends, or full RPC URL persistencenpm run real:submitter:plan,npm run real:submitter:serve, andnpm run validate:production-submitter-localprovide a localhost-only production artifact submitter forweb/production-run.html, serving only safe static paths while refusing.env*,.tascverifier/, package metadata, and non-GET/HEAD requests- admitted feed entries carry signed task inputs, input hash, output schema, and verifier rules
- worker submissions can be captured as hashable proof JSON from the static web task card
- captured worker proofs can be ingested into
tasc.attestationoutput with Solana-ready attest hashes - verifier ingestion is exposed as a dependencyless HTTP API with bearer auth, durable artifacts, persistent duplicate ledger, health, and proof-ingest routes
- the static web flow can submit captured proof JSON to the verifier API and fill Solana attest controls from the response
- the wallet submission adapter is covered with mock
signAndSendTransactionandsignTransactionprovider validation npm run beta:localstarts a local private-beta operator session with the static app and verifier API on localhost, and the app auto-fills verifier URL/token from same-origin local config- the static operator console exports redacted
tasc.private_beta.qa_evidencebundles for private-beta wallet-extension runs - exported QA evidence can be validated with strict wallet-send, verifier-ingestion, worker-proof, live-account, and optional Solana RPC confirmation requirements
npm run beta:qaprints the wallet-extension QA runbook and validates exported evidence with strict final-pass requirements
Next:
- live-test the guarded wallet send flow with Phantom or another injected Solana wallet using
GLOBAL_TASC_ALLOW_BETA_CLAIMABLE_PUBLISH=1 npm run beta:session, export QA evidence, and runnpm run beta:qa -- ~/Downloads/tasc-private-beta-qa.json --solana-rpc-url https://api.devnet.solana.com; mock-provider coverage exists, but extension-prompt QA is still required - run
GLOBAL_TASC_ALLOW_SOLANA_DEVNET_PROOF=1 npm run earn:devnetto capture timed claim-to-payout evidence for the devnet/test-token release branch - run
npm run real:env:init -- --env .env.solana-mainnet.local, fill the required mainnet values, runnpm run real:env:validate -- --env .env.solana-mainnet.local, runnpm run real:pause -- --env .env.solana-mainnet.local,npm run real:budget -- --env .env.solana-mainnet.local, andnpm run real:resume -- --env .env.solana-mainnet.localas the no-spend checkpoints, usenpm run real:deploy:build -- --env .env.solana-mainnet.local, deploy the reviewed mainnet program artifact, usenpm run real:intent:build -- examples/summarize_url.tasc --env .env.solana-mainnet.local --input url=<url>, wallet-sign its canonical payload, initializenpm run real:capture:init -- --env .env.solana-mainnet.local, runnpm run real:preflight -- --env .env.solana-mainnet.local, build the unsigned funding payload withnpm run real:fund:build -- --env .env.solana-mainnet.local, runnpm run real:submitter:serve, submit it through the buyer wallet, build and submitreal:lifecycle:build -- --env .env.solana-mainnet.localclaim/attest/release transactions with the worker/verifier wallets, record each public signature/timestamp withnpm run real:capture:record -- --transaction <artifact> --signature <sig>, then usenpm run real:capture:payout -- --env .env.solana-mainnet.localandnpm run real:packet:build -- --env .env.solana-mainnet.localto create the first mainnet USDC payout artifact and sanitized run packet under.tascverifier/; do not count the goal complete untilreal:readiness -- --env .env.solana-mainnet.localreturnsready_for_goal: truewith non-example evidence and live mainnet RPC verification - use
npm run beta:feed -- --proof-summary examples/solana-devnet/proofs/<run-id>/proof-summary.jsonafter fresh proof runs to publish static feed artifacts - use guarded
npm run beta:claimableimmediately before wallet-extension QA when a real active claimable task is needed - use guarded
npm run beta:sessionas the preferred just-in-time active inventory plus verifier session path - deploy the verifier API and connect durable artifacts back into hosted feed/index publication
- add a short demo video or GIF
- keep starter issues updated as protocol milestones land
Target command:
npm install
npm run demoCurrent supporting commands:
npm run compile:example
npm run verify:example
npm run demo:market
npm run validate:indexer
npm run validate:static-feed
npm run validate:solana-spl-escrow
npm run validate:verifier-ingest
npm run validate:verifier-api
npm run validate:private-beta-local
npm run validate:private-beta-qa-runner
npm run validate:beta-claimable-publisher
npm run validate:private-beta-session-runner
npm run validate:solana-lifecycle-tx
npm run validate:solana-spl-settlementNext:
- keep improving the
demoscript so it is the default first-run path - use
beta:localas the default operator session for wallet-extension QA - use
beta:feedas the default static artifact publication path - use
beta:sessionas the default just-in-time active inventory plus local verifier path - use
beta:claimableas the lower-level active inventory publication path - use
earn:devnetas the default timed devnet payout proof path - use
real:env:initandreal:envas the default mainnet private-env bootstrap and public configuration doctor before preflight - use
real:packetas the default preflight-to-readiness handoff for the first mainnet payout attempt - use
real:captureas the default operator evidence log during the first mainnet payout attempt - use
real:readinessas the default gate for distinguishing real-money readiness from devnet/test-token success, including live decoded task-account verification - keep improving the
devnet:proofscript so it reads existing public artifacts without sending transactions - keep live sending commands behind guard env vars
The current static web proof should become the main public demo:
- load
examples/index/solana.spl.live.index.json - load
web/feed/claimable-feed.jsonfirst when active inventory has been published, withweb/feed/proof-feed.jsonas the public proof fallback - import fresh proof/index artifacts without editing bundled demo code
- show task title, reward, 60-second window, signed input URL, output schema, verifier rules, status, chain, vault, and proof coordinates
- capture markdown output and derive the result hash the verifier will attest
- ingest captured proof JSON into
tasc.attestationplus the Solana-ready result hash forattest - call a local or deployed verifier API from the static web flow
- connect a Solana wallet and show live task-account status plus guarded role/action sends
- link to docs explaining what is real and what is simulated
Open issues for:
good first issue: create another.tasctask fixturegood first issue: add README walkthrough screenshotsprotocol: implement program-signed SPL token release/refund CPIindexer: discover funded task accounts from program-owned accountsindexer: scan post-funding lifecycle stateweb: live-test wallet transaction submission in injected wallet browsersverifier: deploy the verifier API and publish durable ingestion artifacts into hosted indexessecurity: define pre-mainnet audit checklist
Share with a narrow audience first:
- Solana dev Discord builders
- Base/EVM escrow builders
- people building AI agent work marketplaces
- protocol engineers who care about verifiable off-chain work
Ask for specific feedback:
- Is the signed intent shape enough?
- Is the custody evidence convincing?
- Is the task language too narrow or too broad?
- What would make a worker trust a claimable task?
- What would make a buyer fund tasks before seeing a worker?
- Live-test guarded Solana wallet sends from the static operator console in a normal wallet-extension browser.
- Deploy the verifier API and publish durable ingestion artifacts into hosted feed indexes.
- Publish fresh proof indexes as hosted task-feed artifacts instead of only local runner output.
- Add finality windows, duplicate-task suppression, and multi-RPC fallback to the browser/indexer boundary.
- Start the dispute/reviewer path once pass/fail/timeout UX is usable end to end.
Early users are actually using Tasc when:
- someone can run a local demo without reading internals
- someone can inspect the live devnet proof from README links
- someone can add a new task fixture and verifier rule
- someone can serve a static claimable feed
- a worker can see the exact signed input and verifier rules from the feed
- a worker can capture output and produce a verifier-compatible result hash
- a verifier can ingest the worker proof and produce an attestable
tasc.attestation - a verifier API can accept the same proof over HTTP and reject duplicates/tampering
- the static app can call that verifier API and prepare the corresponding Solana attest fields
- someone can connect a wallet and submit the correct guarded live role/action transaction
- a worker can complete a devnet task and see token release proof