@astrosheep/keiyaku 4.5.7 → 4.5.9
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 +10 -0
- package/build/integrations/marketplace/plugins/keiyaku/.claude-plugin/plugin.json +1 -1
- package/build/integrations/marketplace/plugins/keiyaku/.codex-plugin/plugin.json +1 -1
- package/build/integrations/marketplace/plugins/keiyaku/opencode.js +3 -2
- package/build/integrations/marketplace/plugins/keiyaku/package.json +1 -1
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku/SKILL.md +12 -11
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-akuma/SKILL.md +33 -12
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-babysit/SKILL.md +35 -96
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-bind/SKILL.md +28 -49
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-task/SKILL.md +21 -15
- package/build/integrations/marketplace/plugins/keiyaku/skills/keiyaku-workflow/SKILL.md +148 -89
- package/build/src/akuma/abort.d.ts +2 -1
- package/build/src/akuma/abort.js +6 -23
- package/build/src/akuma/akuma-handle.js +4 -2
- package/build/src/akuma/akuma-observe.d.ts +2 -0
- package/build/src/akuma/akuma-observe.js +1 -0
- package/build/src/akuma/akuma-product.js +9 -7
- package/build/src/akuma/akuma.d.ts +392 -9
- package/build/src/akuma/akuma.js +31 -1
- package/build/src/akuma/allowed.d.ts +1 -1
- package/build/src/akuma/allowed.js +1 -0
- package/build/src/akuma/archetype.js +1 -1
- package/build/src/akuma/body.d.ts +8 -5
- package/build/src/akuma/body.js +12 -5
- package/build/src/akuma/call-request.d.ts +80 -0
- package/build/src/akuma/call-request.js +211 -0
- package/build/src/akuma/heart/facts.d.ts +16 -78
- package/build/src/akuma/heart/facts.js +11 -0
- package/build/src/akuma/heart/index.d.ts +3 -2
- package/build/src/akuma/heart/index.js +4 -1
- package/build/src/akuma/heart/request-authority.d.ts +5 -4
- package/build/src/akuma/heart/request-authority.js +20 -34
- package/build/src/akuma/heart/request-rows.js +12 -23
- package/build/src/akuma/heart/schema.d.ts +1 -1
- package/build/src/akuma/heart/schema.js +5 -13
- package/build/src/akuma/index.d.ts +1 -1
- package/build/src/akuma/index.js +1 -1
- package/build/src/akuma/projection-read.d.ts +1 -0
- package/build/src/akuma/projection-read.js +8 -1
- package/build/src/akuma/projection.d.ts +907 -137
- package/build/src/akuma/projection.js +193 -9
- package/build/src/akuma/provider.d.ts +30 -3
- package/build/src/akuma/provider.js +111 -0
- package/build/src/akuma/providers/acp/core.d.ts +2 -2
- package/build/src/akuma/providers/acp/core.js +13 -6
- package/build/src/akuma/providers/acp/index.js +5 -4
- package/build/src/akuma/providers/claude/events.d.ts +2 -2
- package/build/src/akuma/providers/claude/events.js +16 -3
- package/build/src/akuma/providers/claude/index.d.ts +3 -3
- package/build/src/akuma/providers/claude/index.js +16 -5
- package/build/src/akuma/providers/codex-app-server/events.d.ts +2 -2
- package/build/src/akuma/providers/codex-app-server/events.js +25 -4
- package/build/src/akuma/providers/codex-app-server/index.js +18 -6
- package/build/src/akuma/providers/grok-build/index.js +5 -4
- package/build/src/akuma/providers/opencode-sdk/index.js +66 -25
- package/build/src/akuma/providers/opencode-sdk/session.d.ts +3 -2
- package/build/src/akuma/providers/opencode-sdk/session.js +28 -11
- package/build/src/akuma/providers/pi/index.js +72 -58
- package/build/src/akuma/request-lifecycle.d.ts +4 -10
- package/build/src/akuma/request-lifecycle.js +7 -5
- package/build/src/akuma/request-rendezvous.d.ts +26 -0
- package/build/src/akuma/request-rendezvous.js +100 -0
- package/build/src/akuma/request-serve.d.ts +6 -66
- package/build/src/akuma/request-serve.js +83 -210
- package/build/src/akuma/request-wire.d.ts +109 -115
- package/build/src/akuma/request-wire.js +63 -318
- package/build/src/akuma/requests.d.ts +19 -47
- package/build/src/akuma/requests.js +51 -107
- package/build/src/akuma/turn-drive.d.ts +5 -3
- package/build/src/akuma/turn-drive.js +39 -11
- package/build/src/akuma-body.d.ts +7 -2
- package/build/src/akuma-body.js +68 -46
- package/build/src/body/amend.js +18 -19
- package/build/src/cli/accepted.d.ts +1 -1
- package/build/src/cli/accepted.js +2 -2
- package/build/src/cli/commands/akuma-invoke.d.ts +2 -0
- package/build/src/cli/commands/akuma-invoke.js +17 -9
- package/build/src/cli/commands/akuma.js +8 -8
- package/build/src/cli/commands/contract-invoke.d.ts +3 -2
- package/build/src/cli/commands/contract-invoke.js +42 -30
- package/build/src/cli/commands/contract.d.ts +16 -20
- package/build/src/cli/commands/contract.js +58 -25
- package/build/src/cli/commands/install.d.ts +2 -1
- package/build/src/cli/commands/install.js +3 -2
- package/build/src/cli/commands/task-invoke.d.ts +3 -0
- package/build/src/cli/commands/task-invoke.js +23 -140
- package/build/src/cli/commands/task.js +54 -20
- package/build/src/cli/invoke.js +39 -25
- package/build/src/cli/main.js +2 -1
- package/build/src/cli/parse.d.ts +2 -2
- package/build/src/cli/parse.js +56 -27
- package/build/src/cli/render/akuma-activity.d.ts +3 -0
- package/build/src/cli/render/akuma-activity.js +45 -29
- package/build/src/cli/render/akuma-tool.d.ts +5 -1
- package/build/src/cli/render/akuma.js +4 -8
- package/build/src/cli/render/audit.js +1 -1
- package/build/src/cli/render/catalog.js +80 -21
- package/build/src/cli/render/contract-observation.d.ts +2 -0
- package/build/src/cli/render/contract-observation.js +11 -0
- package/build/src/cli/render/contract.js +35 -62
- package/build/src/cli/render/kanshi-akuma.d.ts +8 -0
- package/build/src/cli/render/kanshi-akuma.js +132 -0
- package/build/src/cli/render/kanshi.js +131 -213
- package/build/src/cli/render/receipt.d.ts +1 -2
- package/build/src/cli/render/receipt.js +76 -26
- package/build/src/cli/render/refusal.js +2 -10
- package/build/src/cli/render/region.js +5 -2
- package/build/src/cli/render/settings.d.ts +1 -1
- package/build/src/cli/render/settings.js +27 -8
- package/build/src/cli/render/task.js +22 -5
- package/build/src/cli/render/terminal.d.ts +32 -1
- package/build/src/cli/render/terminal.js +77 -1
- package/build/src/cli/result.d.ts +3 -3
- package/build/src/cli/runtime.js +4 -2
- package/build/src/cli/selectors.d.ts +2 -1
- package/build/src/cli/selectors.js +4 -3
- package/build/src/cli/square-edge.js +120 -36
- package/build/src/cli/usage.js +2 -1
- package/build/src/contract-guidance.d.ts +5 -0
- package/build/src/contract-guidance.js +121 -0
- package/build/src/contract-worktree.d.ts +0 -1
- package/build/src/contract-worktree.js +32 -83
- package/build/src/coordination/sqlite-transaction-lock.d.ts +1 -0
- package/build/src/coordination/sqlite-transaction-lock.js +5 -0
- package/build/src/core/facts/codec.d.ts +2 -0
- package/build/src/core/facts/codec.js +4 -0
- package/build/src/core/verbs/placement.d.ts +6 -1
- package/build/src/core/verbs/placement.js +5 -3
- package/build/src/dispatch/index.d.ts +0 -2
- package/build/src/dispatch/index.js +54 -55
- package/build/src/git/admission.js +2 -2
- package/build/src/git/hooks.d.ts +9 -15
- package/build/src/git/hooks.js +23 -317
- package/build/src/git/nuke.d.ts +2 -1
- package/build/src/git/nuke.js +39 -21
- package/build/src/git/private-state-seat.d.ts +12 -0
- package/build/src/git/private-state-seat.js +39 -0
- package/build/src/git/process.d.ts +6 -0
- package/build/src/git/process.js +26 -11
- package/build/src/git/read-observation.js +29 -20
- package/build/src/git/reconcile.d.ts +13 -1
- package/build/src/git/reconcile.js +70 -11
- package/build/src/git/ref-migration.d.ts +22 -0
- package/build/src/git/ref-migration.js +55 -0
- package/build/src/git/repository.d.ts +10 -6
- package/build/src/git/repository.js +16 -8
- package/build/src/git/target-placement.d.ts +1 -0
- package/build/src/git/target-placement.js +5 -0
- package/build/src/git/tender.d.ts +1 -0
- package/build/src/git/terminal-reconcile.d.ts +1 -1
- package/build/src/git/terminal-reconcile.js +22 -20
- package/build/src/git/workspace.d.ts +14 -0
- package/build/src/git/workspace.js +44 -0
- package/build/src/kanshi/index.d.ts +1 -1
- package/build/src/kanshi/read.js +16 -16
- package/build/src/kanshi/report.d.ts +2 -2
- package/build/src/library/address.d.ts +9 -3
- package/build/src/library/address.js +3 -2
- package/build/src/library/akuma-creation.d.ts +4 -3
- package/build/src/library/akuma-creation.js +19 -13
- package/build/src/library/audit.d.ts +14 -6
- package/build/src/library/audit.js +13 -23
- package/build/src/library/catalog.d.ts +3 -1
- package/build/src/library/catalog.js +20 -6
- package/build/src/library/composition.d.ts +385 -0
- package/build/src/library/composition.js +28 -0
- package/build/src/library/configuration.js +8 -2
- package/build/src/library/continuation.js +66 -30
- package/build/src/library/contract-bind.js +10 -2
- package/build/src/library/contract-forwarding-reconciliation-result.d.ts +102 -0
- package/build/src/library/contract-forwarding-reconciliation-result.js +92 -0
- package/build/src/library/contract-forwarding-result.d.ts +4464 -0
- package/build/src/library/contract-forwarding-result.js +521 -0
- package/build/src/library/contract-forwarding.d.ts +71 -0
- package/build/src/library/contract-forwarding.js +114 -0
- package/build/src/library/contract-handle.d.ts +38 -0
- package/build/src/library/contract-handle.js +314 -0
- package/build/src/library/contract-operations.d.ts +214 -69
- package/build/src/library/contract-operations.js +189 -118
- package/build/src/library/contract-types.d.ts +7 -3
- package/build/src/library/contract.d.ts +21 -34
- package/build/src/library/contract.js +29 -287
- package/build/src/library/fleet-result.d.ts +1580 -0
- package/build/src/library/fleet-result.js +98 -0
- package/build/src/library/fleet.d.ts +112 -54
- package/build/src/library/fleet.js +211 -71
- package/build/src/library/input.d.ts +3 -1
- package/build/src/library/input.js +11 -1
- package/build/src/library/keiyaku.d.ts +388 -20
- package/build/src/library/keiyaku.js +13 -21
- package/build/src/library/mutation.d.ts +3 -3
- package/build/src/library/mutation.js +5 -9
- package/build/src/library/nuke.d.ts +1 -1
- package/build/src/library/nuke.js +4 -3
- package/build/src/library/reconcile.d.ts +4 -0
- package/build/src/library/reconcile.js +2 -0
- package/build/src/library/refusal.d.ts +0 -9
- package/build/src/library/refusal.js +0 -7
- package/build/src/protocol/amend.js +56 -50
- package/build/src/protocol/attempt.d.ts +2 -0
- package/build/src/protocol/attempt.js +8 -1
- package/build/src/protocol/completion.js +7 -0
- package/build/src/protocol/deliver.js +6 -2
- package/build/src/protocol/operations.d.ts +4 -1
- package/build/src/protocol/operations.js +5 -2
- package/build/src/protocol/placement.d.ts +1 -0
- package/build/src/protocol/placement.js +52 -38
- package/build/src/protocol/read/observation.d.ts +1 -4
- package/build/src/protocol/read/observation.js +2 -15
- package/build/src/protocol/reintegrate.js +62 -58
- package/build/src/protocol/review.js +5 -0
- package/build/src/protocol/run.js +17 -13
- package/build/src/runtime/proc/run.d.ts +9 -0
- package/build/src/runtime/proc/run.js +51 -4
- package/build/src/runtime/proc/termination.js +26 -22
- package/build/src/runtime/proc/windows-launch.exe +0 -0
- package/build/src/settlement/holder.d.ts +2 -1
- package/build/src/settlement/holder.js +15 -4
- package/build/src/settlement/settle.js +99 -33
- package/build/src/task/board.d.ts +68 -27
- package/build/src/task/board.js +31 -1
- package/build/src/task/catalog.d.ts +4 -0
- package/build/src/task/catalog.js +23 -0
- package/build/src/task/compose-language.js +33 -7
- package/build/src/task/compose-parser.d.ts +1 -1
- package/build/src/task/compose-parser.js +1 -1
- package/build/src/task/compose.js +2 -0
- package/build/src/task/index.d.ts +12 -4
- package/build/src/task/index.js +97 -16
- package/build/src/task/mutation-result.d.ts +923 -0
- package/build/src/task/mutation-result.js +140 -0
- package/build/src/task/mutation.d.ts +552 -28
- package/build/src/task/mutation.js +304 -97
- package/build/src/task/operations.d.ts +1 -4
- package/build/src/task/operations.js +0 -6
- package/build/src/task/public.d.ts +2 -0
- package/build/src/task/public.js +1 -0
- package/build/src/workspace-place.d.ts +7 -2
- package/build/src/workspace-place.js +34 -24
- package/build/src/world.d.ts +1 -0
- package/build/src/world.js +11 -0
- package/package.json +8 -6
- package/build/src/akuma/request-execution.d.ts +0 -8
- package/build/src/akuma/request-execution.js +0 -98
package/README.md
CHANGED
|
@@ -139,3 +139,13 @@ npm install -g @astrosheep/keiyaku
|
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
Node ≥ 22.19. Product law lives in [`docs/`](docs/README.md).
|
|
142
|
+
|
|
143
|
+
## Source builds
|
|
144
|
+
|
|
145
|
+
Building from source also builds the Windows launcher with Zig 0.14.1 or later. Install
|
|
146
|
+
that system tool separately and make `zig` available on `PATH`, or set
|
|
147
|
+
`KEIYAKU_ZIG` to the selected executable. `npm ci` alone is not sufficient for
|
|
148
|
+
the Windows launcher: use `npm ci --ignore-scripts --prefer-offline` followed by
|
|
149
|
+
`npm run build` (or `npm test`). On non-Windows hosts, a missing or unusable
|
|
150
|
+
Zig skips only the Windows launcher so the rest of `npm run build` and `npm test`
|
|
151
|
+
can continue; Windows builds fail with an actionable diagnostic.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
3
|
|
|
4
|
-
const skills = ["keiyaku", "keiyaku-task", "keiyaku-bind", "keiyaku-workflow", "keiyaku-akuma", "keiyaku-babysit"]
|
|
5
|
-
|
|
4
|
+
const skills = ["keiyaku", "keiyaku-task", "keiyaku-bind", "keiyaku-workflow", "keiyaku-akuma", "keiyaku-babysit"].map(
|
|
5
|
+
(name) => fileURLToPath(new URL(`./skills/${name}/SKILL.md`, import.meta.url)),
|
|
6
|
+
);
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
id: "keiyaku",
|
|
@@ -5,16 +5,17 @@ description: Use the Keiyaku v4 CLI for contract delivery, task coordination, an
|
|
|
5
5
|
|
|
6
6
|
# Keiyaku
|
|
7
7
|
|
|
8
|
-
Use `keiyaku` as an agent-facing ledger. Keep decisions with the flagship;
|
|
9
|
-
read `<command> --help` before using flags.
|
|
10
|
-
|
|
11
8
|
## Model
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
Keiyaku is three independent pillars, not a bundle: **Task** remembers plans
|
|
11
|
+
and dependencies, **Contract** makes acceptance standing and auditable,
|
|
12
|
+
**Akuma** invokes capability. Use any one alone; combine them only when the
|
|
13
|
+
work calls for it. Behind every Contract in flight there is one holder of its
|
|
14
|
+
fulfillment loop — whoever turns intent into commissions and returns into
|
|
15
|
+
decisions. The flagship holds it by default, and may hand a whole Contract's
|
|
16
|
+
loop to one Aku in a single commission; the harness serves both styles
|
|
17
|
+
equally. See `keiyaku-workflow` for the loop, `keiyaku-bind` for authoring,
|
|
18
|
+
`keiyaku-akuma` for invocation.
|
|
18
19
|
|
|
19
20
|
Settings owns named gate bundles. Omitting `--gates` selects `gates.default`,
|
|
20
21
|
or freezes `["reviewed"]` when that entry is absent. `--gates <name,...>`
|
|
@@ -32,7 +33,7 @@ keiyaku -C <repo> review [<contract>|@<contract>] --satisfied
|
|
|
32
33
|
```
|
|
33
34
|
|
|
34
35
|
```bash
|
|
35
|
-
keiyaku -C <cwd> call <akuma-name> [--contract <kei/...>] [--alias @name] [--readonly] [--allowed <product.action>]... [--wait <duration> | -d | --detach] (<prompt> | -)
|
|
36
|
+
keiyaku -C <cwd> call <akuma-name> [--contract <kei/...>] [--alias @name] [--readonly] [--allowed <product.action>]... [--wait <duration> | -d | --detach] [--json] (<prompt> | -)
|
|
36
37
|
keiyaku -C <repo> wait <akuma-selector>... [--any | --all]
|
|
37
38
|
keiyaku -C <repo> tell <aku/...|@alias> (<prompt> | -)
|
|
38
39
|
```
|
|
@@ -40,7 +41,7 @@ keiyaku -C <repo> tell <aku/...|@alias> (<prompt> | -)
|
|
|
40
41
|
`-C` is the invocation and Akuma execution cwd. Add `--repo <path>` only when
|
|
41
42
|
a Contract or Dispatch reader must use a different Git repository.
|
|
42
43
|
|
|
43
|
-
Repeated `--allowed` values add actions to the
|
|
44
|
-
|
|
44
|
+
Repeated `--allowed` values add actions to the selected Akuma's defaults. A
|
|
45
|
+
nested call can use only actions permitted by its direct parent Soul.
|
|
45
46
|
|
|
46
47
|
Use text by default; add `--json` when a script needs structured output.
|
|
@@ -6,14 +6,14 @@ description: Use when delegating work to, supervising, steering, inspecting, for
|
|
|
6
6
|
# Keiyaku Akuma
|
|
7
7
|
|
|
8
8
|
An Akuma is a durable callable worker. Its complete identity is
|
|
9
|
-
`aku/<
|
|
9
|
+
`aku/<akuma>/<hex8>` — keep it; it is how you address the same worker
|
|
10
10
|
later. An Alias is a movable world-local selector usable wherever a direct id
|
|
11
11
|
is accepted; the identity underneath never changes.
|
|
12
12
|
|
|
13
13
|
## Start One
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
keiyaku -C <cwd> call <akuma-name> [--alias @name] [--readonly] [--allowed <product.action>]... [--wait <duration> | -d | --detach] (<prompt> | -)
|
|
16
|
+
keiyaku -C <cwd> call <akuma-name> [--alias @name] [--readonly] [--allowed <product.action>]... [--wait <duration> | -d | --detach] [--json] (<prompt> | -)
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Give the worker's initial prompt as one argument (quote it when it contains
|
|
@@ -29,24 +29,45 @@ exclusive. Decide up front whether you will stay:
|
|
|
29
29
|
Alias already points elsewhere, it moves to the born Akuma. The worker's
|
|
30
30
|
execution cwd is exactly `-C <path>`, or your own cwd when `-C` is omitted.
|
|
31
31
|
|
|
32
|
-
Repeated `--allowed` values add actions to the
|
|
33
|
-
|
|
32
|
+
Repeated `--allowed` values add actions to the selected Akuma's defaults. A
|
|
33
|
+
nested call can use only actions permitted by its direct parent Soul.
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## Akuma Names
|
|
36
36
|
|
|
37
|
-
An
|
|
38
|
-
|
|
39
|
-
`readonly`, `network`, and
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
An Akuma name selects a Markdown file at `~/.keiyaku/akuma/<name>.md`; pass
|
|
38
|
+
the filename without `.md` as `<akuma-name>`. Its frontmatter selects the
|
|
39
|
+
provider and may declare `model`, `effort`, `readonly`, `network`, and
|
|
40
|
+
`description`; the body is an optional system prompt, and an empty body keeps
|
|
41
|
+
the harness default. If none grants the permissions and stance the work needs,
|
|
42
|
+
add a new Akuma name. A born Akuma keeps its selected defaults for its lifetime.
|
|
43
|
+
|
|
44
|
+
## Commission And Steer
|
|
45
|
+
|
|
46
|
+
A call assembles a commission from independent inputs: the selected Akuma fixes
|
|
47
|
+
capability stance for the identity's whole life; the `--contract` Dispatch
|
|
48
|
+
associates standing terms; allowed actions set what the callee may do, subject
|
|
49
|
+
to that Akuma's restrictions and the parent Soul's ceiling; the prompt carries
|
|
50
|
+
the question. None of these implies another — association is not a seat, forwarded
|
|
51
|
+
actions are not a seat, and no combination mints a role.
|
|
52
|
+
|
|
53
|
+
The prompt and every later tell genuinely direct the callee's work: they choose
|
|
54
|
+
the subject, scope, depth, risks, and deliverable of the round. They spend
|
|
55
|
+
decisions already made and ask questions still open; they never change the
|
|
56
|
+
Dispatch, the journal, or what counts as acceptance, and an expectation stated
|
|
57
|
+
in a prompt is never evidence for the callee's own findings.
|
|
58
|
+
|
|
59
|
+
A commission can be as large as a whole Contract's fulfillment loop: call one
|
|
60
|
+
Aku with the Contract association, forward the actions the loop needs —
|
|
61
|
+
including nested calls, which stay under this Soul's ceiling — and state the
|
|
62
|
+
loop as the question. Steering that delegation afterwards goes to the holder,
|
|
63
|
+
not around it.
|
|
43
64
|
|
|
44
65
|
## Watch
|
|
45
66
|
|
|
46
67
|
```bash
|
|
47
68
|
keiyaku status # deep fleet observation
|
|
48
69
|
keiyaku status <aku/...|@alias> # one worker's snapshot
|
|
49
|
-
keiyaku ls aku/ # shallow catalog; also aku/<
|
|
70
|
+
keiyaku ls aku/ # shallow catalog; also aku/<akuma>/ and "aku/*/*"
|
|
50
71
|
keiyaku wait <selector>... [--any | --all] [--timeout <duration>]
|
|
51
72
|
```
|
|
52
73
|
|
|
@@ -3,112 +3,51 @@ name: keiyaku-babysit
|
|
|
3
3
|
description: Babysit a long-running multi-lane goal — a room of lanes that advance on their own, call for you on their schedule, and hold each other up while you are busy being productive.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Keiyaku Babysit
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
each calls for you when it chooses; a lane left waiting on you holds up
|
|
12
|
-
the lanes behind it. There is one of you. The hard part is where your
|
|
13
|
-
next ten minutes go.
|
|
14
|
-
|
|
15
|
-
## You did not hand it off. You booked yourself.
|
|
16
|
-
|
|
17
|
-
Handing a lane to a worker felt lighter, didn't it. What you actually
|
|
18
|
-
did was schedule your own future: a question to answer, a return to
|
|
19
|
-
verify, a review to start, a delivery to make — all arriving when the
|
|
20
|
-
lane is ready, never when you are. While absorbed anywhere, every lane
|
|
21
|
-
reaching such a moment stops dead and waits, billing the goal by the
|
|
22
|
-
minute. Price attention by delay cost, not work importance: the
|
|
23
|
-
two-minute answer an Akuma is stalled on outranks an hour of brilliant
|
|
24
|
-
work in your hands, because your hour happens later and the stall does
|
|
25
|
-
not un-happen. Yes, even though your work is more interesting.
|
|
26
|
-
|
|
27
|
-
## The sweep
|
|
28
|
-
|
|
29
|
-
Several lanes calling at once? How flattering. Take them in order of
|
|
30
|
-
what your delay costs, never the order you prefer:
|
|
31
|
-
|
|
32
|
-
1. Unblock anyone stopped and waiting on you: a question, hand-off, or
|
|
33
|
-
review only you can start. It will take minutes; it has cost hours.
|
|
34
|
-
2. Verify returns, starting with the one other lanes build on. An
|
|
35
|
-
unverified return cannot close its lane, and every lane treating it
|
|
36
|
-
as settled builds on your unchecked assumption. If two returns can
|
|
37
|
-
interact, read both before settling either.
|
|
38
|
-
3. Tell lanes what changed. A settled result that invalidates a running
|
|
39
|
-
lane's premise gets relayed before your own work; silence manufactures
|
|
40
|
-
rework.
|
|
41
|
-
4. Then, and only then, your own lane. It survived waiting.
|
|
42
|
-
|
|
43
|
-
Sweep at the seams: before a long stretch, when a lane returns something
|
|
44
|
-
material, and when you hand a new lane out. Not on a timer. A quiet lane
|
|
45
|
-
is not a content lane: quiet is working, stuck, or waiting on you, and
|
|
46
|
-
you cannot tell which from your chair. Go look; reading progress into
|
|
47
|
-
silence is astrology, not babysitting.
|
|
48
|
-
|
|
49
|
-
## Productive absorption
|
|
50
|
-
|
|
51
|
-
Neglect does not have to look like thrashing on a dead end. Real neglect
|
|
52
|
-
looks like you, deeply satisfied, making excellent progress on one ward
|
|
53
|
-
while the room goes unswept: an Akuma holding a one-line question for
|
|
54
|
-
two hours, a finished return nobody dares build on because you never
|
|
55
|
-
checked it, a caller decision request composed in your head and sent
|
|
56
|
-
nowhere. The test is not "am I being productive" — you are. Is any
|
|
57
|
-
lane's due care older than the work in your hands?
|
|
8
|
+
Babysitting is a method, not a role: no new identity, permission, ledger,
|
|
9
|
+
status, id, or lifecycle. It is how whoever holds work in flight schedules
|
|
10
|
+
their own attention across it.
|
|
58
11
|
|
|
59
|
-
##
|
|
12
|
+
## Lanes At Any Grain
|
|
60
13
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
14
|
+
A lane is anything you are answerable for that moves without you: a Worker on
|
|
15
|
+
an Arc, a Reviewer mid-examination, a whole Contract whose fulfillment loop you
|
|
16
|
+
handed to one Aku. Handing work down narrows a lane; it never empties it — you
|
|
17
|
+
did not hand off your answerability, you booked yourself for the next question,
|
|
18
|
+
the next verify, the next return. When a Contract's whole loop is delegated,
|
|
19
|
+
your lane is the holder itself: watch the journaled record — bind, amends,
|
|
20
|
+
testimony, placement — verify at the boundaries you kept, and steer through the
|
|
21
|
+
holder, never past it. One delegated loop is one lane, however much moves
|
|
22
|
+
inside it.
|
|
66
23
|
|
|
67
|
-
##
|
|
24
|
+
## Attention
|
|
68
25
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
It is what the sweep walks. When it outgrows your head — it will — park
|
|
73
|
-
the waits in task notes. The map may degrade to paper, never to memory
|
|
74
|
-
you merely trust. Wards answer at different speeds — Akuma in minutes,
|
|
75
|
-
reviewers in hours, callers and external dependencies in geological
|
|
76
|
-
time — so ask the slow ones when the question is knowable, not urgent.
|
|
77
|
-
Shape a caller request as a decision with evidence, not a pile of raw
|
|
78
|
-
results.
|
|
26
|
+
**Sweep.** Pass over every lane at natural pause points instead of dwelling on
|
|
27
|
+
one; depth goes where the sweep finds movement or silence that should not be
|
|
28
|
+
there.
|
|
79
29
|
|
|
80
|
-
|
|
30
|
+
**Critical path.** The lane the most other lanes wait on gets attention first,
|
|
31
|
+
regardless of which lane is loudest.
|
|
81
32
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
blocker you cannot move is decoration, not diligence. The note makes
|
|
85
|
-
releasing different from abandoning. Exception: a blocker gating the
|
|
86
|
-
critical path with nothing else runnable is the job — press on it, split
|
|
87
|
-
it into its own task or kei, or take it to the caller now.
|
|
33
|
+
**Wait graph.** Know who waits on whom before deciding where to look; a cycle
|
|
34
|
+
in that graph is the emergency, everything else is schedule.
|
|
88
35
|
|
|
89
|
-
|
|
36
|
+
**Blocked lanes.** A blocked lane outranks every healthy one — unblock before
|
|
37
|
+
you optimize.
|
|
90
38
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
goal's quality becomes the shabbiest check you accepted while busy.
|
|
94
|
-
For a risky return, delegate an independent review: minutes spent, bar
|
|
95
|
-
kept. Accepting it unread is free today and costs a later lane its
|
|
96
|
-
premise.
|
|
39
|
+
**Verify returns.** A return is not done because it arrived; it is done when
|
|
40
|
+
checked against what was asked. Book the verify when you delegate, not after.
|
|
97
41
|
|
|
98
|
-
|
|
42
|
+
**Steer early.** The cheapest steer is before divergence compounds: ask the
|
|
43
|
+
question at the first doubt, not at delivery.
|
|
99
44
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
task. Now, not "after this stretch": every lane keeps spending against
|
|
103
|
-
the old contract until you speak.
|
|
45
|
+
**Lightest lane.** Keep each lane as light as it can be; do not babysit what
|
|
46
|
+
does not move without you.
|
|
104
47
|
|
|
105
|
-
##
|
|
48
|
+
## What Babysitting Never Owns
|
|
106
49
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
entities you watch, not the definition of the job. Commands live with
|
|
112
|
-
their owners — keiyaku-task, keiyaku-bind, keiyaku-workflow,
|
|
113
|
-
keiyaku-akuma — this skill says when to reach for them, never how they
|
|
114
|
-
work.
|
|
50
|
+
Commands and semantics belong to task, bind, workflow, and akuma. Acceptance
|
|
51
|
+
belongs to the Contract's journal and its Reviewer's testimony. The question
|
|
52
|
+
belongs to whoever commissioned it. Babysitting decides only when you look and
|
|
53
|
+
what you check next.
|
|
@@ -5,51 +5,22 @@ description: Author and bind one Keiyaku delivery Contract. Use when deciding wh
|
|
|
5
5
|
|
|
6
6
|
# Keiyaku Bind
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- Observe active Contracts whose Regions intersect yours. Region overlap is a
|
|
25
|
-
prompt signal only; it does not by itself imply a logical conflict. The
|
|
26
|
-
caller decides autonomously whether to proceed in parallel or serialize.
|
|
27
|
-
- A decision settled elsewhere binds only its explicit words; converting it
|
|
28
|
-
into concrete shape is your job, and a question it left open goes back to
|
|
29
|
-
its decider, never to the worker.
|
|
30
|
-
- If the delivery must land documentation, you can draft its exact sentence
|
|
31
|
-
now. Cannot draft means unresolved design — "the worker will sort out the
|
|
32
|
-
docs" is a design gap in disguise.
|
|
33
|
-
|
|
34
|
-
Split complex work wherever independently acceptable delivery boundaries
|
|
35
|
-
exist. When a complex Keiyaku cannot be split without breaking one acceptance
|
|
36
|
-
boundary, bind one Contract and plan its fulfillment as explicit arcs. Treat
|
|
37
|
-
each arc as a chapter as in a work of literature, not as a task sequence.
|
|
38
|
-
Commission one current chapter at a time; never hand the whole undifferentiated
|
|
39
|
-
Contract to one Deliverer and trust it to finish everything in one pass.
|
|
40
|
-
Continue with `keiyaku-workflow` for the arc document and command.
|
|
41
|
-
|
|
42
|
-
Two tests close the gate:
|
|
43
|
-
|
|
44
|
-
- **Substitution.** Two workers who never met each deliver test-green from
|
|
45
|
-
your terms. If any external reader could tell the deliveries apart, that
|
|
46
|
-
fact is undecided — decide it and write it.
|
|
47
|
-
- **Rework.** For each blank: "if the worker picks what I like least, do I
|
|
48
|
-
demand rework?" Yes — write it. No — write nothing.
|
|
49
|
-
|
|
50
|
-
Public — anything visible outside the diff — is always yours to pin.
|
|
51
|
-
Private — helper names, decomposition, control flow — is the worker's;
|
|
52
|
-
its freedom comes from your genuine indifference, not from omission.
|
|
8
|
+
## What Bind Records
|
|
9
|
+
|
|
10
|
+
Bind journals decisions that have already been made. The Contract author
|
|
11
|
+
arrives with the public outcome decided: Objective, Design, Region, Criteria,
|
|
12
|
+
Verification. A design gap discovered while authoring goes back to whoever
|
|
13
|
+
owns the decision — it is never forwarded into the worktree for a worker to
|
|
14
|
+
resolve.
|
|
15
|
+
|
|
16
|
+
## Author And Freedom
|
|
17
|
+
|
|
18
|
+
The author pins every public, high-level fact: surfaces, semantics, persisted
|
|
19
|
+
shapes, the observable acceptance boundary. Private decomposition, helper
|
|
20
|
+
names, and control flow belong to the Deliverer — and that freedom comes from
|
|
21
|
+
the author genuinely not caring, never from the author not deciding. Criteria
|
|
22
|
+
are observable accept/reject observations a Reviewer can judge without asking
|
|
23
|
+
the author anything further.
|
|
53
24
|
|
|
54
25
|
## Author And Bind
|
|
55
26
|
|
|
@@ -125,11 +96,19 @@ do not create one just to mirror the Contract.
|
|
|
125
96
|
|
|
126
97
|
## Authority Order
|
|
127
98
|
|
|
128
|
-
|
|
129
|
-
|
|
99
|
+
Settled upstream decisions and their documentation → this Contract → commission
|
|
100
|
+
and brief (directs the current round's work and questions; never terms, never
|
|
101
|
+
acceptance) → review evidence (witnessed fact, never law). The journaled terms
|
|
102
|
+
are the standing acceptance floor. A brief or tell genuinely commands what this
|
|
103
|
+
round works on and what evidence it gathers; anything that must survive beyond
|
|
104
|
+
the round as a placement condition enters the journal through bind or amend, or
|
|
105
|
+
it is not acceptance.
|
|
106
|
+
|
|
107
|
+
## One Boundary, One Contract
|
|
130
108
|
|
|
131
|
-
|
|
132
|
-
|
|
109
|
+
One atomic acceptance boundary per Contract. Independent boundaries are
|
|
110
|
+
separate Contracts; a boundary that cannot be split but is too large for one
|
|
111
|
+
pass is chaptered with Arcs, and dispatch carries only the current Arc.
|
|
133
112
|
|
|
134
113
|
## Read The Receipt
|
|
135
114
|
|
|
@@ -7,15 +7,13 @@ description: >-
|
|
|
7
7
|
|
|
8
8
|
# Keiyaku Task
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
held Task to `done`, and abandon releases it. Task Markdown carries no Contract
|
|
18
|
-
field.
|
|
10
|
+
## What A Task Is Not
|
|
11
|
+
|
|
12
|
+
A Task remembers a plan: what is intended, what depends on what, what was
|
|
13
|
+
decided about sequence. It grants nothing — no acceptance, no permission, no
|
|
14
|
+
scope, no fulfillment loop. Whoever holds a Contract's loop uses Tasks when the
|
|
15
|
+
plan is worth remembering and skips them when it is not; nothing binds Tasks to
|
|
16
|
+
Arcs, Contracts, or Akuma as a package.
|
|
19
17
|
|
|
20
18
|
## Lifecycle
|
|
21
19
|
|
|
@@ -42,7 +40,7 @@ keiyaku task ls --closed
|
|
|
42
40
|
keiyaku task ls --all --world
|
|
43
41
|
keiyaku task ready
|
|
44
42
|
keiyaku task blocked
|
|
45
|
-
keiyaku task tree <task-id>
|
|
43
|
+
keiyaku task tree <task-id>
|
|
46
44
|
keiyaku task doctor
|
|
47
45
|
```
|
|
48
46
|
|
|
@@ -53,19 +51,22 @@ commands require a complete TaskId and never infer namespace.
|
|
|
53
51
|
## Mutations
|
|
54
52
|
|
|
55
53
|
```bash
|
|
56
|
-
keiyaku task start <task-id
|
|
54
|
+
keiyaku task start <task-id>...
|
|
57
55
|
keiyaku task stop <task-id>
|
|
58
56
|
keiyaku task hold <task-id>
|
|
59
57
|
keiyaku task resume <task-id>
|
|
60
58
|
keiyaku task done <task-id>...
|
|
61
59
|
keiyaku task drop <task-id>... [--note <text>]
|
|
62
60
|
keiyaku task update <task-id> --title <text>
|
|
63
|
-
keiyaku task
|
|
61
|
+
keiyaku task context [<namespace>]
|
|
64
62
|
```
|
|
65
63
|
|
|
66
64
|
Use `--json` on any command when a script must inspect the typed result.
|
|
67
65
|
Relations are explicit facts: `needs` orders work, `parent` groups it,
|
|
68
66
|
`supersedes` navigates replacement, and `relates` does not affect readiness.
|
|
67
|
+
`task start` accepts one or more complete TaskIds. A single ID keeps the
|
|
68
|
+
single-mutation result; multiple IDs use the ordered batch result, continue
|
|
69
|
+
after per-Task refusals, and preserve retry-over-refusal exit precedence.
|
|
69
70
|
|
|
70
71
|
## Batch Create Or Modify
|
|
71
72
|
|
|
@@ -78,6 +79,7 @@ ns=feature
|
|
|
78
79
|
|
|
79
80
|
+ Parent
|
|
80
81
|
as = parent
|
|
82
|
+
state = in_progress
|
|
81
83
|
pri = 0
|
|
82
84
|
body <<BODY
|
|
83
85
|
Parent body.
|
|
@@ -90,6 +92,10 @@ EOF
|
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
Use `--plan` to inspect aliases, admission order, and body byte previews without
|
|
93
|
-
writing.
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
writing. New `+ Title` nodes may declare `state = open|in_progress|on_hold|done|drop`
|
|
96
|
+
as their initial state; omitted state is `open`. Existing `@task/...` nodes cannot
|
|
97
|
+
declare state. Aliases are nonempty single-line tokens containing neither
|
|
98
|
+
Unicode whitespace nor comma; references use `^alias`. Compose does not change
|
|
99
|
+
the lifecycle state of pre-existing Tasks. Each changed Task is admitted
|
|
100
|
+
independently; an incomplete result returns a reusable draft for the remaining
|
|
101
|
+
batch and preserves each new node's declared state.
|