{"entry":{"fixtureId":"intent-settlement-v0","appSlug":"intent-settlement","appName":"Intent Settlement","reportId":"lab_intent-settlement-v0_20260605165557217","generatedAt":"2026-06-05T16:55:57.217Z","status":"pass","jsonPath":"/bundle/server-functions/default/.nocklab/intent-settlement.report.json","markdownPath":"/bundle/server-functions/default/.nocklab/intent-settlement.report.md","reportHash":"sha256:4e9236e06c5f3369dd97f4d6fa4e83da2b8043e7fc3f09b00dd2614f5069a8e2","snapshotRoot":"b84c2c688d08c3c2","badgeCandidate":{"id":"badge-candidate-intent-settlement","label":"Intent Settlement Verification Candidate","reportSlug":"intent-settlement","fixtureId":"intent-settlement-v0","status":"ready","signatureStatus":"unsigned","evidence":{"reportHash":"sha256:4e9236e06c5f3369dd97f4d6fa4e83da2b8043e7fc3f09b00dd2614f5069a8e2","snapshotRoot":"b84c2c688d08c3c2","invariantPacks":["intents-core-v0"]}},"stepsPassed":5,"stepsTotal":5,"invariantsPassed":6,"invariantsTotal":6,"alertsTriggered":0,"snapshotsCaptured":6,"adapterObservationCount":0,"invariantPackCount":1},"report":{"reportId":"lab_intent-settlement-v0_20260605165557217","fixtureId":"intent-settlement-v0","generatedAt":"2026-06-05T16:55:57.217Z","app":{"name":"Intent Settlement","slug":"intent-settlement","version":"0.1.0","kernel":"mock-intent-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":["Mock intent lifecycle from declaration through solver response and settlement.","Uses pack-level invariants to model a future solver QA workflow."]},"summary":{"status":"pass","stepsPassed":5,"stepsFailed":0,"invariantsPassed":6,"invariantsFailed":0,"alertsClear":0,"alertsTriggered":0,"snapshotsCaptured":6,"durationMs":85},"invariantPacks":[{"id":"intents-core-v0","name":"Intent Settlement Core","domain":"intents","version":"0.1.0","path":"../packs/intents.invariants.json"}],"steps":[{"id":"boot-fakenet","type":"fakenet","title":"Boot mock intent fakenet","status":"pass","expectation":"gRPC endpoint configured at 127.0.0.1:5555","observed":"mock-fakenet profile ready at 127.0.0.1:5555","beforeHash":"890773812347dc11","afterHash":"890773812347dc11","stateDiffs":[],"durationMs":19},{"id":"declare-intent","type":"poke","title":"User declares an execution intent","status":"pass","actor":"user","target":"/intent/declare","expectation":"intent.status == open","observed":"open","beforeHash":"890773812347dc11","afterHash":"9c90bfd0db39b254","stateDiffs":[{"path":"intent.status","before":"declared","after":"open"},{"path":"intent.events","before":"[]","after":"[{\"type\":\"declared\",\"actor\":\"user\"}]"}],"durationMs":26},{"id":"solver-quotes","type":"poke","title":"Solver responds with executable quote","status":"pass","actor":"solver-a","target":"/intent/quote","expectation":"intent.solver == solver-a","observed":"solver-a","beforeHash":"9c90bfd0db39b254","afterHash":"fa601ac078417ad6","stateDiffs":[{"path":"intent.status","before":"open","after":"quoted"},{"path":"intent.solver","before":"null","after":"solver-a"},{"path":"intent.quote","before":"null","after":"{\"outputAmount\":475,\"fee\":5}"},{"path":"intent.events","before":"[{\"type\":\"declared\",\"actor\":\"user\"}]","after":"[{\"type\":\"declared\",\"actor\":\"user\"},{\"type\":\"quoted\",\"actor\":\"solver-a\"}]"}],"durationMs":33},{"id":"settle-intent","type":"poke","title":"Solver settles the intent","status":"pass","actor":"solver-a","target":"/intent/settle","expectation":"intent.status == settled","observed":"settled","beforeHash":"fa601ac078417ad6","afterHash":"b84c2c688d08c3c2","stateDiffs":[{"path":"ledger.balances.user","before":"1000","after":"1075"},{"path":"ledger.balances.liquidity-pool","before":"5000","after":"4925"},{"path":"intent.status","before":"quoted","after":"settled"},{"path":"intent.settlement","before":"null","after":"{\"result\":\"filled\",\"outputAmount\":475}"},{"path":"intent.events","before":"[{\"type\":\"declared\",\"actor\":\"user\"},{\"type\":\"quoted\",\"actor\":\"solver-a\"}]","after":"[{\"type\":\"declared\",\"actor\":\"user\"},{\"type\":\"quoted\",\"actor\":\"solver-a\"},{\"type\":\"settled\",\"actor\":\"solver-a\"}]"}],"durationMs":40},{"id":"peek-intent-settlement","type":"peek","title":"Read settled intent result","status":"pass","target":"/intent","expectation":"intent.settlement.result == filled","observed":"filled","beforeHash":"b84c2c688d08c3c2","afterHash":"b84c2c688d08c3c2","stateDiffs":[],"durationMs":47}],"invariants":[{"id":"intent-terminal-settled","title":"Intent reaches settled terminal state","severity":"critical","status":"pass","observed":"settled","expected":"intent.status == settled"},{"id":"intent-solver-recorded","title":"Settled intent records the chosen solver","severity":"high","status":"pass","observed":"solver-a","expected":"intent.solver == solver-a"},{"id":"intent-authorized-actors","title":"Intent pokes are performed by authorized actors","severity":"high","status":"pass","observed":"3/3 poke actors authorized","expected":"actors in [user, solver-a]"},{"id":"intent-no-failure-alert","title":"Intent failure alert remains clear","severity":"critical","status":"pass","observed":"false","expected":"alerts.failed == false"},{"id":"intent-ledger-supply-conserved","title":"Intent ledger conserves supply","severity":"critical","status":"pass","observed":"total=6000, supply=6000","expected":"ledger.balances sum equals ledger.totalSupply"},{"id":"intent-settlement-filled","title":"Intent settlement result is filled","severity":"high","status":"pass","observed":"filled","expected":"intent.settlement.result == filled"}],"alerts":[],"adapterObservations":[],"stateSnapshots":[{"label":"Initial state","stateHash":"890773812347dc11","state":{"ledger":{"totalSupply":6000,"balances":{"user":1000,"solver-a":0,"liquidity-pool":5000}},"intent":{"status":"declared","amount":400,"solver":null,"quote":null,"settlement":null,"events":[]},"alerts":{"failed":false}}},{"label":"After boot-fakenet","stateHash":"890773812347dc11","state":{"ledger":{"totalSupply":6000,"balances":{"user":1000,"solver-a":0,"liquidity-pool":5000}},"intent":{"status":"declared","amount":400,"solver":null,"quote":null,"settlement":null,"events":[]},"alerts":{"failed":false}},"stepId":"boot-fakenet"},{"label":"After declare-intent","stateHash":"9c90bfd0db39b254","state":{"ledger":{"totalSupply":6000,"balances":{"user":1000,"solver-a":0,"liquidity-pool":5000}},"intent":{"status":"open","amount":400,"solver":null,"quote":null,"settlement":null,"events":[{"type":"declared","actor":"user"}]},"alerts":{"failed":false}},"stepId":"declare-intent"},{"label":"After solver-quotes","stateHash":"fa601ac078417ad6","state":{"ledger":{"totalSupply":6000,"balances":{"user":1000,"solver-a":0,"liquidity-pool":5000}},"intent":{"status":"quoted","amount":400,"solver":"solver-a","quote":{"outputAmount":475,"fee":5},"settlement":null,"events":[{"type":"declared","actor":"user"},{"type":"quoted","actor":"solver-a"}]},"alerts":{"failed":false}},"stepId":"solver-quotes"},{"label":"After settle-intent","stateHash":"b84c2c688d08c3c2","state":{"ledger":{"totalSupply":6000,"balances":{"user":1075,"solver-a":0,"liquidity-pool":4925}},"intent":{"status":"settled","amount":400,"solver":"solver-a","quote":{"outputAmount":475,"fee":5},"settlement":{"result":"filled","outputAmount":475},"events":[{"type":"declared","actor":"user"},{"type":"quoted","actor":"solver-a"},{"type":"settled","actor":"solver-a"}]},"alerts":{"failed":false}},"stepId":"settle-intent"},{"label":"After peek-intent-settlement","stateHash":"b84c2c688d08c3c2","state":{"ledger":{"totalSupply":6000,"balances":{"user":1075,"solver-a":0,"liquidity-pool":4925}},"intent":{"status":"settled","amount":400,"solver":"solver-a","quote":{"outputAmount":475,"fee":5},"settlement":{"result":"filled","outputAmount":475},"events":[{"type":"declared","actor":"user"},{"type":"quoted","actor":"solver-a"},{"type":"settled","actor":"solver-a"}]},"alerts":{"failed":false}},"stepId":"peek-intent-settlement"}],"stateDiffs":[{"path":"ledger.balances.user","before":"1000","after":"1075"},{"path":"ledger.balances.liquidity-pool","before":"5000","after":"4925"},{"path":"intent.status","before":"declared","after":"settled"},{"path":"intent.solver","before":"null","after":"solver-a"},{"path":"intent.quote","before":"null","after":"{\"outputAmount\":475,\"fee\":5}"},{"path":"intent.settlement","before":"null","after":"{\"result\":\"filled\",\"outputAmount\":475}"},{"path":"intent.events","before":"[]","after":"[{\"type\":\"declared\",\"actor\":\"user\"},{\"type\":\"quoted\",\"actor\":\"solver-a\"},{\"type\":\"settled\",\"actor\":\"solver-a\"}]"}],"nextActions":["Replace mock poke and peek execution with local fakenet adapter calls.","Replace command-backed fakenet metadata probes with stable gRPC-native probes once node surfaces are available.","Persist generated reports under a project workspace.","Add app-specific invariant packs as the NockApp interface stabilizes."]},"markdown":"# Intent Settlement Lab Report\n\n- Report: lab_intent-settlement-v0_20260605165557217\n- Fixture: intent-settlement-v0\n- Status: pass\n- Steps: 5 passed, 0 failed\n- Invariants: 6 passed, 0 failed\n- Alerts: 0 clear, 0 triggered\n- Snapshots: 6\n\n## Steps\n\n- PASS boot-fakenet: mock-fakenet profile ready at 127.0.0.1:5555 (gRPC endpoint configured at 127.0.0.1:5555); 890773812347dc11 -> 890773812347dc11\n- PASS declare-intent: open (intent.status == open); 890773812347dc11 -> 9c90bfd0db39b254\n- PASS solver-quotes: solver-a (intent.solver == solver-a); 9c90bfd0db39b254 -> fa601ac078417ad6\n- PASS settle-intent: settled (intent.status == settled); fa601ac078417ad6 -> b84c2c688d08c3c2\n- PASS peek-intent-settlement: filled (intent.settlement.result == filled); b84c2c688d08c3c2 -> b84c2c688d08c3c2\n\n## Invariants\n\n- PASS intent-terminal-settled: settled expected intent.status == settled\n- PASS intent-solver-recorded: solver-a expected intent.solver == solver-a\n- PASS intent-authorized-actors: 3/3 poke actors authorized expected actors in [user, solver-a]\n- PASS intent-no-failure-alert: false expected alerts.failed == false\n- PASS intent-ledger-supply-conserved: total=6000, supply=6000 expected ledger.balances sum equals ledger.totalSupply\n- PASS intent-settlement-filled: filled expected intent.settlement.result == filled\n\n## Alerts\n\n- No alert policies configured.\n\n## Adapter Observations\n\n- No adapter observations captured.\n\n## State Diffs\n\n- ledger.balances.user: 1000 -> 1075\n- ledger.balances.liquidity-pool: 5000 -> 4925\n- intent.status: declared -> settled\n- intent.solver: null -> solver-a\n- intent.quote: null -> {\"outputAmount\":475,\"fee\":5}\n- intent.settlement: null -> {\"result\":\"filled\",\"outputAmount\":475}\n- intent.events: [] -> [{\"type\":\"declared\",\"actor\":\"user\"},{\"type\":\"quoted\",\"actor\":\"solver-a\"},{\"type\":\"settled\",\"actor\":\"solver-a\"}]\n\n## Snapshot Timeline\n\n- Initial state: 890773812347dc11\n- After boot-fakenet: 890773812347dc11\n- After declare-intent: 9c90bfd0db39b254\n- After solver-quotes: fa601ac078417ad6\n- After settle-intent: b84c2c688d08c3c2\n- After peek-intent-settlement: b84c2c688d08c3c2\n\n","evidence":{"stateDiffCount":7,"snapshotCount":6,"alertCount":0,"triggeredAlertCount":0,"clearAlertCount":0,"triggeredCriticalAlertCount":0,"triggeredWarningAlertCount":0,"triggeredInfoAlertCount":0,"environmentMode":"mock-fakenet","grpcEndpoint":"127.0.0.1:5555","environmentNoteCount":2,"nextActionCount":4,"firstNextAction":"Replace mock poke and peek execution with local fakenet adapter calls.","invariantPackCount":1,"invariantPackIds":["intents-core-v0"],"invariantPackDomains":["intents"],"firstInvariantPackPath":"../packs/intents.invariants.json","changedPaths":["ledger.balances.user","ledger.balances.liquidity-pool","intent.status","intent.solver","intent.quote","intent.settlement","intent.events"],"markdownPreview":"# Intent Settlement Lab Report"}}