@etiquekit/etq 1.0.13 → 1.0.15
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/AGENTS.md +26 -19
- package/LICENSE +3 -2
- package/NOTICE +4 -6
- package/QuickStart.md +46 -35
- package/README.md +57 -55
- package/bin/etiquette +5 -1
- package/bin/etiquette-core +5 -1
- package/docs/ARCHITECTURE.md +17 -20
- package/docs/CONCEPTS.md +5 -5
- package/docs/CORE_PROFILE.md +15 -7
- package/docs/LANE_PROVISIONING.md +2 -7
- package/docs/README.md +14 -13
- package/docs/RELEASE_SURFACE_AUDIT.md +6 -7
- package/docs/SEAT_DISCIPLINE.md +91 -55
- package/docs/SEAT_PROVISIONING.md +19 -16
- package/docs/TEAM_HANDOFF.md +21 -21
- package/docs/WORKTREE_QOL.md +0 -7
- package/docs/contracts/ledger-entry/README.md +11 -11
- package/docs/contracts/ledger-entry/ledger-entry.v0.2.md +2 -2
- package/docs/contracts/ledger-entry/ledger-entry.v0.md +8 -8
- package/lib/etiquette-core.js +313 -0
- package/lib/etiquette.js +1151 -0
- package/package.json +13 -12
- package/templates/etiquette-vanilla-v0/README.md +3 -2
- package/templates/etiquette-vanilla-v0/source/control-seat/README.md +6 -0
- package/templates/etiquette-vanilla-v0/source/control-seat/bin/access-assurance-check +55 -0
- package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-doctor +5 -0
- package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/ACCESS-ASSURANCE.md +39 -0
- package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/workspace-secure-profile.v0.json +53 -0
- package/templates/etiquette-vanilla-v0/validate-vanilla.sh +5 -0
- package/templates/hosted-receiver/README.md +41 -0
- package/templates/hosted-receiver/w1-github-webhook-receiver.mjs +129 -0
- package/templates/seat-packs-v0/README.md +2 -3
- package/templates/seat-packs-v0/source/claude-code-seat/README.md +3 -3
- package/templates/seat-packs-v0/source/codex-seat/README.md +3 -3
- package/templates/seat-packs-v0/source/gemini-seat/README.md +3 -3
- package/templates/seat-packs-v0/source/ollama-seat/README.md +3 -3
- package/templates/seat-packs-v0/source/openrouter-seat/README.md +3 -3
- package/docs/CONCEPT_STATUS.md +0 -66
- package/packages/control/src/authority/lease.ts +0 -261
- package/packages/control/src/authority/node-delegation.ts +0 -257
- package/packages/control/src/authority/rig-conductor.ts +0 -632
- package/packages/control/src/cli/argv.ts +0 -155
- package/packages/control/src/cli/commands/console.ts +0 -200
- package/packages/control/src/cli/commands/dispatch-core.ts +0 -89
- package/packages/control/src/cli/commands/dispatch.ts +0 -279
- package/packages/control/src/cli/commands/harness.ts +0 -89
- package/packages/control/src/cli/commands/hook.ts +0 -50
- package/packages/control/src/cli/commands/ledger.ts +0 -91
- package/packages/control/src/cli/commands/local-workflow.ts +0 -4686
- package/packages/control/src/cli/commands/memory.ts +0 -445
- package/packages/control/src/cli/commands/release.ts +0 -108
- package/packages/control/src/cli/commands/rubric.ts +0 -103
- package/packages/control/src/cli/commands/seat.ts +0 -179
- package/packages/control/src/cli/commands/session.ts +0 -127
- package/packages/control/src/cli/commands/supervision.ts +0 -246
- package/packages/control/src/cli/commands/sync.ts +0 -119
- package/packages/control/src/cli/commands/workflow.ts +0 -86
- package/packages/control/src/cli/commands/workspace.ts +0 -50
- package/packages/control/src/cli/core-usage.ts +0 -34
- package/packages/control/src/cli/prompt.ts +0 -67
- package/packages/control/src/cli/supervision-deps.ts +0 -44
- package/packages/control/src/cli/usage.ts +0 -241
- package/packages/control/src/cli.ts +0 -207
- package/packages/control/src/core-cli.ts +0 -50
- package/packages/control/src/dispatch/decision.ts +0 -202
- package/packages/control/src/dispatch/projection.ts +0 -293
- package/packages/control/src/dispatch/record.ts +0 -153
- package/packages/control/src/engagement/project.ts +0 -170
- package/packages/control/src/fs.ts +0 -19
- package/packages/control/src/harness/pruning.ts +0 -406
- package/packages/control/src/hooks/dispatcher.ts +0 -117
- package/packages/control/src/hooks/outbox.ts +0 -86
- package/packages/control/src/hooks/sanitize.ts +0 -6
- package/packages/control/src/hooks/types.ts +0 -34
- package/packages/control/src/index.ts +0 -384
- package/packages/control/src/ledger/entry.ts +0 -303
- package/packages/control/src/ledger/indexer.ts +0 -542
- package/packages/control/src/memory/context.ts +0 -149
- package/packages/control/src/memory/drain-import.ts +0 -207
- package/packages/control/src/memory/indexer.ts +0 -284
- package/packages/control/src/memory/query.ts +0 -75
- package/packages/control/src/memory/sanitize.ts +0 -50
- package/packages/control/src/memory/sharded-drain-import.ts +0 -212
- package/packages/control/src/memory/status.ts +0 -211
- package/packages/control/src/memory/store-lifecycle.ts +0 -509
- package/packages/control/src/memory/store.ts +0 -284
- package/packages/control/src/memory/types.ts +0 -146
- package/packages/control/src/parity/surfaces.ts +0 -748
- package/packages/control/src/project.ts +0 -141
- package/packages/control/src/projection/local-ledger-view.ts +0 -373
- package/packages/control/src/projection/return-enforcement.ts +0 -48
- package/packages/control/src/projection/timeline-preview.ts +0 -539
- package/packages/control/src/projection/timeline.ts +0 -708
- package/packages/control/src/release/readiness.ts +0 -831
- package/packages/control/src/rubric/loader.ts +0 -326
- package/packages/control/src/rubric/promotion.ts +0 -54
- package/packages/control/src/rubric/runner.ts +0 -159
- package/packages/control/src/rubric/types.ts +0 -158
- package/packages/control/src/seat/owner-card.ts +0 -388
- package/packages/control/src/seat/readiness.ts +0 -834
- package/packages/control/src/session/runbook.ts +0 -431
- package/packages/control/src/shared/sanitize.ts +0 -49
- package/packages/control/src/supervision/action-classes.ts +0 -192
- package/packages/control/src/supervision/command-apply.ts +0 -378
- package/packages/control/src/supervision/errors.ts +0 -14
- package/packages/control/src/supervision/event-replay.ts +0 -155
- package/packages/control/src/supervision/events.ts +0 -109
- package/packages/control/src/supervision/index.ts +0 -16
- package/packages/control/src/supervision/manifest.ts +0 -127
- package/packages/control/src/supervision/paths.ts +0 -49
- package/packages/control/src/supervision/projection-adapter.ts +0 -274
- package/packages/control/src/supervision/projection.ts +0 -75
- package/packages/control/src/supervision/rebuild.ts +0 -99
- package/packages/control/src/supervision/session-open.ts +0 -131
- package/packages/control/src/supervision/session-read.ts +0 -99
- package/packages/control/src/supervision/sqlite-impl.ts +0 -71
- package/packages/control/src/supervision/sqlite.ts +0 -121
- package/packages/control/src/supervision/store-rows.ts +0 -371
- package/packages/control/src/supervision/turn-close.ts +0 -154
- package/packages/control/src/supervision/turn-open.ts +0 -284
- package/packages/control/src/sync/event-log-merge-driver.ts +0 -263
- package/packages/control/src/sync/join-plan.ts +0 -375
- package/packages/control/src/sync/outbox.ts +0 -492
- package/packages/control/src/workflow/evaluator.ts +0 -140
- package/packages/control/src/workflow/loader.ts +0 -200
- package/packages/control/src/workflow/types.ts +0 -90
- package/packages/control/src/workspace/authority.ts +0 -499
- package/packages/protocol/src/guards.ts +0 -119
- package/packages/protocol/src/huddle-board.ts +0 -198
- package/packages/protocol/src/huddle.ts +0 -295
- package/packages/protocol/src/incident.ts +0 -251
- package/packages/protocol/src/index.ts +0 -8
- package/packages/protocol/src/interfaces.ts +0 -107
- package/packages/protocol/src/packet-profile.ts +0 -195
- package/packages/protocol/src/state.ts +0 -81
- package/packages/protocol/src/types.ts +0 -434
- package/release/lineage.v0.json +0 -14
- package/scripts/release-candidate-verify.sh +0 -175
- package/scripts/release-checksum.sh +0 -25
- package/scripts/release-pack-canary.sh +0 -97
- package/scripts/release-scan.sh +0 -249
- package/scripts/release-sign.sh +0 -34
package/AGENTS.md
CHANGED
|
@@ -1,30 +1,37 @@
|
|
|
1
1
|
# Etiquette Agent Guide
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## If you installed this package
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
You are reading the INSTALLED copy of the Etiquette CLI (npm or tarball) —
|
|
6
|
+
"this repo" below refers to Etiquette's source repository, not your project.
|
|
7
|
+
As an agent working in a project governed by Etiquette:
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
1. Read [README.md](README.md), then [QuickStart.md](QuickStart.md).
|
|
10
|
+
2. Orient with `etq whereami`; join your assigned seat; read the task
|
|
11
|
+
envelope and the project's `docs/work/runbooks/WORKING_DISCIPLINE.md`.
|
|
12
|
+
3. Respect allowed writes, run the named validation, write the receipt at
|
|
13
|
+
the path `pickup` names, post it, and pass `etq return check` before
|
|
14
|
+
claiming completion.
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
3. [templates/etiquette-vanilla-v0/README.md](templates/etiquette-vanilla-v0/README.md)
|
|
12
|
-
|
|
13
|
-
Do not send new seats through internal history, old coordination lanes, or maintainer-only notes.
|
|
16
|
+
Commands record evidence; they never grant, merge, close, publish, or
|
|
17
|
+
promote.
|
|
14
18
|
|
|
15
|
-
##
|
|
19
|
+
## If you are working on the Etiquette source repo
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
Keep the all-developer onboarding path small. New engineers start with:
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
- vendor-neutral seat rebind guidance for interrupted, resumed, swapped, or
|
|
23
|
-
migrated sessions;
|
|
24
|
-
- validation scripts for release hygiene.
|
|
23
|
+
1. [README.md](README.md)
|
|
24
|
+
2. [docs/SEAT_PROVISIONING.md](docs/SEAT_PROVISIONING.md)
|
|
25
|
+
3. [templates/etiquette-vanilla-v0/README.md](templates/etiquette-vanilla-v0/README.md)
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
Do not send new seats through internal history, old coordination lanes, or
|
|
28
|
+
maintainer-only notes.
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
This repo owns: the minimal vanilla seat scaffold; optional runtime seat-pack
|
|
31
|
+
scaffolds; shared task, readiness, and receipt contracts; validation scripts
|
|
32
|
+
for release hygiene. It does not own product repos, product lane state,
|
|
33
|
+
secrets, hosted services, or runtime vendor setup.
|
|
29
34
|
|
|
30
|
-
Release-facing docs must stay role-based and portable. Do not introduce
|
|
35
|
+
Release-facing docs must stay role-based and portable. Do not introduce
|
|
36
|
+
person names, local machine paths, historical bus references, or
|
|
37
|
+
project-specific lane IDs into the default onboarding surface.
|
package/LICENSE
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
Apache License
|
|
2
3
|
Version 2.0, January 2004
|
|
3
4
|
http://www.apache.org/licenses/
|
|
@@ -137,8 +138,8 @@
|
|
|
137
138
|
|
|
138
139
|
6. Trademarks. This License does not grant permission to use the trade
|
|
139
140
|
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
-
except as required for reasonable and customary use in describing
|
|
141
|
-
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
143
|
|
|
143
144
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
145
|
agreed to in writing, Licensor provides the Work (and each
|
package/NOTICE
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
Etiquette
|
|
2
|
-
Copyright
|
|
1
|
+
Etiquette (etq)
|
|
2
|
+
Copyright 2026 The Etiquekit Authors
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Etiquette, Etq, and the Etiquette name are trademarks of Leepick Inc.
|
|
7
|
-
Use of these names does not grant trademark rights.
|
|
4
|
+
Local-first, git-backed agent-workflow governance toolkit.
|
|
5
|
+
Distributed under the Apache License, Version 2.0.
|
package/QuickStart.md
CHANGED
|
@@ -1,51 +1,53 @@
|
|
|
1
1
|
# Quick Start
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
For a clean repo, a team canary, or a new Etiquette developer.
|
|
4
4
|
|
|
5
|
-
Prereqs:
|
|
5
|
+
Prereqs: `git >= 2.40` and `bun >= 1.3` on `PATH`. macOS and Linux.
|
|
6
6
|
|
|
7
7
|
## 1. Get The CLI
|
|
8
8
|
|
|
9
|
-
The published package:
|
|
10
|
-
|
|
11
9
|
```sh
|
|
12
|
-
npm install -g @etiquekit/etq
|
|
13
|
-
|
|
14
|
-
etq --help
|
|
10
|
+
npm install -g @etiquekit/etq # local exec plane over @etiquekit/core
|
|
11
|
+
curl -fsSL https://etiquekit.com/install.sh | sh # or: native installer
|
|
15
12
|
```
|
|
16
13
|
|
|
17
|
-
|
|
14
|
+
The installer verifies every artifact against a pinned public key before
|
|
15
|
+
anything executes and installs under `~/.etiquette`. Offline or air-gapped:
|
|
16
|
+
download `etiquette-<version>.tgz` plus `SHA256SUMS` and `SHA256SUMS.sig`
|
|
17
|
+
from `https://etiquekit.com/releases/`, verify them using the docs at
|
|
18
|
+
`https://etiquekit.com/docs/`, then:
|
|
18
19
|
|
|
19
20
|
```sh
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
ETQ_LIB="$HOME/.etiquette/lib/etiquette-<version>"
|
|
22
|
+
mkdir -p "$ETQ_LIB" "$HOME/.etiquette/bin"
|
|
23
|
+
tar -xzf etiquette-<version>.tgz --strip-components=1 -C "$ETQ_LIB"
|
|
24
|
+
ln -sfn "$ETQ_LIB/bin/etiquette" "$HOME/.etiquette/bin/etiquette"
|
|
25
|
+
export PATH="$HOME/.etiquette/bin:$PATH"
|
|
24
26
|
```
|
|
25
27
|
|
|
26
|
-
Private or air-gapped rollout: use [docs/TEAM_HANDOFF.md](docs/TEAM_HANDOFF.md).
|
|
27
|
-
|
|
28
28
|
## 2. Initialize A Project
|
|
29
29
|
|
|
30
30
|
From the project repo:
|
|
31
31
|
|
|
32
|
+
Same core order as the README quickstart; `handoff`/`whereami` are optional
|
|
33
|
+
orientation verbs. `bootstrap local` does not replace `init`.
|
|
34
|
+
|
|
32
35
|
```sh
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
etq init --project "$PWD"
|
|
37
|
+
etq doctor --project "$PWD"
|
|
38
|
+
etq bootstrap local --project "$PWD" --profile codex-cc-gemini --task-prefix APP
|
|
39
|
+
etq setup --target auto --project "$PWD"
|
|
40
|
+
etq handoff --project "$PWD" --profile codex-cc-gemini --task-prefix APP
|
|
41
|
+
etq whereami --project "$PWD" --seat codex-seat --task APP-001
|
|
42
|
+
etq join --project "$PWD" --seat codex-seat
|
|
43
|
+
etq pickup --project "$PWD" --seat codex-seat --task APP-001 --allow-current-project --text
|
|
44
|
+
etq console board --project "$PWD" --text
|
|
42
45
|
```
|
|
43
46
|
|
|
44
47
|
`bootstrap local` creates repo-local state, seats, task envelopes, pickup docs,
|
|
45
48
|
events, and runbooks. It does not grant, publish, merge, close, or promote.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
non-blocking in CI or scripted runs.
|
|
49
|
+
`handoff` is a read-only guide: it prints install, bootstrap, and pickup
|
|
50
|
+
commands without changing anything.
|
|
49
51
|
|
|
50
52
|
## 3. Orient The Live Seat
|
|
51
53
|
|
|
@@ -53,21 +55,24 @@ Run `whereami` whenever a developer or agent resumes, changes directories, or
|
|
|
53
55
|
inherits a worktree:
|
|
54
56
|
|
|
55
57
|
```sh
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
etq whereami --project "$PWD" --seat codex-seat --task APP-001
|
|
59
|
+
etq pickup --project "$PWD" --seat codex-seat --task APP-001 --allow-current-project --text
|
|
58
60
|
```
|
|
59
61
|
|
|
60
62
|
Runner resume recovers chat context; `whereami` confirms the repo, branch, task
|
|
61
63
|
envelope, and runbook. For branch hygiene, read [docs/WORKTREE_QOL.md](docs/WORKTREE_QOL.md).
|
|
62
|
-
For in-session pickup UX, use the `seat-session-bootstrap` skill.
|
|
63
64
|
|
|
64
65
|
## 4. Check And Record Evidence
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
Completion gate: write the receipt at the path `pickup` names, post it
|
|
68
|
+
(`etq post --role implementation-return --lane <task> --from <seat> --to <seat>`),
|
|
69
|
+
then `etq return check`. Separately, `dispatch check` gates ROUTING before
|
|
70
|
+
work begins — create checkable dispatch examples, then run the generated
|
|
71
|
+
command:
|
|
67
72
|
|
|
68
73
|
```sh
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
etq dispatch scaffold --project "$PWD" --task-id APP-001 --seat codex-seat
|
|
75
|
+
etq dispatch check --project "$PWD" \
|
|
71
76
|
--mode docs/work/dispatch/APP-001/mode.yaml \
|
|
72
77
|
--task docs/work/dispatch/APP-001/task.yaml \
|
|
73
78
|
--sandbox-receipt docs/work/dispatch/APP-001/receipt.yaml \
|
|
@@ -77,7 +82,13 @@ Create checkable dispatch examples, then run the generated command:
|
|
|
77
82
|
`dispatch record` writes local metadata and receipt refs; it does not merge,
|
|
78
83
|
close, publish, or grant.
|
|
79
84
|
|
|
80
|
-
## 5. Stop Conditions
|
|
85
|
+
## 5. Seat Packs And Stop Conditions
|
|
86
|
+
|
|
87
|
+
Per-runtime integrations are explicit, never automatic: `provision-seat claude-code`,
|
|
88
|
+
`provision-seat codex`, `provision-seat gemini`, `provision-seat ollama`,
|
|
89
|
+
`provision-seat openrouter`.
|
|
90
|
+
|
|
91
|
+
Stop when authority is unclear, validation cannot run, writes exceed the
|
|
92
|
+
envelope, a secret appears, or the session is unbounded.
|
|
81
93
|
|
|
82
|
-
|
|
83
|
-
Stop when authority is unclear, validation cannot run, writes exceed the envelope, a secret appears, or the session is unbounded.
|
|
94
|
+
Docs: https://etiquekit.com/docs/ · Agents start at: https://etiquekit.com/llms.txt
|
package/README.md
CHANGED
|
@@ -1,78 +1,80 @@
|
|
|
1
1
|
# Etiquette
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Govern agent-assisted engineering work with seats, evidence, and promotion
|
|
4
|
+
gates.** Local-first: your repo is the ledger, receipts are the proof, and no
|
|
5
|
+
server ever sees your code.
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
When several coding agents (and humans) work the same repository, the hard
|
|
8
|
+
part isn't running them — it's knowing **who did what, on whose authority,
|
|
9
|
+
and what proved it worked**. Etiquette gives each participant a *seat*, each
|
|
10
|
+
unit of work a *task envelope*, each completion a *receipt*, and each merge a
|
|
11
|
+
*promotion gate* — recorded as plain files and git history you can audit.
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
Docs: https://etiquekit.com/docs/ · Agents start at: https://etiquekit.com/llms.txt
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
## Package split
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
Etiquette is now shipped as a small open core plus execution planes:
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
| Package / repo | Role |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| [`@etiquekit/core`](https://www.npmjs.com/package/@etiquekit/core) | Public open governance contract: schemas, pure state machines, authority/refusal rules, plane profiles, and conformance. |
|
|
22
|
+
| [`@etiquekit/etq`](https://www.npmjs.com/package/@etiquekit/etq) | Thin local execution plane: CLI, git journal, worktree/session ergonomics, local evidence return, and developer-facing docs. It consumes `@etiquekit/core`. |
|
|
23
|
+
| `remote-etq` | Private managed execution plane: API, sequencer, workers, tenancy, and hard-stop enforcement. |
|
|
17
24
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
./bin/etiquette whereami --project /tmp/etiquette-start --seat impl-seat --task APP-001
|
|
23
|
-
./bin/etiquette doctor --project /tmp/etiquette-start
|
|
24
|
-
./bin/etiquette status --project /tmp/etiquette-start
|
|
25
|
-
./bin/etiquette join --project /tmp/etiquette-start --seat impl-seat
|
|
26
|
-
./bin/etiquette pickup --project /tmp/etiquette-start --seat impl-seat --task APP-001 --allow-current-project --text
|
|
27
|
-
./bin/etiquette console board --project /tmp/etiquette-start --text
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
`handoff` is a read-only guide: it prints install, bootstrap, and pickup commands without installing, bootstrapping, pushing, closing, or granting.
|
|
31
|
-
|
|
32
|
-
`bootstrap local` creates repo-local seats, task envelopes, bounded runbooks,
|
|
33
|
-
local packet events, and pickup docs without global bus writes or authority.
|
|
34
|
-
`whereami` is the context readback: runner resume restores conversation
|
|
35
|
-
history; `whereami` tells the seat which project, worktree, task, and runbook it
|
|
36
|
-
is actually operating in.
|
|
37
|
-
|
|
38
|
-
Use repo-local commands for now. The hosted public installer is parked.
|
|
25
|
+
The public source homes are linked from npm package metadata and
|
|
26
|
+
https://etiquekit.com/docs/. The open reference is the core contract plus
|
|
27
|
+
sample/conformance surfaces. `etq` is the production local plane that dogfoods
|
|
28
|
+
that contract.
|
|
39
29
|
|
|
40
|
-
##
|
|
30
|
+
## Install
|
|
41
31
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
- Ledger: durable local record of sessions, receipts, and decisions.
|
|
32
|
+
```sh
|
|
33
|
+
npm install -g @etiquekit/etq # local exec plane; installs @etiquekit/core
|
|
34
|
+
curl -fsSL https://etiquekit.com/install.sh | sh # or: native installer
|
|
35
|
+
```
|
|
47
36
|
|
|
48
|
-
|
|
37
|
+
Requires `bun >= 1.3` and `git >= 2.40`. macOS and Linux. The installer
|
|
38
|
+
verifies signatures against a pinned key before executing.
|
|
49
39
|
|
|
50
|
-
|
|
40
|
+
## Sixty seconds to a governed workspace
|
|
51
41
|
|
|
52
42
|
```sh
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
43
|
+
etq init --project . # provision folders, journal, roster
|
|
44
|
+
etq doctor --project . # readiness — green before work
|
|
45
|
+
etq bootstrap local --project . \
|
|
46
|
+
--profile codex-cc-gemini --task-prefix APP
|
|
47
|
+
etq setup --target auto --project . # register your agent CLI (explicit)
|
|
48
|
+
etq join --seat codex-seat --project . # profile seats: codex/cc/gemini/manager
|
|
49
|
+
etq console board --project . --text # the live task board
|
|
58
50
|
```
|
|
59
51
|
|
|
60
|
-
|
|
52
|
+
Per-runtime seat packs: `provision-seat claude-code` · `provision-seat codex`
|
|
53
|
+
· `provision-seat gemini` · `provision-seat ollama` · `provision-seat openrouter`.
|
|
54
|
+
|
|
55
|
+
The daily loop:
|
|
61
56
|
|
|
62
57
|
```sh
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
58
|
+
etq pickup --seat codex-seat --task APP-001 --expect-project-id <id> --text
|
|
59
|
+
# ... do the work; write the receipt at the path pickup names ...
|
|
60
|
+
etq post --role implementation-return --lane APP-001 \
|
|
61
|
+
--from codex-seat --to manager-seat --project .
|
|
62
|
+
etq return check --task APP-001 --seat codex-seat # the completion gate
|
|
66
63
|
```
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
(`dispatch check` gates routing BEFORE work; `return check` gates completion.)
|
|
66
|
+
Every step appends to the workspace journal — an append-only event log inside
|
|
67
|
+
your repo. Nothing leaves your machine: no backend, no telemetry, no account.
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
default_surface: templates/etiquette-vanilla-v0
|
|
72
|
-
optional_runtime_surface: templates/seat-packs-v0
|
|
73
|
-
public_installer: held
|
|
74
|
-
```
|
|
69
|
+
## Concepts in one breath
|
|
75
70
|
|
|
76
|
-
|
|
71
|
+
| Concept | Answers |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| Seat | What durable work role is acting? |
|
|
74
|
+
| Task envelope | What writes, validation, and stop conditions are allowed? |
|
|
75
|
+
| Session | Which bounded run produced the evidence? |
|
|
76
|
+
| Receipt | What proves the work happened? |
|
|
77
|
+
| Promotion gate | Where does candidate work become accepted truth? |
|
|
77
78
|
|
|
78
|
-
|
|
79
|
+
Commands initialize, check, record evidence, and project read models. They
|
|
80
|
+
**never** grant, merge, close, publish, or promote — evidence, not authority.
|
package/bin/etiquette
CHANGED
|
@@ -14,8 +14,12 @@ done
|
|
|
14
14
|
ROOT=$(CDPATH= cd -- "$(dirname -- "$SELF")/.." && pwd)
|
|
15
15
|
|
|
16
16
|
if ! command -v bun >/dev/null 2>&1; then
|
|
17
|
-
echo "etiquette requires bun on PATH" >&2
|
|
17
|
+
echo "etiquette requires bun >= 1.3 on PATH (https://bun.sh)." >&2
|
|
18
|
+
echo "install: curl -fsSL https://bun.sh/install | bash" >&2
|
|
18
19
|
exit 127
|
|
19
20
|
fi
|
|
20
21
|
|
|
22
|
+
if [ -f "$ROOT/lib/etiquette.js" ]; then
|
|
23
|
+
exec bun "$ROOT/lib/etiquette.js" "$@"
|
|
24
|
+
fi
|
|
21
25
|
exec bun "$ROOT/packages/control/src/cli.ts" "$@"
|
package/bin/etiquette-core
CHANGED
|
@@ -14,8 +14,12 @@ done
|
|
|
14
14
|
ROOT=$(CDPATH= cd -- "$(dirname -- "$SELF")/.." && pwd)
|
|
15
15
|
|
|
16
16
|
if ! command -v bun >/dev/null 2>&1; then
|
|
17
|
-
echo "etiquette-core requires bun on PATH" >&2
|
|
17
|
+
echo "etiquette-core requires bun >= 1.3 on PATH (https://bun.sh)." >&2
|
|
18
|
+
echo "install: curl -fsSL https://bun.sh/install | bash" >&2
|
|
18
19
|
exit 127
|
|
19
20
|
fi
|
|
20
21
|
|
|
22
|
+
if [ -f "$ROOT/lib/etiquette-core.js" ]; then
|
|
23
|
+
exec bun "$ROOT/lib/etiquette-core.js" "$@"
|
|
24
|
+
fi
|
|
21
25
|
exec bun "$ROOT/packages/control/src/core-cli.ts" "$@"
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -8,16 +8,16 @@ vendor wrapper. Those can all consume Etiquette, but they do not own its truth.
|
|
|
8
8
|
## Layers
|
|
9
9
|
|
|
10
10
|
```text
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
@etiquekit/core public contracts, schemas, validators, refusal rules
|
|
12
|
+
@etiquekit/etq thin local exec plane: CLI, git journal, worktrees, receipts
|
|
13
|
+
remote-etq private managed exec plane: API, sequencer, workers, tenancy
|
|
14
|
+
adapters Codex, Claude Code, Gemini, GitHub, MCP, managed runners
|
|
15
|
+
reactors optional tighten-only listeners for revocation and sync
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
```text
|
|
19
|
-
Core
|
|
20
|
-
|
|
19
|
+
Core defines the contract.
|
|
20
|
+
Local and remote planes execute against it.
|
|
21
21
|
Execution returns evidence; it never mints authority.
|
|
22
22
|
```
|
|
23
23
|
|
|
@@ -61,24 +61,21 @@ context workbenches, dashboards, and MCP readers. Start remote as witness-only.
|
|
|
61
61
|
## Package Boundary
|
|
62
62
|
|
|
63
63
|
```text
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
apps/* UX surfaces; consume core through public commands or APIs
|
|
64
|
+
@etiquekit/core open package and public repo: pure governance contract
|
|
65
|
+
@etiquekit/etq npm package and public home: thin local execution plane
|
|
66
|
+
remote-etq private repo/service: managed execution plane
|
|
68
67
|
```
|
|
69
68
|
|
|
70
|
-
|
|
71
|
-
Adding a reverse import is an architectural change.
|
|
72
|
-
`control`, `protocol`, docs, templates, and scripts; legacy DBT and old slice
|
|
73
|
-
adapters stay source-only until a consumer exists.
|
|
69
|
+
The local plane may depend on core. Core must never depend on the local or
|
|
70
|
+
remote planes. Adding a reverse import is an architectural change.
|
|
74
71
|
|
|
75
|
-
|
|
72
|
+
The hard enforcement surfaces are:
|
|
76
73
|
|
|
77
|
-
- Core excludes
|
|
78
|
-
|
|
79
|
-
-
|
|
74
|
+
- Core excludes local CLI, hosted, managed, runtime, integration, MCP, and
|
|
75
|
+
deployment surfaces.
|
|
76
|
+
- Every exec plane remains authority-false: it may run, observe, verify, and return
|
|
80
77
|
evidence, but it cannot grant, close, merge, promote, mutate canonical truth,
|
|
81
|
-
or mint access outside
|
|
78
|
+
or mint access outside grants and envelopes.
|
|
82
79
|
|
|
83
80
|
Exec evidence is boundary evidence, not process surveillance. Runners return scope, write
|
|
84
81
|
boundaries, candidates, validation, failures, refusals, and stop conditions; internal retries need
|
package/docs/CONCEPTS.md
CHANGED
|
@@ -10,8 +10,10 @@ runtime.
|
|
|
10
10
|
seat -> task envelope -> session -> execution -> receipt -> promotion gate
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
`@etiquekit/core` defines the public contract: schemas, state machines,
|
|
14
|
+
authority/refusal rules, plane profiles, and conformance. `@etiquekit/etq` is
|
|
15
|
+
the thin local execution plane that consumes that contract, runs local workflow
|
|
16
|
+
commands, and returns evidence. Managed or hosted planes are separate consumers.
|
|
15
17
|
|
|
16
18
|
## Seat
|
|
17
19
|
|
|
@@ -41,8 +43,6 @@ A session is a bounded run inside one repo. Use one for a bug fix, feature
|
|
|
41
43
|
slice, review, release canary, or short swarm; not for a product, quarter, or
|
|
42
44
|
org.
|
|
43
45
|
|
|
44
|
-
Rebind reattaches a live session to the current ledger, task, branch, and worktree after interruption or runner/vendor change.
|
|
45
|
-
|
|
46
46
|
## Receipt
|
|
47
47
|
|
|
48
48
|
A receipt proves what happened: changed files, validation, runbook refs,
|
|
@@ -115,7 +115,7 @@ External tools keep their native jobs: chat is conversation, planning tools are
|
|
|
115
115
|
planning, code hosts are review, observability is incident evidence, and
|
|
116
116
|
identity systems are identity.
|
|
117
117
|
|
|
118
|
-
Etiquette is the accountability
|
|
118
|
+
Etiquette is the accountability journal. External "Done" is not acceptance.
|
|
119
119
|
Authentication is not authorization.
|
|
120
120
|
|
|
121
121
|
## Short Rules
|
package/docs/CORE_PROFILE.md
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
# Etiquette Core Profile
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
This file describes the `etiquette-core` CLI profile inside `@etiquekit/etq`.
|
|
4
|
+
It is not the same thing as the public npm package `@etiquekit/core`.
|
|
5
|
+
|
|
6
|
+
`@etiquekit/core` is the open governance contract: schemas, pure state machines,
|
|
7
|
+
authority/refusal rules, plane profiles, and conformance. `@etiquekit/etq` is
|
|
8
|
+
the thin local execution plane that consumes it.
|
|
9
|
+
|
|
10
|
+
The `etiquette-core` CLI profile is the bare-bones local governance flavor for
|
|
11
|
+
senior engineers who want the original promise without the managed runtime
|
|
12
|
+
surface.
|
|
5
13
|
|
|
6
14
|
Core includes:
|
|
7
15
|
|
|
@@ -16,7 +24,7 @@ Core excludes by default:
|
|
|
16
24
|
|
|
17
25
|
- hosted runtime and EKS provisioning;
|
|
18
26
|
- MCP server;
|
|
19
|
-
-
|
|
27
|
+
- Linear adapter;
|
|
20
28
|
- memory-store lifecycle and drains;
|
|
21
29
|
- agent-plane profiles;
|
|
22
30
|
- console/site;
|
|
@@ -25,7 +33,7 @@ Core excludes by default:
|
|
|
25
33
|
|
|
26
34
|
## Primitive Map
|
|
27
35
|
|
|
28
|
-
|
|
36
|
+
The local core profile records, validates, gates, and dispatches:
|
|
29
37
|
|
|
30
38
|
| Layer | Core primitive |
|
|
31
39
|
| --- | --- |
|
|
@@ -35,9 +43,9 @@ Core records, validates, gates, and dispatches:
|
|
|
35
43
|
| Execute | local shell, local worktree, local runner; authority-false |
|
|
36
44
|
| Act | dispatch advice, receipt return, next-owner routing |
|
|
37
45
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
46
|
+
Higher-level planes may consolidate and project. Memory stores, consolidation
|
|
47
|
+
rollups, hosted portals, secure screening, remote runtime cells, and sharded
|
|
48
|
+
drains belong outside this profile unless explicitly enabled.
|
|
41
49
|
|
|
42
50
|
Use:
|
|
43
51
|
|
|
@@ -16,8 +16,8 @@ lane: APP-001-domain-foundation
|
|
|
16
16
|
task_id: APP-001
|
|
17
17
|
repo: github.com/org/app
|
|
18
18
|
project_ref: .
|
|
19
|
-
current_owner:
|
|
20
|
-
review_owner:
|
|
19
|
+
current_owner: codex-seat
|
|
20
|
+
review_owner: cc-seat
|
|
21
21
|
mode: product-implementation | read-only-audit | docs-only
|
|
22
22
|
startup_docs:
|
|
23
23
|
- AGENTS.md
|
|
@@ -90,11 +90,6 @@ etiquette pickup --project . --seat <seat> --task <task> --text
|
|
|
90
90
|
Then read only the startup docs named by the bulletin. Do not scrape old chat
|
|
91
91
|
or a global bus to infer project state.
|
|
92
92
|
|
|
93
|
-
If the seat is resuming, changing role, changing runner/model/vendor, or moving
|
|
94
|
-
between worktrees, perform seat rebind before `join`/`pickup`: verify the live
|
|
95
|
-
project, task, branch, worktree, routing surface, and evidence surface from the
|
|
96
|
-
ledger. Rebind is context proof only; it is not readiness or authority.
|
|
97
|
-
|
|
98
93
|
Inside a session, the agent should confirm:
|
|
99
94
|
|
|
100
95
|
- seat id and operator principal;
|
package/docs/README.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Etiquette Docs
|
|
2
2
|
|
|
3
|
+
Package map:
|
|
4
|
+
|
|
5
|
+
- [`@etiquekit/core`](https://www.npmjs.com/package/@etiquekit/core) is the
|
|
6
|
+
public open contract; source is linked from npm metadata and the website.
|
|
7
|
+
- [`@etiquekit/etq`](https://www.npmjs.com/package/@etiquekit/etq) is the thin
|
|
8
|
+
local exec plane. It consumes `@etiquekit/core` and supplies CLI, local
|
|
9
|
+
journal, worktree/session ergonomics, and evidence return.
|
|
10
|
+
- `remote-etq` is the private managed execution plane.
|
|
11
|
+
|
|
3
12
|
Start with [CONCEPTS.md](CONCEPTS.md), [CORE_PROFILE.md](CORE_PROFILE.md),
|
|
4
13
|
[SEAT_PROVISIONING.md](SEAT_PROVISIONING.md), [SEAT_DISCIPLINE.md](SEAT_DISCIPLINE.md),
|
|
5
14
|
[LANE_PROVISIONING.md](LANE_PROVISIONING.md), [WORKTREE_QOL.md](WORKTREE_QOL.md),
|
|
@@ -9,21 +18,13 @@ For private manager-to-developer rollout, use
|
|
|
9
18
|
|
|
10
19
|
References:
|
|
11
20
|
|
|
12
|
-
- [CONCEPT_STATUS.md](CONCEPT_STATUS.md)
|
|
13
21
|
- [CODEX_CLIENT_COMPATIBILITY.md](CODEX_CLIENT_COMPATIBILITY.md)
|
|
14
22
|
- [RELEASE_SURFACE_AUDIT.md](RELEASE_SURFACE_AUDIT.md)
|
|
15
23
|
|
|
16
|
-
Source checkouts also keep hosted parity, portal, managed-runtime parity, and root kernel notes for
|
|
17
|
-
maintainers. They are not part of the local devkit tarball.
|
|
18
|
-
|
|
19
24
|
Integration profile:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
Slack/Teams are conversation, Jira/Linear are planning, GitHub/GitLab are code
|
|
26
|
+
review, Sentry/Datadog/OpenTelemetry are incident evidence, and SSO/SCIM/OIDC
|
|
27
|
+
are identity. Etiquette is the accountability journal: chat is not source of
|
|
23
28
|
truth, external Done is not acceptance, and authentication is not authorization.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
authority-false and swappable, Full/hosted surfaces are optional scale layers,
|
|
27
|
-
and public hosted distribution is parked until organizational approval.
|
|
28
|
-
|
|
29
|
-
Maintainer history and prior workflow notes are not part of new-seat onboarding.
|
|
29
|
+
Current posture: `@etiquekit/core` is open, `@etiquekit/etq` is the local exec
|
|
30
|
+
plane that dogfoods it, and remote/hosted execution stays private.
|