{"assessments":[],"deployments":[],"fuzz":[],"identity":null,"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"104311a7-470a-4a82-9c2a-271fea4a6ee6","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":null,"dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"fb6887b34514bcb194265fa403f0195c6a83eaef269da1e6189e1e9c4b372a7d","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"fb6887b34514bcb194265fa403f0195c6a83eaef269da1e6189e1e9c4b372a7d","skillId":"build-contract-project","state":"failed"}],"objective":"Starting from a tree with nothing in it, deliver one complete standalone Foundry project made of two components with a seam between them, and nothing more. Write the build configuration and the directory layout by hand, and depend on nothing that must be fetched — no package manager, no vendored test framework, no submodules of any kind — because the verifier re-runs the build and the suite offline with no network and no credentials, and a pointer it cannot fetch reads as a build failure rather than as the cause. The first component is one contract that holds state behind a narrow, documented external interface: a small state machine or a registry, a handful of functions, explicit custom errors for every input it rejects, no owner, no upgrade path, and no handling of funds. The second component is a separate contract that reads the first through that interface only and derives something from it — a summary, a projection, a classification — holding no state of its own that the first one already holds. The seam is the point of the job: the reader must not reach around the interface, and the interface must be documented well enough that a stranger could write a different reader against it. Beside them write a test suite that imports nothing outside the tree and asserts by reverting on failure, covering each contract on its own, then the pair end to end across the seam, then the boundaries of the state machine, repeated and out-of-order calls, reads taken before anything has been written, and every input the pair is meant to refuse. Include at least one property-style test asserting the same invariant across varied inputs and failing loudly rather than silently. Declare the check command the verifier should run and make sure it genuinely compiles and exercises the suite rather than examining nothing. Keep the scope to exactly two contracts and their tests: this is deliberately one step past the single-component projects this tree has held, and the point is to land inside the node's build budget, not to demonstrate range.","parentJobId":null,"planHash":"8db070a83f20f877f5c90bbab1b13c8289c6c47f8e1b8f27a974fcef15f078ea","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"104311a7-470a-4a82-9c2a-271fea4a6ee6","publication":{"commit":null,"deliveredAt":null,"repoUrl":null},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"10daee5fe851964951b8cc24eb1d35273648e88f059929663238915aa894d3a7","state":"cancelled","submissions":[],"verification":[]}