@etiquekit/etq 1.0.1 → 1.0.5
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/QuickStart.md +37 -45
- package/README.md +55 -55
- package/bin/etiquette +188 -187
- package/docs/CONCEPTS.md +2 -1
- package/docs/README.md +1 -1
- package/docs/SEAT_DISCIPLINE.md +91 -43
- 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/package.json +1 -1
package/docs/CONCEPTS.md
CHANGED
|
@@ -113,7 +113,7 @@ External tools keep their native jobs: chat is conversation, planning tools are
|
|
|
113
113
|
planning, code hosts are review, observability is incident evidence, and
|
|
114
114
|
identity systems are identity.
|
|
115
115
|
|
|
116
|
-
Etiquette is the accountability
|
|
116
|
+
Etiquette is the accountability journal. External "Done" is not acceptance.
|
|
117
117
|
Authentication is not authorization.
|
|
118
118
|
|
|
119
119
|
## Short Rules
|
|
@@ -126,3 +126,4 @@ Portals display and coordinate.
|
|
|
126
126
|
Integrations project refs.
|
|
127
127
|
Execution returns evidence; it never mints authority.
|
|
128
128
|
```
|
|
129
|
+
|
package/docs/README.md
CHANGED
|
@@ -19,7 +19,7 @@ maintainers. They are not part of the local devkit tarball.
|
|
|
19
19
|
Integration profile:
|
|
20
20
|
Slack/Teams are conversation, Jira/Linear are planning, GitHub/GitLab are code
|
|
21
21
|
review, Sentry/Datadog/OpenTelemetry are incident evidence, and SSO/SCIM/OIDC
|
|
22
|
-
are identity. Etiquette is the accountability
|
|
22
|
+
are identity. Etiquette is the accountability journal: chat is not source of
|
|
23
23
|
truth, external Done is not acceptance, and authentication is not authorization.
|
|
24
24
|
|
|
25
25
|
Current release posture: Core is the default local-first product, Exec is
|
package/docs/SEAT_DISCIPLINE.md
CHANGED
|
@@ -1,19 +1,79 @@
|
|
|
1
1
|
# Seat Discipline
|
|
2
2
|
|
|
3
3
|
Seat discipline keeps agent work useful, attributable, and portable across
|
|
4
|
-
runtimes.
|
|
4
|
+
runtimes. Mechanics say what to do; discipline says when to distrust yourself.
|
|
5
|
+
It is organized by moment of need, not by topic.
|
|
6
|
+
|
|
7
|
+
## On Wake
|
|
8
|
+
|
|
9
|
+
- Orient before acting: `whereami`, then the task envelope, then the runbook.
|
|
10
|
+
- Read tiered: status line first, then the exact entry, then the full
|
|
11
|
+
artifact. Never bulk-load directories for "context" — load the specific
|
|
12
|
+
receipt you were pointed to.
|
|
13
|
+
|
|
14
|
+
## Before Claiming Anything
|
|
15
|
+
|
|
16
|
+
- Verify at claim time: re-read the source at the moment you assert it,
|
|
17
|
+
never from memory of an earlier read. A cited manifest or spec is read in
|
|
18
|
+
the same act as the claim.
|
|
19
|
+
- Check the live tip, not your notes: logs and board notes lag integrations.
|
|
20
|
+
- When another seat or a human holds the ground truth, ask — do not
|
|
21
|
+
solo-reconstruct their state.
|
|
22
|
+
|
|
23
|
+
## Before Writing
|
|
24
|
+
|
|
25
|
+
- Read the machine fields, not the title: the envelope's mode and allowed
|
|
26
|
+
writes decide what a task may do; prose is not authority.
|
|
27
|
+
- Search the exact target surface before classifying work as new — most
|
|
28
|
+
"add X" tasks are "finish the X that half-exists."
|
|
29
|
+
- One writer per canonical mutation. Design in parallel; mutate single-file.
|
|
30
|
+
|
|
31
|
+
## While Working
|
|
32
|
+
|
|
33
|
+
- Technical register on the record: schemas, fields, commands, refs.
|
|
34
|
+
Metaphor and personality stay in chat; the record is for the next reader.
|
|
35
|
+
- No person or vendor names in artifacts. Attribute external material at the
|
|
36
|
+
moment of incorporation, with license.
|
|
37
|
+
- One meaningful update per note, reader-resolvable without tooling. Write
|
|
38
|
+
runbook notes, not raw transcript dumps.
|
|
39
|
+
|
|
40
|
+
## Before Returning
|
|
41
|
+
|
|
42
|
+
- Receipt first: outcome, changed files, validation command and result,
|
|
43
|
+
blockers, next owner. No raw logs — cite paths to them.
|
|
44
|
+
- Run validation before returning the receipt. A red validation is reported
|
|
45
|
+
red; "done" without proof is a defect, not a return.
|
|
46
|
+
- If your change altered a source shape, refresh its recorded evidence in
|
|
47
|
+
the same commit.
|
|
48
|
+
- Run post-commit hygiene (`git diff --check HEAD~..HEAD`) — pre-commit
|
|
49
|
+
checks miss freshly added files.
|
|
50
|
+
|
|
51
|
+
## On Review
|
|
52
|
+
|
|
53
|
+
- Verify the shipped artifact, not the branch state you remember.
|
|
54
|
+
- Reviews return evidence, never authority: confirm, counter, or advise.
|
|
55
|
+
A reviewer packet does not mutate the lane it reviews.
|
|
56
|
+
- Accepted review is different from integrated work.
|
|
57
|
+
- Proposals carry their own counter-arguments and open questions — invite
|
|
58
|
+
the pressure test.
|
|
59
|
+
|
|
60
|
+
## At Authority Edges
|
|
61
|
+
|
|
62
|
+
- Stop when authority is unclear, validation cannot run, writes would exceed
|
|
63
|
+
the envelope, a secret appears, or the session is unbounded.
|
|
64
|
+
- Never claim work was authorized without decision language from the
|
|
65
|
+
authority holder. Enthusiasm is not routing.
|
|
66
|
+
- Risk-tier your own gates: proceed on cheap-and-reversible; insist on a
|
|
67
|
+
real decision for irreversible, authority-changing, or spend actions.
|
|
68
|
+
Gating everything trains the rubber-stamp.
|
|
69
|
+
- Promote only through the policy-resolved gate.
|
|
70
|
+
- Memory proposes. Ledgers authorize. Receipts prove. Audit accounts.
|
|
5
71
|
|
|
6
|
-
##
|
|
72
|
+
## When Blocked
|
|
7
73
|
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
- Write useful runbook notes, not raw transcript dumps.
|
|
12
|
-
- Run validation before returning a receipt.
|
|
13
|
-
- Keep receipts compact and cited.
|
|
14
|
-
- Treat accepted review as different from integrated work.
|
|
15
|
-
- Promote only through the policy-resolved gate.
|
|
16
|
-
- Stop when authority, secrets, scope, or validation are unclear.
|
|
74
|
+
- Use the diagnostics verbs before hand-debugging; walk the recovery path
|
|
75
|
+
from the user's seat before declaring a state recoverable.
|
|
76
|
+
- Escalate with a concrete blocker, not a vibe. Quiet is not a finding.
|
|
17
77
|
|
|
18
78
|
## Identity Split
|
|
19
79
|
|
|
@@ -27,42 +87,30 @@ repo_substrate: source, ledger, receipts, validation, commits
|
|
|
27
87
|
|
|
28
88
|
## Work Boundaries
|
|
29
89
|
|
|
30
|
-
A seat should know:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- validation commands;
|
|
35
|
-
- stop conditions;
|
|
36
|
-
- expected receipt;
|
|
37
|
-
- next owner.
|
|
38
|
-
|
|
39
|
-
If any of those are missing, ask for a sharper task.
|
|
40
|
-
|
|
41
|
-
## Session Hygiene
|
|
42
|
-
|
|
43
|
-
Sessions are for bounded work. Restoring a session restores context, not
|
|
44
|
-
authority.
|
|
45
|
-
|
|
46
|
-
## Review Discipline
|
|
47
|
-
|
|
48
|
-
Review seats should pressure-test hidden authority changes, missing validation,
|
|
49
|
-
oversized write sets, stale assumptions, unbounded sessions, evidence that
|
|
50
|
-
cannot be reproduced, and claims that should be receipts.
|
|
51
|
-
|
|
52
|
-
Reviewers contribute evidence. The routed owner mutates truth.
|
|
90
|
+
A seat should know: allowed writes; forbidden writes; validation commands;
|
|
91
|
+
stop conditions; expected receipt; next owner. If any are missing, ask for a
|
|
92
|
+
sharper task. Sessions are for bounded work; restoring a session restores
|
|
93
|
+
context, not authority.
|
|
53
94
|
|
|
54
95
|
## Tool Discipline
|
|
55
96
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
authentication.
|
|
59
|
-
|
|
60
|
-
Do not let any of them become acceptance.
|
|
97
|
+
Chat is conversation, planning tools are intent, code review tools are diffs
|
|
98
|
+
and CI, incident tools are runtime evidence, identity providers are
|
|
99
|
+
authentication. None of them are acceptance.
|
|
61
100
|
|
|
62
101
|
## Failure Signals
|
|
63
102
|
|
|
64
103
|
Open a follow-up or stop the run when a seat edits outside allowed writes,
|
|
65
|
-
validation repeatedly fails, the runbook grows without a receipt, a task
|
|
66
|
-
unrelated repos, a runtime claims success without evidence, a
|
|
67
|
-
disagrees with git, a grant owner is unclear, or an integration
|
|
68
|
-
or promote work.
|
|
104
|
+
validation repeatedly fails, the runbook grows without a receipt, a task
|
|
105
|
+
spans unrelated repos, a runtime claims success without evidence, a
|
|
106
|
+
projection disagrees with git, a grant owner is unclear, or an integration
|
|
107
|
+
tries to close or promote work.
|
|
108
|
+
|
|
109
|
+
## Growing Local Discipline
|
|
110
|
+
|
|
111
|
+
This document ships the judgment that is true everywhere. Your team's own
|
|
112
|
+
calibration — which seats are strong where, which tools misbehave, which
|
|
113
|
+
routes need a second look — is grown locally: when a correction lands, record
|
|
114
|
+
it as one small note with why and how-to-apply, index it, and re-read it at
|
|
115
|
+
the moment you would otherwise repeat the mistake. Corrections that are never
|
|
116
|
+
recorded are corrections you will pay for twice.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Ledger Entry Contracts
|
|
2
2
|
|
|
3
|
-
This contract keeps the ledger-query-mode work narrow. It hardens the
|
|
4
|
-
typed ledger entries that later
|
|
3
|
+
This contract keeps the ledger-query-mode work narrow. It hardens the journal first:
|
|
4
|
+
typed ledger entries that later working-loop queries can read without guessing.
|
|
5
5
|
|
|
6
6
|
It does not ship a ledger query engine, sabbatical dossier engine, capsule
|
|
7
7
|
promotion loop, or remote ledger authority.
|
|
@@ -10,7 +10,7 @@ promotion loop, or remote ledger authority.
|
|
|
10
10
|
|
|
11
11
|
```text
|
|
12
12
|
raw local ledger entry
|
|
13
|
-
-> typed
|
|
13
|
+
-> typed `spine_eligible` metadata
|
|
14
14
|
-> optional compact projection
|
|
15
15
|
-> later sabbatical capsule only after operator promotion
|
|
16
16
|
```
|
|
@@ -18,12 +18,12 @@ raw local ledger entry
|
|
|
18
18
|
## Core Rule
|
|
19
19
|
|
|
20
20
|
```text
|
|
21
|
-
|
|
21
|
+
The working loop routes the present.
|
|
22
22
|
Sabbatical understands the arc.
|
|
23
|
-
Capsules compress the arc back into
|
|
23
|
+
Capsules compress the arc back into working-loop context.
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
The
|
|
26
|
+
The planner may recommend. The journal may route. Grants authorize. Execution
|
|
27
27
|
mutates. Receipts prove. Audit accounts.
|
|
28
28
|
|
|
29
29
|
## Contracts
|
|
@@ -65,18 +65,18 @@ These names are reserved vocabulary, not V0 machinery:
|
|
|
65
65
|
search adapters; SQLite FTS5 is the only V0.1 retrieval accelerator.
|
|
66
66
|
- `ledger-topic-dossier.v0` — unlock only when an operator asks for a durable
|
|
67
67
|
long-horizon dossier over a real topic.
|
|
68
|
-
- `sabbatical-ledger-query` — reserved as the deliberate
|
|
69
|
-
cannot write the
|
|
70
|
-
- `capsule-to-
|
|
68
|
+
- `sabbatical-ledger-query` — reserved as the deliberate planner posture; it
|
|
69
|
+
cannot write the working journal directly.
|
|
70
|
+
- `capsule-to-journal-feedback` — unlock only when reviewed capsules have a human
|
|
71
71
|
promotion surface.
|
|
72
72
|
|
|
73
73
|
Deferred surfaces must name an operational consumer before implementation.
|
|
74
74
|
|
|
75
75
|
## Boundary
|
|
76
76
|
|
|
77
|
-
- The
|
|
77
|
+
- The planner cannot write the journal directly. It may produce a capsule or
|
|
78
78
|
dossier that an operator later promotes.
|
|
79
|
-
- `spine_eligible: true` is explicit;
|
|
79
|
+
- `spine_eligible: true` is explicit; working-loop indexes do not infer eligibility
|
|
80
80
|
from entry type.
|
|
81
81
|
- Existing ledger lines remain readable as `pre_v0: true` legacy entries.
|
|
82
82
|
- Ledger entries do not authorize work unless a valid grant path says so.
|
|
@@ -9,7 +9,7 @@ does not authorize work, attach grants, close tasks, or replace receipts.
|
|
|
9
9
|
|
|
10
10
|
```text
|
|
11
11
|
The leading timestamp (created_at) is the RECORDING time. It is never
|
|
12
|
-
backdated. If work was done off the
|
|
12
|
+
backdated. If work was done off the journal, it is reconciled with a late
|
|
13
13
|
entry recorded at its true time, pointing at contemporaneous evidence.
|
|
14
14
|
Synthesizing entries with past recording times is corruption, not repair:
|
|
15
15
|
one plausible fake timestamp devalues every real one.
|
|
@@ -51,7 +51,7 @@ valid_time_end:
|
|
|
51
51
|
## Added Entry Type
|
|
52
52
|
|
|
53
53
|
`entry_type: retroactive_import` — a late reconciliation entry covering work
|
|
54
|
-
that was executed without contemporaneous
|
|
54
|
+
that was executed without contemporaneous journal entries. Rules, enforced by
|
|
55
55
|
the validator:
|
|
56
56
|
|
|
57
57
|
- requires schema `ledger-entry.v0.2` (rejected on v0/v0.1);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ledger-entry.v0
|
|
2
2
|
|
|
3
|
-
`ledger-entry.v0` is the typed local ledger record used by the
|
|
3
|
+
`ledger-entry.v0` is the typed local ledger record used by the working journal.
|
|
4
4
|
It makes compact ledger lines structurally queryable without promoting the
|
|
5
5
|
ledger into an authority source.
|
|
6
6
|
|
|
@@ -58,7 +58,7 @@ legacy:
|
|
|
58
58
|
`authority.class: grant` may set it to `true`, and only when the entry carries
|
|
59
59
|
the durable grant reference required by the local workflow.
|
|
60
60
|
|
|
61
|
-
`spine_eligible` is explicit. A
|
|
61
|
+
`spine_eligible` is explicit. A working-loop index must not infer it from
|
|
62
62
|
`entry_type`. Entries that are useful for current-state routing should set it to
|
|
63
63
|
`true`; archival, noisy, or unreviewed entries should set it to `false`.
|
|
64
64
|
|
|
@@ -92,17 +92,17 @@ legacy:
|
|
|
92
92
|
spine_eligible: false
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
##
|
|
95
|
+
## Journal And Planner Boundary
|
|
96
96
|
|
|
97
97
|
```text
|
|
98
|
-
|
|
98
|
+
The working loop routes the present.
|
|
99
99
|
Sabbatical understands the arc.
|
|
100
|
-
Capsules compress the arc back into
|
|
100
|
+
Capsules compress the arc back into working-loop context.
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
The
|
|
104
|
-
capsule or dossier, but it cannot write back into the
|
|
105
|
-
from capsule to
|
|
103
|
+
The working journal reads typed ledger entries. The sabbatical planner may produce a
|
|
104
|
+
capsule or dossier, but it cannot write back into the journal directly. Promotion
|
|
105
|
+
from capsule to journal requires an explicit operator gate.
|
|
106
106
|
|
|
107
107
|
## Authority Boundary
|
|
108
108
|
|