@astrosheep/keiyaku 4.6.4 → 4.6.7
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/README.md +7 -0
- package/build/{integrations/marketplace → plugins}/.agents/plugins/marketplace.json +1 -1
- package/build/plugins/.claude-plugin/marketplace.json +5 -0
- package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/.claude-plugin/plugin.json +1 -1
- package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-akuma/SKILL.md +43 -8
- package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-bind/SKILL.md +7 -8
- package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-workflow/SKILL.md +3 -3
- package/build/{integrations/marketplace/plugins/keiyaku → plugins/codex}/.codex-plugin/plugin.json +1 -1
- package/build/plugins/codex/skills/keiyaku/SKILL.md +44 -0
- package/build/plugins/codex/skills/keiyaku-akuma/SKILL.md +130 -0
- package/build/plugins/codex/skills/keiyaku-akuma/references/automation.md +269 -0
- package/build/plugins/codex/skills/keiyaku-babysit/SKILL.md +65 -0
- package/build/plugins/codex/skills/keiyaku-bind/SKILL.md +216 -0
- package/build/plugins/codex/skills/keiyaku-bind/agents/openai.yaml +4 -0
- package/build/plugins/codex/skills/keiyaku-task/SKILL.md +104 -0
- package/build/plugins/codex/skills/keiyaku-workflow/SKILL.md +129 -0
- package/build/plugins/opencode/package.json +6 -0
- package/build/plugins/opencode/skills/keiyaku/SKILL.md +44 -0
- package/build/plugins/opencode/skills/keiyaku-akuma/SKILL.md +130 -0
- package/build/plugins/opencode/skills/keiyaku-akuma/references/automation.md +269 -0
- package/build/plugins/opencode/skills/keiyaku-babysit/SKILL.md +65 -0
- package/build/plugins/opencode/skills/keiyaku-bind/SKILL.md +216 -0
- package/build/plugins/opencode/skills/keiyaku-bind/agents/openai.yaml +4 -0
- package/build/plugins/opencode/skills/keiyaku-task/SKILL.md +104 -0
- package/build/plugins/opencode/skills/keiyaku-workflow/SKILL.md +129 -0
- package/build/skills/keiyaku/SKILL.md +44 -0
- package/build/skills/keiyaku-akuma/SKILL.md +130 -0
- package/build/skills/keiyaku-akuma/references/automation.md +269 -0
- package/build/skills/keiyaku-babysit/SKILL.md +65 -0
- package/build/skills/keiyaku-bind/SKILL.md +216 -0
- package/build/skills/keiyaku-bind/agents/openai.yaml +4 -0
- package/build/skills/keiyaku-task/SKILL.md +104 -0
- package/build/skills/keiyaku-workflow/SKILL.md +129 -0
- package/build/src/akuma/akuma-instance.js +7 -5
- package/build/src/akuma/akuma-observe.d.ts +22 -15
- package/build/src/akuma/akuma-observe.js +87 -16
- package/build/src/akuma/akuma-owner.d.ts +3 -2
- package/build/src/akuma/akuma-owner.js +28 -10
- package/build/src/akuma/akuma-selection-execution.d.ts +3 -1
- package/build/src/akuma/akuma-selection-execution.js +2 -1
- package/build/src/akuma/akuma-wait.d.ts +6 -4
- package/build/src/akuma/akuma-wait.js +78 -53
- package/build/src/akuma/akuma.d.ts +6 -4
- package/build/src/akuma/akuma.js +4 -0
- package/build/src/akuma/body.d.ts +1 -0
- package/build/src/akuma/body.js +12 -23
- package/build/src/akuma/call-initial-tell.d.ts +2 -2
- package/build/src/akuma/call-initial-tell.js +1 -1
- package/build/src/akuma/call-request.d.ts +2 -2
- package/build/src/akuma/heart/index.d.ts +7 -2
- package/build/src/akuma/heart/index.js +50 -5
- package/build/src/akuma/heart/tells.d.ts +33 -2
- package/build/src/akuma/heart/tells.js +24 -18
- package/build/src/akuma/heart/timeline.d.ts +23 -1
- package/build/src/akuma/heart/timeline.js +28 -21
- package/build/src/akuma/projection.d.ts +10 -10
- package/build/src/akuma/providers/pi/index.js +72 -39
- package/build/src/akuma/selection-observation.d.ts +20 -20
- package/build/src/akuma/selection-owner-port.d.ts +1 -1
- package/build/src/akuma/selection-owner-port.js +16 -5
- package/build/src/akuma/selection-request.d.ts +2 -0
- package/build/src/akuma/selection-request.js +2 -1
- package/build/src/akuma-body.js +5 -2
- package/build/src/alias/index.d.ts +0 -1
- package/build/src/alias/index.js +0 -4
- package/build/src/body/amend.d.ts +0 -4
- package/build/src/body/amend.js +0 -3
- package/build/src/body/region.d.ts +0 -1
- package/build/src/body/region.js +0 -3
- package/build/src/body/verification.d.ts +0 -1
- package/build/src/cli/commands/akuma-grammar.js +23 -66
- package/build/src/cli/commands/akuma.js +23 -42
- package/build/src/cli/commands/contract-grammar.d.ts +14 -1
- package/build/src/cli/commands/contract-grammar.js +54 -21
- package/build/src/cli/commands/contract-help.d.ts +9 -8
- package/build/src/cli/commands/contract-help.js +14 -7
- package/build/src/cli/commands/contract.js +57 -117
- package/build/src/cli/commands/install.d.ts +5 -5
- package/build/src/cli/commands/install.js +4 -7
- package/build/src/cli/commands/task-grammar.js +10 -66
- package/build/src/cli/commands/task.d.ts +0 -1
- package/build/src/cli/commands/task.js +34 -53
- package/build/src/cli/coordinates.d.ts +1 -2
- package/build/src/cli/coordinates.js +1 -4
- package/build/src/cli/parse.d.ts +2 -3
- package/build/src/cli/parse.js +24 -66
- package/build/src/cli/render/akuma.d.ts +3 -16
- package/build/src/cli/render/akuma.js +1 -13
- package/build/src/cli/render/audit.js +1 -1
- package/build/src/cli/render/contract.js +34 -32
- package/build/src/cli/render/kanshi-akuma.d.ts +8 -2
- package/build/src/cli/render/kanshi-akuma.js +14 -7
- package/build/src/cli/render/kanshi.d.ts +3 -1
- package/build/src/cli/render/kanshi.js +44 -32
- package/build/src/cli/render/receipt.js +6 -1
- package/build/src/cli/render/task.d.ts +1 -1
- package/build/src/cli/render/task.js +3 -27
- package/build/src/cli/render/terminal.d.ts +6 -2
- package/build/src/cli/render/terminal.js +8 -2
- package/build/src/cli/runtime.js +3 -16
- package/build/src/cli/scan.d.ts +26 -0
- package/build/src/cli/scan.js +82 -0
- package/build/src/cli/streams.d.ts +5 -0
- package/build/src/cli/streams.js +11 -0
- package/build/src/contract-worktree.js +38 -21
- package/build/src/core/facts/codec.d.ts +1 -2
- package/build/src/core/facts/codec.js +5 -11
- package/build/src/core/facts/types.d.ts +16 -2
- package/build/src/core/facts/types.js +15 -0
- package/build/src/core/verbs/abandon.js +3 -9
- package/build/src/core/verbs/amend.js +2 -9
- package/build/src/core/verbs/arc.js +6 -13
- package/build/src/core/verbs/attestation.js +2 -9
- package/build/src/core/verbs/bind.js +2 -9
- package/build/src/core/verbs/deliver.js +2 -9
- package/build/src/core/verbs/placement.d.ts +1 -1
- package/build/src/core/verbs/placement.js +2 -9
- package/build/src/core/verbs/reintegrate.d.ts +1 -1
- package/build/src/core/verbs/reintegrate.js +2 -9
- package/build/src/dispatch/index.d.ts +2 -2
- package/build/src/dispatch/index.js +33 -11
- package/build/src/git/hooks.d.ts +2 -4
- package/build/src/git/hooks.js +0 -12
- package/build/src/git/integration.d.ts +5 -3
- package/build/src/git/integration.js +36 -25
- package/build/src/git/nuke.js +4 -4
- package/build/src/git/observe.d.ts +4 -4
- package/build/src/git/observe.js +5 -5
- package/build/src/git/process.d.ts +1 -4
- package/build/src/git/process.js +1 -11
- package/build/src/git/read-observation.js +1 -1
- package/build/src/git/reconcile.d.ts +1 -1
- package/build/src/git/reconcile.js +15 -13
- package/build/src/git/repository.d.ts +2 -6
- package/build/src/git/repository.js +18 -31
- package/build/src/git/scratch.d.ts +6 -6
- package/build/src/git/scratch.js +110 -46
- package/build/src/git/target-placement.d.ts +5 -5
- package/build/src/git/target-placement.js +18 -33
- package/build/src/git/tender.d.ts +6 -2
- package/build/src/git/tender.js +19 -12
- package/build/src/git/terminal-reconcile.js +24 -13
- package/build/src/git/terminal-seal.d.ts +2 -5
- package/build/src/git/terminal-seal.js +5 -3
- package/build/src/git/workspace.d.ts +17 -13
- package/build/src/git/workspace.js +58 -41
- package/build/src/kanshi/index.d.ts +2 -2
- package/build/src/kanshi/index.js +1 -1
- package/build/src/kanshi/read.d.ts +8 -1
- package/build/src/kanshi/read.js +72 -7
- package/build/src/kanshi/report.d.ts +12 -0
- package/build/src/library/akuma-creation.d.ts +4 -4
- package/build/src/library/akuma-creation.js +21 -19
- package/build/src/library/bind.d.ts +1 -63
- package/build/src/library/bind.js +3 -9
- package/build/src/library/contract-creation.js +2 -30
- package/build/src/library/contract-execution.d.ts +0 -1
- package/build/src/library/contract-execution.js +9 -34
- package/build/src/library/contract-operations.d.ts +5 -1
- package/build/src/library/contract-operations.js +7 -3
- package/build/src/library/contract-types.d.ts +1 -1
- package/build/src/library/delivery.d.ts +91 -93
- package/build/src/library/delivery.js +2 -1
- package/build/src/library/input.d.ts +0 -2
- package/build/src/library/input.js +0 -4
- package/build/src/library/invocation.d.ts +0 -1
- package/build/src/library/invocation.js +3 -25
- package/build/src/library/outcome.d.ts +651 -602
- package/build/src/library/outcome.js +4 -4
- package/build/src/library/reconcile.d.ts +6 -0
- package/build/src/library/reconcile.js +31 -1
- package/build/src/library/repo.d.ts +0 -1
- package/build/src/library/selection.d.ts +1 -10
- package/build/src/library/selection.js +19 -17
- package/build/src/plugin/akuma-signals.d.ts +10 -11
- package/build/src/plugin/akuma-signals.js +36 -20
- package/build/src/plugin/public.d.ts +5 -0
- package/build/src/plugin/runtime.d.ts +1 -0
- package/build/src/plugin/runtime.js +34 -23
- package/build/src/protocol/abandon.d.ts +1 -1
- package/build/src/protocol/abandon.js +3 -10
- package/build/src/protocol/amend.js +2 -5
- package/build/src/protocol/arc.d.ts +1 -1
- package/build/src/protocol/arc.js +2 -9
- package/build/src/protocol/attempt.d.ts +3 -20
- package/build/src/protocol/attempt.js +6 -5
- package/build/src/protocol/audit.d.ts +1 -0
- package/build/src/protocol/audit.js +10 -11
- package/build/src/protocol/completion.d.ts +129 -55
- package/build/src/protocol/completion.js +62 -73
- package/build/src/protocol/deliver.d.ts +7 -5
- package/build/src/protocol/deliver.js +74 -44
- package/build/src/protocol/execution-observation.d.ts +2 -4
- package/build/src/protocol/execution-observation.js +3 -7
- package/build/src/protocol/intent.d.ts +1 -1
- package/build/src/protocol/intent.js +1 -0
- package/build/src/protocol/operations.d.ts +24 -12
- package/build/src/protocol/operations.js +36 -15
- package/build/src/protocol/placement.d.ts +2 -1
- package/build/src/protocol/placement.js +21 -5
- package/build/src/protocol/progress.d.ts +1 -1
- package/build/src/protocol/read/status.js +58 -41
- package/build/src/protocol/reintegrate.d.ts +1 -1
- package/build/src/protocol/reintegrate.js +10 -19
- package/build/src/protocol/review.d.ts +3 -28
- package/build/src/protocol/review.js +10 -37
- package/build/src/protocol/run.d.ts +19 -7
- package/build/src/protocol/run.js +19 -9
- package/build/src/runtime/proc/windows-launch.exe +0 -0
- package/build/src/settlement/holder.d.ts +2 -4
- package/build/src/settlement/holder.js +3 -6
- package/build/src/task/board.d.ts +6 -0
- package/build/src/task/board.js +30 -1
- package/build/src/task/catalog.js +1 -4
- package/build/src/task/compose.d.ts +0 -1
- package/build/src/task/compose.js +0 -1
- package/build/src/task/context.d.ts +0 -1
- package/build/src/task/context.js +0 -3
- package/build/src/task/created-observation.d.ts +5 -1
- package/build/src/task/created-observation.js +12 -5
- package/build/src/task/index.d.ts +1 -1
- package/build/src/task/index.js +7 -6
- package/build/src/task/input.d.ts +0 -6
- package/build/src/task/input.js +2 -14
- package/build/src/task/mutation.d.ts +3 -4
- package/build/src/task/mutation.js +11 -39
- package/build/src/task/operations.d.ts +2 -7
- package/build/src/task/operations.js +37 -49
- package/build/src/task/query.d.ts +0 -1
- package/build/src/task/query.js +1 -4
- package/build/src/task/store.d.ts +0 -2
- package/build/src/task/store.js +27 -11
- package/build/src/verification/declaration.js +3 -2
- package/build/src/verification/execution.d.ts +3 -2
- package/build/src/verification/execution.js +10 -6
- package/build/src/workspace-place.d.ts +0 -1
- package/build/src/workspace-place.js +0 -11
- package/package.json +13 -9
- package/build/integrations/marketplace/.claude-plugin/marketplace.json +0 -5
- package/build/integrations/marketplace/plugins/keiyaku/package.json +0 -17
- /package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku/SKILL.md +0 -0
- /package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-akuma/references/automation.md +0 -0
- /package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-babysit/SKILL.md +0 -0
- /package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-bind/agents/openai.yaml +0 -0
- /package/build/{integrations/marketplace/plugins/keiyaku → plugins/claude}/skills/keiyaku-task/SKILL.md +0 -0
- /package/build/{integrations/marketplace/plugins/keiyaku/opencode.js → plugins/opencode/index.js} +0 -0
- /package/build/{integrations → plugins}/pi/keiyaku.ts +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keiyaku-babysit
|
|
3
|
+
description: >-
|
|
4
|
+
Entering babysit mode: supervising parallel work across multiple Akuma and
|
|
5
|
+
Contracts as they advance, instead of doing the work yourself.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Keiyaku Babysit
|
|
9
|
+
|
|
10
|
+
Babysitting is a method, not a role: no new identity, permission, ledger,
|
|
11
|
+
status, id, or lifecycle. It is how whoever holds work in flight schedules
|
|
12
|
+
their own attention across it.
|
|
13
|
+
|
|
14
|
+
## Lanes At Any Grain
|
|
15
|
+
|
|
16
|
+
A lane is anything you are answerable for that moves without you: a Worker on
|
|
17
|
+
an Arc, a Reviewer mid-examination, a whole Contract whose fulfillment loop you
|
|
18
|
+
handed to one Aku. Handing work down narrows a lane; it never empties it — you
|
|
19
|
+
did not hand off your answerability, you booked yourself for the next question,
|
|
20
|
+
the next verify, the next return. When a Contract's whole loop is delegated,
|
|
21
|
+
your lane is the holder itself: watch the journaled record — bind, amends,
|
|
22
|
+
testimony, placement — verify at the boundaries you kept, and steer through the
|
|
23
|
+
holder, never past it. One delegated loop is one lane, however much moves
|
|
24
|
+
inside it.
|
|
25
|
+
|
|
26
|
+
## Attention
|
|
27
|
+
|
|
28
|
+
**Sweep.** Pass over every lane at natural pause points instead of dwelling on
|
|
29
|
+
one; depth goes where the sweep finds movement or silence that should not be
|
|
30
|
+
there.
|
|
31
|
+
|
|
32
|
+
**Critical path.** The lane the most other lanes wait on gets attention first,
|
|
33
|
+
regardless of which lane is loudest.
|
|
34
|
+
|
|
35
|
+
**Wait graph.** Know who waits on whom before deciding where to look; a cycle
|
|
36
|
+
in that graph is the emergency, everything else is schedule.
|
|
37
|
+
|
|
38
|
+
**Blocked lanes.** A blocked lane outranks every healthy one — unblock before
|
|
39
|
+
you optimize.
|
|
40
|
+
|
|
41
|
+
**Verify returns.** A return is not done because it arrived; it is done when
|
|
42
|
+
checked against what was asked. Book the verify when you delegate, not after.
|
|
43
|
+
|
|
44
|
+
**Steer early.** The cheapest steer is before divergence compounds: ask the
|
|
45
|
+
question at the first doubt, not at delivery.
|
|
46
|
+
|
|
47
|
+
**Lightest lane.** Keep each lane as light as it can be; do not babysit what
|
|
48
|
+
does not move without you.
|
|
49
|
+
|
|
50
|
+
## Failure Shapes
|
|
51
|
+
|
|
52
|
+
| Observed shape | First response |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| Silent wedge: initial answer empty and worktree clean | Inspect status and history, then send one steering `tell`. If the worker remains unresponsive, `kill` and call a new Akuma; an empty answer alone is not proof the Contract failed. |
|
|
55
|
+
| Verdict record refused with `not-allowed` | Read the worker's analysis in history. Record the verdict yourself if you did not deliver the candidate, or call a new Reviewer with the grant from `keiyaku-workflow` and have it inspect current work and record a fresh verdict. The refused request wrote no Contract testimony. |
|
|
56
|
+
| Review stale after changed candidate tender | Normal content-currentness result. Give the same Reviewer the changed diff and current terms with `tell`; have it re-examine and record current testimony. A target move alone does not stale review. |
|
|
57
|
+
| Target moved under the appointed worktree | Have the Deliverer inspect target movement and merge the target branch (main when selected) in that worktree when required; resolve conflicts there, then audit again. Do not resolve against a stale integration preview. |
|
|
58
|
+
| Typed refusal names its rule | Fix the named input or physical condition, then retry from a fresh observation. Do not repeat the same request blindly. |
|
|
59
|
+
|
|
60
|
+
## What Babysitting Never Owns
|
|
61
|
+
|
|
62
|
+
Commands and semantics belong to task, bind, workflow, and akuma. Acceptance
|
|
63
|
+
belongs to the Contract's journal and its Reviewer's testimony. The question
|
|
64
|
+
belongs to whoever commissioned it. Babysitting decides only when you look and
|
|
65
|
+
what you check next.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keiyaku-bind
|
|
3
|
+
description: >-
|
|
4
|
+
Must read before binding a `kei` (Contract). Use when deciding what belongs
|
|
5
|
+
in one `kei`, how to divide its work, and how to write or run `bind`.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Before Binding A Keiyaku
|
|
9
|
+
|
|
10
|
+
Bind records a Contract whose objective, design, and acceptance boundary are
|
|
11
|
+
settled. Do not use it to leave an open design for someone else to decide.
|
|
12
|
+
|
|
13
|
+
## 1. What Must Be Clear Before Binding
|
|
14
|
+
|
|
15
|
+
Settle these facts first:
|
|
16
|
+
|
|
17
|
+
- objective and intended outcome;
|
|
18
|
+
- architecture and module boundaries;
|
|
19
|
+
- detailed design and implementation approach;
|
|
20
|
+
- public interfaces, behavior, data, and persistence;
|
|
21
|
+
- ordering, concurrency, dependencies, and failure behavior;
|
|
22
|
+
- acceptance conditions;
|
|
23
|
+
- verification and required evidence;
|
|
24
|
+
- the affected Region;
|
|
25
|
+
- the one holder responsible for the `kei`.
|
|
26
|
+
|
|
27
|
+
The Design section is a detailed design document. It may contain subsections
|
|
28
|
+
such as:
|
|
29
|
+
|
|
30
|
+
- Architecture: components, module boundaries, ownership, and connections;
|
|
31
|
+
- Interfaces And Behavior: public surfaces, inputs, outputs, success, and
|
|
32
|
+
refusal behavior;
|
|
33
|
+
- Data And Persistence: data shape, identity, lifecycle facts, and persistence;
|
|
34
|
+
- Approach And Flow: implementation approach, dependencies, ordering,
|
|
35
|
+
concurrency, and failure handling;
|
|
36
|
+
- Pseudocode: algorithms and control flow.
|
|
37
|
+
|
|
38
|
+
Record every design decision the implementation must follow. Add other Design
|
|
39
|
+
subsections when needed. Do not bind while the architecture, design, approach,
|
|
40
|
+
or acceptance conditions are open.
|
|
41
|
+
|
|
42
|
+
### Contract Shape: Mandatory Acceptance Boundary Check
|
|
43
|
+
|
|
44
|
+
Before every bind, identify the independently acceptable outcomes. For each
|
|
45
|
+
proposed part, ask whether it can be reviewed and accepted while another part
|
|
46
|
+
remains unfinished. If it can, you MUST bind it as a separate `kei`. Do not bind
|
|
47
|
+
an aggregate Contract containing independently acceptable outcomes.
|
|
48
|
+
|
|
49
|
+
A shared request, audit, theme, product name, worker, verification command, or
|
|
50
|
+
overlapping Region does NOT justify combining acceptance boundaries. Worker
|
|
51
|
+
assignment and Contract boundaries are separate decisions: one worker may
|
|
52
|
+
serve several Contracts, and several workers may contribute to one outcome.
|
|
53
|
+
A request to "open a kei" does not by itself instruct you to combine outcomes.
|
|
54
|
+
|
|
55
|
+
Keep parts together only when they jointly establish one outcome that cannot
|
|
56
|
+
be meaningfully accepted in parts. State that inseparability in Context and
|
|
57
|
+
make Criteria judge the same outcome. Do not manufacture inseparability by
|
|
58
|
+
writing one broad Objective around unrelated fixes.
|
|
59
|
+
|
|
60
|
+
- Use an Arc only for a chapter inside that one acceptance boundary; an Arc is
|
|
61
|
+
not separately accepted and MUST NOT substitute for an independent `kei`.
|
|
62
|
+
- Use a Task for decomposition or dependency memory that must outlive the
|
|
63
|
+
current conversation.
|
|
64
|
+
|
|
65
|
+
A `kei` owns one independently acceptable outcome and its delivery lifecycle. A
|
|
66
|
+
Task records decomposition or dependency memory; it may exist without a `kei`,
|
|
67
|
+
and it does not create a second acceptance or lifecycle. Associate a `kei` with
|
|
68
|
+
an existing Task only when that Task has real scheduling or dependency value.
|
|
69
|
+
Do not create a Task just to mirror a `kei`.
|
|
70
|
+
|
|
71
|
+
### Parallel Work
|
|
72
|
+
|
|
73
|
+
Parallel work is the default.
|
|
74
|
+
|
|
75
|
+
- Bind and advance independent `kei`s in parallel. Each has its own acceptance
|
|
76
|
+
boundary and holder.
|
|
77
|
+
- Within one `kei`, run independent Tasks or Arc chapters in parallel whenever
|
|
78
|
+
their work can proceed independently. They converge on the one acceptance
|
|
79
|
+
boundary, which the holder owns.
|
|
80
|
+
|
|
81
|
+
Region overlap is planning information. It does not prevent parallel work and
|
|
82
|
+
is not a lock, ownership claim, exact diff, or dependency. Use `--after` only
|
|
83
|
+
when one result must exist before another can proceed because of a real logical
|
|
84
|
+
dependency. Do not add `--after` merely because work touches the same Region.
|
|
85
|
+
|
|
86
|
+
## 2. Bind Syntax
|
|
87
|
+
|
|
88
|
+
Read the command's help for the complete option grammar:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
keiyaku -C <repo> bind --help
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Inspect declared Regions when planning parallel work:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
keiyaku -C <repo> region
|
|
98
|
+
keiyaku -C <repo> region <kei/...>
|
|
99
|
+
keiyaku -C <repo> region --path 'src/**' --path 'tests/**'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
These list active Regions, read one Contract's Region, or show active Regions
|
|
103
|
+
overlapping the supplied patterns. Overlap is coordination information only.
|
|
104
|
+
|
|
105
|
+
Bind from stdin with a heredoc or a saved Markdown file:
|
|
106
|
+
|
|
107
|
+
~~~~bash
|
|
108
|
+
keiyaku -C <repo> bind - <<'KEIYAKU'
|
|
109
|
+
# <Delivery name>
|
|
110
|
+
|
|
111
|
+
## Context
|
|
112
|
+
<Motivation, authority, baseline, and boundaries.>
|
|
113
|
+
|
|
114
|
+
## Objective
|
|
115
|
+
<One observable, independently acceptable outcome.>
|
|
116
|
+
|
|
117
|
+
## Design
|
|
118
|
+
### Architecture
|
|
119
|
+
<Components, module boundaries, ownership, and connections.>
|
|
120
|
+
|
|
121
|
+
### Interfaces And Behavior
|
|
122
|
+
<Public surfaces, inputs, outputs, success, and refusal behavior.>
|
|
123
|
+
|
|
124
|
+
### Data And Persistence
|
|
125
|
+
<Data shape, identity, lifecycle facts, and persistence decisions.>
|
|
126
|
+
|
|
127
|
+
### Approach And Flow
|
|
128
|
+
<Implementation approach, dependencies, ordering, concurrency, and failure.>
|
|
129
|
+
|
|
130
|
+
### Pseudocode
|
|
131
|
+
<Algorithms and control flow.>
|
|
132
|
+
|
|
133
|
+
## Region
|
|
134
|
+
<One repository-relative write pattern per nonblank line.>
|
|
135
|
+
|
|
136
|
+
## Criteria
|
|
137
|
+
### <observable acceptance condition>
|
|
138
|
+
<How to observe pass or refusal.>
|
|
139
|
+
|
|
140
|
+
## Verification
|
|
141
|
+
```bash timeout=5m
|
|
142
|
+
<commands runnable exactly as written>
|
|
143
|
+
```
|
|
144
|
+
KEIYAKU
|
|
145
|
+
~~~~
|
|
146
|
+
|
|
147
|
+
Use the narrowest justified Region patterns for likely writes. A trailing `/`
|
|
148
|
+
is directory shorthand for `/**`. Patterns may be fenced lines, list items, or
|
|
149
|
+
bare lines; those forms are combined. Region patterns are planning evidence,
|
|
150
|
+
not a prediction of the exact diff.
|
|
151
|
+
|
|
152
|
+
Verification is optional. Each declaration is a closed bash, zsh, or pwsh
|
|
153
|
+
fence containing commands runnable as written. Use separate fences when checks
|
|
154
|
+
need different timeouts or results. Use an explicit timeout for bounded
|
|
155
|
+
commands; `5m` is the normal baseline.
|
|
156
|
+
|
|
157
|
+
Verification runs only when the Contract selects the `verified` gate, against
|
|
158
|
+
the exact integration snapshot in a clean disposable worktree for that attempt.
|
|
159
|
+
`deliver` reuses current satisfied evidence or runs the declarations; unsatisfied
|
|
160
|
+
results and runtime stops prevent placement. `audit` runs declarations for a
|
|
161
|
+
prospective candidate. Without `verified`, no verb runs Verification and the
|
|
162
|
+
section is inert document text. `reviewed` independently requires review
|
|
163
|
+
evidence. Selected gates are checked at placement.
|
|
164
|
+
|
|
165
|
+
For an existing Task with real scheduling or dependency value:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
keiyaku -C <repo> bind --task <task/...> - < CONTRACT.md
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
For a real logical dependency between Contracts:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
keiyaku -C <repo> bind --after <kei/...> - < CONTRACT.md
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Gate selection is part of binding:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
keiyaku -C <repo> bind --gates <name,...> - < CONTRACT.md
|
|
181
|
+
keiyaku -C <repo> bind --gates "" - < CONTRACT.md
|
|
182
|
+
keiyaku -C <repo> bind --gates reviewed - < CONTRACT.md
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Omitting `--gates` uses `gates.default`, or `reviewed` when no default group
|
|
186
|
+
exists. `--gates ""` selects no gates. Gates are named acceptance obligations,
|
|
187
|
+
not work assignments. Named gate groups and worktree hooks live in Settings;
|
|
188
|
+
see the README Configuration section or `keiyaku settings --help`.
|
|
189
|
+
|
|
190
|
+
## 3. After Binding
|
|
191
|
+
|
|
192
|
+
Binding appoints one managed worktree for the `kei`. Read the receipt as the
|
|
193
|
+
handoff. Keep the complete `kei/...` identity and note:
|
|
194
|
+
|
|
195
|
+
- the holder;
|
|
196
|
+
- the appointed worktree path (absent when appointment lagged);
|
|
197
|
+
- the target;
|
|
198
|
+
- gates and prerequisites;
|
|
199
|
+
- whether the `kei` is ready or waiting.
|
|
200
|
+
|
|
201
|
+
Work in the appointed worktree. When appointment lags, the receipt carries no
|
|
202
|
+
path and the `kei` shows pending reconciliation instead. If the receipt is
|
|
203
|
+
waiting, the stated prerequisites remain; do not bind a duplicate Contract.
|
|
204
|
+
|
|
205
|
+
The holder now owns the lifecycle:
|
|
206
|
+
|
|
207
|
+
1. Start the work directly or delegate Tasks, Arc chapters, Akumas, or Contract roles.
|
|
208
|
+
2. Run independent work in parallel and let it converge on the one acceptance
|
|
209
|
+
boundary.
|
|
210
|
+
3. Prepare and deliver the candidate.
|
|
211
|
+
4. Coordinate verification, review evidence, gates, and prerequisites.
|
|
212
|
+
5. Continue until the `kei` is accepted, amend terms while keeping the same
|
|
213
|
+
objective and acceptance boundary, or abandon it when either has changed.
|
|
214
|
+
|
|
215
|
+
Continue with `keiyaku-workflow` for this lifecycle. For Akuma invocation,
|
|
216
|
+
telling, waiting, permissions, and history, read `keiyaku-akuma`.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keiyaku-task
|
|
3
|
+
description: >-
|
|
4
|
+
Must read when using Tasks for durable work planning, decomposition, or
|
|
5
|
+
dependencies.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Keiyaku Task
|
|
9
|
+
|
|
10
|
+
A Task is durable planning memory. It records work, decomposition, and
|
|
11
|
+
relationships that must remain after the current conversation. Task is an
|
|
12
|
+
independent product; it is not a Contract, Arc, Akuma, permission, acceptance
|
|
13
|
+
boundary, or fulfillment lifecycle.
|
|
14
|
+
|
|
15
|
+
## 1. When To Use A Task
|
|
16
|
+
|
|
17
|
+
Use a Task when the plan or dependency must outlive the current conversation.
|
|
18
|
+
Skip it when the work is small and no durable planning memory is needed.
|
|
19
|
+
|
|
20
|
+
- Use a `kei` for one independently acceptable outcome.
|
|
21
|
+
- Use an Arc for a chapter inside one `kei`.
|
|
22
|
+
- Use a Task for decomposition or dependency memory.
|
|
23
|
+
- Do not create a Task just to mirror a `kei`.
|
|
24
|
+
|
|
25
|
+
A Task may exist without a Contract. Associating a Task with a `kei` does not
|
|
26
|
+
transfer the Contract's holder, acceptance, or lifecycle to the Task.
|
|
27
|
+
|
|
28
|
+
## 2. Relationships And Parallel Work
|
|
29
|
+
|
|
30
|
+
Independent Tasks may start and progress in parallel when their dependencies
|
|
31
|
+
allow it.
|
|
32
|
+
|
|
33
|
+
Use the relationships for their actual meanings:
|
|
34
|
+
|
|
35
|
+
- `needs` means this Task must wait for another Task to become terminal.
|
|
36
|
+
- `parent` groups decomposition; it does not create a dependency.
|
|
37
|
+
- `supersedes` points to work replaced by this Task.
|
|
38
|
+
- `relates` records a connection without affecting readiness.
|
|
39
|
+
|
|
40
|
+
Only `needs` orders work. Do not add it because Tasks touch the same Region or
|
|
41
|
+
because one Task is related to another. A terminal Task releases its dependents.
|
|
42
|
+
An `on_hold` Task is deliberately paused; it is neither ready nor blocked.
|
|
43
|
+
|
|
44
|
+
## 3. Task Commands
|
|
45
|
+
|
|
46
|
+
Create and inspect Tasks:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
keiyaku task add "<title>"
|
|
50
|
+
keiyaku task add "<title>" --priority 1 --needs <task-id>
|
|
51
|
+
keiyaku task show <task-id>
|
|
52
|
+
keiyaku task ls
|
|
53
|
+
keiyaku task ready
|
|
54
|
+
keiyaku task blocked
|
|
55
|
+
keiyaku task tree <task-id>
|
|
56
|
+
keiyaku task doctor
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Use complete Task IDs for targeted commands. `ls`, `ready`, and `blocked` use
|
|
60
|
+
the current namespace; use `--world` to inspect the complete Task world.
|
|
61
|
+
|
|
62
|
+
Change lifecycle state:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
keiyaku task start <task-id>...
|
|
66
|
+
keiyaku task stop <task-id>
|
|
67
|
+
keiyaku task hold <task-id>...
|
|
68
|
+
keiyaku task resume <task-id>
|
|
69
|
+
keiyaku task done <task-id>...
|
|
70
|
+
keiyaku task drop <task-id>... --note "<reason>"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Use `done` when the Task is complete. Use `drop` when it will not be done.
|
|
74
|
+
Both terminal states release dependent Tasks. Use `hold` for a deliberate pause,
|
|
75
|
+
not for an unresolved dependency; unresolved `needs` appear in `blocked`.
|
|
76
|
+
|
|
77
|
+
Update a Task without changing its lifecycle:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
keiyaku task update <task-id> --title "<title>"
|
|
81
|
+
keiyaku task update <task-id> --body "<body>"
|
|
82
|
+
keiyaku task update <task-id> --needs <task-id>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Use `task compose -` when several Tasks and their relationships should be
|
|
86
|
+
planned or admitted together. Use `--plan` to inspect the composition without
|
|
87
|
+
writing it.
|
|
88
|
+
|
|
89
|
+
## 4. After Creating A Task
|
|
90
|
+
|
|
91
|
+
Read the returned Task identity. Then:
|
|
92
|
+
|
|
93
|
+
1. Start ready work.
|
|
94
|
+
2. Run independent Tasks in parallel.
|
|
95
|
+
3. Add or remove relationships when the plan changes.
|
|
96
|
+
4. Hold work that is deliberately paused.
|
|
97
|
+
5. Mark completed work `done`, or mark abandoned work `drop` with a reason.
|
|
98
|
+
6. Use `ready`, `blocked`, `tree`, or `doctor` to rebuild the current view.
|
|
99
|
+
|
|
100
|
+
Task records planning memory. It does not perform the work, claim acceptance,
|
|
101
|
+
assign a holder, or decide what a Contract may accept.
|
|
102
|
+
|
|
103
|
+
Read `keiyaku-bind` for Contract authoring and `keiyaku-workflow` for Contract
|
|
104
|
+
lifecycle.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keiyaku-workflow
|
|
3
|
+
description: >-
|
|
4
|
+
Must read before binding a `kei` (Contract) or when acting as its holder.
|
|
5
|
+
Use when deciding when to bind a kei, how to shape and hold it, how to
|
|
6
|
+
delegate its work, and how to accept, amend, or end it.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Keiyaku Workflow
|
|
10
|
+
|
|
11
|
+
The holder runs one Contract's fulfillment loop from preparation to completion.
|
|
12
|
+
|
|
13
|
+
## 1. Prepare Before Binding
|
|
14
|
+
|
|
15
|
+
Before `bind`, settle the information that makes the `kei` truthful:
|
|
16
|
+
|
|
17
|
+
- objective and intended outcome;
|
|
18
|
+
- design and approach;
|
|
19
|
+
- affected Region;
|
|
20
|
+
- acceptance conditions;
|
|
21
|
+
- verification and required evidence;
|
|
22
|
+
- prerequisites;
|
|
23
|
+
- holder.
|
|
24
|
+
|
|
25
|
+
If the design, approach, or acceptance conditions are still open, do not bind.
|
|
26
|
+
Resolve them with their owner first. Private implementation details may remain
|
|
27
|
+
for the Deliverer; the public meaning and acceptance boundary may not.
|
|
28
|
+
|
|
29
|
+
Bind independent `kei`s in parallel. Do not split one acceptance boundary just
|
|
30
|
+
to create parallel work.
|
|
31
|
+
|
|
32
|
+
## 2. Split the Work
|
|
33
|
+
|
|
34
|
+
- Separate `kei`s have independently acceptable outcomes.
|
|
35
|
+
- An Arc is a chapter of one `kei`; it is not separately accepted.
|
|
36
|
+
- A Task stores decomposition or dependencies that outlive this conversation.
|
|
37
|
+
|
|
38
|
+
Use `after` only when one `kei` requires another to be accepted first. Ordinary
|
|
39
|
+
overlap is not a dependency.
|
|
40
|
+
|
|
41
|
+
## 3. Roles
|
|
42
|
+
|
|
43
|
+
A `kei` has three roles. They are responsibilities, not people, and one agent
|
|
44
|
+
may fill more than one of them, with one exception below.
|
|
45
|
+
|
|
46
|
+
- **Holder:** exactly one per `kei`. Owns the fulfillment loop and acceptance
|
|
47
|
+
until the Contract is accepted or abandoned. Handing work to others never
|
|
48
|
+
transfers this responsibility.
|
|
49
|
+
- **Deliverer:** produces the candidate in the appointed worktree and tenders
|
|
50
|
+
it with `deliver`.
|
|
51
|
+
- **Reviewer:** judges the complete Contract against its acceptance conditions
|
|
52
|
+
and records the verdict with `review`.
|
|
53
|
+
|
|
54
|
+
Review is independent when the Reviewer did not deliver the candidate under
|
|
55
|
+
review. That is the whole requirement. The holder may review its own `kei`; a
|
|
56
|
+
fresh Akuma is not what makes review independent. Keiyaku does not check who
|
|
57
|
+
reviews, so keeping the Reviewer apart from the Deliverer is the holder's duty.
|
|
58
|
+
|
|
59
|
+
Any role may be filled directly or handed to an Akuma. Hand one over when other
|
|
60
|
+
hands help the work, not to make review count.
|
|
61
|
+
|
|
62
|
+
## 4. Lifecycle
|
|
63
|
+
|
|
64
|
+
Each act changes a different part of the world:
|
|
65
|
+
|
|
66
|
+
- **Bind:** Journal gains the Contract and its terms. Workspace appointment
|
|
67
|
+
names one managed worktree; the receipt reports its path. Appointment lag
|
|
68
|
+
leaves the bind admitted without a path and reports pending reconciliation.
|
|
69
|
+
`reconcile` retries workspace realization.
|
|
70
|
+
- **Work:** Changes and commits belong in the appointed worktree. Another
|
|
71
|
+
lane's claim can move the target beneath it. Check target movement before
|
|
72
|
+
audit; when it matters, merge the target branch (main when selected) in the
|
|
73
|
+
worktree and resolve conflicts there before auditing.
|
|
74
|
+
- **Audit:** Previews the candidate and target without tendering or claiming.
|
|
75
|
+
With `verified` selected, Verification runs for the captured subject and can
|
|
76
|
+
record an attestation. Without that gate, the section is inert text and no
|
|
77
|
+
verb runs Verification. A stopped run records no new verdict.
|
|
78
|
+
- **Deliver:** Captures a tender and integration against the observed target;
|
|
79
|
+
journal gains a delivered candidate. Ready prerequisites and gates trigger
|
|
80
|
+
placement and claim in this invocation; otherwise the candidate waits.
|
|
81
|
+
Changed candidate content stales earlier review. Identical content retains
|
|
82
|
+
review across rebase or target movement.
|
|
83
|
+
- **Review:** Records verdict evidence for the current document and worktree
|
|
84
|
+
content, even before delivery. Satisfied review requests placement: with a
|
|
85
|
+
delivered candidate, current gates, and ready prerequisites, it accepts in
|
|
86
|
+
this invocation. Unsatisfied review records testimony without placement.
|
|
87
|
+
- **Abandon:** Records the alternate terminal outcome without accepting. Accepted
|
|
88
|
+
and abandoned Contracts cannot be reopened.
|
|
89
|
+
|
|
90
|
+
Placement judges declared gates, not the producer's identity. Review does not
|
|
91
|
+
replace Verification; audit never requests placement. Read the final receipt
|
|
92
|
+
for stops and reconciliation lag after an admitted act.
|
|
93
|
+
|
|
94
|
+
## 5. Handing A Role To An Akuma
|
|
95
|
+
|
|
96
|
+
This is the one commissioning map. `call --help` owns the exact action
|
|
97
|
+
vocabulary and default set. The flagship acting directly needs no grant.
|
|
98
|
+
Birth freezes an Akuma's actions; `--contract` records association, not
|
|
99
|
+
authority.
|
|
100
|
+
|
|
101
|
+
| Role | Grant at birth | Return |
|
|
102
|
+
| --- | --- | --- |
|
|
103
|
+
| Holder | The actions the delegated loop will perform; include `contract.review` when this holder will review. Commission with the `kei`, current Arc when one exists, appointed worktree, and holder duties. | Acceptance or abandonment, with receipts. |
|
|
104
|
+
| Deliverer | The ordinary baseline: every Task mutation, Contract audit and delivery, and Akuma management. `keiyaku -C <repo> call worker --alias @deliverer --contract <kei/...> --workdir <appointed-path> -` | The delivery receipt. |
|
|
105
|
+
| Reviewer | `--allowed contract.review`: `keiyaku -C <repo> call review-akuma --alias @reviewer --contract <kei/...> --workdir <appointed-path> --allowed contract.review -` | The verdict receipt. Without the grant, `not-allowed` refuses and no verdict is recorded. |
|
|
106
|
+
|
|
107
|
+
An Archetype's explicit allowed set replaces the ordinary baseline; check
|
|
108
|
+
`status` for effective actions. `tell` and `fork` cannot add a grant to a live
|
|
109
|
+
Akuma, so call a fresh one with the grant. Nested calls cannot exceed their
|
|
110
|
+
direct parent's actions.
|
|
111
|
+
|
|
112
|
+
Commission with a clear objective, current Arc when one exists, appointed
|
|
113
|
+
worktree, and expected result. Never ask the Akuma that delivered a candidate
|
|
114
|
+
to review it. Use `keiyaku-akuma` for invocation and observation, and command
|
|
115
|
+
help for exact syntax.
|
|
116
|
+
|
|
117
|
+
## 6. Decide What Happens Next
|
|
118
|
+
|
|
119
|
+
The holder checks candidate, verification, review, prerequisites, and gates.
|
|
120
|
+
|
|
121
|
+
- A ready delivered candidate claims automatically on delivery or satisfied
|
|
122
|
+
review; no separate claim command is needed.
|
|
123
|
+
- Missing evidence or unfinished work calls for another commission or chapter.
|
|
124
|
+
- Amend when the objective and acceptance boundary remain the same but terms
|
|
125
|
+
must change.
|
|
126
|
+
- Abandon and bind a new `kei` when the objective or acceptance boundary changes.
|
|
127
|
+
|
|
128
|
+
Read `keiyaku-bind` for authoring, `keiyaku-akuma` for delegation, and
|
|
129
|
+
`keiyaku-babysit` for supervising multiple lanes.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: keiyaku
|
|
3
|
+
description: >-
|
|
4
|
+
Keiyaku is a CLI that records plans, writes handoff terms for deliveries,
|
|
5
|
+
and calls delegates. Use this skill when you need to figure out which
|
|
6
|
+
Keiyaku skill or command to reach for.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Keiyaku
|
|
10
|
+
|
|
11
|
+
## Model
|
|
12
|
+
|
|
13
|
+
Keiyaku is three independent pillars, not a bundle: **Task** remembers plans
|
|
14
|
+
and dependencies, **Contract** makes acceptance standing and auditable,
|
|
15
|
+
**Akuma** invokes capability. Use any one alone; combine them only when the
|
|
16
|
+
work calls for it. Behind every Contract in flight there is one holder of its
|
|
17
|
+
fulfillment loop — whoever turns intent into commissions and returns into
|
|
18
|
+
decisions. The flagship holds it by default, and may hand a whole Contract's
|
|
19
|
+
loop to one Aku in a single commission; the harness serves both styles
|
|
20
|
+
equally. See `keiyaku-workflow` for the loop, `keiyaku-bind` for authoring,
|
|
21
|
+
`keiyaku-akuma` for invocation.
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
keiyaku -C <repo> task add "title"
|
|
27
|
+
keiyaku -C <repo> task start <task-id>
|
|
28
|
+
keiyaku -C <repo> bind [--task <task-id>] -
|
|
29
|
+
keiyaku -C <repo> status
|
|
30
|
+
keiyaku -C <repo> deliver [<contract>|@<contract>]
|
|
31
|
+
keiyaku -C <repo> review [<contract>|@<contract>] --satisfied
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`-C` selects the invocation cwd and therefore the World. `--repo <path>` only
|
|
35
|
+
selects the Contract repository; it never retargets that World. `call
|
|
36
|
+
--workdir <path>` selects execution cwd (relative to the effective invocation
|
|
37
|
+
cwd). Without it, the call uses the invocation cwd; `--contract` associates a
|
|
38
|
+
Contract without selecting an execution directory.
|
|
39
|
+
|
|
40
|
+
`deliver`, `review`, and `audit` may take time after their leading admission.
|
|
41
|
+
Their witnessed progress is ephemeral stderr output; stdout remains one final
|
|
42
|
+
text or JSON result. Ctrl-C asks the owned operation to stop and waits for its
|
|
43
|
+
truthful final receipt, so it is not evidence that an already admitted action
|
|
44
|
+
was rolled back.
|