@etiquekit/etq 1.0.14 → 1.0.16

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.
Files changed (143) hide show
  1. package/AGENTS.md +26 -19
  2. package/LICENSE +3 -2
  3. package/NOTICE +4 -6
  4. package/QuickStart.md +50 -39
  5. package/README.md +56 -56
  6. package/bin/etiquette +5 -1
  7. package/bin/etiquette-core +5 -1
  8. package/docs/ARCHITECTURE.md +17 -20
  9. package/docs/CONCEPTS.md +5 -5
  10. package/docs/CORE_PROFILE.md +15 -7
  11. package/docs/LANE_PROVISIONING.md +2 -7
  12. package/docs/README.md +14 -13
  13. package/docs/RELEASE_SURFACE_AUDIT.md +7 -8
  14. package/docs/SEAT_DISCIPLINE.md +91 -55
  15. package/docs/SEAT_PROVISIONING.md +19 -16
  16. package/docs/TEAM_HANDOFF.md +21 -21
  17. package/docs/WORKTREE_QOL.md +0 -7
  18. package/docs/contracts/ledger-entry/README.md +11 -11
  19. package/docs/contracts/ledger-entry/ledger-entry.v0.2.md +2 -2
  20. package/docs/contracts/ledger-entry/ledger-entry.v0.md +8 -8
  21. package/lib/etiquette-core.js +313 -0
  22. package/lib/etiquette.js +1154 -0
  23. package/package.json +11 -10
  24. package/templates/etiquette-vanilla-v0/README.md +3 -2
  25. package/templates/etiquette-vanilla-v0/source/control-seat/README.md +6 -0
  26. package/templates/etiquette-vanilla-v0/source/control-seat/bin/access-assurance-check +55 -0
  27. package/templates/etiquette-vanilla-v0/source/control-seat/bin/seat-doctor +5 -0
  28. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/ACCESS-ASSURANCE.md +39 -0
  29. package/templates/etiquette-vanilla-v0/source/control-seat/docs/work/access/workspace-secure-profile.v0.json +53 -0
  30. package/templates/etiquette-vanilla-v0/validate-vanilla.sh +5 -0
  31. package/templates/hosted-receiver/README.md +41 -0
  32. package/templates/hosted-receiver/w1-github-webhook-receiver.mjs +129 -0
  33. package/templates/seat-packs-v0/README.md +2 -3
  34. package/templates/seat-packs-v0/source/claude-code-seat/README.md +3 -3
  35. package/templates/seat-packs-v0/source/codex-seat/README.md +3 -3
  36. package/templates/seat-packs-v0/source/gemini-seat/README.md +3 -3
  37. package/templates/seat-packs-v0/source/ollama-seat/README.md +3 -3
  38. package/templates/seat-packs-v0/source/openrouter-seat/README.md +3 -3
  39. package/docs/CONCEPT_STATUS.md +0 -66
  40. package/packages/control/src/authority/lease.ts +0 -261
  41. package/packages/control/src/authority/node-delegation.ts +0 -257
  42. package/packages/control/src/authority/rig-conductor.ts +0 -632
  43. package/packages/control/src/cli/argv.ts +0 -155
  44. package/packages/control/src/cli/commands/console.ts +0 -200
  45. package/packages/control/src/cli/commands/dispatch-core.ts +0 -89
  46. package/packages/control/src/cli/commands/dispatch.ts +0 -279
  47. package/packages/control/src/cli/commands/harness.ts +0 -89
  48. package/packages/control/src/cli/commands/hook.ts +0 -50
  49. package/packages/control/src/cli/commands/ledger.ts +0 -91
  50. package/packages/control/src/cli/commands/local-workflow.ts +0 -4690
  51. package/packages/control/src/cli/commands/memory.ts +0 -445
  52. package/packages/control/src/cli/commands/release.ts +0 -108
  53. package/packages/control/src/cli/commands/rubric.ts +0 -103
  54. package/packages/control/src/cli/commands/seat.ts +0 -179
  55. package/packages/control/src/cli/commands/session.ts +0 -127
  56. package/packages/control/src/cli/commands/supervision.ts +0 -246
  57. package/packages/control/src/cli/commands/sync.ts +0 -119
  58. package/packages/control/src/cli/commands/workflow.ts +0 -86
  59. package/packages/control/src/cli/commands/workspace.ts +0 -50
  60. package/packages/control/src/cli/core-usage.ts +0 -34
  61. package/packages/control/src/cli/prompt.ts +0 -67
  62. package/packages/control/src/cli/supervision-deps.ts +0 -44
  63. package/packages/control/src/cli/usage.ts +0 -241
  64. package/packages/control/src/cli.ts +0 -207
  65. package/packages/control/src/core-cli.ts +0 -50
  66. package/packages/control/src/dispatch/decision.ts +0 -202
  67. package/packages/control/src/dispatch/projection.ts +0 -293
  68. package/packages/control/src/dispatch/record.ts +0 -153
  69. package/packages/control/src/engagement/project.ts +0 -170
  70. package/packages/control/src/fs.ts +0 -19
  71. package/packages/control/src/harness/pruning.ts +0 -406
  72. package/packages/control/src/hooks/dispatcher.ts +0 -117
  73. package/packages/control/src/hooks/outbox.ts +0 -86
  74. package/packages/control/src/hooks/sanitize.ts +0 -6
  75. package/packages/control/src/hooks/types.ts +0 -34
  76. package/packages/control/src/index.ts +0 -384
  77. package/packages/control/src/ledger/entry.ts +0 -303
  78. package/packages/control/src/ledger/indexer.ts +0 -542
  79. package/packages/control/src/memory/context.ts +0 -149
  80. package/packages/control/src/memory/drain-import.ts +0 -207
  81. package/packages/control/src/memory/indexer.ts +0 -284
  82. package/packages/control/src/memory/query.ts +0 -75
  83. package/packages/control/src/memory/sanitize.ts +0 -50
  84. package/packages/control/src/memory/sharded-drain-import.ts +0 -212
  85. package/packages/control/src/memory/status.ts +0 -211
  86. package/packages/control/src/memory/store-lifecycle.ts +0 -509
  87. package/packages/control/src/memory/store.ts +0 -284
  88. package/packages/control/src/memory/types.ts +0 -146
  89. package/packages/control/src/parity/surfaces.ts +0 -748
  90. package/packages/control/src/project.ts +0 -141
  91. package/packages/control/src/projection/local-ledger-view.ts +0 -373
  92. package/packages/control/src/projection/return-enforcement.ts +0 -48
  93. package/packages/control/src/projection/timeline-preview.ts +0 -539
  94. package/packages/control/src/projection/timeline.ts +0 -708
  95. package/packages/control/src/release/readiness.ts +0 -842
  96. package/packages/control/src/rubric/loader.ts +0 -326
  97. package/packages/control/src/rubric/promotion.ts +0 -54
  98. package/packages/control/src/rubric/runner.ts +0 -159
  99. package/packages/control/src/rubric/types.ts +0 -158
  100. package/packages/control/src/seat/owner-card.ts +0 -388
  101. package/packages/control/src/seat/readiness.ts +0 -834
  102. package/packages/control/src/session/runbook.ts +0 -431
  103. package/packages/control/src/shared/sanitize.ts +0 -49
  104. package/packages/control/src/supervision/action-classes.ts +0 -192
  105. package/packages/control/src/supervision/command-apply.ts +0 -378
  106. package/packages/control/src/supervision/errors.ts +0 -14
  107. package/packages/control/src/supervision/event-replay.ts +0 -155
  108. package/packages/control/src/supervision/events.ts +0 -109
  109. package/packages/control/src/supervision/index.ts +0 -16
  110. package/packages/control/src/supervision/manifest.ts +0 -127
  111. package/packages/control/src/supervision/paths.ts +0 -49
  112. package/packages/control/src/supervision/projection-adapter.ts +0 -274
  113. package/packages/control/src/supervision/projection.ts +0 -75
  114. package/packages/control/src/supervision/rebuild.ts +0 -99
  115. package/packages/control/src/supervision/session-open.ts +0 -131
  116. package/packages/control/src/supervision/session-read.ts +0 -99
  117. package/packages/control/src/supervision/sqlite-impl.ts +0 -71
  118. package/packages/control/src/supervision/sqlite.ts +0 -121
  119. package/packages/control/src/supervision/store-rows.ts +0 -371
  120. package/packages/control/src/supervision/turn-close.ts +0 -154
  121. package/packages/control/src/supervision/turn-open.ts +0 -284
  122. package/packages/control/src/sync/event-log-merge-driver.ts +0 -263
  123. package/packages/control/src/sync/join-plan.ts +0 -375
  124. package/packages/control/src/sync/outbox.ts +0 -492
  125. package/packages/control/src/workflow/evaluator.ts +0 -140
  126. package/packages/control/src/workflow/loader.ts +0 -200
  127. package/packages/control/src/workflow/types.ts +0 -90
  128. package/packages/control/src/workspace/authority.ts +0 -499
  129. package/packages/protocol/src/guards.ts +0 -119
  130. package/packages/protocol/src/huddle-board.ts +0 -198
  131. package/packages/protocol/src/huddle.ts +0 -295
  132. package/packages/protocol/src/incident.ts +0 -251
  133. package/packages/protocol/src/index.ts +0 -8
  134. package/packages/protocol/src/interfaces.ts +0 -107
  135. package/packages/protocol/src/packet-profile.ts +0 -195
  136. package/packages/protocol/src/state.ts +0 -81
  137. package/packages/protocol/src/types.ts +0 -434
  138. package/release/lineage.v0.json +0 -15
  139. package/scripts/release-candidate-verify.sh +0 -175
  140. package/scripts/release-checksum.sh +0 -25
  141. package/scripts/release-pack-canary.sh +0 -97
  142. package/scripts/release-scan.sh +0 -249
  143. package/scripts/release-sign.sh +0 -34
