zob-harness 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/capabilities/zob-public-runtime-capabilities.json +4 -4
- package/.pi/extensions/zob-child-safety/AGENTS.md +12 -0
- package/.pi/extensions/zob-child-safety/index.ts +4 -105
- package/.pi/extensions/zob-child-safety/src/AGENTS.md +10 -0
- package/.pi/extensions/zob-child-safety/src/policy.ts +106 -0
- package/.pi/extensions/zob-harness/AGENTS.md +2 -0
- package/.pi/extensions/zob-harness/index.ts +94 -94
- package/.pi/extensions/zob-harness/src/AGENTS.md +4 -0
- package/.pi/extensions/zob-harness/src/core/AGENTS.md +24 -0
- package/.pi/extensions/zob-harness/src/{constants.ts → core/constants.ts} +10 -1
- package/.pi/extensions/zob-harness/src/core/utils/AGENTS.md +23 -0
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/formatting.ts +1 -1
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/records.ts +1 -1
- package/.pi/extensions/zob-harness/src/{utils → core/utils}/resources.ts +1 -1
- package/.pi/extensions/zob-harness/src/domains/AGENTS.md +23 -0
- package/.pi/extensions/zob-harness/src/domains/autonomy/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{autonomous-runtime.ts → domains/autonomy/autonomous-runtime.ts} +22 -22
- package/.pi/extensions/zob-harness/src/{autonomy-readiness.ts → domains/autonomy/autonomy-readiness.ts} +18 -18
- package/.pi/extensions/zob-harness/src/{daemon-policy.ts → domains/autonomy/daemon-policy.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{daemon-readiness.ts → domains/autonomy/daemon-readiness.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{daemon-runtime.ts → domains/autonomy/daemon-runtime.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{full-autonomy-test.ts → domains/autonomy/full-autonomy-test.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{interactive-autonomy.ts → domains/autonomy/interactive-autonomy.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{compute-profile.ts → domains/compute/compute-profile.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{compute-workflow-shape.ts → domains/compute/compute-workflow-shape.ts} +3 -3
- package/.pi/extensions/zob-harness/src/domains/coms/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/envelope.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/identity.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/ledger-bridge.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/local-transport.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/policy.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/presence.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/registry.ts +47 -4
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/response-capture.ts +1 -1
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/transcript-capture.ts +2 -2
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer-profile.ts +3 -3
- package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/zpeer.ts +35 -7
- package/.pi/extensions/zob-harness/src/{mission-control.ts → domains/coms/mission-control.ts} +12 -9
- package/.pi/extensions/zob-harness/src/{zagents.ts → domains/coms/zagents.ts} +86 -4
- package/.pi/extensions/zob-harness/src/domains/context/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{context-gbrain.ts → domains/context/context-gbrain.ts} +4 -4
- package/.pi/extensions/zob-harness/src/domains/delegation/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{agents.ts → domains/delegation/agents.ts} +2 -2
- package/.pi/extensions/zob-harness/src/{capabilities.ts → domains/delegation/capabilities.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{child-runner.ts → domains/delegation/child-runner.ts} +8 -8
- package/.pi/extensions/zob-harness/src/{output-contracts.ts → domains/delegation/output-contracts.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{prompt-packs.ts → domains/delegation/prompt-packs.ts} +4 -4
- package/.pi/extensions/zob-harness/src/domains/factory/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/agentic-plan.ts +1 -1
- package/.pi/extensions/zob-harness/src/{factory-selector.ts → domains/factory/factory-selector.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/quarantine.ts +5 -5
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/run.ts +5 -5
- package/.pi/extensions/zob-harness/src/{factory → domains/factory}/validation.ts +10 -10
- package/.pi/extensions/zob-harness/src/domains/git/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{git-ops.ts → domains/git/git-ops.ts} +3 -3
- package/.pi/extensions/zob-harness/src/domains/goal/AGENTS.md +22 -0
- package/.pi/extensions/zob-harness/src/{goal-room.ts → domains/goal/goal-room.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{goal-todo-imports.ts → domains/goal/goal-todo-imports.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{goal-todo-types.ts → domains/goal/goal-todo-types.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{goal-todos.ts → domains/goal/goal-todos.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{goal.ts → domains/goal/goal.ts} +1 -1
- package/.pi/extensions/zob-harness/src/domains/governance/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{budget-policy.ts → domains/governance/budget-policy.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{governed-requests.ts → domains/governance/governed-requests.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{launch-apply.ts → domains/governance/launch-apply.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{merge-queue.ts → domains/governance/merge-queue.ts} +6 -6
- package/.pi/extensions/zob-harness/src/{rules.ts → domains/governance/rules.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{safety.ts → domains/governance/safety.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{sandbox.ts → domains/governance/sandbox.ts} +5 -5
- package/.pi/extensions/zob-harness/src/{worker-pool.ts → domains/governance/worker-pool.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{workspace-claims.ts → domains/governance/workspace-claims.ts} +6 -6
- package/.pi/extensions/zob-harness/src/domains/models/AGENTS.md +20 -0
- package/.pi/extensions/zob-harness/src/{model-availability.ts → domains/models/model-availability.ts} +1 -1
- package/.pi/extensions/zob-harness/src/{model-routing.ts → domains/models/model-routing.ts} +6 -6
- package/.pi/extensions/zob-harness/src/domains/orchestration/AGENTS.md +21 -0
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-delegation.ts +8 -8
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/adaptive-workflow.ts +4 -4
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/lead-plan.ts +5 -5
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/plan.ts +5 -5
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/room.ts +4 -4
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/run.ts +6 -6
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/supervised-readonly.ts +6 -6
- package/.pi/extensions/zob-harness/src/{orchestration → domains/orchestration}/widget-readers.ts +2 -2
- package/.pi/extensions/zob-harness/src/domains/project-dna/AGENTS.md +19 -0
- package/.pi/extensions/zob-harness/src/{project-dna.ts → domains/project-dna/project-dna.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/candidate.ts +5 -5
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/coms.ts +3 -3
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/documentation.ts +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/factory.ts +2 -2
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/temp-agent.ts +4 -4
- package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/write-lane.ts +3 -3
- package/.pi/extensions/zob-harness/src/domains/telemetry/AGENTS.md +19 -0
- package/.pi/extensions/zob-harness/src/{chronicle.ts → domains/telemetry/chronicle.ts} +3 -3
- package/.pi/extensions/zob-harness/src/{queue.ts → domains/telemetry/queue.ts} +7 -7
- package/.pi/extensions/zob-harness/src/{telemetry.ts → domains/telemetry/telemetry.ts} +4 -4
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/chains.ts +10 -10
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/coms.ts +3 -3
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/orchestration-profiles.ts +8 -8
- package/.pi/extensions/zob-harness/src/{topology → domains/topology}/teams.ts +8 -8
- package/.pi/extensions/zob-harness/src/runtime/adaptive-zmode.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/auto-compaction.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/commands.ts +51 -29
- package/.pi/extensions/zob-harness/src/runtime/compaction-policy.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/delegation-feed.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/delegation-monitor.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/events.ts +53 -37
- package/.pi/extensions/zob-harness/src/{goal-runtime.ts → runtime/goal-runtime.ts} +9 -9
- package/.pi/extensions/zob-harness/src/runtime/goal-todo-overlay.ts +1 -1
- package/.pi/extensions/zob-harness/src/runtime/plan-capture.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/state.ts +15 -13
- package/.pi/extensions/zob-harness/src/runtime/tools-autonomous.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-compute.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-coms.ts +15 -12
- package/.pi/extensions/zob-harness/src/runtime/tools-context.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-delegation.ts +13 -13
- package/.pi/extensions/zob-harness/src/runtime/tools-factory.ts +19 -19
- package/.pi/extensions/zob-harness/src/runtime/tools-goal-room.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-governed-requests.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-merge-queue.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-mission-control.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-orchestration.ts +9 -9
- package/.pi/extensions/zob-harness/src/runtime/tools-project-dna.ts +2 -2
- package/.pi/extensions/zob-harness/src/runtime/tools-worker-pool.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-workspace-claims.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/tools-zcommit.ts +3 -3
- package/.pi/extensions/zob-harness/src/runtime/widget.ts +27 -10
- package/.pi/extensions/zob-harness/src/runtime/zobHarness.ts +1 -1
- package/.pi/extensions/zob-harness/src/types.ts +2 -2
- package/.pi/extensions/zob-switch/AGENTS.md +9 -0
- package/.pi/extensions/zob-switch/index.ts +9 -121
- package/.pi/extensions/zob-switch/src/AGENTS.md +8 -0
- package/.pi/extensions/zob-switch/src/autocomplete.ts +12 -0
- package/.pi/extensions/zob-switch/src/paths.ts +8 -0
- package/.pi/extensions/zob-switch/src/settings.ts +25 -0
- package/.pi/extensions/zob-switch/src/snapshot.ts +34 -0
- package/.pi/extensions/zob-switch/src/state.ts +57 -0
- package/.pi/factories/agentic-spec-team/README.md +35 -0
- package/.pi/factories/agentic-spec-team/batch-manifest.json +11 -0
- package/.pi/factories/agentic-spec-team/example-agentic-spec-manifest.json +19 -0
- package/.pi/factories/agentic-spec-team/factory.json +98 -0
- package/.pi/factories/agentic-spec-team/pilot-manifest.json +11 -0
- package/.pi/factories/agentic-spec-team/schemas/final-report.schema.json +15 -0
- package/.pi/factories/agentic-spec-team/schemas/manifest.schema.json +14 -0
- package/.pi/factories/agentic-spec-team/schemas/question.schema.json +18 -0
- package/.pi/factories/agentic-spec-team/schemas/source-register.schema.json +11 -0
- package/.pi/factories/agentic-spec-team/schemas/traceability.schema.json +11 -0
- package/.pi/factories/agentic-spec-team/smoke-manifest.json +11 -0
- package/.pi/skills/zob-agentic-spec-team/SKILL.md +148 -0
- package/.pi/skills/zob-coms-safety/SKILL.md +13 -0
- package/.pi/skills/zob-coms-v2-live/SKILL.md +11 -0
- package/.pi/skills/zob-factory/SKILL.md +21 -0
- package/.pi/skills/zob-harness/SKILL.md +14 -0
- package/.pi/skills/zob-split-refactor/SKILL.md +1 -1
- package/.pi/skills/zob-zagent-creator/SKILL.md +266 -12
- package/.pi/zagents/agent-factory-pacman-chief.json +22 -0
- package/.pi/zagents/agent-factory-pacman-engine-builder.json +21 -0
- package/.pi/zagents/agent-factory-pacman-frontend-builder.json +21 -0
- package/.pi/zagents/agent-factory-pacman-game-architect.json +21 -0
- package/.pi/zagents/agent-factory-pacman-game-designer.json +21 -0
- package/.pi/zagents/agent-factory-pacman-qa-oracle.json +21 -0
- package/.pi/zagents/bdd-writer.json +20 -0
- package/.pi/zagents/data-profile-analyst.json +20 -0
- package/.pi/zagents/domain-modeler.json +20 -0
- package/.pi/zagents/planner-handoff-writer.json +20 -0
- package/.pi/zagents/prompts/agent-factory-pacman-chief.md +53 -0
- package/.pi/zagents/prompts/agent-factory-pacman-engine-builder.md +41 -0
- package/.pi/zagents/prompts/agent-factory-pacman-frontend-builder.md +40 -0
- package/.pi/zagents/prompts/agent-factory-pacman-game-architect.md +41 -0
- package/.pi/zagents/prompts/agent-factory-pacman-game-designer.md +43 -0
- package/.pi/zagents/prompts/agent-factory-pacman-qa-oracle.md +51 -0
- package/.pi/zagents/prompts/agentic-spec-run-role.md +30 -0
- package/.pi/zagents/source-intake-steward.json +20 -0
- package/.pi/zagents/spec-chief.json +21 -0
- package/.pi/zagents/spec-oracle.json +20 -0
- package/.pi/zagents/spec-writer.json +20 -0
- package/.pi/zagents/ux-flow-analyst.json +20 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs +384 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer.json +42 -0
- package/.pi/zteams/agent-factory-pacman-multiplayer.tmux.sh +256 -0
- package/.pi/zteams/agentic-spec-run.json +42 -0
- package/.pi/zteams/agentic-spec-run.tmux.sh +134 -0
- package/.pi/zteams/templates/agent-factory-pacman-chief-kickoff.template.md +71 -0
- package/.pi/zteams/templates/agent-factory-pacman-worker-kickoff.template.md +59 -0
- package/README.md +183 -110
- package/SOURCE_INDEX.md +5 -1
- package/examples/agent-factory-mission-control/AGENTS.md +10 -0
- package/examples/agent-factory-mission-control/README.md +17 -0
- package/examples/agent-factory-mission-control/apps/api/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/apps/dashboard/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/mission.md +3 -0
- package/examples/agent-factory-mission-control/output-contract.md +3 -0
- package/examples/agent-factory-mission-control/packages/domain/AGENTS.md +3 -0
- package/examples/agent-factory-mission-control/packages/snapshot-reader/AGENTS.md +3 -0
- package/examples/agent-factory-pacman-multiplayer/AGENTS.md +27 -0
- package/examples/agent-factory-pacman-multiplayer/README.md +84 -0
- package/examples/agent-factory-pacman-multiplayer/mission.md +43 -0
- package/examples/agent-factory-pacman-multiplayer/output-contract.md +58 -0
- package/examples/agent-factory-tmux-comms/README.md +146 -0
- package/examples/agent-factory-tmux-comms/chief-kickoff.template.md +54 -0
- package/examples/agent-factory-tmux-comms/simple-agent-factory.team.json +92 -0
- package/examples/agent-factory-tmux-comms/simple-agent-factory.tmux.sh +248 -0
- package/examples/agent-factory-tmux-comms/worker-kickoff.template.md +43 -0
- package/package.json +17 -3
- package/scripts/README.md +1 -1
- package/scripts/agentic-spec-team/validate-bdd.mjs +13 -0
- package/scripts/agentic-spec-team/validate-final-report.mjs +14 -0
- package/scripts/agentic-spec-team/validate-manifest.mjs +14 -0
- package/scripts/agentic-spec-team/validate-oracle-ready.mjs +13 -0
- package/scripts/agentic-spec-team/validate-question-loop.mjs +15 -0
- package/scripts/agentic-spec-team/validate-run.mjs +11 -0
- package/scripts/agentic-spec-team/validate-source-register.mjs +17 -0
- package/scripts/agentic-spec-team/validate-traceability.mjs +20 -0
- package/scripts/agentic-spec-team/validate-workgraph.mjs +13 -0
- package/scripts/autonomy/mission-readiness-secret-smoke.mjs +5 -5
- package/scripts/git-ops/commit-policy-smoke.mjs +5 -4
- package/scripts/goal-todo/child-goal-ref-smoke.mjs +2 -2
- package/scripts/path-policy/validate-smoke.mjs +3 -3
- package/scripts/project-dna/AGENTS.md +39 -0
- package/scripts/project-dna/{validate-scaffold.mjs → validation/validate-scaffold.mjs} +7 -7
- package/scripts/spec-run.mjs +365 -0
- package/scripts/worker-pool/static-smoke.mjs +5 -5
- package/scripts/zagent-static-smoke.mjs +35 -6
- package/scripts/zpeer-local-e2e-smoke.mjs +12 -5
- package/scripts/zpeer-static-smoke.mjs +17 -17
- /package/.pi/extensions/zob-harness/src/{types → core/types}/core.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/hashing.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/json.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{utils → core/utils}/paths.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/AGENTS.md +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/pending-replies.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{coms-v2 → domains/coms/coms-v2}/types.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/ledger.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/types.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{promotion → domains/promotion}/validate.ts +0 -0
- /package/.pi/extensions/zob-harness/src/{schemas-project-dna.ts → runtime/schemas-project-dna.ts} +0 -0
- /package/.pi/extensions/zob-harness/src/{schemas.ts → runtime/schemas.ts} +0 -0
- /package/scripts/project-dna/{bench-smoke.mjs → benchmark/bench-smoke.mjs} +0 -0
- /package/scripts/project-dna/{build-capsules.mjs → capsules/build-capsules.mjs} +0 -0
- /package/scripts/project-dna/{emit-golden-cases.mjs → emit/emit-golden-cases.mjs} +0 -0
- /package/scripts/project-dna/{emit-ontology.mjs → emit/emit-ontology.mjs} +0 -0
- /package/scripts/project-dna/{oracle-review-smoke.mjs → oracle/oracle-review-smoke.mjs} +0 -0
- /package/scripts/project-dna/{query-context.mjs → query/query-context.mjs} +0 -0
- /package/scripts/project-dna/{query-steward.mjs → query/query-steward.mjs} +0 -0
- /package/scripts/project-dna/{build-sample-spec.mjs → sample/build-sample-spec.mjs} +0 -0
- /package/scripts/project-dna/{generate-sample.mjs → sample/generate-sample.mjs} +0 -0
- /package/scripts/project-dna/{validate-sample-project.mjs → sample/validate-sample-project.mjs} +0 -0
- /package/scripts/project-dna/{scan.mjs → scan/scan.mjs} +0 -0
- /package/scripts/project-dna/{validate-scan-artifacts.mjs → scan/validate-scan-artifacts.mjs} +0 -0
- /package/scripts/project-dna/{validate-5of5.mjs → validation/validate-5of5.mjs} +0 -0
- /package/scripts/project-dna/{validate-golden-cases.mjs → validation/validate-golden-cases.mjs} +0 -0
- /package/scripts/project-dna/{validate-ontology.mjs → validation/validate-ontology.mjs} +0 -0
- /package/scripts/project-dna/{plan-workflow.mjs → workflow/plan-workflow.mjs} +0 -0
- /package/scripts/project-dna/{validate-workflow.mjs → workflow/validate-workflow.mjs} +0 -0
|
@@ -23,7 +23,7 @@ description: Use when splitting a monolithic ZOB/Pi TypeScript extension into mo
|
|
|
23
23
|
|
|
24
24
|
## Slice workflow
|
|
25
25
|
|
|
26
|
-
1. Read `docs/
|
|
26
|
+
1. Read `docs/ZOB_HARNESS_ARCHITECTURE.md` once for the phase.
|
|
27
27
|
2. Read the local `AGENTS.md` for the target folder.
|
|
28
28
|
3. Read only the relevant `index.ts` range and already-extracted modules.
|
|
29
29
|
4. Move a bounded block with minimal import/export changes.
|
|
@@ -22,11 +22,12 @@ Example owner asks:
|
|
|
22
22
|
|
|
23
23
|
The assistant should:
|
|
24
24
|
|
|
25
|
-
1. Parse the owner’s natural-language team/agent description into candidate ZAgent roles, ZTeam membership, rooms, authority, allowed tools, allowed paths, forbidden paths, and verification expectations.
|
|
25
|
+
1. Parse the owner’s natural-language team/agent description into candidate ZAgent roles, ZTeam membership, rooms, authority, allowed tools, allowed paths, forbidden paths, default ZOB mode, and verification expectations.
|
|
26
26
|
2. Analyze the current repo and any owner-provided reference context before writing, staying within allowed paths and avoiding secrets.
|
|
27
|
-
3.
|
|
28
|
-
4.
|
|
29
|
-
5.
|
|
27
|
+
3. If the owner mentions model choice, cost, “moins cher”, speed, quality, reasoning, context length, oracle/security strength, or any concrete model/provider, read the project-local model catalog before choosing: prefer `.pi/model-catalog.json` when present, otherwise use `.pi/model-catalog.example.json` as a fallback; also read `.pi/model-routing.json` for valid model classes.
|
|
28
|
+
4. Write only project-local artifacts: `.pi/zagents/*.json`, `.pi/zagents/prompts/*.md`, `.pi/zteams/*.json`, and, only when the owner explicitly requests `tmux`, `.pi/zteams/*.tmux.sh`.
|
|
29
|
+
5. Report the generated files, model choices, model-catalog evidence, tmux bundle details when applicable, and the manual launch instructions; do not automatically spawn processes.
|
|
30
|
+
6. Tell the user to inspect `/zteam launch-plan <team-id>` and launch each full Pi session manually with `ZOB_ZAGENT_ID=<id> pi` or, when a ZAgent manifest sets `model`, the launch-plan-provided `ZOB_ZAGENT_ID=<id> pi --model <model>` command. If a manifest sets `defaultMode`, that launched ZAgent session applies the mode on startup. When a tmux launcher was generated, tell the user it is a manual convenience wrapper around those commands, not proof that agents were launched.
|
|
30
31
|
|
|
31
32
|
## Output locations
|
|
32
33
|
|
|
@@ -35,8 +36,244 @@ Generated definitions must stay project-local and are not harness-global:
|
|
|
35
36
|
- ZAgent definitions: `.pi/zagents/*.json`
|
|
36
37
|
- ZAgent prompts: `.pi/zagents/prompts/*.md`
|
|
37
38
|
- ZTeam definitions: `.pi/zteams/*.json`
|
|
39
|
+
- Optional tmux launchers, only when explicitly requested: `.pi/zteams/*.tmux.sh`
|
|
38
40
|
|
|
39
|
-
Never write generated ZAgent or
|
|
41
|
+
Never write generated ZAgent, ZTeam, prompt, or tmux launcher artifacts outside those directories unless the owner explicitly provides a different project-local allowed path.
|
|
42
|
+
|
|
43
|
+
## Documentation examples vs active project teams
|
|
44
|
+
|
|
45
|
+
When creating documentation-only Agent Factory examples, write them under an explicit example path such as `examples/agent-factory-tmux-comms/` and mark them as inert/example-only. Do not place example manifests under `.pi/zagents/` or `.pi/zteams/` unless the owner is asking to create an active project-local team.
|
|
46
|
+
|
|
47
|
+
Example files may illustrate a team manifest, manual tmux launcher, and kickoff templates, but they must state that real activation requires owner review and adaptation into `.pi/zagents/`, `.pi/zagents/prompts/`, and `.pi/zteams/`.
|
|
48
|
+
|
|
49
|
+
## Optional tmux launcher mode
|
|
50
|
+
|
|
51
|
+
When the owner starts or qualifies the natural-language request with `tmux`, generate a project-local tmux launcher script alongside the generated ZTeam manifests. This is a convenience artifact only: the assistant must write the script and report manual commands, but must not run tmux, start Pi sessions, attach to tmux, or close tmux sessions automatically.
|
|
52
|
+
|
|
53
|
+
For Agent Factory launchers, prefer startup kickoff files (`pi @chief-kickoff.md`, `pi @worker-kickoff.md`) over post-start tmux pane paste. Tmux is a local launch/observation wrapper; communication and durable evidence still belong to ZPeer/Goal Room-style visible coordination and run artifacts.
|
|
54
|
+
|
|
55
|
+
Accepted owner request patterns include:
|
|
56
|
+
|
|
57
|
+
- `/skill:zob-zagent-creator tmux ...`
|
|
58
|
+
- `/skill:zob-zagent-creator tmux team ...`
|
|
59
|
+
- `/skill:zob-zagent-creator tmux connected ...`
|
|
60
|
+
- `/skill:zob-zagent-creator tmux all ...`
|
|
61
|
+
|
|
62
|
+
Tmux scope rules:
|
|
63
|
+
|
|
64
|
+
- `tmux team`: include only the primary generated ZTeam's direct members.
|
|
65
|
+
- `tmux connected`: include the primary ZTeam plus every generated or existing ZTeam connected through shared ZAgent membership. This is the default when the owner says only `tmux`, especially when the request describes bridge agents, multiple teams, or agents that belong to more than one team.
|
|
66
|
+
- `tmux all`: include every ZTeam generated for the owner's request.
|
|
67
|
+
|
|
68
|
+
A tmux launcher represents a **bundle** of teams and unique agents, not necessarily a single team. Use a safe bundle id such as `<team-id>` for simple teams or `<mission-id>-bundle` for multi-team connected graphs. Also record the intended owner entry point in the primary ZTeam manifest as `metadata.entryAgent` (and optionally `metadata.entryRoom`) when absent; choose the lead/orchestrator agent if one exists, otherwise the first unique agent. Write the launcher to:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
.pi/zteams/<bundle-id>.tmux.sh
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The launcher must create one tmux session for the bundle and one tmux window per unique ZAgent id:
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
session: zob-<bundle-id>
|
|
78
|
+
window: <zagent-id-1>
|
|
79
|
+
window: <shared-bridge-zagent-id>
|
|
80
|
+
window: <zagent-id-2>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Deduplicate agents by `zagentId` only. Do not launch the same bridge/shared ZAgent once per team. A shared ZAgent should be launched once with `ZOB_ZAGENT_ID=<id> pi`; the runtime can resolve its rooms and team memberships from the ZAgent and ZTeam manifests.
|
|
84
|
+
|
|
85
|
+
The script must support these manual subcommands:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
./.pi/zteams/<bundle-id>.tmux.sh start [agent] # create the tmux session if absent, then attach entryAgent or named agent
|
|
89
|
+
./.pi/zteams/<bundle-id>.tmux.sh attach [agent] # attach to entryAgent or named agent in an existing session
|
|
90
|
+
./.pi/zteams/<bundle-id>.tmux.sh window <agent> # alias for attach <agent>
|
|
91
|
+
./.pi/zteams/<bundle-id>.tmux.sh list # list entryAgent and available agent windows
|
|
92
|
+
./.pi/zteams/<bundle-id>.tmux.sh status # list bundle windows/session status
|
|
93
|
+
./.pi/zteams/<bundle-id>.tmux.sh close # close only this bundle's tmux session
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Script safety requirements:
|
|
97
|
+
|
|
98
|
+
- Use `#!/usr/bin/env bash` and `set -euo pipefail`.
|
|
99
|
+
- Check `command -v tmux` before any tmux operation.
|
|
100
|
+
- Use a safe session name like `zob-<bundle-id>` and safe tmux window names derived from validated ZAgent ids.
|
|
101
|
+
- Choose an entry agent for the bundle. Prefer `team.metadata.entryAgent` when present; otherwise use the first unique ZAgent in the launcher.
|
|
102
|
+
- If `start` sees that the session already exists, attach to the entry agent or requested agent instead of creating duplicate Pi processes.
|
|
103
|
+
- `start [agent]`, `attach [agent]`, and `window <agent>` must validate the target against the launcher `AGENTS` list before passing it to tmux.
|
|
104
|
+
- `close` may call only `tmux kill-session -t "$SESSION_NAME"`; do not use `killall`, broad process kills, destructive shell commands, or global cleanup.
|
|
105
|
+
- Quote shell values safely. Do not inject raw natural-language text into shell commands.
|
|
106
|
+
- Only include `--model <model>` when the model value passes the same safe pattern expected by `/zteam launch-plan`; otherwise omit it and report the omission.
|
|
107
|
+
- Keep the script local-only and manual; it must not perform network setup, credential access, commits, pushes, or background daemon installation.
|
|
108
|
+
|
|
109
|
+
Recommended launcher shape:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
#!/usr/bin/env bash
|
|
113
|
+
set -euo pipefail
|
|
114
|
+
|
|
115
|
+
SESSION_NAME="zob-<bundle-id>"
|
|
116
|
+
ENTRY_AGENT="planner" # prefer team.metadata.entryAgent; fallback AGENTS[0]
|
|
117
|
+
AGENTS=("planner" "bridge-agent" "oracle")
|
|
118
|
+
MODELS=("" "" "openrouter/example/model")
|
|
119
|
+
|
|
120
|
+
require_tmux() {
|
|
121
|
+
command -v tmux >/dev/null 2>&1 || { echo "tmux is required"; exit 1; }
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
session_exists() {
|
|
125
|
+
tmux has-session -t "$SESSION_NAME" 2>/dev/null
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
safe_window_name() {
|
|
129
|
+
printf '%s' "$1" | tr -c 'A-Za-z0-9_-' '-'
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
is_known_agent() {
|
|
133
|
+
local candidate="${1:-}"
|
|
134
|
+
local agent
|
|
135
|
+
for agent in "${AGENTS[@]}"; do
|
|
136
|
+
if [ "$agent" = "$candidate" ]; then return 0; fi
|
|
137
|
+
done
|
|
138
|
+
return 1
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
resolve_target_agent() {
|
|
142
|
+
local requested="${1:-$ENTRY_AGENT}"
|
|
143
|
+
if ! is_known_agent "$requested"; then
|
|
144
|
+
echo "Unknown agent/window: $requested" >&2
|
|
145
|
+
echo "Known agents:" >&2
|
|
146
|
+
printf ' %s\n' "${AGENTS[@]}" >&2
|
|
147
|
+
exit 2
|
|
148
|
+
fi
|
|
149
|
+
printf '%s' "$requested"
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
attach_to_agent() {
|
|
153
|
+
require_tmux
|
|
154
|
+
local target="$(resolve_target_agent "${1:-$ENTRY_AGENT}")"
|
|
155
|
+
local window="$(safe_window_name "$target")"
|
|
156
|
+
if ! session_exists; then
|
|
157
|
+
echo "session not running: $SESSION_NAME" >&2
|
|
158
|
+
echo "Run: $0 start $target" >&2
|
|
159
|
+
exit 1
|
|
160
|
+
fi
|
|
161
|
+
tmux select-window -t "$SESSION_NAME:$window"
|
|
162
|
+
tmux attach -t "$SESSION_NAME:$window"
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
start_session() {
|
|
166
|
+
require_tmux
|
|
167
|
+
local target="$(resolve_target_agent "${1:-$ENTRY_AGENT}")"
|
|
168
|
+
local target_window="$(safe_window_name "$target")"
|
|
169
|
+
if session_exists; then
|
|
170
|
+
attach_to_agent "$target"
|
|
171
|
+
exit 0
|
|
172
|
+
fi
|
|
173
|
+
local first="${AGENTS[0]}"
|
|
174
|
+
local first_window="$(safe_window_name "$first")"
|
|
175
|
+
tmux new-session -d -s "$SESSION_NAME" -n "$first_window"
|
|
176
|
+
for i in "${!AGENTS[@]}"; do
|
|
177
|
+
agent="${AGENTS[$i]}"
|
|
178
|
+
model="${MODELS[$i]}"
|
|
179
|
+
window="$(safe_window_name "$agent")"
|
|
180
|
+
if [ "$i" -ne 0 ]; then tmux new-window -t "$SESSION_NAME" -n "$window"; fi
|
|
181
|
+
if [ -n "$model" ]; then
|
|
182
|
+
tmux send-keys -t "$SESSION_NAME:$window" "ZOB_ZAGENT_ID=$agent pi --model $model" C-m
|
|
183
|
+
else
|
|
184
|
+
tmux send-keys -t "$SESSION_NAME:$window" "ZOB_ZAGENT_ID=$agent pi" C-m
|
|
185
|
+
fi
|
|
186
|
+
done
|
|
187
|
+
tmux select-window -t "$SESSION_NAME:$target_window"
|
|
188
|
+
tmux attach -t "$SESSION_NAME:$target_window"
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
list_agents() {
|
|
192
|
+
printf 'entry: %s\n' "$ENTRY_AGENT"
|
|
193
|
+
printf 'agents:\n'
|
|
194
|
+
printf ' %s\n' "${AGENTS[@]}"
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
case "${1:-start}" in
|
|
198
|
+
start) start_session "${2:-$ENTRY_AGENT}" ;;
|
|
199
|
+
attach) attach_to_agent "${2:-$ENTRY_AGENT}" ;;
|
|
200
|
+
window) attach_to_agent "${2:-$ENTRY_AGENT}" ;;
|
|
201
|
+
list) list_agents ;;
|
|
202
|
+
status) require_tmux; tmux list-windows -t "$SESSION_NAME" ;;
|
|
203
|
+
close) require_tmux; tmux kill-session -t "$SESSION_NAME" ;;
|
|
204
|
+
*) echo "Usage: $0 start [agent]|attach [agent]|window <agent>|list|status|close"; exit 2 ;;
|
|
205
|
+
esac
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
When reporting a generated tmux launcher, include the bundle id, session name, scope (`team`, `connected`, or `all`), teams included, unique ZAgents included, shared/bridge ZAgents deduplicated, entry agent/window, whether `metadata.entryAgent` was written/found, and the manual `start [agent]`, `attach [agent]`, `window <agent>`, `list`, `status`, and `close` commands.
|
|
209
|
+
|
|
210
|
+
## Model catalog selection
|
|
211
|
+
|
|
212
|
+
When the natural-language ask includes model, provider, budget, cheap/expensive, “moins cher”, speed, quality, reasoning, long context, oracle, reviewer, security, or fallback preferences, treat model choice as part of the ZAgent design.
|
|
213
|
+
|
|
214
|
+
Required read order:
|
|
215
|
+
|
|
216
|
+
1. `.pi/model-catalog.json` if it exists; otherwise `.pi/model-catalog.example.json` as the bounded fallback catalog.
|
|
217
|
+
2. `.pi/model-routing.json` for valid model classes: `cheap_scout`, `balanced_worker`, `strong_reasoning`, `strong_oracle`, `high_context`.
|
|
218
|
+
|
|
219
|
+
Selection rules:
|
|
220
|
+
|
|
221
|
+
- Map each ZAgent role to a model class before selecting a concrete model. Typical mapping: scout/research -> `cheap_scout`; implementer/worker -> `balanced_worker`; planner/architect -> `strong_reasoning`; oracle/final reviewer/security -> `strong_oracle`; large-context synthesis -> `high_context`.
|
|
222
|
+
- Use catalog fields to justify the choice: `classDefaults`, `agentPreferences`, `models[*].classes`, `status`, `resolutionStatus`, `costTier`, `qualityTier`, `contextWindow`, `bestFor`, `avoidFor`, and `notes`.
|
|
223
|
+
- If the owner asks for cheaper models, prefer `free`/`low`/`medium` cost tiers only when the chosen model is not listed in `avoidFor` for that role and does not downgrade oracle/security work.
|
|
224
|
+
- Do not make a cheap, experimental, disabled, or unverified model the only `strong_oracle`/security default unless the owner explicitly approves that downgrade for this ZAgent.
|
|
225
|
+
- If a model is unverified or the catalog is missing and only the example fallback was available, include that caveat in the final report and in manifest metadata.
|
|
226
|
+
- Never invent model IDs, credentials, provider setup, or exact availability. Store user-provided vague names only as unverified candidates if the owner asked to preserve them.
|
|
227
|
+
- Keep `.pi/model-routing.json` advisory: do not enable `liveRoutingEnabled`, `modelRouterUsed`, `routingApplied`, `childDispatchAllowed`, global routing, or daemon behavior.
|
|
228
|
+
|
|
229
|
+
ZAgent manifest model shape:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"model": "openrouter/moonshotai/kimi-k2.6:free",
|
|
234
|
+
"metadata": {
|
|
235
|
+
"modelSelection": {
|
|
236
|
+
"source": ".pi/model-catalog.json",
|
|
237
|
+
"class": "cheap_scout",
|
|
238
|
+
"reason": "Owner asked for a cheaper scout model; catalog marks it free/low-risk for repo_search and not for oracle/security.",
|
|
239
|
+
"resolutionStatus": "unverified",
|
|
240
|
+
"caveats": ["Do not use for final oracle/security review."]
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
`/zteam launch-plan <team-id>` prints `--model <manifest.model>` for safe model patterns. If no model is set, Pi uses its default model.
|
|
247
|
+
|
|
248
|
+
## Default ZOB mode selection
|
|
249
|
+
|
|
250
|
+
When creating each ZAgent, set `defaultMode` to the smallest ZOB posture that matches the role. This chooses the initial session mode only; it does not grant extra authority, bypass approval gates, or change allowed paths/tools.
|
|
251
|
+
|
|
252
|
+
Typical mapping:
|
|
253
|
+
|
|
254
|
+
- repository scout, context finder, read-only researcher -> `explore`
|
|
255
|
+
- planner, architect, spec writer, strategy/coordination planner -> `plan`
|
|
256
|
+
- implementer, patch author, bounded builder -> `implement`
|
|
257
|
+
- reviewer, verifier, no-ship checker, final safety/security judge -> `oracle`
|
|
258
|
+
- repeatable workflow/factory designer or runner -> `factory`
|
|
259
|
+
- chief/lead/coordinator managing TODOs, delegation, workgraphs, owner protocols -> `orchestrator`
|
|
260
|
+
- base Pi/direct unrestricted operator mode -> `vanilla` only when the owner explicitly asks for vanilla/base Pi behavior; never choose `vanilla` by default.
|
|
261
|
+
|
|
262
|
+
ZAgent manifest mode shape:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"defaultMode": "explore",
|
|
267
|
+
"metadata": {
|
|
268
|
+
"modeSelection": {
|
|
269
|
+
"reason": "Read-only repository scout; no writes expected.",
|
|
270
|
+
"authorityNote": "defaultMode sets initial ZOB posture only and does not expand permissions."
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
`/zteam launch-plan <team-id>` prints `defaultMode=<mode>` in the command comment. When launched with `ZOB_ZAGENT_ID=<id> pi`, the runtime applies that mode during session startup.
|
|
40
277
|
|
|
41
278
|
## Safe workflow
|
|
42
279
|
|
|
@@ -47,15 +284,23 @@ Never write generated ZAgent or ZTeam artifacts outside those directories unless
|
|
|
47
284
|
5. Include clear human-owner control points for launch, escalation, writes, external access, and completion claims.
|
|
48
285
|
6. Validate the artifact structurally before claiming it is ready.
|
|
49
286
|
7. Provide manual launch guidance only: use `/zteam launch-plan <team-id>` to review the plan, then start sessions with `ZOB_ZAGENT_ID=<id> pi`; do not spawn sessions automatically.
|
|
50
|
-
8. If
|
|
287
|
+
8. If `tmux` is requested, generate only the launcher script and manual commands; do not execute `tmux`, `pi`, `attach`, `close`, or any process-spawning command.
|
|
288
|
+
9. If runtime, live coms, Mission Control, or ZPeer behavior is involved, load the relevant ZOB coms/runtime skills before editing.
|
|
289
|
+
10. If a ZAgent manifest includes `model`, verify it is a safe Pi `--model` pattern and cite the catalog source used for the choice.
|
|
290
|
+
11. If a ZAgent manifest includes `defaultMode`, verify it is one of `explore`, `plan`, `implement`, `oracle`, `factory`, `orchestrator`, or explicitly requested `vanilla`.
|
|
291
|
+
12. If a tmux launcher includes multiple teams, verify shared/bridge ZAgents are deduplicated by `zagentId` before writing the script.
|
|
51
292
|
|
|
52
293
|
## MUST DO
|
|
53
294
|
|
|
54
295
|
- Accept natural-language descriptions of the desired team/agents and convert them into bounded project-local artifacts.
|
|
55
|
-
- Use `.pi/zagents/*.json`, `.pi/zagents/prompts/*.md`, and `.pi/zteams/*.json` for outputs.
|
|
296
|
+
- Use `.pi/zagents/*.json`, `.pi/zagents/prompts/*.md`, and `.pi/zteams/*.json` for normal outputs; use `.pi/zteams/*.tmux.sh` only for explicitly requested tmux launchers.
|
|
56
297
|
- State that each ZAgent is a full Pi session tied to ZPeer/live coordination, not a delegated subagent.
|
|
57
|
-
- Define purpose, scope, allowed tools, allowed paths, forbidden paths, owner approval gates, verification requirements, and expected final report format.
|
|
298
|
+
- Define purpose, scope, allowed tools, allowed paths, forbidden paths, owner approval gates, verification requirements, default ZOB mode, and expected final report format.
|
|
299
|
+
- Set a justified per-ZAgent `defaultMode` from the role, using the smallest sufficient ZOB posture.
|
|
300
|
+
- When the ask mentions model choice or cost/quality tradeoffs, read the model catalog/routing files and record a justified per-ZAgent `model` plus metadata instead of guessing.
|
|
58
301
|
- Keep definitions minimal, auditable, and project-local.
|
|
302
|
+
- When generating tmux launchers, treat multi-team requests as bundles, deduplicate shared agents by `zagentId`, and document included teams, unique agents, and bridge/shared agents.
|
|
303
|
+
- For Agent Factory teams, include or reference the communication policy: `parentVisible: true`, `hiddenPeerChat: false`, `bodyStored: false`, `networkEnabled: false`, and owner/oracle gates for completion.
|
|
59
304
|
- Preserve existing runtime code and safety policy unless the owner explicitly asks for a separate implementation task.
|
|
60
305
|
- Ask for clarification when authority, launch conditions, write permissions, or external access are ambiguous.
|
|
61
306
|
|
|
@@ -64,8 +309,12 @@ Never write generated ZAgent or ZTeam artifacts outside those directories unless
|
|
|
64
309
|
- Do not edit runtime code while creating a ZAgent definition.
|
|
65
310
|
- Do not add a scaffold slash command or require one for natural-language ZAgent/ZTeam creation.
|
|
66
311
|
- Do not create, launch, or spawn actual ZAgent sessions unless explicitly requested as a separate task.
|
|
67
|
-
- Do not create manifests or
|
|
312
|
+
- Do not create manifests, prompts, or tmux launchers outside `.pi/zagents/`, `.pi/zagents/prompts/`, or `.pi/zteams/`.
|
|
68
313
|
- Do not grant broad filesystem, network, browser, secret, commit, push, or destructive-command authority by default.
|
|
314
|
+
- Do not generate tmux launchers that duplicate shared ZAgents per team, use `killall`, broad process kills, install daemons, access credentials, or perform global cleanup.
|
|
315
|
+
- Do not present a tmux launcher or kickoff template as proof that agents launched, communicated, validated, or completed work.
|
|
316
|
+
- Do not enable live/global model routing or store provider credentials/API keys while selecting ZAgent models.
|
|
317
|
+
- Do not choose `vanilla` as a default mode unless the owner explicitly requested vanilla/base Pi/direct unrestricted behavior.
|
|
69
318
|
- Do not treat ZAgent creation as delivery success for live communication or mission execution.
|
|
70
319
|
- Do not commit, push, tag, or modify git state unless the owner explicitly requests governed commit behavior.
|
|
71
320
|
|
|
@@ -73,13 +322,18 @@ Never write generated ZAgent or ZTeam artifacts outside those directories unless
|
|
|
73
322
|
|
|
74
323
|
Before reporting completion, verify:
|
|
75
324
|
|
|
76
|
-
- [ ] The owner’s natural-language ask was mapped to explicit ZAgent roles, team membership, scope, and verification expectations.
|
|
77
|
-
- [ ] File path is under `.pi/zagents/`, `.pi/zagents/prompts/`, or `.pi/zteams
|
|
325
|
+
- [ ] The owner’s natural-language ask was mapped to explicit ZAgent roles, team membership, scope, default ZOB modes, and verification expectations.
|
|
326
|
+
- [ ] File path is under `.pi/zagents/`, `.pi/zagents/prompts/`, or `.pi/zteams/`; tmux launchers, when requested, use `.pi/zteams/*.tmux.sh`.
|
|
78
327
|
- [ ] The artifact names the ZAgent or ZTeam and its bounded mission.
|
|
79
328
|
- [ ] It says ZAgents are full Pi sessions tied to ZPeer/live coordination, not delegate subagents.
|
|
80
329
|
- [ ] Allowed tools and allowed paths are explicit and minimal.
|
|
81
330
|
- [ ] Forbidden paths include secrets and generated/vendor/build areas where applicable.
|
|
82
331
|
- [ ] Human-owner approval gates are explicit for launch, writes, external access, commits, and escalation.
|
|
83
|
-
- [ ]
|
|
332
|
+
- [ ] If model preferences/cost/quality were mentioned, the chosen `model` values cite `.pi/model-catalog.json` or `.pi/model-catalog.example.json`, map to valid `.pi/model-routing.json` classes, and avoid oracle/security downgrade.
|
|
333
|
+
- [ ] Each `defaultMode` is valid, role-appropriate, and not `vanilla` unless explicitly requested.
|
|
334
|
+
- [ ] Manual launch instructions mention `/zteam launch-plan <team-id>` and `ZOB_ZAGENT_ID=<id> pi` / `ZOB_ZAGENT_ID=<id> pi --model <model>`, with no automatic process spawn.
|
|
335
|
+
- [ ] If tmux was requested, the primary ZTeam has `metadata.entryAgent` or the report states the fallback first agent.
|
|
336
|
+
- [ ] If tmux was requested, the report lists bundle id, session name, scope, teams included, unique agents, shared/bridge agents, entry agent/window, and manual `start [agent]`/`attach [agent]`/`window <agent>`/`list`/`status`/`close` commands.
|
|
337
|
+
- [ ] If tmux was requested, shared/bridge ZAgents are deduplicated by `zagentId`, and the script uses only bounded tmux operations for the bundle session.
|
|
84
338
|
- [ ] Verification commands or review steps are listed.
|
|
85
339
|
- [ ] No runtime code, live ledgers, sessions, or coms files were modified as part of definition creation.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-chief",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "orchestrator",
|
|
6
|
+
"alias": "pacman_chief",
|
|
7
|
+
"description": "Owner-facing chief for the generative Pac-Man multiplayer Agent Factory demo; coordinates workers, workgraph, communication, and final synthesis.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-chief.md",
|
|
9
|
+
"defaultMode": "orchestrator",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "pacman_chief", "role": "lead", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "edit", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/", ".pi/zteams/agent-factory-pacman-multiplayer.json", ".pi/zteams/agent-factory-pacman-multiplayer.tmux.sh", ".pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs", ".pi/zteams/templates/agent-factory-pacman-*.template.md"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false,
|
|
21
|
+
"metadata": { "modeSelection": { "reason": "Chief coordinates the autonomous team and workgraph.", "authorityNote": "defaultMode sets initial posture only and does not expand permissions." } }
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-engine-builder",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "engine-builder",
|
|
6
|
+
"alias": "engine_builder",
|
|
7
|
+
"description": "Generates the deterministic TypeScript Pac-Man game engine, movement/collision/scoring logic, and tests under the run project directory.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-engine-builder.md",
|
|
9
|
+
"defaultMode": "implement",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "engine_builder", "role": "engine", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "edit", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-frontend-builder",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "frontend-builder",
|
|
6
|
+
"alias": "frontend_builder",
|
|
7
|
+
"description": "Generates the browser game UI, rendering, local multiplayer controls, HUD, and launcher under the run project directory.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-frontend-builder.md",
|
|
9
|
+
"defaultMode": "implement",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "frontend_builder", "role": "frontend", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "edit", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-game-architect",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "game-architect",
|
|
6
|
+
"alias": "game_architect",
|
|
7
|
+
"description": "Designs the generated Pac-Man game architecture, engine/UI boundaries, state contracts, validation ladder, and implementation order.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-game-architect.md",
|
|
9
|
+
"defaultMode": "plan",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "game_architect", "role": "architecture", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "edit", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-game-designer",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "game-designer",
|
|
6
|
+
"alias": "game_designer",
|
|
7
|
+
"description": "Defines Pac-Man multiplayer gameplay rules, controls, scoring, round flow, and playability acceptance criteria.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-game-designer.md",
|
|
9
|
+
"defaultMode": "plan",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "game_designer", "role": "game_design", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "edit", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "agent-factory-pacman-qa-oracle",
|
|
4
|
+
"team": "agent-factory-pacman-multiplayer",
|
|
5
|
+
"role": "qa-oracle",
|
|
6
|
+
"alias": "qa_oracle",
|
|
7
|
+
"description": "Skeptically validates generated Pac-Man multiplayer project playability, tests, structure, safety, and no-ship posture.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agent-factory-pacman-qa-oracle.md",
|
|
9
|
+
"defaultMode": "oracle",
|
|
10
|
+
"defaultRoom": "pacman-factory",
|
|
11
|
+
"activeRoom": "pacman-factory",
|
|
12
|
+
"rooms": [{ "id": "pacman-factory", "alias": "qa_oracle", "role": "oracle", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["examples/agent-factory-pacman-multiplayer/", "reports/agent-factory-pacman-runs/", ".pi/zagents/agent-factory-pacman-*.json", ".pi/zteams/agent-factory-pacman-multiplayer.json", ".pi/zteams/agent-factory-pacman-multiplayer-runtime.mjs", ".pi/zteams/agent-factory-pacman-multiplayer.tmux.sh"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/agent-sessions/", ".pi/coms/"],
|
|
16
|
+
"approvalGates": { "externalAccess": "human", "externalWrite": "human+oracle", "commitOrPush": "human" },
|
|
17
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["pacman-factory"], "parentVisible": true, "hiddenPeerChat": false, "bodyStored": false },
|
|
18
|
+
"localOnly": true,
|
|
19
|
+
"networkEnabled": false,
|
|
20
|
+
"bodyStored": false
|
|
21
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "bdd-writer",
|
|
4
|
+
"team": "agentic-spec-run",
|
|
5
|
+
"role": "acceptance-bdd",
|
|
6
|
+
"alias": "bdd_writer",
|
|
7
|
+
"description": "Writes acceptance criteria, BDD/Gherkin scenarios, examples, and edge-case criteria mapped to requirements.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agentic-spec-run-role.md",
|
|
9
|
+
"defaultMode": "implement",
|
|
10
|
+
"defaultRoom": "validation",
|
|
11
|
+
"activeRoom": "validation",
|
|
12
|
+
"rooms": [{ "id": "spec-control", "alias": "bdd_writer", "role": "member", "active": true }, { "id": "validation", "alias": "bdd_writer", "role": "acceptance", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["reports/agentic-spec-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/coms/"],
|
|
16
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["spec-control", "validation"], "parentVisible": true, "hiddenPeerChat": false },
|
|
17
|
+
"localOnly": true,
|
|
18
|
+
"networkEnabled": false,
|
|
19
|
+
"bodyStored": false
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "data-profile-analyst",
|
|
4
|
+
"team": "agentic-spec-run",
|
|
5
|
+
"role": "data-analysis",
|
|
6
|
+
"alias": "data_profile",
|
|
7
|
+
"description": "Profiles structured data sources and writes data-profile/data-dictionary artifacts with cited caveats.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agentic-spec-run-role.md",
|
|
9
|
+
"defaultMode": "explore",
|
|
10
|
+
"defaultRoom": "data",
|
|
11
|
+
"activeRoom": "data",
|
|
12
|
+
"rooms": [{ "id": "spec-control", "alias": "data_profile", "role": "member", "active": true }, { "id": "data", "alias": "data_profile", "role": "analyst", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["reports/agentic-spec-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/coms/"],
|
|
16
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["spec-control", "data"], "parentVisible": true, "hiddenPeerChat": false },
|
|
17
|
+
"localOnly": true,
|
|
18
|
+
"networkEnabled": false,
|
|
19
|
+
"bodyStored": false
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "domain-modeler",
|
|
4
|
+
"team": "agentic-spec-run",
|
|
5
|
+
"role": "domain-modeling",
|
|
6
|
+
"alias": "domain_modeler",
|
|
7
|
+
"description": "Builds domain model, glossary, entities, states, business rules, assumptions, and contradictions from cited evidence.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agentic-spec-run-role.md",
|
|
9
|
+
"defaultMode": "explore",
|
|
10
|
+
"defaultRoom": "domain",
|
|
11
|
+
"activeRoom": "domain",
|
|
12
|
+
"rooms": [{ "id": "spec-control", "alias": "domain_modeler", "role": "member", "active": true }, { "id": "domain", "alias": "domain_modeler", "role": "modeler", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["reports/agentic-spec-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/coms/"],
|
|
16
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["spec-control", "domain"], "parentVisible": true, "hiddenPeerChat": false },
|
|
17
|
+
"localOnly": true,
|
|
18
|
+
"networkEnabled": false,
|
|
19
|
+
"bodyStored": false
|
|
20
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "zob.zagent.v1",
|
|
3
|
+
"id": "planner-handoff-writer",
|
|
4
|
+
"team": "agentic-spec-run",
|
|
5
|
+
"role": "implementation-handoff",
|
|
6
|
+
"alias": "handoff_writer",
|
|
7
|
+
"description": "Turns accepted requirements and criteria into implementation workgraph, tasks, validation plan, and agent handoff prompts.",
|
|
8
|
+
"promptRef": ".pi/zagents/prompts/agentic-spec-run-role.md",
|
|
9
|
+
"defaultMode": "plan",
|
|
10
|
+
"defaultRoom": "handoff",
|
|
11
|
+
"activeRoom": "handoff",
|
|
12
|
+
"rooms": [{ "id": "spec-control", "alias": "handoff_writer", "role": "member", "active": true }, { "id": "handoff", "alias": "handoff_writer", "role": "planner", "active": true }],
|
|
13
|
+
"allowedTools": ["read", "bash", "write", "zpeer_ask"],
|
|
14
|
+
"allowedPaths": ["reports/agentic-spec-runs/"],
|
|
15
|
+
"forbiddenPaths": [".env", ".env.*", "node_modules/", "dist/", "build/", "coverage/", ".git/", ".pi/sessions/", ".pi/coms/"],
|
|
16
|
+
"communicationPolicy": { "zpeerContact": true, "allowedRooms": ["spec-control", "handoff"], "parentVisible": true, "hiddenPeerChat": false },
|
|
17
|
+
"localOnly": true,
|
|
18
|
+
"networkEnabled": false,
|
|
19
|
+
"bodyStored": false
|
|
20
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Agent Factory Pac-Man Chief
|
|
2
|
+
|
|
3
|
+
You are `agent-factory-pacman-chief`, alias `pacman_chief`, the owner-facing coordinator for the Pac-Man multiplayer generative demo.
|
|
4
|
+
|
|
5
|
+
## Mission
|
|
6
|
+
|
|
7
|
+
Coordinate a local ZTeam that **generates** a playable Pac-Man-inspired multiplayer browser game under the run target:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
reports/agent-factory-pacman-runs/<run_id>/project/
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Do not build the game inside `examples/agent-factory-pacman-multiplayer/`; that folder is only the source brief.
|
|
14
|
+
|
|
15
|
+
## Required communication posture
|
|
16
|
+
|
|
17
|
+
Use only the parent-visible `pacman-factory` room. Communicate proactively. Do not wait silently.
|
|
18
|
+
|
|
19
|
+
Message shape:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
CONTEXT:
|
|
23
|
+
ASK:
|
|
24
|
+
EVIDENCE:
|
|
25
|
+
URGENCY:
|
|
26
|
+
BLOCKER:
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
You must dispatch and track:
|
|
30
|
+
|
|
31
|
+
- gameplay questions to `@game_designer`;
|
|
32
|
+
- architecture decisions to `@game_architect`;
|
|
33
|
+
- engine/state/collision tasks to `@engine_builder`;
|
|
34
|
+
- rendering/input/HUD tasks to `@frontend_builder`;
|
|
35
|
+
- playability/no-ship/validation review to `@qa_oracle`.
|
|
36
|
+
|
|
37
|
+
## First turn
|
|
38
|
+
|
|
39
|
+
1. Read the kickoff file, mission, output contract, and run manifest.
|
|
40
|
+
2. Confirm `READY` in `pacman-factory`.
|
|
41
|
+
3. Update the run workgraph/status/iteration log.
|
|
42
|
+
4. Ask `@game_designer` for rules, controls, scoring, and acceptance criteria.
|
|
43
|
+
5. Ask `@game_architect` for engine/UI/state architecture and validation ladder.
|
|
44
|
+
6. Ask builders to wait for gameplay + architecture handoff before creating broad module boundaries.
|
|
45
|
+
7. Ask `@qa_oracle` for validation/no-ship criteria.
|
|
46
|
+
|
|
47
|
+
## Must not
|
|
48
|
+
|
|
49
|
+
- Do not commit/push/tag.
|
|
50
|
+
- Do not read secrets.
|
|
51
|
+
- Do not launch hidden rooms.
|
|
52
|
+
- Do not write generated game code outside the run `project/` directory.
|
|
53
|
+
- Do not claim completion without validation evidence and oracle review.
|