{"modules":[{"rank":1,"name":"NockApp Test Runner","category":"Core testing","horizon":"Now","thesis":"NockApp SDK builders need deterministic local checks before wallets, explorers, and users rely on their apps.","revenue":["CI subscriptions","Team workspaces","Paid audit-readiness reports"],"capitalIntensity":"Low","upside":"High","firstMilestone":"Model an SDK-era test run with fakenet setup, scripted pokes, peeks, and pass/fail output.","deliverables":["Fakenet profile schema","Scripted interaction format","Wallet-ready run report JSON"]},{"rank":2,"name":"State Replay + Invariants","category":"Security analysis","horizon":"Now","thesis":"Explorers can show what happened; Nocksperimental should help prove app state transitions obey the invariants builders promised.","revenue":["Verification badges","Audit retainers","Explorer-ready report exports"],"capitalIntensity":"Low","upside":"Very high","firstMilestone":"Define invariant fixtures for conservation, authorization, upgrade migration, replay, and invalid input handling.","deliverables":["Invariant catalog","Snapshot diff format","Shareable explorer/auditor report page"]},{"rank":3,"name":"Intent Simulator","category":"Solver tooling","horizon":"Next","thesis":"As programmable NockApps and solver-style flows emerge, builders will need to simulate execution quality before exposing real settlement paths.","revenue":["Solver QA plans","Execution-quality reports","Market-maker tooling"],"capitalIntensity":"Low-medium","upside":"Very high","firstMilestone":"Create a mock intent lifecycle from declaration through solver response, proof status, and settlement result.","deliverables":["Intent fixture schema","Solver replay log","Failure classification"]},{"rank":4,"name":"Bridge + Settlement Monitor","category":"Operations","horizon":"Next","thesis":"Bridge users, wallets, funds, and explorers need reconciliation, stuck-withdrawal alerts, and proof/status timelines.","revenue":["Ops subscriptions","Alert seats","Wallet and treasury monitoring"],"capitalIntensity":"Low-medium","upside":"High","firstMilestone":"Ship a Base-bridge monitor model that tracks a transfer lifecycle and emits alert-ready states.","deliverables":["Transfer timeline","Alert policy schema","Wallet/explorer reconciliation report"]},{"rank":5,"name":"Native Token Test Harness","category":"Standards readiness","horizon":"Later","thesis":"Before native tokens get crowded, own the testing surface for issuers, wallets, explorers, and protocol integrators.","revenue":["Issuer verification","Wallet compatibility checks","Explorer compatibility exports"],"capitalIntensity":"Low","upside":"High","firstMilestone":"Draft token invariants for supply, mint/burn authority, metadata, wallet display, and transfer behavior.","deliverables":["Token invariant pack","Wallet/explorer compatibility checklist","Issuer report"]},{"rank":6,"name":"Compute Benchmark Reports","category":"Compute markets","horizon":"Later","thesis":"Mining pools and future compute markets need neutral provider reputation before compute supply becomes a tradable surface.","revenue":["Provider reports","Benchmark leaderboards","Pool and job-quality attestations"],"capitalIntensity":"Medium-high","upside":"Very high","firstMilestone":"Define benchmark report formats for miners, pools, and providers without routing live jobs.","deliverables":["Benchmark spec","Provider profile","Pool/provider scoring model"]}],"phases":[{"timeframe":"0-30 days","objective":"Make the wedge concrete.","ship":["Static NockApp Lab dashboard","Run report schema","Invariant catalog v0","Mock fakenet/test-run fixtures","Ecosystem alignment notes for wallets, explorers, pools, and SDK builders"],"proofOfValue":"A developer or ecosystem partner can understand what would be tested and what report they would get."},{"timeframe":"30-90 days","objective":"Connect to real developer workflows.","ship":["CLI command for local report generation","Fixture-driven peek/poke simulation","CI-friendly JSON and Markdown reports","Bridge monitor model with alert states","Explorer and wallet report handoff formats"],"proofOfValue":"A NockApp repo can run a repeatable check and publish a report artifact wallets or explorers can consume."},{"timeframe":"3-6 months","objective":"Become the default pre-audit layer.","ship":["State snapshot diffing","Invariant packs for payments, intents, and token issuance","Hosted report history","Private team workspaces","Partner-specific report views for wallets, explorers, and infrastructure teams"],"proofOfValue":"Teams use the lab before launch, audits, upgrades, and partner integrations."},{"timeframe":"6-18 months","objective":"Turn testing data into ecosystem trust infrastructure.","ship":["Verified report badges","Solver execution-quality scoring","Native token compatibility reports","Compute provider benchmark profiles","Pool and bridge reliability signals"],"proofOfValue":"Apps, wallets, explorers, funds, pools, and providers use Nocksperimental reports as trust signals."}],"parallelTracks":[{"name":"Bridge + Settlement Monitor","whyItMatters":"Bridge activity creates operational pain for wallets, explorers, funds, and app teams: stuck transfers, reconciliation, proof status, and alerts.","sharedCore":"Reuses event ingestion, timelines, report exports, and alert policies.","firstArtifact":"A mock Base transfer timeline with states for initiated, observed, finalized, delayed, and failed."},{"name":"Native Token Test Harness","whyItMatters":"The native token standard is later on the roadmap, but issuers, wallets, and explorers will need safety checks as soon as it lands.","sharedCore":"Reuses invariant packs, snapshot diffs, and compatibility reports.","firstArtifact":"A supply-conservation and authority-check invariant pack."},{"name":"Intent Simulator","whyItMatters":"Intent-based execution needs simulation before solver networks, private DeFi, and wallet-routed actions become production-grade.","sharedCore":"Reuses scripted runs, failure classification, and execution-quality scoring.","firstArtifact":"A fixture format for intent declaration, solver response, proof status, and settlement result."},{"name":"Compute Benchmark Reports","whyItMatters":"Compute markets and mining pools will be capital intensive; neutral benchmarking lets Nocksperimental help without owning hardware.","sharedCore":"Reuses report identity, scoring, provider profiles, and verification badges.","firstArtifact":"A benchmark report schema for miners, pools, providers, and job classes."}],"invariantCatalog":{"version":"v0","items":[{"id":"state.numeric-min.v0","kind":"numeric-min","name":"Numeric floor","purpose":"Verify a state value never drops below a configured minimum.","requiredFields":["path","min"],"example":"counter >= 0"},{"id":"state.equals.v0","kind":"state-equals","name":"Expected state value","purpose":"Verify a path has an exact expected value after scripted interactions.","requiredFields":["path","equals"],"example":"bridge.status == finalized"},{"id":"actors.poke-declared.v0","kind":"poke-actors-declared","name":"Poke actor declared","purpose":"Verify every poke in the fixture has a declared actor.","requiredFields":[],"example":"2/2 poke steps declare actors from fixture.actors"},{"id":"balances.supply-conserved.v0","kind":"supply-conservation","name":"Supply conservation","purpose":"Verify account balances sum to the declared supply after a run.","requiredFields":["balancesPath","supplyPath"],"example":"sum(balances) == totalSupply"},{"id":"timeline.expected-state.v0","kind":"timeline-state","name":"Expected timeline state","purpose":"Verify an operational lifecycle reaches a required terminal state.","requiredFields":["path","equals"],"example":"settlement.status == finalized"},{"id":"actors.authorized.v0","kind":"authorized-actor","name":"Authorized actor","purpose":"Verify all steps of a type are performed by an allowed actor set.","requiredFields":["actors","stepType"],"example":"all poke actors in [merchant, treasury]"},{"id":"state.numeric-range.v0","kind":"numeric-range","name":"Numeric range","purpose":"Verify a numeric state value stays within an inclusive [min, max] range.","requiredFields":["path","min","max"],"example":"0 <= fees.rate <= 5"},{"id":"array.length-min.v0","kind":"array-length-min","name":"Array length floor","purpose":"Verify an array at a path has at least a minimum number of elements.","requiredFields":["path","min"],"example":"trades.length >= 2"},{"id":"array.length-max.v0","kind":"array-length-max","name":"Array length ceiling","purpose":"Verify an array at a path has no more than a maximum number of elements.","requiredFields":["path","max"],"example":"alerts.active.length <= 0"},{"id":"timeline.temporal-ordering.v0","kind":"temporal-ordering","name":"Temporal ordering","purpose":"Verify one logged event precedes another within an ordered log array in final state.","requiredFields":["path","field","before","after"],"example":"payment.events: locked before settled (by type)"},{"id":"custom.function.v0","kind":"custom-function","name":"Custom registered check","purpose":"Run a named, repo-registered pure function against final state (allowlist; no fixture-supplied code). Includes peek-reveals-no-secret (commit-only peek surface) and commit-binds-seed (sha256(seed)==commit) for commit-reveal games.","requiredFields":["fn","path"],"example":"fn=peek-reveals-no-secret over peekSurface (catches a leaked seed)"},{"id":"sequence.monotonic-strict.v0","kind":"monotonic-strict","name":"Strictly-increasing sequence","purpose":"Verify a numeric array in final state is strictly increasing (nonce/height monotonicity for replay safety).","requiredFields":["path"],"example":"nonceSequence strictly increases: [0,1,2,3]"}]},"reportHistory":[{"id":"hist-payment-prelaunch-001","workspaceSlug":"launch-lab-private","workspaceName":"Launch Lab Private","appName":"Payment Flow","fixtureId":"payment-flow-v0","reportSlug":"payment-flow","status":"pass","stage":"pre-launch","generatedAt":"2026-05-30T01:44:34.132Z","invariantPacks":["payments-core-v0"],"snapshotsCaptured":6,"summary":"Escrowed payment path settles with conserved balances, declared actors, and receipt state.","verification":{"badgeId":"badge-payment-flow-verified","badgeStatus":"verified","reportHash":"sha256:3a6d6bff59cb624f-payment-flow","snapshotRoot":"3a6d6bff59cb624f","signature":"nocklab-sig-payment-flow-v0","invariantPacks":["payments-core-v0"]}},{"id":"hist-bridge-audit-001","workspaceSlug":"audit-room-private","workspaceName":"Audit Room Private","appName":"Bridge Settlement Monitor","fixtureId":"bridge-settlement-v0","reportSlug":"bridge-settlement","status":"pass","stage":"audit","generatedAt":"2026-05-30T01:44:34.128Z","invariantPacks":[],"snapshotsCaptured":6,"summary":"Bridge lifecycle reaches finalized state with proof observed and no failure alert."},{"id":"hist-token-upgrade-001","workspaceSlug":"issuer-upgrade-private","workspaceName":"Issuer Upgrade Private","appName":"Token Issuance","fixtureId":"token-issuance-v0","reportSlug":"token-issuance","status":"pass","stage":"upgrade","generatedAt":"2026-05-30T01:44:34.136Z","invariantPacks":["token-issuance-core-v0"],"snapshotsCaptured":6,"summary":"Token issuance finalizes with stable metadata, authorized issuance pokes, and conserved supply.","verification":{"badgeId":"badge-mock-token-compatible","badgeStatus":"verified","reportHash":"sha256:cd7cc46d9b8d0f59-token-issuance","snapshotRoot":"cd7cc46d9b8d0f59","signature":"nocklab-sig-token-compatible-v0","invariantPacks":["token-issuance-core-v0"]}},{"id":"hist-intent-integration-001","workspaceSlug":"solver-integration-private","workspaceName":"Solver Integration Private","appName":"Intent Settlement","fixtureId":"intent-settlement-v0","reportSlug":"intent-settlement","status":"pass","stage":"integration","generatedAt":"2026-05-30T01:44:34.134Z","invariantPacks":["intents-core-v0"],"snapshotsCaptured":6,"summary":"Intent lifecycle records solver response and filled settlement without a failure alert.","verification":{"badgeId":"badge-solver-a-qualified","badgeStatus":"verified","reportHash":"sha256:b84c2c688d08c3c2-intent-settlement","snapshotRoot":"b84c2c688d08c3c2","signature":"nocklab-sig-solver-a-v0","invariantPacks":["intents-core-v0"]}}],"privateWorkspaces":[{"id":"ws-launch-lab-private","slug":"launch-lab-private","name":"Launch Lab Private","visibility":"private","plan":"team","seats":4,"retentionDays":365,"environments":["mock-fakenet","local-fakenet"],"stages":["pre-launch","integration"],"members":[{"role":"builder","count":2},{"role":"reviewer","count":2}]},{"id":"ws-audit-room-private","slug":"audit-room-private","name":"Audit Room Private","visibility":"private","plan":"audit","seats":6,"retentionDays":730,"environments":["mock-fakenet","local-fakenet","docker-fakenet"],"stages":["audit","upgrade"],"members":[{"role":"auditor","count":3},{"role":"maintainer","count":3}]},{"id":"ws-issuer-upgrade-private","slug":"issuer-upgrade-private","name":"Issuer Upgrade Private","visibility":"private","plan":"team","seats":5,"retentionDays":730,"environments":["mock-fakenet","local-fakenet"],"stages":["upgrade","pre-launch"],"members":[{"role":"issuer","count":2},{"role":"wallet-reviewer","count":3}]},{"id":"ws-solver-integration-private","slug":"solver-integration-private","name":"Solver Integration Private","visibility":"private","plan":"enterprise","seats":8,"retentionDays":1095,"environments":["mock-fakenet","local-fakenet"],"stages":["integration","upgrade"],"members":[{"role":"solver-operator","count":4},{"role":"protocol-engineer","count":4}]}],"trustSignals":{"$schema":"../../schemas/nockapp-trust-signal.schema.json","version":"v0","verifiedBadges":[{"id":"badge-payment-flow-verified","label":"Payment Flow Verified","kind":"app-report","status":"verified","reportSlug":"payment-flow","fixtureId":"payment-flow-v0","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:3a6d6bff59cb624f-payment-flow","snapshotRoot":"3a6d6bff59cb624f","signature":"nocklab-sig-payment-flow-v0","invariantPacks":["payments-core-v0"]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-payment-flow-legacy","label":"Payment Flow Legacy","kind":"app-report","status":"revoked","reportSlug":"payment-flow","fixtureId":"payment-flow-alpha","issuedAt":"2026-05-20T02:00:00.000Z","expiresAt":"2027-05-20T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:legacy-payment-flow-alpha","snapshotRoot":"payment-flow-alpha-root","signature":"nocklab-sig-payment-flow-alpha","invariantPacks":["payments-core-v0"]},"sourceAnchor":{"commit":"5d022ced5504e1f2a3b4c5d6e7f80910a1b2c3d4","build":"build-5d022ced5504e1f2a3b4c5d6e7f80910a1b2c3d4"}},{"id":"badge-solver-a-qualified","label":"Solver A Qualified","kind":"solver-score","status":"verified","reportSlug":"intent-settlement","fixtureId":"intent-settlement-v0","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:b84c2c688d08c3c2-intent-settlement","snapshotRoot":"b84c2c688d08c3c2","signature":"nocklab-sig-solver-a-v0","invariantPacks":["intents-core-v0"]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-mock-token-compatible","label":"MOCK Token Compatible","kind":"token-compatibility","status":"verified","reportSlug":"token-issuance","fixtureId":"token-issuance-v0","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:cd7cc46d9b8d0f59-token-issuance","snapshotRoot":"cd7cc46d9b8d0f59","signature":"nocklab-sig-token-compatible-v0","invariantPacks":["token-issuance-core-v0"]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-compute-provider-alpha","label":"Alpha Compute Benchmark","kind":"compute-benchmark","status":"verified","reportSlug":"compute-benchmark-alpha","fixtureId":"compute-benchmark-profile-v0","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:benchmark-alpha-provider-profile","snapshotRoot":"compute-alpha-jobclass-root","signature":"nocklab-sig-compute-alpha-v0","invariantPacks":[]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-forfeit-flip-verified","label":"Forfeit Flip Fairness Verified","kind":"app-report","status":"verified","reportSlug":"forfeit-flip-fairness","fixtureId":"forfeit-flip-fairness-v0","issuedAt":"2026-06-08T02:00:00.000Z","expiresAt":"2027-06-08T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:b61ea88c49baa5f3-forfeit-flip-fairness","snapshotRoot":"b61ea88c49baa5f3","signature":"nocklab-sig-forfeit-flip-fairness-v0","invariantPacks":[]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-forfeit-dice-verified","label":"Forfeit Dice Fairness Verified","kind":"app-report","status":"verified","reportSlug":"forfeit-dice-fairness","fixtureId":"forfeit-dice-fairness-v0","issuedAt":"2026-06-08T02:00:00.000Z","expiresAt":"2027-06-08T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:28d565bae5f10035-forfeit-dice-fairness","snapshotRoot":"28d565bae5f10035","signature":"nocklab-sig-forfeit-dice-fairness-v0","invariantPacks":[]},"sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"}},{"id":"badge-forfeit-roulette-model-attested","label":"Forfeit Roulette (fairness) (model-attested)","kind":"model-attested","status":"verified","reportSlug":"forfeit-roulette-fairness","fixtureId":"forfeit-roulette-fairness-v0","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:15971a243afdd65e7e4b78a59e7c108adb4c499e7373d9b9f17e7ab1f79750a6","snapshotRoot":"e530990846751537","signature":"KBFxv4MyoEjvZWnHmDmJMeC30DyP4g8K6lq2pd8ves2JRrFy4lgJEVERS5NQF6gwCthlA+0E1F4jiv2tyGsUBA==","invariantPacks":[]},"sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"}},{"id":"badge-forfeit-slots-model-attested","label":"Forfeit Slots (fairness) (model-attested)","kind":"model-attested","status":"verified","reportSlug":"forfeit-slots-fairness","fixtureId":"forfeit-slots-fairness-v0","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:7de915e64de11d274fe9103b703d78ab593994fdff2194050695f90c9847024c","snapshotRoot":"427ceff7d2dc05d1","signature":"0x8tpV2JTmdGR57nXQZEeEy2QevZLIk9uO7cgfa7Dkms3vAYutagsPrZEmhtzRs3oa1H+99jvC85A0TAkP4VCA==","invariantPacks":[]},"sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"}},{"id":"badge-forfeit-highcard-model-attested","label":"Forfeit High Card (fairness) (model-attested)","kind":"model-attested","status":"verified","reportSlug":"forfeit-highcard-fairness","fixtureId":"forfeit-highcard-fairness-v0","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:1b7ec5a1380ae580e878610c787804d687b423bf9735e7b4814600ef619181ef","snapshotRoot":"41ecb8800fc7f7df","signature":"5rLj3XsoDtJ8yFSMHxJI74GtS3LacIV+5Ca/qlOpZ759joixwX0JsH7k8BoXRkBzameu9WkaIlxqitpZ8+OZDA==","invariantPacks":[]},"sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"}},{"id":"badge-forfeit-limbo-model-attested","label":"Forfeit Limbo (fairness) (model-attested)","kind":"model-attested","status":"verified","reportSlug":"forfeit-limbo-fairness","fixtureId":"forfeit-limbo-fairness-v0","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:b826c890d59565ff142c81b5764a80caf65b452bb947d96cd9de5c59dd1ac0ad","snapshotRoot":"e20ee592bdf03a70","signature":"j+FAChtBmBzsYhv7JexeWzR4cJAPAQ8jDwNjY+hjbQZ8Ro6d7Sg9BLD/t8lFAlD56CVkGhJ+cGO2GpVv6XxKBA==","invariantPacks":[]},"sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"}},{"id":"badge-chain-anchored-base-redeem-001","label":"Base bridge-redeem — chain-anchored","kind":"chain-anchored","status":"verified","reportSlug":"chain-anchored-base-redeem","fixtureId":"chain-anchored-base-redeem-v0","issuedAt":"2026-06-11T00:00:00.000Z","expiresAt":"2027-06-11T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","evidence":{"reportHash":"sha256:9e57b9b8d635dcbb12c5dcb65af4fb405bdbf399a310fd58bddb3cf19aa38b68","snapshotRoot":"0xd298e7b90529076275f55f00d78548f703c7c2a91700153d7fafedbc5e284ebc","signature":"Ixczjz6DwP66dUcrRqNoH24XlR5LPjgNbiq59SovQTSh6YqzYmV6Cr1a6S+Cv3Y3k4r+EXeYCEDQ7DPty7OOBg==","invariantPacks":[],"chainAnchor":{"network":"base-sepolia","chainId":84532,"verifiability":"evm-full","blockHash":"0xd298e7b90529076275f55f00d78548f703c7c2a91700153d7fafedbc5e284ebc","blockHeight":42649893,"txId":"0xf14397f1ae042cd2f5930534d3ddcc93d0b92ada4edf3efc9b18c3ed19867a89","witnessFormat":"evm-receipt","engineVersion":"evm-84532","contract":"0xaab9a8889a7714864a6b90a9f76a092f7b4df4f3","eventTopic":"0x934d4a16140d0cf22c85c70dc423d2030b3473b02e5c37c5edc50c09a8fb2d8c","logIndex":57}},"sourceAnchor":{"commit":"chain-anchored","build":"chain-anchor-v0"}}],"badgeIssuanceReceipts":[{"id":"issue-payment-flow-v0","badgeId":"badge-payment-flow-verified","issuedAt":"2026-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:33366b421082977b7aebec9a05488298b40491de01daf7fa1809aeb968d5c897","signature":"mgjCPSTBY7Ca7a2SmBk0lmJIxoEbrqIpkSbQQUHvrNYnJhA2N4JolwQpVSmgIdj+N2suqTLXucC7TP05tFynBA==","signedPayload":{"badgeId":"badge-payment-flow-verified","status":"verified","reportHash":"sha256:3a6d6bff59cb624f-payment-flow","snapshotRoot":"3a6d6bff59cb624f","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"app-report"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-05-30T02:10:00.000Z"}},{"id":"issue-payment-flow-alpha","badgeId":"badge-payment-flow-legacy","issuedAt":"2026-05-20T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:49f15d0499a675e23ded6c8a5631dd9138a8d7daff39ad6cdcc7c8a58dddaad9","signature":"syEs7zYZSi+lK8GmEkEeR2bYXIQ8aZzbRH/5R0pd9pCn53RdCpUxu0ak/TCbfeCl0oG8rvdc+ml1tFV6PuJwCA==","signedPayload":{"badgeId":"badge-payment-flow-legacy","status":"verified","reportHash":"sha256:legacy-payment-flow-alpha","snapshotRoot":"payment-flow-alpha-root","issuedAt":"2026-05-20T02:00:00.000Z","expiresAt":"2027-05-20T02:00:00.000Z","sourceAnchor":{"commit":"5d022ced5504e1f2a3b4c5d6e7f80910a1b2c3d4","build":"build-5d022ced5504e1f2a3b4c5d6e7f80910a1b2c3d4"},"kind":"app-report"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-05-20T02:10:00.000Z"}},{"id":"issue-solver-a-v0","badgeId":"badge-solver-a-qualified","issuedAt":"2026-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:b7f7b94a291fb242dd87757bb9631874fe2539e1e65368a4c39f6ae8de7a98da","signature":"xvdst+nWnEA/HmnTzhfKsXs1ku8gnI3EFqTFlpfzrKuDMfbJYWqBihwOIjARJa1yGF4VAFi1dvj9V6fFR9yjCg==","signedPayload":{"badgeId":"badge-solver-a-qualified","status":"verified","reportHash":"sha256:b84c2c688d08c3c2-intent-settlement","snapshotRoot":"b84c2c688d08c3c2","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"solver-score"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-05-30T02:10:00.000Z"}},{"id":"issue-token-compatible-v0","badgeId":"badge-mock-token-compatible","issuedAt":"2026-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:06f789a6c2b383a5b0d32026f91f9614c035f17a0c0e298a349d6ea7fe980c84","signature":"MYypjbNFHv/6vWMXU6pmdKmFrhdetkEJdogwEKiSvl2+YX7Yw0uSIPBl+dBrHofKD0ar2UquQ433dUjmo7aADA==","signedPayload":{"badgeId":"badge-mock-token-compatible","status":"verified","reportHash":"sha256:cd7cc46d9b8d0f59-token-issuance","snapshotRoot":"cd7cc46d9b8d0f59","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"token-compatibility"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-05-30T02:10:00.000Z"}},{"id":"issue-compute-alpha-v0","badgeId":"badge-compute-provider-alpha","issuedAt":"2026-05-30T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:a5942b307241763c47fa5a01c2314d248d57da8f799987be709d50dc19f4a3b7","signature":"4keu+r9XHrmi4V7jSfNBmr81nbVDZzwmZ5ocXs1OudFjsqY+nkSJNvRsVnLaUQI6kr0XWJ0fVbT+AkiRv8q3Bg==","signedPayload":{"badgeId":"badge-compute-provider-alpha","status":"verified","reportHash":"sha256:benchmark-alpha-provider-profile","snapshotRoot":"compute-alpha-jobclass-root","issuedAt":"2026-05-30T02:00:00.000Z","expiresAt":"2027-05-30T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"compute-benchmark"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-05-30T02:10:00.000Z"}},{"id":"issue-forfeit-flip-v0","badgeId":"badge-forfeit-flip-verified","issuedAt":"2026-06-08T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:d606be4baf1140cd726b8c174b9d6f2f6653e6223dd226902a45ba558c8de84f","signature":"HbjUvqilXzCc1AKuw2v+iPOUjc0el4p3wkOeT374u2UpZLRqOXJId2AZHRvIPByMUvspw/2YsWfY3mjWkPM/Bw==","signedPayload":{"badgeId":"badge-forfeit-flip-verified","status":"verified","reportHash":"sha256:b61ea88c49baa5f3-forfeit-flip-fairness","snapshotRoot":"b61ea88c49baa5f3","issuedAt":"2026-06-08T02:00:00.000Z","expiresAt":"2027-06-08T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"app-report"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-06-08T02:10:00.000Z"}},{"id":"issue-forfeit-dice-v0","badgeId":"badge-forfeit-dice-verified","issuedAt":"2026-06-08T02:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:62cfeb7f9be2cf74fa7588d2ca7d68c0737a3f8d7d142b63299c6fff40d9fcdc","signature":"69pUKt6/aBpXCei+0H6zqBoirY29cdaepbuArsl4a/OkVPzHLm5Yfqy+lyzRggNco37b7VjwUPGPU6eOFNnEDw==","signedPayload":{"badgeId":"badge-forfeit-dice-verified","status":"verified","reportHash":"sha256:28d565bae5f10035-forfeit-dice-fairness","snapshotRoot":"28d565bae5f10035","issuedAt":"2026-06-08T02:00:00.000Z","expiresAt":"2027-06-08T02:00:00.000Z","sourceAnchor":{"commit":"33ba97b1e206dd89b15c61b72b7802caf2136c18","build":"build-33ba97b1e206dd89b15c61b72b7802caf2136c18"},"kind":"app-report"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-06-08T02:10:00.000Z"}},{"id":"issue-badge-forfeit-roulette-model-attested","badgeId":"badge-forfeit-roulette-model-attested","issuedAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:263e64ef10761f36c1c7ecb335cee8ad781c5bcfbd39912b1928ea3df04e1794","signature":"KBFxv4MyoEjvZWnHmDmJMeC30DyP4g8K6lq2pd8ves2JRrFy4lgJEVERS5NQF6gwCthlA+0E1F4jiv2tyGsUBA==","signedPayload":{"badgeId":"badge-forfeit-roulette-model-attested","status":"verified","reportHash":"sha256:15971a243afdd65e7e4b78a59e7c108adb4c499e7373d9b9f17e7ab1f79750a6","snapshotRoot":"e530990846751537","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"},"kind":"model-attested"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"1970-01-01T00:00:00.000Z"}},{"id":"issue-badge-forfeit-slots-model-attested","badgeId":"badge-forfeit-slots-model-attested","issuedAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:75d7bc03cd9740baa781fe18342b10138a5c864ed2d9daf5fb8e40c0622e45f3","signature":"0x8tpV2JTmdGR57nXQZEeEy2QevZLIk9uO7cgfa7Dkms3vAYutagsPrZEmhtzRs3oa1H+99jvC85A0TAkP4VCA==","signedPayload":{"badgeId":"badge-forfeit-slots-model-attested","status":"verified","reportHash":"sha256:7de915e64de11d274fe9103b703d78ab593994fdff2194050695f90c9847024c","snapshotRoot":"427ceff7d2dc05d1","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"},"kind":"model-attested"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"1970-01-01T00:00:00.000Z"}},{"id":"issue-badge-forfeit-highcard-model-attested","badgeId":"badge-forfeit-highcard-model-attested","issuedAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:1890e74ac455e5b22434ff6055ed27a80dee5d768f6bc8a098c50ed7ebd56a8b","signature":"5rLj3XsoDtJ8yFSMHxJI74GtS3LacIV+5Ca/qlOpZ759joixwX0JsH7k8BoXRkBzameu9WkaIlxqitpZ8+OZDA==","signedPayload":{"badgeId":"badge-forfeit-highcard-model-attested","status":"verified","reportHash":"sha256:1b7ec5a1380ae580e878610c787804d687b423bf9735e7b4814600ef619181ef","snapshotRoot":"41ecb8800fc7f7df","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"},"kind":"model-attested"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"1970-01-01T00:00:00.000Z"}},{"id":"issue-badge-forfeit-limbo-model-attested","badgeId":"badge-forfeit-limbo-model-attested","issuedAt":"1970-01-01T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:15990c77aa462e6cb634148d85968d0e1614585a330e46d67e8468f73c1b7826","signature":"j+FAChtBmBzsYhv7JexeWzR4cJAPAQ8jDwNjY+hjbQZ8Ro6d7Sg9BLD/t8lFAlD56CVkGhJ+cGO2GpVv6XxKBA==","signedPayload":{"badgeId":"badge-forfeit-limbo-model-attested","status":"verified","reportHash":"sha256:b826c890d59565ff142c81b5764a80caf65b452bb947d96cd9de5c59dd1ac0ad","snapshotRoot":"e20ee592bdf03a70","issuedAt":"1970-01-01T00:00:00.000Z","expiresAt":"1970-01-01T00:00:00.000Z","sourceAnchor":{"commit":"uncommitted","build":"lab-reissue"},"kind":"model-attested"},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"1970-01-01T00:00:00.000Z"}},{"id":"issue-badge-chain-anchored-base-redeem-001","badgeId":"badge-chain-anchored-base-redeem-001","issuedAt":"2026-06-11T00:00:00.000Z","issuer":"Nocksperimental Trust Registry","issuerKeyId":"nocksperimental-registry-ed25519-prod-v1","payloadDigest":"sha256:266be43a2dd9919598f0285c07f97cb27ee32f2df0245166c6d1ec19a45eb673","signature":"Ixczjz6DwP66dUcrRqNoH24XlR5LPjgNbiq59SovQTSh6YqzYmV6Cr1a6S+Cv3Y3k4r+EXeYCEDQ7DPty7OOBg==","signedPayload":{"badgeId":"badge-chain-anchored-base-redeem-001","status":"verified","reportHash":"sha256:9e57b9b8d635dcbb12c5dcb65af4fb405bdbf399a310fd58bddb3cf19aa38b68","snapshotRoot":"0xd298e7b90529076275f55f00d78548f703c7c2a91700153d7fafedbc5e284ebc","issuedAt":"2026-06-11T00:00:00.000Z","expiresAt":"2027-06-11T00:00:00.000Z","sourceAnchor":{"commit":"chain-anchored","build":"chain-anchor-v0"},"kind":"chain-anchored","chainAnchor":{"network":"base-sepolia","chainId":84532,"verifiability":"evm-full","blockHash":"0xd298e7b90529076275f55f00d78548f703c7c2a91700153d7fafedbc5e284ebc","blockHeight":42649893,"txId":"0xf14397f1ae042cd2f5930534d3ddcc93d0b92ada4edf3efc9b18c3ed19867a89","witnessFormat":"evm-receipt","engineVersion":"evm-84532","contract":"0xaab9a8889a7714864a6b90a9f76a092f7b4df4f3","eventTopic":"0x934d4a16140d0cf22c85c70dc423d2030b3473b02e5c37c5edc50c09a8fb2d8c","logIndex":57}},"verification":{"status":"valid","algorithm":"ed25519","checkedAt":"2026-06-11T00:00:00.000Z"}}],"badgeRevocations":[{"id":"revocation-payment-flow-legacy-v0","badgeId":"badge-payment-flow-legacy","statusBeforeRevocation":"verified","revokedAt":"2026-05-30T02:05:00.000Z","revokedBy":"Nocksperimental Trust Registry","reason":"Superseded by payment-flow-v0 evidence bundle.","replacementBadgeId":"badge-payment-flow-verified","evidence":{"reportHash":"sha256:3a6d6bff59cb624f-payment-flow","snapshotRoot":"3a6d6bff59cb624f","signature":"nocklab-sig-revoke-payment-flow-legacy-v0"}}],"solverScorecards":[{"id":"solver-score-solver-a-v0","solverSlug":"solver-a","solverName":"Solver A","status":"qualified","score":94,"grade":"A","reportSlug":"intent-settlement","fixtureId":"intent-settlement-v0","metrics":{"fillRate":0.99,"failureRate":0,"medianSettlementMs":740,"proofLatencyMs":1180,"replayCount":128},"signals":["settles intent lifecycle","records chosen solver","keeps failure alert clear","passes replay determinism check"]}],"tokenCompatibilityReports":[{"id":"token-compat-mock-v0","tokenSymbol":"MOCK","issuerWorkspace":"issuer-upgrade-private","status":"compatible","score":96,"reportSlug":"token-issuance","fixtureId":"token-issuance-v0","badgeId":"badge-mock-token-compatible","wallets":[{"name":"Reference Wallet","status":"pass","notes":"Reads metadata, total supply, holder balance, and transfer events."},{"name":"Treasury Wallet","status":"pass","notes":"Accepts issuer and treasury authority model."},{"name":"Indexer Wallet","status":"pass","notes":"Can display issuance lifecycle and stable decimal metadata."}],"requirements":{"supplyConserved":true,"metadataStable":true,"authorizedIssuance":true,"transferCompatible":true}}],"computeBenchmarkProfiles":[{"id":"compute-profile-alpha-v0","providerSlug":"alpha-compute","providerName":"Alpha Compute","status":"qualified","score":91,"benchmarkReportSlug":"compute-benchmark-alpha","badgeId":"badge-compute-provider-alpha","jobClasses":[{"name":"noun-eval-small","score":94,"p50Ms":180,"p95Ms":420,"reproducibility":0.995},{"name":"proof-batch-medium","score":89,"p50Ms":1280,"p95Ms":2440,"reproducibility":0.982},{"name":"state-replay-large","score":90,"p50Ms":3120,"p95Ms":6100,"reproducibility":0.976}],"sla":{"uptime":0.998,"failureRate":0.004,"sampleSize":512}}],"trustConsumers":[{"id":"consumer-payments-app","name":"Payment Flow App","category":"app","uses":[{"kind":"badge","badgeId":"badge-payment-flow-verified","reportSlug":"payment-flow","purpose":"Display launch readiness to users before routing value."}]},{"id":"consumer-reference-wallet","name":"Reference Wallet","category":"wallet","uses":[{"kind":"token-compatibility","compatibilityReportId":"token-compat-mock-v0","purpose":"Gate token listing by compatibility score and issuer authority evidence."}]},{"id":"consumer-audit-fund","name":"Audit Readiness Fund","category":"fund","uses":[{"kind":"solver-score","scorecardId":"solver-score-solver-a-v0","purpose":"Screen solver quality before routing intent flow."},{"kind":"badge","badgeId":"badge-payment-flow-verified","reportSlug":"payment-flow","purpose":"Require verified reports before integration diligence."}]},{"id":"consumer-alpha-provider","name":"Alpha Compute","category":"provider","uses":[{"kind":"compute-benchmark","benchmarkProfileId":"compute-profile-alpha-v0","purpose":"Publish neutral benchmark evidence for provider reputation."}]}]},"sampleReport":{"reportId":"lab_hello_counter_001","fixtureId":"hello-counter-v0","generatedAt":"2026-05-30T00:00:00.000Z","app":{"name":"Hello Counter","slug":"hello-counter","version":"0.0.1","kernel":"hoon-counter-v0"},"environment":{"mode":"mock-fakenet","grpcEndpoint":"127.0.0.1:5555","fakenetCommand":"nockchain --fakenet --bind-public-grpc-addr 127.0.0.1:5555 --no-default-peers","notes":["Modeled after the official local fakenet flow.","This report is mock-backed until the adapter can call a live node."]},"summary":{"status":"pass","stepsPassed":4,"stepsFailed":0,"invariantsPassed":4,"invariantsFailed":0,"alertsClear":0,"alertsTriggered":0,"snapshotsCaptured":5,"durationMs":128},"invariantPacks":[],"steps":[{"id":"boot-fakenet","type":"fakenet","title":"Boot mock fakenet profile","status":"pass","expectation":"gRPC endpoint configured at 127.0.0.1:5555","observed":"Mock endpoint accepted for deterministic run","beforeHash":"7f278f7d37bf2b99","afterHash":"7f278f7d37bf2b99","stateDiffs":[],"durationMs":24},{"id":"poke-increment-alice","type":"poke","title":"Alice increments counter","status":"pass","actor":"alice","target":"/counter","expectation":"counter moves from 0 to 1","observed":"counter=1","beforeHash":"7f278f7d37bf2b99","afterHash":"3e0e6d4db4892e2d","stateDiffs":[{"path":"counter","before":"0","after":"1"}],"durationMs":31},{"id":"poke-increment-bob","type":"poke","title":"Bob increments counter","status":"pass","actor":"bob","target":"/counter","expectation":"counter moves from 1 to 2","observed":"counter=2","beforeHash":"3e0e6d4db4892e2d","afterHash":"937aeb078db9aa10","stateDiffs":[{"path":"counter","before":"1","after":"2"},{"path":"balances.alice","before":"1000","after":"700"},{"path":"balances.bob","before":"0","after":"300"}],"durationMs":29},{"id":"peek-counter","type":"peek","title":"Read counter value","status":"pass","target":"/counter","expectation":"peek returns 2","observed":"2","beforeHash":"937aeb078db9aa10","afterHash":"937aeb078db9aa10","stateDiffs":[],"durationMs":44}],"invariants":[{"id":"counter-non-negative","title":"Counter is never negative","severity":"critical","status":"pass","observed":"2","expected":">= 0"},{"id":"counter-final-value","title":"Counter final value matches fixture","severity":"medium","status":"pass","observed":"2","expected":"2"},{"id":"poke-actors-declared","title":"Every poke has a declared actor","severity":"high","status":"pass","observed":"2/2 poke steps declared actors","expected":"all poke steps declare actors"},{"id":"supply-conserved","title":"NOCK-denominated balances conserve supply","severity":"critical","status":"pass","observed":"alice=700, bob=300, total=1000","expected":"totalSupply=1000"}],"alerts":[],"adapterObservations":[],"stateSnapshots":[{"label":"Initial state","stateHash":"7f278f7d37bf2b99","state":{"counter":0,"totalSupply":1000,"balances":{"alice":1000,"bob":0}}},{"label":"After boot-fakenet","stepId":"boot-fakenet","stateHash":"7f278f7d37bf2b99","state":{"counter":0,"totalSupply":1000,"balances":{"alice":1000,"bob":0}}},{"label":"After poke-increment-alice","stepId":"poke-increment-alice","stateHash":"3e0e6d4db4892e2d","state":{"counter":1,"totalSupply":1000,"balances":{"alice":1000,"bob":0}}},{"label":"After poke-increment-bob","stepId":"poke-increment-bob","stateHash":"937aeb078db9aa10","state":{"counter":2,"totalSupply":1000,"balances":{"alice":700,"bob":300}}},{"label":"After peek-counter","stepId":"peek-counter","stateHash":"937aeb078db9aa10","state":{"counter":2,"totalSupply":1000,"balances":{"alice":700,"bob":300}}}],"stateDiffs":[{"path":"counter","before":"0","after":"2"},{"path":"balances.bob","before":"0","after":"300"}],"nextActions":["Replace mock step execution with a local fakenet gRPC adapter.","Persist generated reports under a project workspace.","Add per-app invariant packs for payment, intent, bridge, and token workflows."]}}