@@ -1,97 +0,0 @@
1
- #!/bin/sh
2
- # Build a fresh npm tarball in a temp dir and verify the public package surface.
3
- set -eu
4
-
5
- ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
6
- TMPDIR_ROOT=${TMPDIR:-/tmp}
7
- TMP=$(mktemp -d "$TMPDIR_ROOT/etiquette-pack-canary.XXXXXX")
8
- trap 'rm -rf "$TMP"' EXIT INT TERM
9
-
10
- cd "$ROOT"
11
- npm run release:scan >/dev/null
12
- npm pack --pack-destination "$TMP" >/dev/null
13
-
14
- TGZ=$(find "$TMP" -maxdepth 1 -name '*.tgz' -print | sort | sed -n '1p')
15
- if [ -z "$TGZ" ]; then
16
- echo "release-pack-canary: npm pack did not produce a tarball" >&2
17
- exit 1
18
- fi
19
-
20
- FILES="$TMP/files.txt"
21
- tar -tzf "$TGZ" | sort > "$FILES"
22
-
23
- FILE_COUNT=$(wc -l < "$FILES" | tr -d ' ')
24
- MAX_FILES=190
25
- if [ "$FILE_COUNT" -gt "$MAX_FILES" ]; then
26
- echo "release-pack-canary: package file count $FILE_COUNT exceeds budget $MAX_FILES" >&2
27
- exit 1
28
- fi
29
-
30
- require_file() {
31
- rel=$1
32
- if ! grep -Fxq "$rel" "$FILES"; then
33
- echo "release-pack-canary: missing required package file: $rel" >&2
34
- exit 1
35
- fi
36
- }
37
-
38
- forbid_prefix() {
39
- prefix_re=$1
40
- label=$2
41
- if grep -Eq "^$prefix_re" "$FILES"; then
42
- echo "release-pack-canary: forbidden package surface included: $label" >&2
43
- grep -E "^$prefix_re" "$FILES" >&2
44
- exit 1
45
- fi
46
- }
47
-
48
- require_file "package/package.json"
49
- require_file "package/LICENSE"
50
- require_file "package/bin/etiquette"
51
- require_file "package/bin/etiquette-core"
52
- require_file "package/README.md"
53
- require_file "package/QuickStart.md"
54
- require_file "package/AGENTS.md"
55
- require_file "package/docs/README.md"
56
- require_file "package/docs/TEAM_HANDOFF.md"
57
- require_file "package/docs/CODEX_CLIENT_COMPATIBILITY.md"
58
- require_file "package/docs/RELEASE_SURFACE_AUDIT.md"
59
- require_file "package/packages/control/src/cli.ts"
60
- require_file "package/packages/control/src/core-cli.ts"
61
- require_file "package/packages/protocol/src/index.ts"
62
- require_file "package/release/lineage.v0.json"
63
- require_file "package/scripts/release-candidate-verify.sh"
64
- require_file "package/scripts/install.sh"
65
- require_file "package/scripts/uninstall.sh"
66
- require_file "package/scripts/release-scan.sh"
67
- require_file "package/scripts/release-pack-canary.sh"
68
- require_file "package/scripts/release-checksum.sh"
69
- require_file "package/scripts/release-sign.sh"
70
- require_file "package/templates/etiquette-vanilla-v0/README.md"
71
- require_file "package/templates/github-actions/README.md"
72
- require_file "package/templates/github-actions/w1-webhook-wake-canary.yml"
73
- require_file "package/templates/seat-packs-v0/README.md"
74
-
75
- forbid_prefix 'package/\.codex/' '.codex'
76
- forbid_prefix 'package/\.etiquette/' '.etiquette'
77
- forbid_prefix 'package/\.git' '.git'
78
- forbid_prefix 'package/apps/' 'apps'
79
- forbid_prefix 'package/conformance/' 'conformance'
80
- forbid_prefix 'package/coverage/' 'coverage'
81
- forbid_prefix 'package/dist/' 'dist'
82
- forbid_prefix 'package/fixtures/' 'fixtures'
83
- forbid_prefix 'package/internal/' 'internal'
84
- forbid_prefix 'package/docs/INTERNAL_HANDOFF\.md$' 'internal handoff doc'
85
- forbid_prefix 'package/node_modules/' 'node_modules'
86
- forbid_prefix 'package/docs/work/' 'repo-local workspace scaffold docs'
87
- forbid_prefix 'package/packages/control/src/cli/commands/slice\.ts$' 'legacy slice command'
88
- forbid_prefix 'package/packages/control/src/cli/commands/runtime\.ts$' 'infra runtime command'
89
- forbid_prefix 'package/packages/control/src/runtime/' 'infra runtime source'
90
- forbid_prefix 'package/packages/adapter-' 'legacy adapter packages'
91
- forbid_prefix 'package/packages/dbt-core/' 'legacy dbt-core package'
92
- forbid_prefix 'package/packages/[^/]*/fixtures/' 'workspace fixtures'
93
- forbid_prefix 'package/packages/[^/]*/package\.json$' 'workspace package metadata'
94
- forbid_prefix 'package/site/' 'site'
95
- forbid_prefix 'package/templates/hosted-receiver/' 'hosted receiver template'
96
-
97
- echo "release-pack-canary: ok $(basename "$TGZ") files=$FILE_COUNT budget=$MAX_FILES"
@@ -1,249 +0,0 @@
1
- #!/bin/sh
2
- # Fail if release-hostile local/private markers are committed.
3
- set -eu
4
-
5
- ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
6
-
7
- if ! command -v rg >/dev/null 2>&1; then
8
- echo "release-scan requires rg" >&2
9
- exit 2
10
- fi
11
-
12
- forbidden_path='/'"Users/"
13
- forbidden_name='justine'"massawe"
14
- old_repo_name='discipline-'"control"
15
- pattern="(${forbidden_path}|${forbidden_name}|${old_repo_name})"
16
-
17
- if rg -n --hidden --glob '!.git' --glob '!.git/**' --glob '!_worktrees/**' --glob '!node_modules/**' --glob '!bun.lock' "$pattern" "$ROOT"; then
18
- echo "release-scan: found forbidden local/private marker" >&2
19
- exit 1
20
- fi
21
-
22
- vanilla_root="$ROOT/templates/etiquette-vanilla-v0"
23
- github_actions_root="$ROOT/templates/github-actions"
24
- seat_packs_root="$ROOT/templates/seat-packs-v0"
25
- control_src_root="$ROOT/packages/control/src"
26
- protocol_src_root="$ROOT/packages/protocol/src"
27
- shop_marker_pattern="(El""sa|7""ven|Za""ch|bo""ss|Bo""ss)"
28
- prior_run_pattern="(El""sa|7""ven|Za""ch|bo""ss|Bo""ss|ale-""felicity|codex-spark-""ale-seat|felicity-""review-seat|v3-""handshake|V3-""SCR|LMS-""SCR|bus""://|claude""logs|last""talk\.log|last""miles\.log|karp""athy|lee""pick|LP-""SCR)"
29
-
30
- allowed_docs='docs/README.md
31
- docs/ARCHITECTURE.md
32
- docs/MANAGED_RUNTIME_COMPATIBILITY.md
33
- docs/CODEX_CLIENT_COMPATIBILITY.md
34
- docs/CONCEPTS.md
35
- docs/CONCEPT_STATUS.md
36
- docs/CORE_PROFILE.md
37
- docs/HOSTED_RUNTIME_PARITY.md
38
- docs/LANE_PROVISIONING.md
39
- docs/PORTAL.md
40
- docs/RELEASE_SURFACE_AUDIT.md
41
- docs/SEAT_DISCIPLINE.md
42
- docs/SEAT_PROVISIONING.md
43
- docs/TEAM_HANDOFF.md
44
- docs/WORKTREE_QOL.md
45
- docs/work/bus-feed/README.md
46
- docs/work/consumer-registry/README.md
47
- docs/contracts/ledger-entry/ledger-entry.v0.2.md
48
- docs/contracts/ledger-entry/README.md
49
- docs/contracts/ledger-entry/ledger-query-cli.v0.1.md
50
- docs/contracts/ledger-entry/ledger-entry.v0.1.md
51
- docs/contracts/ledger-entry/ledger-entry.v0.md
52
- docs/work/seats/owner-cards/default-review-seat.yaml'
53
-
54
- for doc_path in $(find "$ROOT/docs" -type f | sed "s#^$ROOT/##" | sort); do
55
- if ! printf '%s\n' "$allowed_docs" | grep -qx "$doc_path"; then
56
- echo "release-scan: unexpected all-dev docs file: $doc_path" >&2
57
- exit 1
58
- fi
59
- done
60
-
61
- allowed_templates='templates/etiquette-vanilla-v0
62
- templates/github-actions
63
- templates/seat-packs-v0'
64
-
65
- for template_path in $(find "$ROOT/templates" -mindepth 1 -maxdepth 1 -type d | sed "s#^$ROOT/##" | sort); do
66
- if ! printf '%s\n' "$allowed_templates" | grep -qx "$template_path"; then
67
- echo "release-scan: unexpected public template directory: $template_path" >&2
68
- exit 1
69
- fi
70
- done
71
-
72
- allowed_scripts='scripts/release-checksum.sh
73
- scripts/install.sh
74
- scripts/uninstall.sh
75
- scripts/release-candidate-verify.sh
76
- scripts/release-pack-canary.sh
77
- scripts/release-scan.sh
78
- scripts/release-sign.sh'
79
-
80
- for script_path in $(find "$ROOT/scripts" -type f | sed "s#^$ROOT/##" | sort); do
81
- if ! printf '%s\n' "$allowed_scripts" | grep -qx "$script_path"; then
82
- echo "release-scan: unexpected public script: $script_path" >&2
83
- exit 1
84
- fi
85
- sh -n "$ROOT/$script_path"
86
- done
87
-
88
- allowed_bins='bin/etiquette
89
- bin/etiquette-core'
90
-
91
- for bin_path in $(find "$ROOT/bin" -type f | sed "s#^$ROOT/##" | sort); do
92
- if ! printf '%s\n' "$allowed_bins" | grep -qx "$bin_path"; then
93
- echo "release-scan: unexpected public executable: $bin_path" >&2
94
- exit 1
95
- fi
96
- sh -n "$ROOT/$bin_path"
97
- done
98
-
99
- default_surface_files="$ROOT/README.md
100
- $ROOT/QuickStart.md
101
- $ROOT/AGENTS.md
102
- $ROOT/docs/README.md
103
- $ROOT/docs/ARCHITECTURE.md
104
- $ROOT/docs/CONCEPTS.md
105
- $ROOT/docs/CONCEPT_STATUS.md
106
- $ROOT/docs/LANE_PROVISIONING.md
107
- $ROOT/docs/SEAT_DISCIPLINE.md
108
- $ROOT/docs/SEAT_PROVISIONING.md
109
- $ROOT/docs/WORKTREE_QOL.md
110
- $ROOT/templates/etiquette-vanilla-v0/README.md"
111
-
112
- if rg -n 'internal/docs' $default_surface_files; then
113
- echo "release-scan: found maintainer-doc path in default onboarding surface" >&2
114
- exit 1
115
- fi
116
-
117
- if command -v git >/dev/null 2>&1 && git -C "$ROOT" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
118
- tracked_forbidden=$(
119
- git -C "$ROOT" ls-files \
120
- '.etiquette/**' \
121
- '.llm-substrate/**' \
122
- 'site/public/fonts/**' \
123
- '*.woff' \
124
- '*.woff2' \
125
- '*.ttf' \
126
- '*.otf' \
127
- || true
128
- )
129
- if [ -n "$tracked_forbidden" ]; then
130
- echo "$tracked_forbidden" >&2
131
- echo "release-scan: tracked release-hostile local state or font assets" >&2
132
- exit 1
133
- fi
134
- fi
135
-
136
- if rg -n "$prior_run_pattern" \
137
- "$ROOT/README.md" \
138
- "$ROOT/QuickStart.md" \
139
- "$ROOT/AGENTS.md" \
140
- "$ROOT/docs" \
141
- "$ROOT/scripts" \
142
- "$control_src_root" \
143
- "$protocol_src_root" \
144
- "$vanilla_root" \
145
- "$github_actions_root" \
146
- "$seat_packs_root"; then
147
- echo "release-scan: found prior-run marker in all-dev onboarding surface" >&2
148
- exit 1
149
- fi
150
-
151
- third_party_concept_pattern="\bC""MA\b"
152
- if rg -n "$third_party_concept_pattern" \
153
- --glob '!**/HOSTED_RUNTIME_PARITY.md' \
154
- --glob '!**/src/mcp/**' \
155
- "$ROOT/README.md" \
156
- "$ROOT/QuickStart.md" \
157
- "$ROOT/AGENTS.md" \
158
- "$ROOT/docs" \
159
- "$ROOT/scripts" \
160
- "$control_src_root" \
161
- "$protocol_src_root" \
162
- "$vanilla_root" \
163
- "$github_actions_root" \
164
- "$seat_packs_root"; then
165
- echo "release-scan: found third-party concept marker in all-dev onboarding surface" >&2
166
- exit 1
167
- fi
168
-
169
- if command -v git >/dev/null 2>&1 && git -C "$ROOT" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
170
- archive_bad=$(
171
- git -C "$ROOT" archive --worktree-attributes --format=tar HEAD \
172
- | tar -tf - \
173
- | sed 's#^\./##' \
174
- | grep -E '^(\.etiquette/|\.llm-substrate/|apps/|conformance/|dist/|fixtures/|internal/|site/)' \
175
- || true
176
- )
177
- if [ -n "$archive_bad" ]; then
178
- echo "$archive_bad" >&2
179
- echo "release-scan: source archive includes maintainer-only or generated surfaces" >&2
180
- exit 1
181
- fi
182
- fi
183
-
184
- check_max_lines() {
185
- rel=$1
186
- max=$2
187
- lines=$(wc -l < "$ROOT/$rel" | tr -d ' ')
188
- if [ "$lines" -gt "$max" ]; then
189
- echo "release-scan: $rel has $lines lines; max allowed for onboarding surface is $max" >&2
190
- exit 1
191
- fi
192
- }
193
-
194
- check_max_lines "README.md" 80
195
- check_max_lines "QuickStart.md" 95
196
- check_max_lines "AGENTS.md" 45
197
- check_max_lines "docs/README.md" 30
198
- check_max_lines "docs/ARCHITECTURE.md" 100
199
- check_max_lines "docs/CODEX_CLIENT_COMPATIBILITY.md" 85
200
- check_max_lines "docs/CONCEPTS.md" 130
201
- check_max_lines "docs/CONCEPT_STATUS.md" 75
202
- check_max_lines "docs/CORE_PROFILE.md" 95
203
- check_max_lines "docs/SEAT_DISCIPLINE.md" 120
204
- check_max_lines "docs/SEAT_PROVISIONING.md" 100
205
- check_max_lines "docs/TEAM_HANDOFF.md" 190
206
- check_max_lines "docs/WORKTREE_QOL.md" 100
207
- check_max_lines "docs/RELEASE_SURFACE_AUDIT.md" 160
208
- check_max_lines "templates/etiquette-vanilla-v0/README.md" 70
209
- check_max_lines "templates/github-actions/README.md" 70
210
- check_max_lines "templates/github-actions/w1-webhook-wake-canary.yml" 130
211
- check_max_lines "templates/seat-packs-v0/README.md" 90
212
-
213
- normalize_words() {
214
- tr ' ' '\n' | sed '/^$/d' | sort | tr '\n' ' ' | sed 's/ $//'
215
- }
216
-
217
- seat_types=$(sed -n 's/^ \([a-z0-9-]*\)) src=.*$/\1/p' "$seat_packs_root/bin/provision-seat" | normalize_words)
218
-
219
- check_seat_pack_catalog() {
220
- rel=$1
221
- found=$(rg -o 'provision-seat [a-z0-9-]+' "$ROOT/$rel" | sed 's/provision-seat //' | grep -v '^auto$' | normalize_words)
222
- if [ "$found" != "$seat_types" ]; then
223
- echo "release-scan: $rel seat-pack list '$found' does not match provision-seat '$seat_types'" >&2
224
- exit 1
225
- fi
226
- }
227
-
228
- check_seat_pack_catalog "README.md"
229
- check_seat_pack_catalog "QuickStart.md"
230
- check_seat_pack_catalog "docs/SEAT_PROVISIONING.md"
231
- check_seat_pack_catalog "templates/etiquette-vanilla-v0/README.md"
232
- check_seat_pack_catalog "templates/seat-packs-v0/README.md"
233
-
234
- if [ -d "$vanilla_root" ] && rg -n "$shop_marker_pattern" "$vanilla_root"; then
235
- echo "release-scan: found shop marker in vanilla package" >&2
236
- exit 1
237
- fi
238
-
239
- if [ -d "$seat_packs_root" ] && rg -n "$shop_marker_pattern" "$seat_packs_root"; then
240
- echo "release-scan: found shop marker in seat packs package" >&2
241
- exit 1
242
- fi
243
-
244
- if [ -d "$ROOT/templates/hosted-receiver" ]; then
245
- echo "release-scan: hosted receiver template belongs outside thin devkit" >&2
246
- exit 1
247
- fi
248
-
249
- echo "release-scan: ok"
@@ -1,34 +0,0 @@
1
- #!/bin/sh
2
- # Sign the checksum manifest when an operator provides a release signing key.
3
- set -eu
4
-
5
- ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
6
- CHECKSUMS="$ROOT/dist/SHA256SUMS"
7
-
8
- if [ ! -f "$CHECKSUMS" ]; then
9
- echo "release-sign: missing dist/SHA256SUMS; run npm run release:checksum first" >&2
10
- exit 1
11
- fi
12
-
13
- if [ -n "${ETIQUETTE_RELEASE_SIGNING_KEY:-}" ]; then
14
- if [ ! -f "$ETIQUETTE_RELEASE_SIGNING_KEY" ]; then
15
- echo "release-sign: ETIQUETTE_RELEASE_SIGNING_KEY does not point to a file" >&2
16
- exit 1
17
- fi
18
- openssl dgst -sha256 -sign "$ETIQUETTE_RELEASE_SIGNING_KEY" -out "$CHECKSUMS.sig" "$CHECKSUMS"
19
- printf 'method=openssl-rsa-sha256\nsigned_ref=dist/SHA256SUMS.sig\n' > "$ROOT/dist/SIGNATURE_MANIFEST.txt"
20
- rm -f "$ROOT/dist/SIGNATURE_REQUIRED.txt"
21
- echo "release-sign: wrote dist/SHA256SUMS.sig"
22
- exit 0
23
- fi
24
-
25
- cat > "$ROOT/dist/SIGNATURE_REQUIRED.txt" <<'MSG'
26
- Release signing was not performed.
27
-
28
- Set ETIQUETTE_RELEASE_SIGNING_KEY to an operator-held private key file, then rerun:
29
-
30
- npm run release:sign
31
- MSG
32
-
33
- echo "release-sign: signing key missing; wrote dist/SIGNATURE_REQUIRED.txt" >&2
34
- exit 1