{
  "name": "Agentic Kanban",
  "version": "0.2.0",
  "summary": "The team layer for agent-built software, and what replaces Agile's team rituals. Per-task tools such as Superpowers and Spec Kit run each change; Agentic Kanban runs the team: who decides what, what it costs, and what counts as done. People decide, accept and learn; agents do the work in between; records carry decisions, evidence and unfinished work.",
  "loop": ["align", "prepare", "run", "review", "accept", "learn"],
  "humanVerbs": ["decide", "accept", "learn"],
  "core": {
    "ceremonies": ["morning_brief", "decision_round", "handoff", "weekly_review"],
    "kinds": ["build", "fix", "investigate", "review", "docs", "ops"],
    "links": ["follow_up", "related", "blocked_by"],
    "numbers": ["accepted_outcomes", "cost_per_accepted_task", "decision_wait", "first_attempt_acceptance"],
    "setupQuestions": ["repos_and_people", "autonomy", "budget"]
  },
  "mapping": [
    {"agile": "Sprint", "flow": "Continuous flow with a weekly rhythm and a weekly budget", "change": "Attempts take minutes to hours, so there is nothing to batch for two weeks"},
    {"agile": "Story points and capacity", "flow": "A cost cap per task; work in progress limited by review and decision capacity", "change": "Plans human attention and dollars, not effort estimates"},
    {"agile": "Definition of Ready", "flow": "The ready check, repeated when work starts", "change": "A ready flag can go stale, so it is checked again"},
    {"agile": "Sprint Planning and backlog refinement", "flow": "Decision rounds", "change": "The agent prepares briefs and batches its own proposals; the person decides"},
    {"agile": "Daily Scrum", "flow": "Morning brief, one to one with your agent", "change": "Built from records; collisions are caught by overlap checks, owner messages and claims"},
    {"agile": "Definition of Done", "flow": "Acceptance evidence by kind of work, plus who accepted", "change": "A finished worker run is never done"},
    {"agile": "Sprint Review", "flow": "Weekly review: a generated report", "change": "Built from records, not from memory"},
    {"agile": "Sprint Retrospective", "flow": "Weekly review: a short retro", "change": "Ends in one experiment or a versioned guideline change"},
    {"agile": "Velocity", "flow": "Four numbers: accepted outcomes, cost per accepted task, decision wait, first-attempt acceptance", "change": "Measures what agents made scarce"},
    {"agile": "Scrum Master", "flow": "A coordinator agent; a person owns the process", "change": "Routes work and never builds"},
    {"agile": "Product Owner and Developers", "flow": "A product owner, and developers who each supervise their agents", "change": "Accountability stays human"},
    {"agile": "Status report to a manager", "flow": "Generated from records", "change": "Nobody self-reports"}
  ],
  "lanes": [
    {"id": "quick", "when": "A small, clear change", "ceremonies": [], "doneWhen": "The change is accepted on its pull request"},
    {"id": "task", "when": "Normal work", "ceremonies": ["handoff"], "doneWhen": "Accepted against a brief: the per-task tool's plan or spec, plus budget, kind and autonomy"},
    {"id": "epic", "when": "Large or unclear work", "ceremonies": ["decision_round", "handoff"], "doneWhen": "Its parts are done or cancelled and its own acceptance holds"}
  ],
  "worksWith": [
    {"name": "Superpowers", "url": "https://github.com/obra/superpowers", "covers": "One developer and their agent: brainstorm, spec, plan, test-driven build, review, merge", "usedAs": "Runs each task; its plan is the brief"},
    {"name": "GitHub Spec Kit", "url": "https://github.com/github/spec-kit", "covers": "Specify, plan, tasks, implement", "usedAs": "Its spec and tasks are the brief and the parts"},
    {"name": "OpenSpec", "url": "https://github.com/Fission-AI/OpenSpec", "covers": "A lightweight spec layer: propose, apply, archive", "usedAs": "Its proposal is the brief"},
    {"name": "BMAD Method", "url": "https://github.com/bmad-code-org/BMAD-METHOD", "covers": "Planning for larger work with product, architecture and test perspectives", "usedAs": "Planning input for an epic"},
    {"name": "AWS AI-DLC", "url": "https://github.com/awslabs/aidlc-workflows", "covers": "A lifecycle with bolts, units of work and whole-team mob sessions", "usedAs": "A unit of work maps to a task; mob sessions are replaced by decision rounds"}
  ],
  "levels": [
    {"id": "epic", "meaning": "An outcome made of parts; its status rolls up from its parts, then it is accepted on its own acceptance"},
    {"id": "task", "meaning": "One agreed, checkable outcome"},
    {"id": "part", "meaning": "A piece of a task or epic with its own acceptance; about 400 changed lines at most; may stack on a sibling's branch"}
  ],
  "kinds": [
    {"id": "build", "human": true, "pr": "yes", "acceptedWhen": "Acceptance checks pass on the exact revision, it was reviewed, and it is merged to the integration branch"},
    {"id": "fix", "human": true, "pr": "yes", "acceptedWhen": "The failing reproduction now passes"},
    {"id": "investigate", "human": true, "pr": "no", "acceptedWhen": "The question is answered with sources, dates and stated uncertainty"},
    {"id": "review", "human": true, "pr": "no", "acceptedWhen": "The exact artifact was reviewed, scope stated, with findings and a recommendation"},
    {"id": "docs", "human": true, "pr": "sometimes", "acceptedWhen": "The intended reader can complete the steps and technical claims were checked"},
    {"id": "ops", "human": true, "pr": "no", "acceptedWhen": "An approved procedure ran in the stated environment and the result was observed and verified"},
    {"id": "routine", "human": false, "pr": "no", "acceptedWhen": "The occurrence's report is attached, or it was skipped with a reason"}
  ],
  "origins": ["person", "agent_proposal", "review_finding", "audit", "routine"],
  "links": [
    {"id": "follow_up", "meaning": "New scope found after earlier work; never reopens finished scope"},
    {"id": "related", "meaning": "Overlapping scope where neither contains the other"},
    {"id": "blocked_by", "meaning": "Work or a decision that must land first"},
    {"id": "duplicate_of", "meaning": "Same scope as an existing item"},
    {"id": "part_of", "meaning": "A part of an epic or task"}
  ],
  "states": [
    {"id": "proposed", "meaning": "Suggested, often by an agent, not accepted; answered in the next decision round"},
    {"id": "backlog", "meaning": "Accepted by a person, not started"},
    {"id": "in_progress", "meaning": "Claimed by one owner and at most one live session"},
    {"id": "blocked", "meaning": "Waiting on named work or a named person"},
    {"id": "in_review", "meaning": "Output exists and is being reviewed at an exact revision"},
    {"id": "human_review", "meaning": "A pull request needs a person's decision or merge"},
    {"id": "awaiting_human", "meaning": "Any other human action, with the exact ask and what happens after"},
    {"id": "done", "meaning": "Accepted: evidence attached, accepting person and revision recorded"},
    {"id": "cancelled", "meaning": "Stopped, with the reason"}
  ],
  "transitions": [
    ["proposed", "backlog"], ["backlog", "in_progress"], ["in_progress", "blocked"], ["blocked", "in_progress"],
    ["in_progress", "in_review"], ["in_progress", "awaiting_human"], ["awaiting_human", "backlog"], ["awaiting_human", "in_progress"],
    ["in_review", "human_review"], ["in_review", "awaiting_human"], ["in_review", "in_progress"], ["in_review", "done"], ["human_review", "done"], ["human_review", "backlog"], ["human_review", "in_progress"], ["awaiting_human", "done"],
    ["done", "backlog"], ["proposed", "cancelled"], ["backlog", "cancelled"], ["in_progress", "cancelled"], ["blocked", "cancelled"], ["in_review", "cancelled"], ["human_review", "cancelled"], ["awaiting_human", "cancelled"]
  ],
  "derived": {
    "ready": ["status is backlog", "a checked brief exists", "every blocked_by item is done", "no live claim", "a person said go"],
    "delivered": "A deploy or release event, recorded separately from acceptance"
  },
  "handoffs": [
    {"from": "session", "to": "session", "mechanism": "A resume point on the same task: branch, revision, checks run, open question, next command"},
    {"from": "person", "to": "agent", "mechanism": "The person says go; the task becomes ready"},
    {"from": "agent", "to": "person", "mechanism": "human_review or awaiting_human with the exact ask"},
    {"from": "person", "to": "person", "mechanism": "Reassign the owner and send the new owner a message"}
  ],
  "ceremonies": [
    {"id": "morning_brief", "name": "Morning brief", "core": true, "cadence": "daily", "trigger": "First session of the day, once per person per day",
     "reads": ["decisions waiting on me", "my tasks to resume", "reviews for me", "my blocked or stale work", "ready work", "unread message count", "budget used"],
     "produces": "Top three actions with reasons, then offers: a decision round, or a batch of ready tasks with a cost estimate",
     "folds": ["in-session prompts: untracked work, budget, collisions, context limit", "end-of-day wrap: resume points, overnight queue, optional minutes question", "overnight pack after an unattended night: each act taken under a rule, with a box to confirm or undo, and what waits on a person"]},
    {"id": "decision_round", "name": "Decision round", "core": true, "cadence": "when three or more decisions wait", "trigger": "After the brief, or on demand",
     "reads": ["open human asks", "agent proposals"], "produces": "Three or four multiple-choice questions, each option with a why-yes and why-no; answers recorded; tasks return to ready",
     "folds": ["desk session: approvals and production steps, one at a time with check, run, verify, rollback"]},
    {"id": "handoff", "name": "Handoff", "core": true, "cadence": "at every stop", "trigger": "A stop, a context limit or the end of the day",
     "reads": ["task", "branch", "checks run"], "produces": "A resume point on the task", "folds": ["recovery of interrupted sessions"]},
    {"id": "weekly_review", "name": "Weekly review", "core": true, "cadence": "weekly, Friday by default", "trigger": "The routine occurrence for the week",
     "reads": ["the week's records"], "produces": "A generated report, then a short retro ending in one or two experiments or a guideline change with an owner",
     "folds": ["team sync on priorities and collisions", "monthly model and cost review", "periodic guideline review"]},
    {"id": "backlog_hygiene", "name": "Backlog hygiene", "core": false, "cadence": "weekly", "trigger": "Scripted agent chore, no model",
     "reads": ["claims", "sessions", "proposals", "epics"], "produces": "Stale claims released, interrupted sessions closed, duplicates and epic roll-ups queued for the next decision round", "folds": []},
    {"id": "guideline_check", "name": "Guideline consistency check", "core": false, "cadence": "monthly", "trigger": "Scripted agent chore",
     "reads": ["guidelines"], "produces": "Contradictions and stale guidance, queued as proposals", "folds": []}
  ],
  "routine": {
    "templateFields": ["purpose", "cadence", "time_zone", "scope", "owner", "inputs", "required_output", "autonomy", "cost_cap_usd"],
    "occurrence": {"kind": "routine", "idempotencyKey": "routine + project + period", "doneWhen": "Its report is attached, or it is skipped with a reason", "reminder": "Shown inside the morning brief, never as a separate ping"}
  },
  "roles": {
    "people": ["product owner", "accountable developer", "accepting authority", "admin"],
    "agents": ["personal agent", "coordinator", "worker", "reviewer"],
    "perAttempt": ["accountable", "operator", "reviewer", "acceptor"]
  },
  "attention": {
    "principle": "The agent capacity is already paid for. A person's job is to turn it into accepted outcomes, so the scarce input is the person's attention, not agent hours.",
    "activities": [
      {"id": "decide", "verb": "decide", "question": "What is waiting on me?", "looksAt": "Decision rounds and asks from the never list"},
      {"id": "verify", "verb": "accept", "question": "Is it actually right?", "looksAt": "Tests, acceptance checks and peer disagreements"},
      {"id": "prioritize", "verb": "decide", "question": "What next, and what not?", "looksAt": "Grooming, new tasks and work to cut"},
      {"id": "monitor", "verb": "learn", "question": "Where is it stuck or burning budget?", "looksAt": "Blocked lanes, cost and review rounds that do not stop"},
      {"id": "learn", "verb": "learn", "question": "What rule changes?", "looksAt": "Guidelines, the never list and the weekly review"}
    ],
    "scenarios": [
      {"id": "one_person", "name": "One person, two or three coordinators", "shape": "Each coordinator runs its own lane of workers and reviewers; the person moves between them through the five activities"},
      {"id": "team", "name": "A team of five to ten", "shape": "Each person runs one to three coordinators; the board and memory are shared; the weekly review, the budget, collision checks and the guidelines are shared"}
    ],
    "coordinatorsPerPerson": "One to three, set by how much the person can decide and verify, not by how many agents can run",
    "timeShares": "measured in the pilot"
  },
  "autonomy": ["read_only", "draft", "act_within_limits", "needs_approval"],
  "proactivity": {
    "default": "proactive",
    "offers": ["track untracked work with the overlap result and a cost estimate", "warn on budget, collisions and context limits", "lead the morning brief and the wrap"],
    "limits": ["a per-person quiet setting", "never read message bodies without consent", "batch its own proposals into the next decision round", "never claim work, exceed a cap or change another person's task without authority"]
  },
  "metrics": [
    {"id": "accepted_outcomes", "area": "flow", "definition": "Items accepted in the period, by kind; an epic counts once and its parts are not counted separately"},
    {"id": "cost_per_accepted_task", "area": "cost", "definition": "All attempts, reviews, preparation and the coordinator share for accepted items, divided by accepted outcomes; unknown if any attempt is unpriced"},
    {"id": "decision_wait", "area": "waiting", "definition": "Time accepted items spent waiting on a person, from logged state changes; median in hours"},
    {"id": "first_attempt_acceptance", "area": "quality", "definition": "Share of accepted items that needed exactly one attempt"},
    {"id": "delivered", "area": "flow", "definition": "Accepted changes observed in their target environment"},
    {"id": "cycle_time", "area": "flow", "definition": "Acceptance time minus first start"},
    {"id": "work_item_age", "area": "flow", "definition": "Now minus first start, for unfinished work"},
    {"id": "review_yield", "area": "quality", "definition": "Real defects found per review, deep versus normal"},
    {"id": "fix_rounds", "area": "quality", "definition": "Repair rounds per accepted item"},
    {"id": "after_acceptance_repairs", "area": "quality", "definition": "Reopens, reverts and follow-up fixes within 30 days"},
    {"id": "unpriced_share", "area": "cost", "definition": "Attempts without a known cost, shown as unknown, never as zero"},
    {"id": "human_minutes", "area": "people", "definition": "Self-reported minutes on decisions and review; labeled as an estimate"},
    {"id": "resumed_handoffs", "area": "memory", "definition": "Handoffs resumed without restarting the task"},
    {"id": "ceremony_health", "area": "ceremonies", "definition": "Routine occurrences done, skipped or missed"}
  ],
  "safeguards": [
    "Agent work counts under the agent, linked to the developer who directed it",
    "Compare only within the same kind and risk; never one ranking number",
    "Show decision waits and blockers beside output",
    "Developers see exactly what their manager sees"
  ],
  "unattended": {
    "default": "off",
    "label": "piloting",
    "coordinator": "Routes work to headless workers and reviewers; never builds in its own session",
    "decisionOrder": ["never list: always wait with a recommended answer", "an approved rule whose preconditions all hold on the exact revision, checked again just before acting: act, log, and list it in the morning pack", "otherwise: record a recommended answer and wait"],
    "never": ["production and deploys", "customer-facing writes", "merges into shared branches", "secrets and credentials", "budget increases", "data migrations", "removing anything whose outside use is unknown", "reversing a decision a person made"],
    "reviewLoop": ["bot review and deep model review", "fixes on the task branch", "tests pass before a fix is merged in", "a review thread is closed only when its fix is verified", "a hard round cap, then wait for a person", "past round 6: only blocking findings are fixed; the rest become follow-ups", "no hardening the acceptance did not ask for", "the fix names the bug class and fixes every instance"],
    "landing": "Landing in the integration branch moves the task to human_review, never to done; held work is never landed",
    "landingQueue": ["one pull request at a time", "tests and build rerun on the merged result before landing", "a stacked part lands only after its parent merged; otherwise skipped, never forced", "a failure is logged and the queue moves on", "a part that ships a temporary stand-in waits for its successor"],
    "questions": "Asked in plain text with a recommended answer; never a prompt that blocks the run; the recommendation applies if no answer comes and the choice is not on the never list",
    "peer": "A reviewer from a different model family checks judgement calls and copies back the exact revision; disagreement or no verdict means wait",
    "scheduling": ["start only when every blocked_by item has landed", "a failure never releases dependents", "a global parallel cap that only a person raises", "a budget stop below the hard cap, counting every ledger that bills", "one scheduler at a time"],
    "breakdownGate": ["structural problems block; details travel into the part's acceptance checks", "at most about ten parts and two revisions", "only for tasks a person approved", "sensitive parts are created but held for a person, with their dependents"],
    "context": ["a handoff file", "a digest of rules and the latest handoff after each compaction", "compaction well before the default limit"]
  },
  "labels": ["running", "piloting", "planned"]
}
