ShipCheck is a GenLayer Bradbury Intelligent Contract dApp for checking whether submitted projects are real, deployed, technically aligned, and supported by public evidence.
Instead of asking reviewers to manually jump between GitHub, a live app, contract proof, and scattered evidence links, ShipCheck creates a public verification case. GenLayer validators independently fetch the submitted evidence, inspect repository implementation files, render the deployed app, check contract proof, reason over the submission with an LLM, and finalize a structured verdict through consensus.
This is not a simple checklist app with an AI summary bolted on. The core value is the non-deterministic verification path: each validator can evaluate live public evidence that changes from project to project, while the finalized result is stored as an auditable on-chain record.
| Surface | Value |
|---|---|
| Web app | https://shipcheck-gen.vercel.app |
| Network | GenLayer Bradbury Testnet |
| Chain ID | 4221 |
| RPC | https://rpc-bradbury.genlayer.com |
| Explorer | https://explorer-bradbury.genlayer.com |
| Contract | 0xdF7e884276edE0e7441024D6AC9D63f30eb79e05 |
| Deploy tx | 0x191612ff6370b0c3b45be8a6fb923a3aaa8deca2b0c0b329818752e1818cb8fd |
The production app reads from and writes to the live Bradbury contract.
submit_project
submitter -----------------> verification case
(repo + app + contract proof) |
v
add_evidence
optional public URLs
|
v
verify_case
GenLayer consensus
|
+-------------------------+-------------------------+
| | |
v v v
repository scan deployment render contract proof
README + package live app text address / proof page
tree + source files public UI state deployed source check
| | |
+-------------------------+-------------------------+
|
v
validator reasoning
gl.nondet.web + gl.nondet.exec_prompt
each validator repeats evidence review
|
v
final verdict
score + risk flags + evidence summary
source coverage + public proof page
ShipCheck separates three evidence layers:
| Layer | What It Proves |
|---|---|
| Implementation evidence | The repository contains actual contract/frontend source for the claimed project. |
| Deployment evidence | The submitted app and contract target are publicly reachable. |
| Runtime evidence | Specific transactions show users or reviewers interacted with the deployed contract. |
Contract addresses are strong deployment proof, but transaction links are needed when a reviewer wants to prove live usage after deployment.
| Verdict | Score Range | Meaning |
|---|---|---|
VERIFIED |
85-100 | Evidence strongly supports the submitted claim. |
NEEDS_REVIEW |
60-84 | The project has meaningful evidence, but some gaps need human review. |
HIGH_RISK |
0-59 | Material evidence is missing, contradictory, or weak. |
INCONCLUSIVE |
0 | Available evidence was inspected but cannot support a reliable directional verdict. |
The rubric totals 100 points:
| Category | Points |
|---|---|
| Originality | 25 |
| Working deployment | 20 |
| Required technology integration | 25 |
| Repository quality | 15 |
| Documentation clarity | 10 |
| Evidence consistency | 5 |
ShipCheck depends on validator consensus over public evidence that cannot be reduced to a single deterministic on-chain value.
- Public evidence fetches: validators inspect GitHub metadata, repository trees, selected source files, deployed app text, contract proof pages, and optional evidence URLs.
- Semantic verification: the contract asks whether the evidence actually supports the project claim and sponsor requirements.
- Independent validator reasoning: the leader proposes a verdict, and validators repeat evidence collection and reasoning before agreeing.
- Bounded public proof: finalized cases store a score, verdict, risk flags, positive signals, inspected source inventory, and evidence summary.
- Retry-safe failure handling: unavailable sources, malformed model output, or contradiction with inspected evidence abort the attempt and leave the case
PENDINGfor retry instead of writing a permanent verdict.
+------------------------------------------------------------------+
| frontend/src |
| React + Vite + TypeScript reviewer workspace |
| Dashboard, submit flow, case detail, compare view, public proof |
+-------------------------------+----------------------------------+
| genlayer-js read/write
v
+------------------------------------------------------------------+
| contracts/ShipCheckVerifier.py |
| GenLayer Intelligent Contract |
| Case registry, evidence fetch, LLM adjudication, consensus result |
+-------------------------------+----------------------------------+
| HTTPS public evidence
v
+------------------------------------------------------------------+
| GitHub, deployed apps, Bradbury explorer, proof pages |
| README, package files, selected implementation files, tx evidence |
+------------------------------------------------------------------+
ShipCheck includes the main surfaces a serious reviewer needs:
- Reviewer Dashboard: queue filters, verdict badges, scores, risk flags, and direct project links.
- Submit Project: public GitHub repo, deployed app URL, contract proof, sponsor requirements, and project claim.
- Verification Case: score ring, score breakdown, evidence summary, positive signals, risk flags, and transaction lifecycle.
- Evidence Inventory: inspected repo paths and GenLayer signals accepted with the finalized verdict.
- Compare View: submitted claim and requirements beside gathered evidence and reasoning.
- Public Proof Page: shareable final record for verified, risky, and inconclusive cases.
contracts
ShipCheckVerifier.py
GenLayer Intelligent Contract and direct contract tests
frontend/src
React reviewer workspace, wallet flow, case views, proof pages,
evidence coverage UI, GenLayer read/write integration
scripts
genvm-lint and gltest wrappers used by npm scripts
tests/e2e
Playwright smoke coverage for the live application shell
For the cleanest ShipCheck result, submit public evidence in this shape:
GitHub repository:
https://github.com/<owner>/<repo>
Deployed application:
https://your-project.vercel.app
Contract proof:
https://explorer-bradbury.genlayer.com/address/<contract_address>
Extra evidence:
https://explorer-bradbury.genlayer.com/tx/<deployment_tx_hash>
https://explorer-bradbury.genlayer.com/tx/<frontend_write_tx_hash>
https://explorer-bradbury.genlayer.com/tx/<verification_tx_hash>
Use Bradbury explorer links for Bradbury submissions. Studio import links are useful for StudioNet work, but they should not be mixed into a Bradbury evidence package unless the project is intentionally demonstrating both networks.
Requirements: Node.js 20+, npm 10+, Python 3.11+, genvm-lint, and gltest.
npm install
npm run devLocal app:
http://localhost:5179
Create a root .env from .env.example:
VITE_GENLAYER_RPC_URL=https://rpc-bradbury.genlayer.com
VITE_GENLAYER_CONTRACT_ADDRESS=0xdF7e884276edE0e7441024D6AC9D63f30eb79e05
VITE_GENLAYER_EXPLORER_URL=https://explorer-bradbury.genlayer.com
Never put a private key in a VITE_* variable.
genlayer config set network=testnet-bradbury
genlayer deploy --contract contracts/ShipCheckVerifier.py --rpc https://rpc-bradbury.genlayer.comAfter deploying a new contract, update:
VITE_GENLAYER_CONTRACT_ADDRESS=<new_bradbury_contract_address>
GenLayer contract state is immutable per deployed address, so a fresh deployment starts with an empty case list.
vercel deploy --prod --yes --project shipcheck-genThe production Vercel project stores these build variables:
VITE_GENLAYER_RPC_URL
VITE_GENLAYER_CONTRACT_ADDRESS
VITE_GENLAYER_EXPLORER_URL
npm run typecheck
npm run test
npm run build
npm run contract:lint
npm run contract:test
npm run test:e2eFull local check:
npm run check- Public evidence URLs must use HTTPS.
- Only the wallet that created a case may add evidence or irreversibly finalize it.
- Transient source and reviewer failures leave cases pending and do not create verdict records.
- Fetched web and repository content is treated as untrusted prompt data.
- The contract rejects or downgrades model output that does not match the verdict schema.
- The verifier records inspected source paths and evidence signals with finalized verdicts.
- A contract address alone does not prove live usage; transaction links should be submitted as extra evidence.
.env,.env.local, Vercel metadata, build output, artifacts, and test output are git-ignored.
Built by ycee for a GenLayer Bradbury testnet submission.
MIT.