{"_id":"zob-harness","_rev":"27-388851a1425815cfbd0777ad103f50a7","name":"zob-harness","dist-tags":{"latest":"0.17.1"},"versions":{"0.1.0":{"name":"zob-harness","version":"0.1.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.1.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"a2be3b236eb2e7fd3a0173856b60cbe0feb4252a","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.1.0.tgz","fileCount":356,"integrity":"sha512-88tvSpRc5J3UfThnYJgbM9zK+iSrnzYt/8q0+D6c1SGaJVrRpa7am0Xo6nlnlFgFtHTznce9fLfjaVqvfjW12w==","signatures":[{"sig":"MEQCIA2QtAJtHqUNJeS/qXOKgHpXGkfUIGM0+llUoRcqpFFxAiBkHoJ0v0tBZEovY8He4yW+IRzPcsy4nQTpU0qVQFpRNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3179777},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"63f1493abf0f1de4c39b6d66adbfbfc1cd098b84","scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"11.9.0","description":"A governed, human-controlled Pi harness for contract-driven agentic engineering, safety gates, specialist delegation, and software-factory workflows.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.1.0_1780317946876_0.15744049985384256","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"zob-harness","version":"0.1.1","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.1.1","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"3c0766d0a25a23414e80dca8d6fe4820eda9f4ef","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.1.1.tgz","fileCount":357,"integrity":"sha512-RmV7sl/TpY21o9kquVJmPEsDV7zlQ6pzXDBqOUfmIWAIPdKUOPbkrvxRrQ2NHLkgKvvCa8PHS3mfLtUFVIxS/A==","signatures":[{"sig":"MEQCIDCG3FNZn4mAJfoIvklcYImp++QOiDdxj1ZSYmblytkwAiAykoaZa/Zx5u/YRPu02019OtlgPiRAeWtvpoeM50eioQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3183580},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"a1b70efb75c9a26fd7cece0679a527a905d01d27","scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"11.9.0","description":"A governed, human-controlled Pi harness for contract-driven agentic engineering, safety gates, specialist delegation, and software-factory workflows.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.1.1_1780323995554_0.892999589229432","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"zob-harness","version":"0.2.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.2.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"06949d3327fff6c5708f02709885656a27a09ab0","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.2.0.tgz","fileCount":360,"integrity":"sha512-XA0brO/BtMVsuSx7L8QoDU2r+xs6JzJrHlNIHfhxmW7v9tkBAKPK7pc8Nqv4MVIFausJehc/FZUSmS1MPlSWCQ==","signatures":[{"sig":"MEUCIGZWlxRgeceq576yU7QxAs20BAo3jliP4wbKHu/qCcstAiEA6D4yVWI62+n8nJjbBwriA6e2fgEA0REfzirCMRitKZI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3296386},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"0138f3b7a79e525c177cbcd6971963c5e5200cf7","scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed, human-controlled Pi harness for contract-driven agentic engineering, safety gates, specialist delegation, and software-factory workflows.","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.2.0_1780355586880_0.3050275329219201","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"zob-harness","version":"0.3.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.3.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"8557f190edbae5ef58a461f0023f35e0c9ed3cb1","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.3.0.tgz","fileCount":420,"integrity":"sha512-SA+EROgVm0NNKHIx5NRYh1SC0nvEwnhy5PfEx7dTzVPAQD7ChriOnqIDmgXZgi6mWaPausPc8W+kqUU9KCs7+w==","signatures":[{"sig":"MEUCIEx01JZgH/9U1Ic1AUk0xSSxrTbr8NIKxrzwQUGAnnHyAiEA9GE9H9ySWIl/Vi0eu6kM+Vm0Z7YfMIvee7AtcrmJLpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3411465},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"ba38290af03058d0da893b3f63e06ca2be607ea1","scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed, human-controlled Pi harness for contract-driven agentic engineering, safety gates, specialist delegation, and software-factory workflows.","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.3.0_1780501942996_0.4455459634203238","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"zob-harness","version":"0.3.1","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.3.1","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"89236e27df41462740d484617c4befa233eb3927","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.3.1.tgz","fileCount":454,"integrity":"sha512-0zww+mujKzFf+ekhl60lp9sdwBqpVPWbCWYd3u+hlxzYjZhDNZk5SSkPDQFodXcGUvcWNTqeLfSmYBJvQwTZgw==","signatures":[{"sig":"MEYCIQCJNZS1umbSycm0qVV90Kj67ZyuLMBD1chg9S9UvA70NQIhAIUdTgAUJuYbvw4gahild3lHDO2ZaE8w+C0XQmasLvU+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3502184},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"6ef915b4c9be96a79c559050946cfbdf5d07186f","scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.3.1_1780613640717_0.684480202484921","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"zob-harness","version":"0.4.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.4.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"03158cc89f19c16b1a8fb9ceae4c815e87546003","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.4.0.tgz","fileCount":495,"integrity":"sha512-wO4GWnQWIyX6ZeEYgvQfG5IhB1C7/L7JRJTc/FEiOBMsjB1A+eHv6vanNmAY/R+Zh/VFR9LcdVaISgDv5Xrg7g==","signatures":[{"sig":"MEYCIQDALlSBjFjzJkKom2NV8swRbfPJhLUPxvUdcGSPU3emewIhAMcewPtJ189/DzvqMoD4yFJrhSGMMVf3ZCZapYMo3TKJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3670728},"type":"module","engines":{"node":">=22.0.0"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.4.0_1780656962054_0.30266293308302505","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"zob-harness","version":"0.5.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.5.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"a3a78c82cbd7990e5850d9ddf14acc84d02f6dc2","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.5.0.tgz","fileCount":499,"integrity":"sha512-XghI/IiBCTko1ZjTci360rlmwbZ2s6E6K/ZI7gVx4OIvEXICNhQptuXnwc04v5kD/KAX57XxUvAPmUAxSDZ1kA==","signatures":[{"sig":"MEUCIDLs6TxFlRU9vFj2zv/rcAk2k8RCxknx3K4wEd3j3up2AiEA1ehPNSPiwm+ps010r/lxvOgDd7isZbttHPIQJIiDbWI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3729629},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"a90852485eeb447654a51ae5a5c230b7e4d90cd9","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.5.0_1780661961609_0.05119592184708521","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"zob-harness","version":"0.6.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.6.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"f5e59922d01cf65e15fa9de5c3c0a3cc98589ca1","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.6.0.tgz","fileCount":507,"integrity":"sha512-a+6HMD6+d1dH5UTpZmzu5MLs963kSOuvHKb5pmaHZw7dldTnkZFC1ocVbl2gb0xnbSUD2fq+uLRqM36Ve3xNXw==","signatures":[{"sig":"MEYCIQDlSu/dXsHUDyYbBuNqynC/cGqFxgihKJvLsbDuqN21ZQIhAPMAVQ64XGK5i/96DvQ5KjadE3q9eawAxkJdMiDm0qgC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3770780},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"3e140f97f7622a0aa9c9d31d18f4d8b448d2e785","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.6.0_1780672150759_0.6018885401858247","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"zob-harness","version":"0.7.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.7.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"42f84f8b1fac20f413321de86f0d843dc38a8c6e","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.7.0.tgz","fileCount":508,"integrity":"sha512-1z/pB/Hr6aeFFbeJEGuJ9J89xUZBGtlAGWx5z58bVJEQNl3Oe8HbH3f6GO1ZpkaNjf3+YzEAi4gGJzQx5eE86Q==","signatures":[{"sig":"MEQCIGLSynXTG/+e0KSRHFAcvJs259tAAGly1TiX2SS3D8BMAiAvw5FewwQ1aM6gDAc78pLlrjJjtrAlMvup+p2QDPn9pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3796110},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"4205ae83934df6d972e98ffbd3fd47c373b931e7","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.7.0_1780674283120_0.11939289562412525","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"zob-harness","version":"0.7.1","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.7.1","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"62266fd533a4253e28734d207ed46bdb78a57a59","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.7.1.tgz","fileCount":508,"integrity":"sha512-uuIH92Hz5kl1TTudOk8YuZ5k3BrudYhh6asZ57dJgdtI9EerJUHV2d+PATcAhJdpnztbC2TzF9fsXCa7jQkxCg==","signatures":[{"sig":"MEQCIF3JpzCJCdRW32LeB98XZoNG3bArKPuWPt0UEbn2Cs3JAiArmQ89Y938KwcGNgX+TCGQqLQAkvlhg0q/K3/csY+Wng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3808667},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"b33d451483ec6db0655b7715666b6f7d4ce1eea9","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.7.1_1780675564620_0.29186257734940524","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"zob-harness","version":"0.8.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.8.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"01e83f1eacee654bb83a315bc24ba7de38bc9135","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.8.0.tgz","fileCount":524,"integrity":"sha512-A/1DWVJswlgY1+5EYXb9knm5Qw5u1iy/EAqBHu0lMCnrWNA0fm1NDkewxZWXEjHrh0pHf0yWThivGkIE5s9vBQ==","signatures":[{"sig":"MEUCIH6iMLPXsHfHvpoVB3ywuOxjFkCVl1chTUiQ7KZz5vg0AiEA5MgMb5AleVHrBibnj6hWIjy77dqQJdzebK3B4w9S6tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3937387},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"e97853a0a0f1754fb5daa86950c739d2286e4b10","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.8.0_1780695286419_0.47874832961924496","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"zob-harness","version":"0.9.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.9.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"1ab250b2f8045aa9af62910c9d295552458481d6","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.9.0.tgz","fileCount":531,"integrity":"sha512-n4VjMg2xSpF5JigSRVvHfjPDkkDCBiuyiSHwhmwX4AD0cykduV4F6IgEmcDHTMg52ryv7aeAXgQhyR8zt2d1Og==","signatures":[{"sig":"MEUCIDx9mnDgmoxw+txkOjC+pNiYB4JBJAkfqwZXDCgdIM2sAiEAwW3D86KnuOvvnBs9T7fm1Rq3QjfqYNmQots3pUolrYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4118507},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"2e65de29ba3101e5d69c641d1ee832caec4d2d73","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.9.0_1780737529257_0.2044374378449505","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"zob-harness","version":"0.9.1","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.9.1","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"ab0e04457b5f28ef2203cb972673e0d10fe3d093","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.9.1.tgz","fileCount":574,"integrity":"sha512-sG2urAp1uFsYzAFPABtJIZcCbRr0c5M1DhjgTIBipgWWpvijuOBO5PRzvBo/MHDMoMpHXmSIaU8jFzqJEAJ7nQ==","signatures":[{"sig":"MEUCIQDYjfAonXY4Qo6ICyx/uOE7v2U0ifCgmJCisUt6ZRBLbAIgNi3epA3R3QFLjHFjtMXbX8EFfGkOST4IeFQosCV9fTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4158276},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"a871fe51ec6e76859d48a128e970e63511b932ab","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/*\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/*\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.9.1_1780819660297_0.2778273734919223","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"zob-harness","version":"0.9.2","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.9.2","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"2854435a36af830ad227793dd3ab2569133c2d97","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.9.2.tgz","fileCount":574,"integrity":"sha512-qShy3whN8oy/HITIiv0/G5UW3SLZTDFkdca9ZnSIsRiK2wZTN03mWpV0WxhncKDVW2g2KUNCqkg+qgiwhk8Brg==","signatures":[{"sig":"MEUCIDR028xwuSvQPejGJZ0+D0o9UjeaAYJfvJTwVT8pkOqkAiEAxThdWQW9qSAvC0shcAiWvKF0f7SfaWb92erF02oczI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4165239},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"36d7786054e1ba069c9d0015c1ae9701bb62f229","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/*\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/*\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.9.2_1780857064203_0.3102014856066482","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"zob-harness","version":"0.10.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.10.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"a4a270f5d63a0e8f7a7435c80227548fc35a57b7","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.10.0.tgz","fileCount":575,"integrity":"sha512-Ef7JCr1GUeDSLS1iV9ce6BMs5ZnHWc8nBuzogiZtrJ+zalEXKBui7A7E9nlz0f1O+7qzTZcdWhGSpx1JpnJZZw==","signatures":[{"sig":"MEUCIQDNuhNg8txUWYWkIGZf4GrKPixL4S8Nc0keDLkZmW1nWgIgIHgHrXa5YjgBAsf9t8a5ZtbWcwGJ/QRYPEhJv+Kam/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4184151},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"d137ef5461fe5832ccb6354be97ab100ee806f57","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/*\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/*\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.10.0_1780868203494_0.9072335727879908","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"zob-harness","version":"0.11.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.11.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"22b828e190f36f638ff8a914e17929f17590c6e5","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.11.0.tgz","fileCount":579,"integrity":"sha512-WpwDPTxZMHh+u8rx2J8hlznHtkY/9avo4dJpHtFpeoMyeE+0pQFojCQQYyH4Ks6j1LyrcARsPh0NPLoYpJu8pQ==","signatures":[{"sig":"MEUCIQC2tOU0bLgcjfdqsq69VUiPoDJXRr1zq7prmOK3doO8hAIgIigBOLpZRiyIEhcxyo+tKu7RTL96ki1LWqD+NIDdbZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4268162},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"a28a509302c806c7b622eb28fe0d9c946915f439","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/*\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/*\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.11.0_1781259169103_0.5310046592759385","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"zob-harness","version":"0.12.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.12.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"34ef77f44ea326ea1542224e29278efbcfea4a18","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.12.0.tgz","fileCount":580,"integrity":"sha512-GUv2cihwVYV55LU8rUn+CHftAHt4zwylDiPYpktxssjQvd9kZs14o+wenIduH9AabOXEqJM5NW3JsbtfTSozmg==","signatures":[{"sig":"MEQCIB3GTLeQu7XDphQYnZsI8Aw3eASJw4aqCFyNynZcBv+bAiBAVXy5xmSvsYWynutnA+lDsySFRTyZim3N0VXzJokVRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4284198},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"2e61748c0df0164b8703e7bb5abe17c977867896","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/*\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/*\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.12.0_1781261158286_0.0005762622936202888","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"zob-harness","version":"0.13.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.13.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"754b5084b22cc4c7d5b83019eea1ded810d2ba55","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.13.0.tgz","fileCount":598,"integrity":"sha512-EH+fvkIB5WucHgwOhfdJ5YE8SQW29m8N5gers2yjU/nyUJlz0VbYAeimCCRLKKZ3x0tVsp7PPB8WQAFvZ5xn1g==","signatures":[{"sig":"MEUCIQDXaH5lgzeWOlMnzSCxocLaKe2wj3xUzHHCnj/nJ4Zg8QIgEP/MXJR4Wk4nUzi5j662Kg4wZJyMljz/JcE4KPicSeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4495346},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"1fc73cca9321c3c2717913d69d72e3cd053e0619","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.13.0_1781423408312_0.13784683073238435","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"zob-harness","version":"0.14.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.14.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"59b9c6d1bf24278fb23f25340beb2ac9824e2c6a","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.14.0.tgz","fileCount":605,"integrity":"sha512-zupwWcCTps8t2dsQ/RXwgglcqKkcS05I4M7XWYatBWH5PhjGPgU34sESWJajCfEhfUqo/1/qGAaQqRKrivC4WQ==","signatures":[{"sig":"MEUCIDf5WNfvj7Q4Tz/qB/KxYns+aK3OZp+GN7fKvv77H8qaAiEA4q+GMMynEieqcghl/tfuZRgak4365H/Pp/liwKVlcfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4603571},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"fad07357ebe2a9a1b96f5ee3895ac985f3385a50","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.14.0_1781553154342_0.16279256397522568","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"zob-harness","version":"0.15.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.15.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"d53a73f43e697fceb280f40479fb7e69fe3357b7","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.15.0.tgz","fileCount":605,"integrity":"sha512-gCCb+3ZvbESpTmBnCdmTOhRyjHDHflYOxGv4uEtB7UFvhx8wyS/blE+uwCecHX2Y7ef38A4nrNqWV/obVkq4Ew==","signatures":[{"sig":"MEUCIGI6Oxnysz+hP/nb3J2Owpuw/gA65tzeMIScRw0DMGSfAiEAgulfFfaZ8PPtQ01BdQZPqcU+Igir4sDU92itLjD2WE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4646467},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"3fbb6565f2522a372f0b4faf09b2d26f9be47c98","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.15.0_1781559039218_0.5667202061311529","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"zob-harness","version":"0.15.1","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.15.1","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"28a8bdd28fe3b159dd1ae8fd5671527dba022731","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.15.1.tgz","fileCount":605,"integrity":"sha512-4O4sYDLYKoxA3uLhEX9+tHZ7MBqXxYuHe6rsM3PqKvPnRXofnGVsyhsMIOtOSlymCQmzVxLsb7GO8XFYnXB7Mg==","signatures":[{"sig":"MEYCIQD6/9mIzh9sEGwpsm+3quEUqjJPDkQbBFLvr9k4HkCwBgIhANjmNnO0XpH1bgM26691vMrjbiRfq4a3ARNwxxtCZGQY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4667701},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"46711d3d48491c4aedcda477860b5d3b085e9e08","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.15.1_1781690090203_0.5511363349626897","host":"s3://npm-registry-packages-npm-production"}},"0.15.2":{"name":"zob-harness","version":"0.15.2","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.15.2","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"95bf17e64bbd90e4fbfb8b02e56497859cdd0e11","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.15.2.tgz","fileCount":607,"integrity":"sha512-iiWwyHcYf9BIqa/9pm8VOzSFAq3txaaETsj3OTMIJ0bar3mxd2AtOlhZCli+JGXKBs2qO/bvmhBH4+uxDiHZkw==","signatures":[{"sig":"MEYCIQC93visLWBtG5GrO82ntxQLGbhF+4hDGySOfbwMRAbTmgIhAIy2j7+l7ioDwDs+znHEr58pOYibBYJKwaTn0zo9udfR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.15.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4675780},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"d977b5b8ae5daf6bb64076be358af26e6256a5c4","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.23.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.15.2_1782814471758_0.3753764797210153","host":"s3://npm-registry-packages-npm-production"}},"0.15.3":{"name":"zob-harness","version":"0.15.3","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.15.3","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"8cdd9abc59d890c1b1233aa5ece3583249caa26f","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.15.3.tgz","fileCount":607,"integrity":"sha512-y3GxW5huPR18xEbSl7Xzm1xgIXPhBEXGY5afgUkZn5PZWXh41P0mCg4h10u02A2OukaFpTVjZuw4KdZqlC7bgg==","signatures":[{"sig":"MEUCIQCDsOkoxVLsjpywdhDN8p1/o6Upnvd9NeA/Jx5KUdXHRwIgMx4D78d4+KrgbpQ+67N9xEMmblgpTo/Y/xkt89M+csI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.15.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4679298},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"06ba867ae343e38bc704edad01b2811beab762d8","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.15.3_1783950439570_0.5583865377533959","host":"s3://npm-registry-packages-npm-production"}},"0.15.4":{"name":"zob-harness","version":"0.15.4","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.15.4","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"20361a72ec9a400b0dcd0fdbdc350d7f56fde7f9","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.15.4.tgz","fileCount":607,"integrity":"sha512-RadcyF+xX164qngDgg4oCsLVM+Eafc8q/JnH8R2qSis23j8nyGpPU2xMVhyeAfRkL5H6jLjj30S2KubFyxLGsw==","signatures":[{"sig":"MEUCIQDyYQYQe8DXQ3qPCMkMMBCVmJgq1HEWKgebZFClmGFE5AIgJUIdjc8Hi+hUsOQtCFzw9WcqGvKxZZ6E4OQ2qKEfJPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.15.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4680632},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"82f825ad46c1d0e0a623dd74812fd823f6b314ee","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.15.4_1783957449286_0.45346139725197543","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"zob-harness","version":"0.16.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.16.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"cb70b9133aca98d16e7feb4d51d0da81c6680087","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.16.0.tgz","fileCount":619,"integrity":"sha512-Q33PMzNOFy/gom+klAKx1NNPXEr7Trqzop9BV+2Nvf+W8GoNwUOuzdRvR2mRagrWIbdZua+JF0lk5qiegvCPwA==","signatures":[{"sig":"MEUCIBM7zDSoQjYJHMLlKOvR94jD8EBN58yLx5ezUQgqbNyzAiEAoZTO6a2lK7LlOk2HUJRu0CBV80qiRllzeBXqLarbZlY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5148397},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"657f470b3a5fcdb594fa1e746f58e186383567d4","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","replay:tool-failures":"node --import tsx scripts/telemetry/replay-tool-failures.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.16.0_1784020481751_0.04502517631557068","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"zob-harness","version":"0.17.0","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"license":"MIT","_id":"zob-harness@0.17.0","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"homepage":"https://github.com/cgarrot/zob-harness#readme","bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"pi":{"skills":[".pi/skills"],"prompts":[".pi/prompts"],"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"]},"dist":{"shasum":"2861f900d6b22b6b0c201531c5aa90c528a31af1","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.17.0.tgz","fileCount":623,"integrity":"sha512-RF5mpdQ1IvqaAruL6SSkoQ1mbsbUTwgy4bF8lbKPvCWGpzPk5jnfDWR3A4MBuqmfuqOAxqg9v+c/BosPYifYww==","signatures":[{"sig":"MEUCIFZhI8KNm5pDez5/hM6Z69ACS5m+6s2EXFp3dsq67N4EAiEA2JMyx2UWBcDQIw7Sf4/LTjLUEUYH3L9djiXvAIn5EYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5199945},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"bbce2a3a8569f4774b3389dea3beb4fd280968ef","release":{"branches":["main"],"tagFormat":"v${version}"},"scripts":{"pi":"pi","lint":"biome lint .","test":"node --import tsx --test \"test/**/*.test.ts\"","check":"tsc --noEmit --pretty false","format":"biome format --write .","check:ci":"npm run check -- --pretty false","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","pack:dry-run":"npm pack --dry-run --json","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","harness:intake":"node scripts/harness-intake/launch.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","release:dry-run":"semantic-release --dry-run --no-ci","release:preview":"node scripts/release/preview.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","replay:tool-failures":"node --import tsx scripts/telemetry/replay-tool-failures.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json"},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"repository":{"url":"git+https://github.com/cgarrot/zob-harness.git","type":"git"},"_npmVersion":"10.9.8","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3","@types/node":"22.19.19","@biomejs/biome":"^2.4.16","semantic-release":"^24.2.9","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-tui":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5"},"peerDependencies":{"typebox":"^1.0.66","@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0"},"_npmOperationalInternal":{"tmp":"tmp/zob-harness_0.17.0_1784647871506_0.9108238193403029","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"zob-harness","version":"0.17.1","type":"module","description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/cgarrot/zob-harness.git"},"bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"homepage":"https://github.com/cgarrot/zob-harness#readme","publishConfig":{"access":"public"},"release":{"branches":["main"],"tagFormat":"v${version}"},"keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"engines":{"node":">=22.0.0"},"scripts":{"pi":"pi","pi:explore":"pi --no-extensions -e ./.pi/extensions/zob-harness/index.ts --tools read,grep,find,ls,delegate_agent --append-system-prompt 'Start in ZOB explore mode.'","pi:check":"pi --offline --no-session --no-extensions -e ./.pi/extensions/zob-harness/index.ts -p 'Reply exactly: zob-harness-ok'","spec-run":"node scripts/spec-run.mjs","spec-run:auto-pilot":"node scripts/spec-run.mjs auto-pilot","validate:agentic-spec-team":"node scripts/agentic-spec-team/validate-run.mjs","check":"tsc --noEmit --pretty false","check:ci":"npm run check -- --pretty false","check:all":"npm run check && npm run validate:script-surface && npm run validate:capability-refs && npm run smoke:harness && npm run test","lint":"biome lint .","format":"biome format --write .","test":"node --import tsx --test \"test/**/*.test.ts\"","test:watch":"node --import tsx --watch --test \"test/**/*.test.ts\"","replay:tool-failures":"node --import tsx scripts/telemetry/replay-tool-failures.mjs","smoke:path-policy":"node scripts/path-policy/validate-smoke.mjs","smoke:child-goal-ref":"node scripts/goal-todo/child-goal-ref-smoke.mjs","smoke:goal-todo-handoff":"node scripts/goal-todo/handoff-static-smoke.mjs","smoke:git-ops":"node scripts/git-ops/commit-policy-smoke.mjs","smoke:harness":"npm run smoke:path-policy && npm run smoke:child-goal-ref","smoke:worker-pool":"node scripts/worker-pool/static-smoke.mjs","smoke:worklist":"node scripts/worklist/static-smoke.mjs","smoke:autonomy-readiness-secret":"node scripts/autonomy/mission-readiness-secret-smoke.mjs","smoke:zpeer":"node scripts/zpeer-static-smoke.mjs && node scripts/zpeer-local-e2e-smoke.mjs","smoke:zagent":"node scripts/zagent-static-smoke.mjs","smoke:zteam-hot-add":"node scripts/zteam-hot-add/smoke.mjs","smoke:zteam-tools":"node scripts/zteam-tools/smoke.mjs","smoke:zteam-lifecycle":"node scripts/zteam-lifecycle-smoke.mjs","zob:context:doctor":"node scripts/context-discovery/doctor.mjs","zob:context:init":"node scripts/context-discovery/init-colgrep.mjs","zob:context:query":"node scripts/context-discovery/query.mjs","smoke:context-discovery":"node scripts/context-discovery/smoke.mjs","validate:script-surface":"node scripts/package-surface/validate-script-refs.mjs","pack:dry-run":"npm pack --dry-run --json","release:preview":"node scripts/release/preview.mjs","release:dry-run":"semantic-release --dry-run --no-ci","validate:capability-refs":"node scripts/package-surface/validate-capability-refs.mjs","audit:prompt-context":"node scripts/package-surface/validate-capability-refs.mjs","validate:compute-profile-policy":"node scripts/compute-profile/validate-policy.mjs","preview:compute-profile:project-dna-smoke":"node scripts/compute-profile/preview.mjs --domain project-dna --path .pi/factories/project-dna --requested auto --run-id project-dna-smoke --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","validate:compute-profile:project-dna-smoke":"node scripts/compute-profile/validate-preview.mjs --preview ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-preview.json --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json","plan:compute-workflow:project-dna-smoke":"node scripts/compute-profile/plan-workflow.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","validate:compute-workflow:project-dna-smoke":"node scripts/compute-profile/validate-workflow.mjs --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json","snapshot:compute-profile:project-dna-smoke":"node scripts/compute-profile/summarize.mjs --resolution ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-profile-resolution.json --workflow ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-workflow-shape.json --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/compute-mission-control-summary.json","smoke:compute-profile-regression":"node scripts/compute-profile/regression-smoke.mjs","validate:project-dna":"node scripts/project-dna/validate-scaffold.mjs","smoke:project-dna-scan":"node scripts/project-dna/scan.mjs --source-path .pi/factories/project-dna --source-id project-dna-factory --out-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","validate:project-dna-scan:smoke":"node scripts/project-dna/validate-scan-artifacts.mjs --scan-dir .pi/reports/project-dna-scans/project-dna-factory-smoke","plan:project-dna-workflow:smoke":"node scripts/project-dna/plan-workflow.mjs --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json","validate:project-dna-workflow:smoke":"node scripts/project-dna/validate-workflow.mjs --plan ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/agentic-plan.json --manifest .pi/factories/project-dna/example-project-dna-manifest-v2.json","emit:project-dna-ontology:smoke":"node scripts/project-dna/emit-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-ontology:smoke":"node scripts/project-dna/validate-ontology.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","emit:project-dna-golden-cases:smoke":"node scripts/project-dna/emit-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","validate:project-dna-golden-cases:smoke":"node scripts/project-dna/validate-golden-cases.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","steward:project-dna-query:smoke":"node scripts/project-dna/query-steward.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","query:project-dna:smoke":"node scripts/project-dna/query-context.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --query 'How does ProjectDNA keep bounded cited context?' --golden-case-id agentic-control-plane --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-result-smoke.json --steward-report-out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/query-steward-smoke.json","build:project-dna-capsules:smoke":"node scripts/project-dna/build-capsules.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","build:project-dna-sample-spec:smoke":"node scripts/project-dna/build-sample-spec.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","generate:project-dna-sample:smoke":"node scripts/project-dna/generate-sample.mjs --sample-spec ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/sample-spec.json --out-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-sample:smoke":"node scripts/project-dna/validate-sample-project.mjs --sample-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/quarantine/sample-project","validate:project-dna-5of5:smoke":"node scripts/project-dna/validate-5of5.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}","bench:project-dna:smoke":"node scripts/project-dna/bench-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --out ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","oracle:project-dna:smoke":"node scripts/project-dna/oracle-review-smoke.mjs --scan-dir ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke} --benchmark ${PROJECT_DNA_SCAN_DIR:-.pi/reports/project-dna-scans/project-dna-factory-smoke}/bench/benchmark-smoke.json","project-dna:smoke:all":"npm run smoke:project-dna-scan && npm run validate:project-dna-scan:smoke && npm run plan:project-dna-workflow:smoke && npm run validate:project-dna-workflow:smoke && npm run emit:project-dna-ontology:smoke && npm run validate:project-dna-ontology:smoke && npm run emit:project-dna-golden-cases:smoke && npm run validate:project-dna-golden-cases:smoke && npm run steward:project-dna-query:smoke && npm run query:project-dna:smoke && npm run build:project-dna-capsules:smoke && npm run build:project-dna-sample-spec:smoke && npm run generate:project-dna-sample:smoke && npm run validate:project-dna-sample:smoke && npm run bench:project-dna:smoke && npm run oracle:project-dna:smoke && npm run validate:project-dna-5of5:smoke","validate:model-catalog":"node scripts/model-catalog/validate.mjs","validate:model-economy":"node scripts/model-catalog/validate-economy.mjs","smoke:harness-switch":"node scripts/harness-switch/static-smoke.mjs","smoke:intent-classifier":"node scripts/intent-classifier/smoke.mjs","harness:intake":"node scripts/harness-intake/launch.mjs","harness:intake:smoke":"node scripts/harness-intake/launch.mjs --demo --mode smoke \"Analyze examples/agent-factory-tmux-comms as an Agent Factory tmux setup and propose a reusable ZOB team.\"","harness:intake:session-smoke":"node scripts/harness-intake/launch.mjs --target examples/harness-intake-fixtures/claude-code-mini --harness claude-code --allow-sessions --mode smoke \"You may read the sessions in examples/harness-intake-fixtures/claude-code-mini; identify the workflows and propose a reusable ZOB team.\"","harness:intake:infer":"node scripts/harness-intake/infer-run-spec.mjs","harness:intake:scan":"node scripts/harness-intake/scan-sources.mjs","harness:intake:validate":"node scripts/harness-intake/validate-run.mjs","harness:intake:tmux":"node scripts/harness-intake/tmux-launch.mjs","demo:pacman":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs auto","demo:pacman:prepare":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs prepare","demo:pacman:status":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs status","demo:pacman:validate":"node .pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs validate"},"pi":{"extensions":[".pi/extensions/zob-switch/index.ts",".pi/extensions/zob-harness/index.ts"],"prompts":[".pi/prompts"],"skills":[".pi/skills"]},"peerDependencies":{"@earendil-works/pi-ai":"^0.75.0","@earendil-works/pi-coding-agent":"^0.75.0","@earendil-works/pi-tui":"^0.75.0","typebox":"^1.0.66"},"devDependencies":{"@biomejs/biome":"^2.4.16","@earendil-works/pi-ai":"0.75.5","@earendil-works/pi-coding-agent":"0.75.5","@earendil-works/pi-tui":"0.75.5","@types/node":"22.19.19","semantic-release":"^24.2.9","tsx":"^4.22.4","typebox":"1.0.66","typescript":"5.9.3"},"_id":"zob-harness@0.17.1","gitHead":"2be8c5747fe9afdae19bd16b8c89dc0b698457a0","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-PzgC0s2t/QEoaJ8SPANEATDrcP8Exkj8Von0i8X/3EJaJx3wR7JqpCxK8cayubDIg4Oh3qyOC881EKbP3HoOwg==","shasum":"8e3d75cc76920a4b3b64fd1a4134d19e9b2e679b","tarball":"https://registry.npmjs.org/zob-harness/-/zob-harness-0.17.1.tgz","fileCount":624,"unpackedSize":5216215,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/zob-harness@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzk/eF9seCWl03g8UHUikWrdvyZqJQ9JQGHtIpVvV1ggIgWsL7ErWiR2XBv7lb0fHi2fGDh3e45kiVIw9C4NCT9X0="}]},"_npmUser":{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"},"directories":{},"maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zob-harness_0.17.1_1785579663409_0.46151793343252256"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-01T12:45:46.790Z","modified":"2026-08-01T10:21:03.964Z","0.1.0":"2026-06-01T12:45:47.146Z","0.1.1":"2026-06-01T14:26:35.706Z","0.2.0":"2026-06-01T23:13:07.076Z","0.3.0":"2026-06-03T15:52:23.155Z","0.3.1":"2026-06-04T22:54:00.880Z","0.4.0":"2026-06-05T10:56:02.246Z","0.5.0":"2026-06-05T12:19:21.878Z","0.6.0":"2026-06-05T15:09:10.969Z","0.7.0":"2026-06-05T15:44:43.394Z","0.7.1":"2026-06-05T16:06:04.827Z","0.8.0":"2026-06-05T21:34:46.647Z","0.9.0":"2026-06-06T09:18:49.492Z","0.9.1":"2026-06-07T08:07:40.521Z","0.9.2":"2026-06-07T18:31:04.396Z","0.10.0":"2026-06-07T21:36:43.645Z","0.11.0":"2026-06-12T10:12:49.351Z","0.12.0":"2026-06-12T10:45:58.519Z","0.13.0":"2026-06-14T07:50:08.466Z","0.14.0":"2026-06-15T19:52:34.667Z","0.15.0":"2026-06-15T21:30:39.445Z","0.15.1":"2026-06-17T09:54:50.485Z","0.15.2":"2026-06-30T10:14:31.948Z","0.15.3":"2026-07-13T13:47:19.793Z","0.15.4":"2026-07-13T15:44:09.445Z","0.16.0":"2026-07-14T09:14:41.934Z","0.17.0":"2026-07-21T15:31:11.670Z","0.17.1":"2026-08-01T10:21:03.615Z"},"bugs":{"url":"https://github.com/cgarrot/zob-harness/issues"},"license":"MIT","homepage":"https://github.com/cgarrot/zob-harness#readme","keywords":["pi-package","agentic-engineering","coding-agent","pi-extension","software-factory","agent-factory","safety-gates"],"repository":{"type":"git","url":"git+https://github.com/cgarrot/zob-harness.git"},"description":"A governed Agent Factory for Pi: launch communicating agent teams, run tmux-backed factories, validate artifacts, and package repeatable workflows.","maintainers":[{"name":"cgarrot","email":"clement.garrot.dev@gmail.com"}],"readme":"# ZOB Harness\n\n**A governed Agent Factory for Pi.**\n\nLaunch teams of agents that communicate, build, validate, and turn repeatable workflows into reusable factories.\n\nZOB turns Pi from a single coding-agent chat into a supervised factory system: define a team, start a run, watch agent communication, review artifacts, and package successful workflows into factories that can create the next thing.\n\n```text\nHuman intent\n  -> governed Agent Factory\n  -> chief / scout / builder / oracle / custom roles\n  -> visible agent communication\n  -> tmux-backed Pi sessions when useful\n  -> artifacts under reports/<run_id>/\n  -> validation + oracle/no-ship review\n  -> reusable factory for the next run\n```\n\nZOB is not “unleash an agent and hope.” ZOB is “launch a team, keep the work observable, preserve evidence, and reuse the pattern once it works.”\n\n## Why this is different\n\nMost agent tools optimize the single assistant session. ZOB optimizes the **agent factory loop**:\n\n- **Teams, not tabs** — model a chief, scouts, builders, reviewers, oracles, and custom roles as ZAgents/ZTeams.\n- **Visible communication** — agents coordinate through parent-visible messages instead of hidden worker chat.\n- **tmux-backed runs** — launch real Pi sessions in local tmux windows when a workflow benefits from persistent roles.\n- **Run artifacts as truth** — manifests, kickoff files, workgraphs, status files, validation output, and oracle reports outlive the chat.\n- **Factories create factories** — a successful workflow can become a reusable manifest, launcher, checkpoint set, and validation ladder.\n- **Governed by default** — scoped tools, path rules, evidence gates, no-ship review, and governed commits keep the owner in control.\n\n## Try the six-agent Pac-Man factory\n\nThe fastest way to understand ZOB is to run the demo factory. The repository does **not** contain a prebuilt game. The factory prepares a run, launches a six-agent team, and asks that team to generate a local browser-playable Pac-Man-inspired multiplayer game under `.pi/reports/` (legacy `reports/` remains readable).\n\nPrepare and validate run artifacts only. This does not launch tmux/Pi and does not generate the game:\n\n```bash\nRUN_ID=\"pacman-demo\"\nnpm run demo:pacman:prepare -- \"$RUN_ID\" --force\nnpm run demo:pacman:validate -- \"$RUN_ID\"\n```\n\nLaunch the full tmux-backed Agent Factory team:\n\n```bash\nRUN_ID=\"pacman-demo\"\nnpm run demo:pacman -- \"$RUN_ID\" --force\n```\n\nObserve or stop only this demo team:\n\n```bash\nbash .pi/zteams/agent-factory-pacman-multiplayer.tmux.sh status\nbash .pi/zteams/agent-factory-pacman-multiplayer.tmux.sh attach agent-factory-pacman-chief\nbash .pi/zteams/agent-factory-pacman-multiplayer.tmux.sh close\n```\n\nAfter the agents finish, test the generated project from the reported run directory, typically:\n\n```bash\ncd reports/agent-factory-pacman-runs/$RUN_ID/project\nnpm install\nnpm run validate\nnpm run dev\n```\n\nSee [`examples/agent-factory-pacman-multiplayer/`](examples/agent-factory-pacman-multiplayer/) for the demo brief and [`examples/agent-factory-tmux-comms/`](examples/agent-factory-tmux-comms/) for the small generic tmux + visible communication playbook.\n\n## Agents communicate visibly\n\nZOB teams coordinate with short, structured, parent-visible messages. The goal is to keep multi-agent work debuggable without persisting raw hidden chat as the source of truth.\n\n```text\nCONTEXT: what changed or what the agent is working on\nASK: exact answer, review, or action needed\nEVIDENCE: safe file refs, artifact refs, command names, or TODO ids\nURGENCY: low|normal|high|critical\nBLOCKER: yes/no\n```\n\nExample chief → scout ask:\n\n```text\nCONTEXT: We are preparing the first implementation slice for the settings workflow.\nASK: Identify the smallest files needed for a safe plan; return evidence refs only.\nEVIDENCE: README.md, docs/settings.md, TODO SETTINGS-001\nURGENCY: normal\nBLOCKER: no\n```\n\nExample builder → oracle review request:\n\n```text\nCONTEXT: Builder generated the first game loop under the Pac-Man run project.\nASK: Review game rules and validation output before the chief calls this done.\nEVIDENCE: reports/agent-factory-pacman-runs/pacman-demo/project/src/game.ts, npm run validate\nURGENCY: normal\nBLOCKER: no\n```\n\nCommunication is coordination. **Artifacts are the source of truth.**\n\n## A factory that creates factories\n\nZOB is designed for the moment when an agent workflow works once and should not remain an ad hoc prompt forever.\n\nA ZOB factory can define:\n\n- a ZTeam topology and role aliases;\n- role-specific ZAgent prompts and domain skills;\n- tmux launch/status/attach/close scripts;\n- startup kickoff files passed as `pi @file`;\n- run manifests and dispatch metadata;\n- parent-owned workgraphs and TODO trees;\n- validation checkpoints, sentinels, and smoke gates;\n- oracle/no-ship review requirements;\n- generated artifact directories under `reports/<run_id>/`;\n- npm scripts that make the workflow repeatable.\n\nThe output of a ZOB run can be another ZOB factory: a reusable manifest, launcher, kickoff set, workgraph, and validation ladder for the next class of work.\n\nExisting factory-shaped surfaces include:\n\n- [`examples/agent-factory-tmux-comms/`](examples/agent-factory-tmux-comms/) — smallest teaching shape for a chief, scout, builder, and oracle.\n- [`examples/agent-factory-pacman-multiplayer/`](examples/agent-factory-pacman-multiplayer/) — runnable generative team demo.\n- [`.pi/factories/harness-intake-agent-team/`](.pi/factories/harness-intake-agent-team/) — natural-language harness/setup/session analyzer that proposes reusable ZOB teams and factory scaffolds in quarantine.\n- [`.pi/factories/`](.pi/factories/) — safe factory scaffolds for repeatable workflows such as ProjectDNA, agentic spec work, budget preflight, code review matrices, harness intake, and factory forging.\n\n## Harness Intake: turn another agent setup into a reusable ZOB team\n\nUse Harness Intake when you want to analyze another agent harness — Claude Code, Codex, Cursor, Aider, Pi/ZOB, or a custom setup — and recover reusable teams/factories from its docs, agents, skills, commands, prompts, and authorized sessions.\n\nNatural-language quick start:\n\n```bash\nnpm run harness:intake -- \"Analyze ../repo-x as a Claude Code setup and propose a reusable ZOB team\"\n```\n\nWith explicit session/conversation authorization:\n\n```bash\nnpm run harness:intake -- --target ../repo-x --harness claude-code --allow-sessions \"You may read the sessions; identify recurring workflows and propose a factory\"\n```\n\nPrepare a visible tmux team run without launching completion claims:\n\n```bash\nnpm run harness:intake:tmux -- prepare --target ../repo-x \"Prepare a visible tmux team to analyze this harness\"\n```\n\nOutputs are written under:\n\n```text\nreports/factory-runs/<run-id>/\n  inferred-run-spec.json\n  artifact-contracts.json\n  autonomous-status.md\n  sources-index.json\n  harness-profile.json\n  skills-profile.json\n  sessions-analysis.json\n  workflow-patterns.json\n  team-candidates.json\n  factory-candidates.json\n  generated-proposals/\n  validation.json\n```\n\nGenerated teams/factories stay in `generated-proposals/` and are **not activated automatically**. Sessions are read only with explicit authorization, and raw session bodies are not persisted in generated proposals.\n\nSee [`.pi/factories/harness-intake-agent-team/README.md`](.pi/factories/harness-intake-agent-team/README.md) for factory usage and implementation details.\n\n## What a ZOB run produces\n\nA serious run should leave reviewable evidence, not just a chat transcript:\n\n```text\nreports/<run_id>/\n  run-manifest.json\n  chief-kickoff.md\n  worker-kickoffs/\n  autonomous-workgraph.md\n  autonomous-status.md\n  iteration-log.md\n  validation-output.*\n  oracle-report.*\n  project/ or generated-artifacts/\n```\n\nThe exact shape depends on the factory, but the posture is consistent: bounded inputs, visible coordination, durable artifacts, validation commands, and explicit risks/blockers.\n\n## Core concepts\n\n- **ZAgent** — a full Pi session with identity, role, allowed posture, and optional ZPeer presence.\n- **ZTeam** — topology for rooms, aliases, owner-facing entry points, and communication policy.\n- **Chief / orchestrator** — the parent-facing role that owns the workgraph, status, and final synthesis.\n- **Scout / builder / oracle** — common role pattern for context discovery, artifact production, and skeptical review.\n- **Kickoff file** — bounded startup context passed as `pi @file`, safer than pasting long prompts into live panes.\n- **Goal/TODO graph** — parent-owned work breakdown where child claims are reviewed before acceptance.\n- **No-ship gate** — explicit blocker status that prevents unsupported “done” claims.\n\n## Quick start\n\n### Requirements\n\n- Node.js **22+**; Node 24 is recommended.\n- npm.\n- Pi installed and available on `PATH`.\n- tmux for tmux-backed Agent Factory demos.\n\n### Install from npm for normal Pi use\n\nAfter the package is published to npm, install the pinned Pi package:\n\n```bash\npi install npm:zob-harness@0.4.0\n```\n\nVerify Pi can load the package extension set and return a deterministic response:\n\n```bash\npi -e npm:zob-harness@0.4.0 --offline --no-session -p \"Reply exactly: zob-harness-ok\"\n```\n\nExpected result:\n\n```text\nzob-harness-ok\n```\n\nIf `pi install` cannot find the package, confirm the npm release is visible first:\n\n```bash\nnpm view zob-harness@0.4.0 version\n```\n\nExpected result:\n\n```text\n0.4.0\n```\n\nPi package discovery on `pi.dev/packages` is based on the npm `pi-package` keyword and may lag behind npm publication.\n\n### Try from a local checkout before publication\n\nUse this path when developing or validating a release candidate before npm publication:\n\n```bash\ngit clone https://github.com/cgarrot/zob-harness.git\ncd zob-harness\nnpm install\nnpm run validate:script-surface\nnpm run check -- --pretty false\nnpm run pi:check\nnpm run pack:dry-run\n```\n\nExpected results:\n\n- script references validate;\n- TypeScript completes with exit code 0 and no diagnostics;\n- Pi loads the local configured ZOB extension offline and replies with `zob-harness-ok`;\n- `npm pack --dry-run --json` lists the Pi manifest, extensions, prompts, skills, agents, examples, and validation scripts in the tarball.\n\n### Start Pi with the local harness checkout\n\n```bash\nnpm run pi\n```\n\nInside Pi, try:\n\n```text\n/zmode\n/agents\n/contract\n```\n\nYou should see ZOB modes, specialist agents, and the six-part delegation contract helper.\n\n## Common workflows\n\n### Launch a tmux-backed Agent Factory team\n\nUse an Agent Factory when the job needs multiple persistent roles rather than one transient assistant. The pattern is:\n\n1. define a ZTeam manifest with parent-visible rooms and `bodyStored=false`;\n2. prepare startup kickoff files so each agent begins with bounded instructions;\n3. launch one Pi session per ZAgent through a tmux launcher when useful;\n4. coordinate with async ZPeer/Goal Room-style messages using `CONTEXT / ASK / EVIDENCE / URGENCY / BLOCKER`;\n5. treat artifacts, validation commands, and oracle review as completion evidence.\n\n### Turn repeated work into a factory\n\nWhen a process repeats, stop re-prompting it by hand. Capture the workflow as:\n\n```text\nmanifest + team topology + kickoff templates + workgraph + checkpoints + validator + oracle gate\n```\n\nThen expose it through an npm script or project-local launcher so the next run starts from a known shape.\n\n### Use a safe single-agent loop\n\n```text\nExplore -> Plan -> Implement -> Oracle\n```\n\n- **Explore** — inspect and map facts without editing.\n- **Plan** — turn evidence into a bounded implementation path.\n- **Implement** — change the smallest safe file set and verify it.\n- **Oracle** — review skeptically and surface no-ship blockers.\n\n### Delegate to a specialist\n\nUse `/contract` to create a bounded six-part handoff, then route to the appropriate specialist agent. A good delegated result should return changed files, validation commands, evidence refs, risks, and no-ship status for parent/oracle review.\n\n### Use goal-linked TODOs\n\nUse `/goal`, `/todo`, and `/goal_gate` when work needs a parent-owned TODO graph. Child agents return claims; the parent decides acceptance. This prevents children from marking parent work done without review.\n\n### Goal TODO ZPeer/ZTeam handoff (0.4.0)\n\nUse `handoff_goal_todo`, `/goal todo handoff`, or `/todo handoff` to hand existing Goal TODOs to a live ZPeer/ZTeam member. Handoffs can be single TODOs or bounded batches to one receiver, require a maintainer-provided custom message, and use transient live delivery plus canonical Goal Room metadata.\n\nDurable records stay hash-only (`bodyStored=false` with TODO refs, receiver refs, message/task/result hashes, and artifact refs). Handoff delivery, ACKs, or chat replies are not completion evidence: the receiver returns a claim or split/blocker request, and the parent/oracle accepts or rejects it before any TODO becomes done.\n\nThis release adds the handoff runtime/docs and `npm run smoke:goal-todo-handoff` validation. It does not auto-launch teams or auto-complete parent TODOs. Current npm release automation is handled separately by the CI/CD flow below; local agents still must not create tags, publish packages, commit, or push unless explicitly authorized through the governed workflow.\n\n### Use active context discovery\n\nZOB can adapt context search to the active backend. Use `zob_context_search` inside Pi when available: it prefers ColGREP for broad/semantic repo discovery when ColGREP is installed and indexed, runs native search asynchronously from the extension handler, and falls back to grep/find/read when it is missing or unavailable. Treat broad search hits as leads and verify exact claims with file refs before editing or reporting readiness.\n\nColGREP setup is optional and owner-driven; ZOB must not auto-install it or run installer/package-manager commands. Local helpers:\n\n```bash\nnpm run zob:context:doctor        # read-only backend/config status and setup guidance\nnpm run zob:context:init          # initialize safe ColGREP settings/index only if ColGREP is already installed\nnpm run zob:context:query -- \"goal todo routing\"  # one-shot query with grep fallback\nnpm run smoke:context-discovery   # deterministic fallback smoke; passes without ColGREP\n```\n\nForbidden/secret/session/vendor/build paths remain excluded from discovery. Active-backend prompt injection is bounded and configurable through `.pi/context-discovery.json` (`promptInjection.enabled`); it should never inject stale/global context or raw search results. When ColGREP is ready, exploratory/natural-language repo discovery should start with `zob_context_search`/ColGREP before broad grep/find; if the native tool is not exposed but `bash` is available, use the compact wrapper `npm run --silent zob:context:query -- --query \"<query>\" --max-results 6 --max-context-lines 1` before `rg`/`grep`. Then use grep/read for exact proof and citations. Broad grep/find over `.pi` must explicitly prune `.pi/sessions` and `.pi/agent-sessions`. Oracle/no-ship review for this feature checks context freshness, citation coverage, exact grep/read verification, forbidden-source violations, and no unapproved installer/network behavior.\n\nSee [`.pi/skills/zob-context-discovery/SKILL.md`](.pi/skills/zob-context-discovery/SKILL.md) and [scripts/README.md](scripts/README.md) for the operating rules and script map.\n\n### Use governed commits\n\nZOB does not encourage invisible git operations. When a user explicitly asks for a commit, agents must use `/zcommit` or the governed `zob_zcommit_run` tool and follow [`.pi/git-policy.json`](.pi/git-policy.json). Autocommit and autopush are off by default.\n\n### Automated npm releases\n\nRelease tagging and npm publishing are performed by GitHub Actions, not by local agents. The local harness should create Conventional Commit messages and may preview release impact, but it must not run `git tag` or `npm publish` directly.\n\n```text\nlocal change\n  ↓\n/zcommit commit with a Conventional Commit message\n  ↓\nnpm run release:preview\n  ↓\n/zcommit push to main, when explicitly authorized\n  ↓\nGitHub Actions validation\n  ↓\nsemantic-release decides:\n  ├── no fix/feat/breaking commits → no tag, no npm publish\n  └── release needed → create vX.Y.Z tag, create GitHub release, publish npm package\n```\n\nDecision rules follow Conventional Commits:\n\n- `fix:` and `perf:` create a patch release;\n- `feat:` creates a minor release;\n- `feat!:` or a `BREAKING CHANGE:` footer creates a major release;\n- `docs:`, `test:`, `chore:`, `ci:`, and similar non-release commits do not publish by default.\n\nBefore an authorized push, run:\n\n```bash\nnpm run release:preview\n```\n\nThe preview reports the base tag/version, release type, next `vX.Y.Z` tag if any, and whether npm publish should happen after CI passes. The actual tag and npm publication still happen only in `.github/workflows/release.yml` after validation.\n\nTo enable publishing, configure one of the npm authentication paths for the GitHub repository:\n\n- recommended simple setup: add an npm automation token as the `NPM_TOKEN` GitHub Actions secret;\n- stronger setup: configure npm Trusted Publishing for this package and keep the workflow `id-token: write` permission enabled.\n\n### Optional intent classifier\n\nZOB can optionally classify user intent with a small model before falling back to deterministic regex routing. The default config at [`.pi/routing/intent-classifier.json`](.pi/routing/intent-classifier.json) is disabled and local-only:\n\n```json\n{\n  \"enabled\": false,\n  \"provider\": \"regex\",\n  \"model\": \"\",\n  \"fallback\": \"regex\",\n  \"sendUserTextToProvider\": false\n}\n```\n\nUse the slash command after reloading the extension:\n\n```text\n/intent status\n/intent regex\n/intent model-strict\n/intent model-strict <provider/model-id>\n/intent model-fallback <provider/model-id>\n/intent test launch multiple workers and an oracle\n```\n\n`model-strict` means no regex fallback: provider failures, invalid JSON, low confidence, or unknown intent return `unknown`. `model-fallback` tries the model first and then falls back to regex. If no model is provided, the current Pi model is used; autocomplete after `model-strict ` or `model-fallback ` lists available Pi models. Detected intents in `autoSwitchIntents` switch mode directly; the default project config enables `explore`, `plan`, `implement`, `oracle`, `factory`, `orchestrator`, and `vanilla` so an explicit user intention can route to any ZOB mode. The direct HTTP JSON path remains an advanced hidden option for custom endpoints, but the normal UX is provider/model selection from Pi. The classifier suggests intent only; it never approves secrets, destructive commands, commits, deploys, session reads, or no-ship status.\n\n## Command cheat sheet\n\nInside Pi:\n\n- `/zmode` — switch between `explore`, `plan`, `implement`, `oracle`, `factory`, and `orchestrator`.\n- `/stop` — abort current foreground work and local background activity without shutting down Pi.\n- `/contract` — insert the six-part delegation template.\n- `/agents` — list specialist agents.\n- `/goal`, `/todo`, `/todos`, `/goal_gate` — manage goal-linked TODO work and scope anchors.\n- `/compute` or `/effort` — preview/resolve compute profiles without bypassing safety gates.\n- `/project-dna` — query or operate bounded ProjectDNA context workflows.\n- `/intent-classifier` or `/intent` — configure/test regex, model-strict, or model-fallback intent routing.\n- `/zcompact` — configure proactive context compaction.\n- `/zcommit` — governed commit workflow; no direct git commit/push/tag shortcuts.\n- `/zpeer` — local peer/coms workflow commands where enabled.\n\nFrom npm/local checkout:\n\n```bash\nnpm run pi                         # start Pi with configured harness wiring\nnpm run pi:check                   # offline extension load check\nnpm run check -- --pretty false    # TypeScript validation baseline\nnpm run check:ci                   # CI-style TypeScript check\nnpm run validate:script-surface    # package script/file surface validation\nnpm run smoke:harness              # path-policy + child-goal-ref smoke\nnpm run smoke:context-discovery    # active context backend smoke with grep fallback\nnpm run smoke:goal-todo-handoff    # Goal TODO ZPeer/ZTeam handoff static smoke\nnpm run smoke:intent-classifier    # optional model intent-classifier fallback smoke\nnpm run smoke:git-ops              # governed commit policy smoke\nnpm run smoke:worker-pool          # worker-pool static smoke\nnpm run smoke:zpeer                # static + local ZPeer smoke\nnpm run validate:project-dna       # ProjectDNA scaffold validation\nnpm run pack:dry-run               # npm package dry-run surface check\nnpm run zob:context:doctor         # active context backend status/guidance\nnpm run zob:context:init           # optional ColGREP init when already installed\nnpm run zob:context:query -- \"...\"  # one-shot active backend query\nnpm run demo:pacman:prepare        # prepare Pac-Man factory run artifacts\nnpm run demo:pacman:validate       # validate Pac-Man factory run artifacts\nnpm run demo:pacman                # launch the full Pac-Man Agent Factory demo\n```\n\nPublished package install/check:\n\n```bash\npi install npm:zob-harness@0.4.0\npi -e npm:zob-harness@0.4.0 --offline --no-session -p \"Reply exactly: zob-harness-ok\"\nnpm view zob-harness@0.4.0 version\n```\n\nSee [scripts/README.md](scripts/README.md) for the script family map.\n\n### Core vs advanced surface\n\nThe harness exposes ~77 tools, 25 commands, 39 specialist agents, 24 skills, and\n75 npm scripts, but a new user only needs this core set to be productive:\n\n- `/zmode` — pick the operating mode (`explore` / `plan` / `implement` / `oracle` / `factory`).\n- `/goal` and `/todo` — set the active goal and drive the goal-linked TODO tree.\n- `/contract` — insert the six-part delegation contract.\n- `zob_delegation_catalog` — discover the right agent/contract before delegating.\n- `delegate_task` and `delegate_agent` — delegate one task or specialist agent(s).\n- `zob_context_search` — bounded repo-local context discovery.\n- `zob_read_full` — whole-file read in one call when the live context window has headroom; falls back to paginated `read` with offset/limit otherwise.\n- `zob_receive_full` — whole long response in one call (run report via `run_id` or any file via `path`) when context headroom allows; paginated `read`/`grep` otherwise.\n- `/agents` — list specialist agents.\n- `/zcommit` (and the `zob_zcommit_run` tool) — the only governed commit/push path.\n- `/compute` or `/effort` — preview/resolve a compute profile without bypassing gates.\n\nEverything else — live coms (`zpeer_ask`, `zob_coms_*`), worker-pool/goal-room,\nmerge-queue, mission-control, ProjectDNA, compute internals, autonomy, factory,\nand ZTeam/ZAgent surfaces, plus the domain smoke and demo scripts — is\nadvanced/experimental and opt-in. The full classification lives in the local\n`reports/zob-cleanup-lanes/surface-triage.md` triage.\n\n## Repository map\n\n- [README.md](README.md) — project landing page and quickstart.\n- [AGENTS.md](AGENTS.md) — project-local agent operating rules.\n- [CONTRIBUTING.md](CONTRIBUTING.md) — contributor workflow and validation expectations.\n- [SECURITY.md](SECURITY.md) — security policy.\n- [SOURCE_INDEX.md](SOURCE_INDEX.md) — tracked source and local/generated area map.\n- [package.json](package.json) — package metadata, Pi wiring, and npm scripts.\n- [scripts/README.md](scripts/README.md) — public script surface guide.\n- [`examples/`](examples/) — Agent Factory examples, including the generic tmux/coms playbook and the runnable Pac-Man multiplayer generative demo.\n- [`.pi/extensions/zob-harness/`](.pi/extensions/zob-harness/) — main Pi extension.\n- [`.pi/extensions/zob-child-safety/`](.pi/extensions/zob-child-safety/) — child-agent safety extension.\n- [`.pi/agents/`](.pi/agents/) — specialist agent definitions.\n- [`.pi/skills/`](.pi/skills/) — domain-specific operating instructions.\n- [`.pi/prompts/`](.pi/prompts/) — reusable prompt templates.\n- [`.pi/factories/`](.pi/factories/) — safe factory scaffolds.\n- [`.pi/output-contracts/`](.pi/output-contracts/) — structured output contract manifests.\n- [`.pi/capabilities/`](.pi/capabilities/) — public runtime capability registry.\n- [`scripts/`](scripts/README.md) — local validation, smoke, audit, and proof helpers.\n\nLocal/generated areas such as `.pi/reports/`, legacy `reports/`, `.pi/plans/`, legacy `plans/`, `.pi/sessions/`, `.pi/logs/`, `.pi/tmp/`, coms ledgers, workspace claims, worker pools, and merge queues are not part of the normal source surface. See [SOURCE_INDEX.md](SOURCE_INDEX.md) for the current classification.\n\n## Safety model\n\nZOB is deliberately conservative around risky actions:\n\n- no `.env`, private key, SSH, AWS, or credential reads;\n- no destructive shell/git operations without explicit approval;\n- no direct commits, pushes, tags, or force pushes by default;\n- governed commits go through `/zcommit` or `zob_zcommit_run` only when explicitly authorized;\n- tmux is a launch/observation layer, not the source of truth;\n- generated reports, ledgers, sessions, and local coordination state stay local;\n- autonomy checks are supervised evidence, not a claim of unrestricted autonomy;\n- completion requires concrete artifacts, validation evidence, and oracle/no-ship review when required.\n\nThe safety posture is backed by [AGENTS.md](AGENTS.md), [`.pi/damage-control-rules.json`](.pi/damage-control-rules.json), [`.pi/git-policy.json`](.pi/git-policy.json), the child-safety extension, and smoke scripts under [`scripts/`](scripts/README.md).\n\n## Current status and limits\n\nZOB Harness is an early, conservative, governed harness. The public repo is useful for evaluating the Agent Factory operating model, extension wiring, skills, agents, safety posture, and smoke validations. It should not be described as unrestricted autonomy, a production deployment system, or a benchmark-winning agent framework.\n\nCurrent limits are intentional:\n\n- explicit scoped tools, paths, and stop conditions by default;\n- human approval for risky writes and commits;\n- no global autonomy claim from dry-run or read-only validation;\n- no public claims based on private benchmark artifacts;\n- generated reports and local runtime ledgers are kept out of source control;\n- advanced runtime moves and broad refactors should be split into reviewed slices.\n\n## Validation standard for changes\n\nFor a normal README/docs or harness-surface change, start with:\n\n```bash\nnpm run validate:script-surface\ngit diff --check\nnpm run check -- --pretty false\n```\n\nWhen relevant, add:\n\n```bash\nnpm run smoke:harness\nnpm run smoke:git-ops\nnpm run smoke:worker-pool\nnpm run validate:project-dna\nnpm run pack:dry-run\n```\n\nFor a public npm release, maintainers should additionally run the local release preview and then let CI publish after an explicitly authorized push to `main`:\n\n```bash\nnpm run release:preview\n```\n\nAfter the GitHub Actions release job completes, verify the published version with the actual tag/version reported by semantic-release:\n\n```bash\nnpm view zob-harness@<version> version\npi install npm:zob-harness@<version>\npi -e npm:zob-harness@<version> --offline --no-session -p \"Reply exactly: zob-harness-ok\"\n```\n\nDo not paste npm tokens, OTPs, or Trusted Publishing setup material into issue reports or agent transcripts. Local maintainers should not run `npm publish`; `.github/workflows/release.yml` performs the publish step after validation.\n\nReport exact command outcomes before claiming readiness.\n\n## Contributing\n\nContributions should preserve the ZOB operating style:\n\n- small, reversible changes;\n- explicit scope and stop conditions;\n- no secret access;\n- no hidden commits or pushes;\n- no unsupported benchmark/autonomy claims;\n- validation evidence attached to every readiness claim.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the contributor workflow.\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}