a
This commit is contained in:
385
.ai_ops_mock_failure/manifests/structured-dev-workflow.json
Normal file
385
.ai_ops_mock_failure/manifests/structured-dev-workflow.json
Normal file
@@ -0,0 +1,385 @@
|
||||
{
|
||||
"schemaVersion": "1",
|
||||
"topologies": ["sequential", "parallel"],
|
||||
"personas": [
|
||||
{
|
||||
"id": "product_manager",
|
||||
"displayName": "Product Manager",
|
||||
"systemPromptTemplate": "You are the product manager for {{repo}}. Define clear project goals, user outcomes, non-goals, and acceptance criteria. Maintain a concise PRD-level summary in payload fields so downstream agents can execute independently. Emit a requirements_defined domain event when product requirements are clear enough for implementation planning.",
|
||||
"toolClearance": {
|
||||
"allowlist": ["read_file", "search", "list_files"],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "task_manager",
|
||||
"displayName": "Task Manager",
|
||||
"systemPromptTemplate": "You are the task planning agent for {{repo}}. Convert requirements into an implementation roadmap and dependency-aware task graph. Use claude-task-master tooling to create or update tasks, subtasks, and dependencies. Prioritize and surface undone + unblocked tasks first. Required output in payload.taskPlan.tasks: id, title, status, dependencies, subtasks, acceptanceCriteria, and ownerHint. Status values should align with pending/in_progress/blocked/done. Emit requirements_defined when clarifications materially update scope and emit tasks_planned when task graph updates are ready for coding lanes.",
|
||||
"modelConstraint": "claude-sonnet-4-5",
|
||||
"toolClearance": {
|
||||
"allowlist": [
|
||||
"read_file",
|
||||
"write_file",
|
||||
"search",
|
||||
"list_files",
|
||||
"list_tasks",
|
||||
"get_task",
|
||||
"create_task",
|
||||
"update_task",
|
||||
"create_subtask",
|
||||
"update_subtask",
|
||||
"set_task_dependencies",
|
||||
"mcp__claude-task-master__read_file",
|
||||
"mcp__claude-task-master__write_file",
|
||||
"mcp__claude-task-master__search",
|
||||
"mcp__claude-task-master__list_tasks",
|
||||
"mcp__claude-task-master__get_task",
|
||||
"mcp__claude-task-master__create_task",
|
||||
"mcp__claude-task-master__update_task",
|
||||
"mcp__claude-task-master__create_subtask",
|
||||
"mcp__claude-task-master__update_subtask",
|
||||
"mcp__claude-task-master__set_task_dependencies"
|
||||
],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "developer",
|
||||
"displayName": "Developer",
|
||||
"systemPromptTemplate": "You are a coding agent for {{repo}}. Consume the task plan from handoff payload and select undone, unblocked tasks whose dependencies are satisfied. Keep changes scoped to your assigned lane/node and report completed task IDs. If requirements are unclear or blocked, return status validation_fail with a precise clarification request in payload and emit task_blocked. On successful implementation, emit code_committed and include changedFiles, completedTaskIds, and validation notes in payload.",
|
||||
"modelConstraint": "claude-sonnet-4-5",
|
||||
"toolClearance": {
|
||||
"allowlist": [
|
||||
"read_file",
|
||||
"write_file",
|
||||
"search",
|
||||
"list_files",
|
||||
"bash",
|
||||
"run_command",
|
||||
"git_status",
|
||||
"git_diff",
|
||||
"npm_test"
|
||||
],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean", "git_push"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "tester",
|
||||
"displayName": "Tester",
|
||||
"systemPromptTemplate": "You are the testing and validation agent for {{repo}}. Validate code and task acceptance criteria for your lane, prioritizing deterministic checks (tests, build, lint, targeted runtime checks). If validation fails, return status validation_fail with reproducible steps and concrete remediation notes. If validation passes, return success, include evidence in payload, and emit validation_passed.",
|
||||
"modelConstraint": "claude-sonnet-4-5",
|
||||
"toolClearance": {
|
||||
"allowlist": [
|
||||
"read_file",
|
||||
"write_file",
|
||||
"search",
|
||||
"list_files",
|
||||
"bash",
|
||||
"run_command",
|
||||
"npm_test",
|
||||
"npm_run"
|
||||
],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean", "git_push"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "git_integrator",
|
||||
"displayName": "Git Integrator",
|
||||
"systemPromptTemplate": "You are the git integration agent for {{repo}}. Validate lane readiness for merge into the integration target and ensure the worktree is merge-ready. Run status checks and report risks clearly. Do not force risky merge strategies. On successful readiness checks emit branch_merged and include mergeCommit (or readiness marker), mergedBranch, and targetBranch in payload.",
|
||||
"modelConstraint": "claude-sonnet-4-5",
|
||||
"toolClearance": {
|
||||
"allowlist": [
|
||||
"read_file",
|
||||
"write_file",
|
||||
"search",
|
||||
"list_files",
|
||||
"bash",
|
||||
"run_command",
|
||||
"git",
|
||||
"git_status",
|
||||
"git_diff",
|
||||
"git_add",
|
||||
"git_commit",
|
||||
"git_merge"
|
||||
],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean", "git_push", "git_rebase"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "conflict_resolver",
|
||||
"displayName": "Conflict Resolver",
|
||||
"systemPromptTemplate": "You are the merge conflict resolver for {{repo}}. Resolve conflict markers for the assigned task/worktree, run targeted validation checks, and return success only when conflicts are cleanly resolved. Include resolvedFiles and validation evidence in payload.",
|
||||
"modelConstraint": "claude-sonnet-4-5",
|
||||
"toolClearance": {
|
||||
"allowlist": [
|
||||
"read_file",
|
||||
"write_file",
|
||||
"search",
|
||||
"list_files",
|
||||
"bash",
|
||||
"run_command",
|
||||
"git",
|
||||
"git_status",
|
||||
"git_diff",
|
||||
"git_add",
|
||||
"git_commit",
|
||||
"npm_test",
|
||||
"npm_run"
|
||||
],
|
||||
"banlist": ["delete_file", "rm", "git_reset", "git_clean", "git_push", "git_rebase"]
|
||||
}
|
||||
}
|
||||
],
|
||||
"relationships": [
|
||||
{
|
||||
"parentPersonaId": "product_manager",
|
||||
"childPersonaId": "task_manager",
|
||||
"constraints": {
|
||||
"maxDepth": 2,
|
||||
"maxChildren": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"parentPersonaId": "task_manager",
|
||||
"childPersonaId": "developer",
|
||||
"constraints": {
|
||||
"maxDepth": 4,
|
||||
"maxChildren": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"parentPersonaId": "task_manager",
|
||||
"childPersonaId": "tester",
|
||||
"constraints": {
|
||||
"maxDepth": 4,
|
||||
"maxChildren": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"parentPersonaId": "task_manager",
|
||||
"childPersonaId": "git_integrator",
|
||||
"constraints": {
|
||||
"maxDepth": 5,
|
||||
"maxChildren": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"topologyConstraints": {
|
||||
"maxDepth": 6,
|
||||
"maxRetries": 0
|
||||
},
|
||||
"pipeline": {
|
||||
"entryNodeId": "product-intake",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "product-intake",
|
||||
"actorId": "product_manager_actor",
|
||||
"personaId": "product_manager"
|
||||
},
|
||||
{
|
||||
"id": "task-roadmap",
|
||||
"actorId": "task_manager_actor",
|
||||
"personaId": "task_manager"
|
||||
},
|
||||
{
|
||||
"id": "dev-impl-a",
|
||||
"actorId": "developer_actor",
|
||||
"personaId": "developer",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "implementation-pass-1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dev-impl-b",
|
||||
"actorId": "developer_actor",
|
||||
"personaId": "developer",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "implementation-pass-1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "qa-a",
|
||||
"actorId": "tester_actor",
|
||||
"personaId": "tester",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "validation-pass-1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "qa-b",
|
||||
"actorId": "tester_actor",
|
||||
"personaId": "tester",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "validation-pass-1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "task-clarify-a",
|
||||
"actorId": "task_manager_actor",
|
||||
"personaId": "task_manager"
|
||||
},
|
||||
{
|
||||
"id": "task-clarify-b",
|
||||
"actorId": "task_manager_actor",
|
||||
"personaId": "task_manager"
|
||||
},
|
||||
{
|
||||
"id": "dev-rework-a",
|
||||
"actorId": "developer_actor",
|
||||
"personaId": "developer",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "implementation-pass-2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "dev-rework-b",
|
||||
"actorId": "developer_actor",
|
||||
"personaId": "developer",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "implementation-pass-2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "qa-rework-a",
|
||||
"actorId": "tester_actor",
|
||||
"personaId": "tester",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "validation-pass-2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "qa-rework-b",
|
||||
"actorId": "tester_actor",
|
||||
"personaId": "tester",
|
||||
"topology": {
|
||||
"kind": "parallel",
|
||||
"blockId": "validation-pass-2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "merge-a",
|
||||
"actorId": "git_integrator_actor",
|
||||
"personaId": "git_integrator"
|
||||
},
|
||||
{
|
||||
"id": "merge-b",
|
||||
"actorId": "git_integrator_actor",
|
||||
"personaId": "git_integrator"
|
||||
},
|
||||
{
|
||||
"id": "merge-conflict-resolve-a",
|
||||
"actorId": "conflict_resolver_actor",
|
||||
"personaId": "conflict_resolver"
|
||||
},
|
||||
{
|
||||
"id": "merge-conflict-resolve-b",
|
||||
"actorId": "conflict_resolver_actor",
|
||||
"personaId": "conflict_resolver"
|
||||
}
|
||||
],
|
||||
"edges": [
|
||||
{
|
||||
"from": "product-intake",
|
||||
"to": "task-roadmap",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "task-roadmap",
|
||||
"to": "dev-impl-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "task-roadmap",
|
||||
"to": "dev-impl-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "dev-impl-a",
|
||||
"to": "qa-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "dev-impl-b",
|
||||
"to": "qa-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "dev-impl-a",
|
||||
"to": "task-clarify-a",
|
||||
"on": "validation_fail"
|
||||
},
|
||||
{
|
||||
"from": "dev-impl-b",
|
||||
"to": "task-clarify-b",
|
||||
"on": "validation_fail"
|
||||
},
|
||||
{
|
||||
"from": "qa-a",
|
||||
"to": "dev-rework-a",
|
||||
"on": "validation_fail"
|
||||
},
|
||||
{
|
||||
"from": "qa-b",
|
||||
"to": "dev-rework-b",
|
||||
"on": "validation_fail"
|
||||
},
|
||||
{
|
||||
"from": "task-clarify-a",
|
||||
"to": "dev-rework-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "task-clarify-b",
|
||||
"to": "dev-rework-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "dev-rework-a",
|
||||
"to": "qa-rework-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "dev-rework-b",
|
||||
"to": "qa-rework-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "qa-a",
|
||||
"to": "merge-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "qa-b",
|
||||
"to": "merge-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "qa-rework-a",
|
||||
"to": "merge-a",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "qa-rework-b",
|
||||
"to": "merge-b",
|
||||
"on": "success"
|
||||
},
|
||||
{
|
||||
"from": "merge-a",
|
||||
"to": "merge-conflict-resolve-a",
|
||||
"event": "merge_conflict_detected"
|
||||
},
|
||||
{
|
||||
"from": "merge-b",
|
||||
"to": "merge-conflict-resolve-b",
|
||||
"event": "merge_conflict_detected"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user