EN/FR local evidence inspection with Web Crypto artifact commitments, editable reported usage/policy, exact packet export and strict recomputed reopen. No provider call or external execution.
Do the supplier artifacts pass, and which reported execution fields remain unresolved?
Inspect a bounded supplier evidence packet, independently check artifact integrity and arithmetic, then assess reported usage, budget and cleanup fields without granting authority.
01
Inspect the supplied packet
The default contains real scripted-browser-lab deliverables. Token usage and cost were not measured and remain null, rather than assumed free.
Packet completeness means reported fields complete under policy, not attested execution or cost. All admission, production and settlement flags stay false. Original design diagrams remain preserved.
{"revision":"4e51d6aee7b901e42115d44380a15caacb44e940","sources":[{"file":"demo/ICONIC-OPERATING-SYSTEM-DEMO/packet.json","content":"{\n \"schema\": \"agijobs.supplier-evidence-desk.v1\",\n \"taskSourceSha256\": \"b20ea82745349c0cf5fc2633675b5003140a6bc7c3d2075f354f77ea6a59922c\",\n \"receipt\": {\n \"artifacts\": [\n {\n \"name\": \"comparison.json\",\n \"content\": \"{\\\"maxDeliveryDays\\\": 7, \\\"quotes\\\": [{\\\"supplier\\\": \\\"Boreal\\\", \\\"totalCents\\\": 53000, \\\"eligible\\\": true}, {\\\"supplier\\\": \\\"Laurentian\\\", \\\"totalCents\\\": 46000, \\\"eligible\\\": false}, {\\\"supplier\\\": \\\"Stellar\\\", \\\"totalCents\\\": 49000, \\\"eligible\\\": true}], \\\"recommendedSupplier\\\": \\\"Stellar\\\", \\\"purchaseExecuted\\\": false}\",\n \"sha256\": \"61713d3ec0aeb383f0f0090ce11184ddaa49ad947165d53cfcf3e2034481a4cd\"\n },\n {\n \"name\": \"recommendation.md\",\n \"content\": \"Stellar is recommended. No purchase executed.\",\n \"sha256\": \"06f8a25f80e83bb378b8da248b05983e42287ee89b8d1009e2056496da38983d\"\n }\n ]\n },\n \"execution\": {\n \"mode\": \"scripted-browser-lab\",\n \"providerCalls\": 3,\n \"browserObserved\": true,\n \"externalFetches\": 0,\n \"workerTerminated\": true\n },\n \"usage\": {\n \"inputTokens\": null,\n \"outputTokens\": null,\n \"reportedCostMicrousd\": null\n },\n \"policy\": {\n \"maximumCalls\": 3,\n \"maximumInputTokens\": 20000,\n \"maximumOutputTokens\": 5000,\n \"maximumCostMicrousd\": 1000000\n },\n \"productionApproved\": false,\n \"settlementApproved\": false\n}\n","format":"json","sha256":"6662ee2e7ff7ec6aaebfc64f35c87f1f4447aa57a78e5f8833d34c601f0fa0dd","bytes":1350,"download":"/AGIJobsv0/examples/6662ee2e7ff7ec6a-packet.json","source":"https://github.com/MontrealAI/AGIJobsv0/blob/4e51d6aee7b901e42115d44380a15caacb44e940/demo/ICONIC-OPERATING-SYSTEM-DEMO/packet.json"},{"file":"demo/ICONIC-OPERATING-SYSTEM-DEMO/run.py","content":"\"\"\"Inspect supplier deliverables and reported execution budgets; never admit or settle work.\"\"\"\n\nfrom __future__ import annotations\n\nimport argparse\nimport hashlib\nimport json\nfrom pathlib import Path\nimport re\nimport subprocess\nimport sys\n\nROOT = Path(__file__).resolve().parents[2]\nTASK = ROOT / \"demo/One-Box/computer-work/task.json\"\nREVIEW = ROOT / \"demo/One-Box/computer-work/review.cjs\"\n\n\ndef exact(value, keys, name):\n if not isinstance(value, dict) or set(value) != set(keys):\n raise ValueError(f'{name} must contain exactly {\", \".join(sorted(keys))}')\n\n\ndef integer(value, name, maximum=10**12):\n if type(value) is not int or not 0 <= value <= maximum:\n raise ValueError(f\"{name} must be a nonnegative bounded integer\")\n return value\n\n\ndef parse(raw):\n def pairs(items):\n result = {}\n for key, value in items:\n if key in result:\n raise ValueError(f\"Duplicate JSON key: {key}\")\n result[key] = value\n return result\n\n def nonfinite(value):\n raise ValueError(f\"Nonfinite JSON value: {value}\")\n\n return json.loads(raw.decode(\"utf-8\") if isinstance(raw, bytes) else raw, object_pairs_hook=pairs, parse_constant=nonfinite)\n\n\ndef evaluate(packet):\n exact(\n packet,\n {\n \"schema\",\n \"taskSourceSha256\",\n \"receipt\",\n \"execution\",\n \"usage\",\n \"policy\",\n \"productionApproved\",\n \"settlementApproved\",\n },\n \"packet\",\n )\n if packet[\"schema\"] != \"agijobs.supplier-evidence-desk.v1\":\n raise ValueError(\"Unsupported evidence packet\")\n if not isinstance(packet[\"taskSourceSha256\"], str) or not re.fullmatch(\n \"[0-9a-f]{64}\", packet[\"taskSourceSha256\"]\n ):\n raise ValueError(\"taskSourceSha256 must be a lowercase SHA-256 digest\")\n if (\n type(packet[\"productionApproved\"]) is not bool\n or type(packet[\"settlementApproved\"]) is not bool\n ):\n raise ValueError(\"Authority flags must be booleans\")\n receipt = packet[\"receipt\"]\n exact(receipt, {\"artifacts\"}, \"receipt\")\n files = receipt[\"artifacts\"]\n if not isinstance(files, list) or len(files) != 2:\n raise ValueError(\"Provide exactly two bounded deliverables\")\n for file in files:\n if not isinstance(file, dict) or set(file) not in [\n {\"name\", \"content\", \"sha256\"},\n {\"name\", \"content\", \"sha256\", \"mediaType\"},\n ]:\n raise ValueError(\"Unexpected artifact fields\")\n if not isinstance(file[\"name\"], str) or not re.fullmatch(\n \"[A-Za-z0-9_.-]{1,80}\", file[\"name\"]\n ):\n raise ValueError(\"Invalid artifact name\")\n if (\n not isinstance(file[\"content\"], str)\n or len(file[\"content\"].encode(\"utf-8\")) > 200_000\n ):\n raise ValueError(\"Artifact content must be at most 200 KB UTF-8\")\n if not isinstance(file[\"sha256\"], str) or not re.fullmatch(\n \"[0-9a-f]{64}\", file[\"sha256\"]\n ):\n raise ValueError(\"Artifact SHA-256 must be lowercase hex\")\n if \"mediaType\" in file and (\n not isinstance(file[\"mediaType\"], str) or len(file[\"mediaType\"]) > 100\n ):\n raise ValueError(\"Invalid media type\")\n if file[\"name\"] == \"comparison.json\":\n report = parse(file[\"content\"])\n if (\n not isinstance(report, dict)\n or not isinstance(report.get(\"quotes\"), list)\n or any(not isinstance(q, dict) for q in report[\"quotes\"])\n ):\n raise ValueError(\"Comparison must contain an array of quote objects\")\n if sorted(file[\"name\"] for file in files) != [\n \"comparison.json\",\n \"recommendation.md\",\n ]:\n raise ValueError(\n \"Provide each expected artifact exactly once: comparison.json and recommendation.md\"\n )\n execution, usage, policy = packet[\"execution\"], packet[\"usage\"], packet[\"policy\"]\n exact(\n execution,\n {\n \"mode\",\n \"providerCalls\",\n \"browserObserved\",\n \"externalFetches\",\n \"workerTerminated\",\n },\n \"execution\",\n )\n if execution[\"mode\"] not in [\"scripted-browser-lab\", \"reported-live-provider\"]:\n raise ValueError(\"Unsupported execution mode\")\n for key in [\"providerCalls\", \"externalFetches\"]:\n integer(execution[key], key, 100000)\n for key in [\"browserObserved\", \"workerTerminated\"]:\n if type(execution[key]) is not bool:\n raise ValueError(f\"{key} must be a boolean\")\n exact(usage, {\"inputTokens\", \"outputTokens\", \"reportedCostMicrousd\"}, \"usage\")\n for key, value in usage.items():\n if value is not None:\n integer(value, key)\n exact(\n policy,\n {\n \"maximumCalls\",\n \"maximumInputTokens\",\n \"maximumOutputTokens\",\n \"maximumCostMicrousd\",\n },\n \"policy\",\n )\n for key, value in policy.items():\n integer(value, key)\n completed = subprocess.run(\n [\n \"node\",\n \"-e\",\n \"const fs=require('fs'); const {review}=require(process.argv[1]); console.log(JSON.stringify(review(JSON.parse(fs.readFileSync(0,'utf8')))));\",\n str(REVIEW),\n ],\n input=json.dumps(receipt),\n text=True,\n capture_output=True,\n timeout=5,\n check=True,\n )\n review = json.loads(completed.stdout)\n usage_known = all(value is not None for value in usage.values())\n checks = {\n \"artifactAcceptance\": review[\"accepted\"],\n \"taskIdentity\": packet[\"taskSourceSha256\"]\n == hashlib.sha256(TASK.read_bytes()).hexdigest(),\n \"browserObservationReported\": execution[\"browserObserved\"],\n \"cleanupReported\": execution[\"workerTerminated\"],\n \"zeroExternalFetchesReported\": execution[\"externalFetches\"] == 0,\n \"callsWithinPolicy\": execution[\"providerCalls\"] <= policy[\"maximumCalls\"],\n \"usageKnown\": usage_known,\n \"inputWithinPolicy\": usage[\"inputTokens\"] is not None\n and usage[\"inputTokens\"] <= policy[\"maximumInputTokens\"],\n \"outputWithinPolicy\": usage[\"outputTokens\"] is not None\n and usage[\"outputTokens\"] <= policy[\"maximumOutputTokens\"],\n \"reportedCostWithinPolicy\": usage[\"reportedCostMicrousd\"] is not None\n and usage[\"reportedCostMicrousd\"] <= policy[\"maximumCostMicrousd\"],\n \"authorityClaimsAbsent\": not packet[\"productionApproved\"]\n and not packet[\"settlementApproved\"],\n }\n return {\n \"schema\": \"agijobs.supplier-evidence-desk-result.v1\",\n \"mode\": \"offline-evidence-review\",\n \"packetComplete\": all(checks.values()),\n \"artifactReview\": review,\n \"checks\": checks,\n \"unresolvedGates\": [key for key, value in checks.items() if not value],\n \"executionMode\": execution[\"mode\"],\n \"usage\": dict(usage),\n \"policy\": dict(policy),\n \"taskSourceSha256\": hashlib.sha256(TASK.read_bytes()).hexdigest(),\n \"artifactCommitments\": [\n {\n \"name\": f[\"name\"],\n \"sha256\": hashlib.sha256(f[\"content\"].encode()).hexdigest(),\n }\n for f in files\n ],\n \"executionAttested\": False,\n \"costAttested\": False,\n \"admitted\": False,\n \"settlementApproved\": False,\n \"productionApproved\": False,\n }\n\n\ndef main():\n parser = argparse.ArgumentParser(description=__doc__)\n parser.add_argument(\n \"--packet\", type=Path, default=Path(__file__).with_name(\"packet.json\")\n )\n args = parser.parse_args()\n with args.packet.open(\"rb\") as handle:\n raw = handle.read(1_000_001)\n if len(raw) > 1_000_000:\n raise ValueError(\"Packet exceeds 1 MB\")\n result = evaluate(parse(raw))\n result[\"packetSha256\"] = hashlib.sha256(raw).hexdigest()\n print(json.dumps(result, indent=2))\n return 0 if result[\"packetComplete\"] else 1\n\n\nif __name__ == \"__main__\":\n try:\n raise SystemExit(main())\n except (\n ValueError,\n TypeError,\n KeyError,\n OSError,\n RecursionError,\n subprocess.SubprocessError,\n ) as error:\n print(f\"Invalid evidence packet: {error}\", file=sys.stderr)\n raise SystemExit(2)\n","format":"text","sha256":"650219736e75c81474a1c0d25494a1cccf8feeea4c08d391d4bb59d58ca8f683","bytes":8389,"download":"/AGIJobsv0/examples/650219736e75c814-run.py","source":"https://github.com/MontrealAI/AGIJobsv0/blob/4e51d6aee7b901e42115d44380a15caacb44e940/demo/ICONIC-OPERATING-SYSTEM-DEMO/run.py"},{"file":"demo/ICONIC-OPERATING-SYSTEM-DEMO/README.md","content":"# AGI Jobs v0 (v2) — Demo → Iconic Operating System Demo\n\n> A supplier-evidence desk: inspect real browser deliverables and distinguish a correct result from an incomplete execution report.\n\n## Run the implemented evidence desk\n\n```sh\npython demo/ICONIC-OPERATING-SYSTEM-DEMO/run.py\npython -m unittest test.simulation.test_supplier_evidence_desk -v\n```\n\nThe bundled [packet.json](packet.json) contains the synthetic supplier deliverables produced by an actual Chromium run of the shared Alpha/Jobs laboratory. The existing One-Box reviewer independently recomputes all supplier totals, delivery eligibility and the recommendation. It accepts these artifacts. The desk still returns `packetComplete: false` and exit status 1 because provider usage and cost are unknown. Unknown values remain `null`, never zero.\n\nThis is offline evidence review. Browser observations, call counts and reported costs in a supplied packet are unauthenticated declarations. Artifact hashes establish byte integrity, not the identity of an executor or truth of a claim. `packetComplete` means reported fields are complete under the supplied policy, not that execution or cost has been verified. Even a complete packet returns `executionAttested`, `costAttested`, `admitted`, `productionApproved` and `settlementApproved` as false. Passing these checks never admits, pays or approves production work.\n\n### Inspect a packet\n\nCopy the fixture and run `python demo/ICONIC-OPERATING-SYSTEM-DEMO/run.py --packet YOUR_COPY.json`. The schema separates:\n\n- `receipt.artifacts`: exactly two bounded deliverables from the existing supplier task, each with its content and SHA-256.\n- `taskSourceSha256`: the exact repository One-Box task-file commitment; matching it does not attest a live market assignment.\n- `execution`: reported browser observation, provider call count, external fetch count and worker cleanup, with an explicit scripted-laboratory or reported-live-provider mode.\n- `usage`: reported input/output tokens and integer micro-US-dollar cost, or `null` for unknown values.\n- `policy`: caller-selected maximum reported calls, input/output tokens and micro-US-dollar cost. This reviews supplied values; it is not a runtime spending limiter or invoice verification.\n\nThe default synthetic task allows no external fetches. Edit the recommendation to the cheaper but late supplier and recompute its checksum: the arithmetic reviewer still rejects it. Exceed a reported budget, change the task digest, claim production approval or report incomplete worker cleanup: the corresponding completeness gate fails. Providing valid reported usage can complete the packet, but does not make that usage attested. Duplicate keys (including in the embedded comparison JSON), unknown fields, nonfinite values, unsafe integers and oversized input are rejected.\n\nThe result includes all eleven artifact checks, separate completeness gates, unresolved reasons, exact artifact commitments and a SHA-256 of the input packet bytes. Exit 0 means the report is complete under the supplied policy; 1 means a valid report has unresolved gates; 2 means malformed input or an unavailable reviewer. Node is required for the existing One-Box reviewer, with a five-second subprocess deadline. No provider, wallet, chain or external API is called.\n\n### Browser evidence workspace\n\nServe `web/` locally with `python -m http.server 8080 --bind 127.0.0.1 --directory demo/ICONIC-OPERATING-SYSTEM-DEMO/web` and open `http://127.0.0.1:8080/`. The EN/FR desk separates the eleven artifact checks from reported-field completeness. Edit usage/policy, leave unknown values blank, import or export a packet, and reopen evidence with its result independently recomputed. The Pages build publishes this workspace at `experiments/iconic/` after deployment. All original source fixtures remain hash-bound by tests.\n\n### Connect real browser work\n\nThe canonical reproducible laboratory is [the Alpha supplier browser harness](https://github.com/MontrealAI/AGIJobsv0/blob/fee0f3e3ab9e0bad0e5d1d2d6f145eccf9b2151a/integrations/alpha-agent/SUPPLIER_BROWSER_LAB.md) in PR3936. It drives actual Chromium through the fixed Alpha worker using scripted Responses fixtures, retains screen/action evidence, and verifies process-group cleanup. Its positive and deliberately corrupted recommendation runs establish the evidence desk's fixture provenance. This is not a live-model reasoning evaluation or Docker production qualification.\n\nFor a separately authorized live execution path, use [the existing computer-work guide](../../docs/computer-work.md) and its admitted task/runtime profile. Native Responses computer tools and OpenClaw client-function tools are separate backend surfaces. The evidence desk does not create credentials, infer provider costs, automatically retry requests, expand permissions, or convert a Manager grant into JobRegistry authority. Production identity, signature, chain/profile/assignment and controller permissions require the appropriate existing independent gates.\n\n## Preserved wider design\n\nThe following architecture describes a broader design than the bounded evidence desk. Original diagrams are retained as context, not execution evidence.\n\n## Overview\n\n- **Path:** `demo/ICONIC-OPERATING-SYSTEM-DEMO/README.md`\n- **Module Focus:** Anchors Demo → Iconic Operating System Demo inside the AGI Jobs v0 (v2) lattice so teams can orchestrate economic, governance, and operational missions with deterministic guardrails.\n- **Integration Role:** Interfaces with the unified owner control plane, telemetry mesh, and contract registry to deliver end-to-end resilience.\n\n## Capabilities\n\n- Provides opinionated configuration and assets tailored to `demo/ICONIC-OPERATING-SYSTEM-DEMO` while remaining interoperable with the global AGI Jobs v0 (v2) runtime.\n- Ships with safety-first defaults so non-technical operators can activate the experience without compromising security or compliance.\n- Publishes ready-to-automate hooks for CI, observability, and ledger reconciliation.\n\n## Systems Map\n\n```mermaid\nflowchart LR\n Operators((Mission Owners)) --> demo_ICONIC_OPERATING_SYSTEM_DEMO[[Demo → Iconic Operating System Demo]]\n demo_ICONIC_OPERATING_SYSTEM_DEMO --> Core[[\"AGI Jobs v0 (v2) Core Intelligence\"]]\n Core --> Observability[[Unified CI / CD & Observability]]\n Core --> Governance[[Owner Control Plane]]\n```\n\n## Working With This Module\n\n1. From the repository root run `npm install` once to hydrate all workspaces.\n2. Inspect the scripts under `scripts/` or this module's `package.json` entry (where applicable) to discover targeted automation for `demo/ICONIC-OPERATING-SYSTEM-DEMO`.\n3. Execute `npm test` and `npm run lint --if-present` before pushing to guarantee a fully green AGI Jobs v0 (v2) CI signal.\n4. Capture mission telemetry with `make operator:green` or the module-specific runbooks documented in [`OperatorRunbook.md`](../../OperatorRunbook.md).\n\n## Directory Guide\n\nThis folder preserves the design guide; use the related executable workflow linked above.\n\n## Quality & Governance\n\n- Every change must land through a pull request with all required checks green (unit, integration, linting, security scan).\n- Reference [`RUNBOOK.md`](../../RUNBOOK.md) and [`OperatorRunbook.md`](../../OperatorRunbook.md) for escalation patterns and owner approvals.\n- Keep secrets outside the tree; use the secure parameter stores wired to the AGI Jobs v0 (v2) guardian mesh.\n\n## Next Steps\n\n- Review this module's issue board for open automation, data, or research threads.\n- Link new deliverables back to the central manifest via `npm run release:manifest`.\n- Publish artefacts (dashboards, mermaid charts, datasets) into `reports/` for downstream intelligence alignment.\n","format":"text","sha256":"964464aa51631fff32050052bd47b91f4e280103fc921dc9b2b30956f0834507","bytes":7754,"download":"/AGIJobsv0/examples/964464aa51631fff-README.md","source":"https://github.com/MontrealAI/AGIJobsv0/blob/4e51d6aee7b901e42115d44380a15caacb44e940/demo/ICONIC-OPERATING-SYSTEM-DEMO/README.md"}]}
FROM READING TO A REPRODUCIBLE RUN
Try the selected path.
Python + Node.js, built-in modules only
From the repository root, use Python 3.12 and the Node version pinned in .nvmrc. This evaluator invokes the tracked Node reviewer using built-in modules; no local chain, provider credential or extra Python package is required.
Default artifact acceptance passes eleven checks, but packetComplete is false because usage and cost are unknown. Exit 0 means reported fields complete under policy, 1 means unresolved gates, 2 means invalid input. Execution and cost attestation always remain false.
The source inspector above reads bundled repository material. Local commands run separately on your computer. Recorded examples may contain historical timestamps, placeholders and simulated metrics.
MAKE IT YOUR OWN
One useful experiment.
Enter reported usage and cost, reduce a budget, clear reported cleanup, or alter an artifact and reopen the packet. Inspect both artifact correctness and unresolved reported-field gates.
THE SYSTEM, MADE VISIBLE
Architecture & relationships
Architecture diagram · source preserved belowView original Mermaid source
flowchart LR
Operators((Mission Owners)) --> demo_ICONIC_OPERATING_SYSTEM_DEMO[[Demo → Iconic Operating System Demo]]
demo_ICONIC_OPERATING_SYSTEM_DEMO --> Core[["AGI Jobs v0 (v2) Core Intelligence"]]
Core --> Observability[[Unified CI / CD & Observability]]
Core --> Governance[[Owner Control Plane]]
WHEN SOMETHING DOESN’T MATCH
Troubleshooting
Import or dependency error
Confirm the active virtual environment and the selected demo’s requirements. Run python -m pip check; do not install unrelated demo requirements over a working environment.
Unexpected result or missing file
Check the selected entry point, configuration and output argument. Keep the seed and implementation fixed before comparing outcomes.
TRACE THE CHECKS
Verification & next steps
This directory has no standalone test source files. Follow the shared implementation and its behavioral tests before making correctness claims.