All Things Agentic Hackathon — The Taskmaster Track

Verity
verifies before you build on it.

An autonomous agent that takes an AI claim — a paper, a repo, a vendor benchmark — and actually attempts to reproduce it: parses the claim, runs it in a sandbox, self-debugs failures, and files an evidence-backed verdict. No human triage until there's a result.

Gemini 3.5 Flash Google ADK Cloud Run · live No-role sandbox Firestore + Pub/Sub
Deployment status: the public API and private worker are live in verity-506800. Phase 9 passed with real Cloud Run Job executions, durable Firestore state, authenticated Pub/Sub push, and GitHub Issue artifacts. Untrusted code runs as a no-role service account and receives no project credentials.
01

Technology stack

Model
Gemini 3.5 Flash
Multimodal reasoning — reads PDFs/tables to extract claims, and proposes code patches during debugging.
Agent Framework
Google ADK
Typed ADK LlmAgent calls power Parser and Debug; the durable four-role state machine is explicit Python.
Compute
Cloud Run service + jobs
A public scale-to-zero API starts a private pipeline job, which launches a fresh no-role sandbox job for each execution attempt.
Messaging
Pub/Sub · verified OIDC
The push subscription calls the private worker endpoint with a Google-signed token, a dedicated identity, and an exact custom audience.
State & Memory
Firestore · live durable memory
Jobs, traces, sandbox handoffs, terminal verdicts, and URL deduplication survive service revisions and process restarts.
Observability
Cloud Trace / Logging
Live logs correlate the API, Pub/Sub delivery, pipeline execution, nested sandbox execution, and final job record.
Output
GitHub REST API
Files the final verdict as a real, clickable GitHub Issue — a concrete autonomous deliverable.
Frontend
FastAPI web app
Public read-only pages stay open for judges; job submission and result access require one of two separately managed API keys.
02

Agent pipeline

01

Parser Agent

Reads the submitted paper, repo, or vendor page. Extracts the specific claim: metric, dataset, and conditions, into a typed schema.

reads → Gemini 3.5 Flash (multimodal PDF + table reading)
02

Environment Agent

Spins up an ephemeral sandbox, clones the target repo, installs dependencies, and attempts the evaluation run.

deterministic Python → Docker locally · live Cloud Run Job in cloud
03

Debug Agent retry loop · capped at 3

On failure, reads the stack trace, proposes and applies a patch, retries. Reports an honest failure if unresolved after three attempts — a deliberate design choice, not a limitation to hide.

reasons with → Gemini 3.5 Flash · logs every attempt to the JobStore
04

Reporter Agent

Writes the structured verdict — claimed vs. actual result, what was fixed, confidence level — and files it as the final artifact.

deterministic Python → GitHub API + durable JobStore
03

System architecture

Frontend public reads · key-gated writes submit claim URL Orchestrator API Cloud Run · multi-key auth Pub/Sub OIDC push · custom audience Live cloud pipeline · isolated identities Parser Gemini 3.5 Environment no-role sandbox job Debug Gemini 3.5 · loop (max 3 retries) Reporter verdict + issue state / trace Firestore job state · memory bank GitHub Issue final autonomous artifact

This is the deployed cloud path. The trusted pipeline creates a one-time Firestore handoff, starts verity-sandbox with execution overrides, and resolves the concrete execution name from the operation metadata. The sandbox identity has no project roles and cannot read the Cloud Run API; the pipeline reads the bounded result from logs and persists the evidence.

04

One codebase, two infrastructures

The four agents depend on four interfaces, never on a vendor SDK. A single setting, VERITY_ENV, chooses which implementations get wired in — and verity/container.py is the only module in the project that imports a concrete backend. The local profile needs no Google Cloud project, no billing account, and no card. The cloud column is the live production profile proven in Phase 9.

Seam Interface VERITY_ENV=local VERITY_ENV=cloud
State, trace, claim memory JobStore SQLiteJobStore FirestoreJobStore
Intake → processing JobQueue AsyncioJobQueue PubSubJobQueue
Model calls ModelClient GeminiAIStudioClient VertexAIModelClient
Untrusted execution SandboxBackend DockerSandboxBackend CloudRunJobBackend · live no-role sandbox
 

Why the sandbox is not optional

The Environment Agent clones and executes arbitrary third-party code from GitHub. Locally, each phase is a separate hardened Docker invocation. In cloud, each attempt is a fresh verity-sandbox execution under a dedicated service account with no IAM roles; only the trusted pipeline can start it, using the narrow run.jobsExecutorWithOverrides permission.

PhaseNetworkRationale
clonebridgeFetch the declared repository.
venvnoneCreate the interpreter; nothing to download.
installbridgeInstall the declared dependencies only.
evaluatenoneA benchmark that phones home while scoring is not reproducible.

Every container runs with --cap-drop ALL, --security-opt no-new-privileges, a read-only root filesystem, pid/memory/cpu limits, and exactly one bind mount. No Docker socket, no host paths, no reuse between jobs. This is verified rather than asserted: a suite of real containers tries to read host files, write outside the workspace, reach the network mid-benchmark, escalate privileges, find the Docker socket, and fork-bomb the daemon. Every attempt must fail for the gate to pass.

The cloud proof adds a second boundary: the sandbox receives no Google credentials or project identifiers as secrets. A six-API deny probe confirmed that Firestore, Secret Manager, Pub/Sub, Cloud Run, Vertex AI, and Cloud Storage all reject the sandbox identity.