create-egregore 0.19.23 → 0.19.25
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/assets/egregore-launcher.js +50 -7
- package/assets/egregore-launcher.sh +10 -2
- package/bin/cli.js +21 -3
- package/lib/codex-runtime.js +25 -3
- package/lib/connect-runtime.js +329 -0
- package/lib/pi-runtime.js +23 -3
- package/lib/setup.js +13 -0
- package/package.json +3 -3
- package/runtime/codex/.codex/skills/handoff/SKILL.md +35 -11
- package/runtime/codex/.codex/skills/save/SKILL.md +41 -4
- package/runtime/codex/.codex/spec-manifest.json +2 -2
- package/runtime/codex/AGENTS.md +18 -1
- package/runtime/codex/bin/agent.sh +28 -14
- package/runtime/codex/bin/attendant.sh +169 -6
- package/runtime/codex/bin/codex-render-spec.mjs +18 -1
- package/runtime/codex/bin/codex-session-start.sh +13 -0
- package/runtime/codex/bin/codex-sync-skills.sh +1 -0
- package/runtime/codex/bin/graph.sh +21 -1
- package/runtime/codex/bin/handoff-run.sh +25 -5
- package/runtime/codex/bin/lib/context.sh +220 -172
- package/runtime/codex/bin/lib/dashboard-artifact.sh +113 -13
- package/runtime/codex/bin/lib/git-sync.sh +44 -8
- package/runtime/codex/bin/lib/greeting.sh +34 -11
- package/runtime/codex/bin/lib/identity.sh +32 -14
- package/runtime/codex/bin/person.py +20 -0
- package/runtime/codex/manifest.json +3 -72
- package/runtime/pi/.codex/skills/handoff/SKILL.md +35 -11
- package/runtime/pi/.codex/skills/save/SKILL.md +41 -4
- package/runtime/pi/.codex/spec-manifest.json +2 -2
- package/runtime/pi/.pi/APPEND_SYSTEM.md +18 -1
- package/runtime/pi/.pi/spec-manifest.json +2 -2
- package/runtime/pi/AGENTS.md +18 -1
- package/runtime/pi/bin/agent.sh +28 -14
- package/runtime/pi/bin/attendant.sh +169 -6
- package/runtime/pi/bin/codex-render-spec.mjs +18 -1
- package/runtime/pi/bin/codex-session-start.sh +13 -0
- package/runtime/pi/bin/codex-sync-skills.sh +1 -0
- package/runtime/pi/bin/graph.sh +21 -1
- package/runtime/pi/bin/handoff-run.sh +25 -5
- package/runtime/pi/bin/lib/context.sh +220 -172
- package/runtime/pi/bin/lib/dashboard-artifact.sh +113 -13
- package/runtime/pi/bin/lib/git-sync.sh +44 -8
- package/runtime/pi/bin/lib/greeting.sh +34 -11
- package/runtime/pi/bin/lib/identity.sh +32 -14
- package/runtime/pi/bin/person.py +20 -0
- package/runtime/pi/bin/pi-product-workflows.mjs +5 -1
- package/runtime/pi/manifest.json +3 -72
- package/runtime/codex/.codex/skills/add/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/answer/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/ask/SKILL.md +0 -67
- package/runtime/codex/.codex/skills/audit/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/autosave/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/branch/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/commit/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/demo-mode/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/deploy-bridge/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/design/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/egregore-voice/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/emissary/SKILL.md +0 -45
- package/runtime/codex/.codex/skills/env/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/ingest-google/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/minion/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/mock/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/pr/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/product-voice/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/project/SKILL.md +0 -45
- package/runtime/codex/.codex/skills/pull/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/push/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/quest-suggest/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/review-pr/SKILL.md +0 -45
- package/runtime/codex/.codex/skills/scroll/SKILL.md +0 -288
- package/runtime/codex/.codex/skills/scroll/agents/openai.yaml +0 -4
- package/runtime/codex/.codex/skills/scroll/assets/shell.html +0 -871
- package/runtime/codex/.codex/skills/search/SKILL.md +0 -79
- package/runtime/codex/.codex/skills/session-view/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/setup/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/summon/SKILL.md +0 -45
- package/runtime/codex/.codex/skills/task/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/teams-connect/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/telegram-connect/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/the-spiral/SKILL.md +0 -84
- package/runtime/codex/.codex/skills/thread/SKILL.md +0 -29
- package/runtime/codex/.codex/skills/todo/SKILL.md +0 -45
- package/runtime/pi/.codex/skills/add/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/answer/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/ask/SKILL.md +0 -67
- package/runtime/pi/.codex/skills/audit/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/autosave/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/branch/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/commit/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/demo-mode/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/deploy-bridge/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/design/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/egregore-voice/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/emissary/SKILL.md +0 -45
- package/runtime/pi/.codex/skills/env/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/ingest-google/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/minion/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/mock/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/pr/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/product-voice/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/project/SKILL.md +0 -45
- package/runtime/pi/.codex/skills/pull/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/push/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/quest-suggest/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/review-pr/SKILL.md +0 -45
- package/runtime/pi/.codex/skills/scroll/SKILL.md +0 -288
- package/runtime/pi/.codex/skills/scroll/agents/openai.yaml +0 -4
- package/runtime/pi/.codex/skills/scroll/assets/shell.html +0 -871
- package/runtime/pi/.codex/skills/search/SKILL.md +0 -79
- package/runtime/pi/.codex/skills/session-view/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/setup/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/summon/SKILL.md +0 -45
- package/runtime/pi/.codex/skills/task/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/teams-connect/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/telegram-connect/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/the-spiral/SKILL.md +0 -84
- package/runtime/pi/.codex/skills/thread/SKILL.md +0 -29
- package/runtime/pi/.codex/skills/todo/SKILL.md +0 -45
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: quest-suggest
|
|
3
|
-
description: 'Fallback Codex adapter for the Egregore quest-suggest workflow.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
-
|
|
8
|
-
# Egregore quest-suggest Adapter
|
|
9
|
-
|
|
10
|
-
This is fallback coverage for a long-tail Egregore workflow that has not been
|
|
11
|
-
ported to a hand-written Codex-native skill yet.
|
|
12
|
-
|
|
13
|
-
Use the project shell and filesystem directly. Do not invoke Claude Code
|
|
14
|
-
commands. Translate interactive choices to structured Codex question tooling
|
|
15
|
-
when it is available; otherwise render compact numbered choices with an
|
|
16
|
-
`Other:` option and wait for the user.
|
|
17
|
-
|
|
18
|
-
1. Read `.claude/skills/quest-suggest/SKILL.md` for the workflow details.
|
|
19
|
-
2. Run the referenced `bin/` scripts directly from Codex.
|
|
20
|
-
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
21
|
-
says they are required.
|
|
22
|
-
4. For every external notification, follow
|
|
23
|
-
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
24
|
-
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
25
|
-
consent from the workflow request or a batch approval.
|
|
26
|
-
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
27
|
-
calls when `egregore.json` declares `"mode": "local"`.
|
|
28
|
-
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
29
|
-
handoffs.
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: review-pr
|
|
3
|
-
description: 'Fallback Codex adapter for the Egregore review-pr workflow.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- generated-by: bin/codex-sync-skills.sh -->
|
|
7
|
-
|
|
8
|
-
# Egregore review-pr Adapter
|
|
9
|
-
|
|
10
|
-
This is fallback coverage for a long-tail Egregore workflow that has not been
|
|
11
|
-
ported to a hand-written Codex-native skill yet.
|
|
12
|
-
|
|
13
|
-
Use the project shell and filesystem directly. Do not invoke Claude Code
|
|
14
|
-
commands. Translate interactive choices to structured Codex question tooling
|
|
15
|
-
when it is available; otherwise render compact numbered choices with an
|
|
16
|
-
`Other:` option and wait for the user.
|
|
17
|
-
|
|
18
|
-
## Structured UX parity
|
|
19
|
-
|
|
20
|
-
This workflow has a Claude skill with user-visible structured output. After
|
|
21
|
-
reading `.claude/skills/review-pr/SKILL.md`, reproduce the same visible UX in Codex:
|
|
22
|
-
|
|
23
|
-
- Preserve TUI boxes, markdown tables, rich cards, browser artifact rendering,
|
|
24
|
-
exact confirmation blocks, and "no preamble" rules from the source skill.
|
|
25
|
-
- Use the source skill's frame width, section order, labels, status footer,
|
|
26
|
-
and examples as the contract for the final response.
|
|
27
|
-
- Never replace a required box/table/card/artifact view with a prose summary
|
|
28
|
-
unless the user explicitly asks for a summary.
|
|
29
|
-
- When the source says to output a TUI box directly, paste that box as the
|
|
30
|
-
visible response, preferably in a `text` fenced block.
|
|
31
|
-
- Never show raw JSON, raw command output, or unformatted script output when
|
|
32
|
-
the source skill requires formatted status or rendered output.
|
|
33
|
-
|
|
34
|
-
1. Read `.claude/skills/review-pr/SKILL.md` for the workflow details.
|
|
35
|
-
2. Run the referenced `bin/` scripts directly from Codex.
|
|
36
|
-
3. Treat graph and publish steps as best-effort unless that workflow explicitly
|
|
37
|
-
says they are required.
|
|
38
|
-
4. For every external notification, follow
|
|
39
|
-
`.claude/context/notification-consent.md`: plan without sending, then show
|
|
40
|
-
a separate exact Send / Edit / Cancel checkpoint. Never infer notification
|
|
41
|
-
consent from the workflow request or a batch approval.
|
|
42
|
-
5. Keep local-mode behavior filesystem-first and avoid graph or notification
|
|
43
|
-
calls when `egregore.json` declares `"mode": "local"`.
|
|
44
|
-
6. Never call the deprecated `egregore-handoff` CLI for Egregore project
|
|
45
|
-
handoffs.
|
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scroll
|
|
3
|
-
description: 'Compose and tend an Egregore living paper with an explanatory face, embedded decision harvest, stable published URL, and versioned paste-back update loop. Use when the user invokes /scroll or $scroll, asks for a living paper or a spec with questions inside, presents a proposal/architecture/product/feature with open forks, or pastes a versioned scroll decisions return block.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Egregore Scroll
|
|
7
|
-
|
|
8
|
-
Native Codex Egregore skill. Use only inside an Egregore checkout.
|
|
9
|
-
|
|
10
|
-
A scroll is one self-contained Meridian HTML artifact with two linked views:
|
|
11
|
-
the readable paper and the open decisions living inside it. Every return block
|
|
12
|
-
updates the same artifact at the same stable id.
|
|
13
|
-
|
|
14
|
-
Use `$view` for a static document with no pending decisions, `$harvest` for
|
|
15
|
-
elicitation without a published explaining face, and a concise question for one
|
|
16
|
-
small fork. A scroll requires all three legs: face, harvest, and update loop.
|
|
17
|
-
|
|
18
|
-
## Structured UX parity
|
|
19
|
-
|
|
20
|
-
The browser artifact is the primary output. Preserve both tabs, deep links from
|
|
21
|
-
honest costs into decisions, the versioned copydock return block, stable URL, and local
|
|
22
|
-
source path. Do not substitute a prose-only summary or expose raw publish output.
|
|
23
|
-
|
|
24
|
-
## Route the invocation
|
|
25
|
-
|
|
26
|
-
- A normal request creates version 1.
|
|
27
|
-
- A pasted block matching `#<slug>-decisions:v<N>` runs the update loop.
|
|
28
|
-
- If a pasted version is stale, absorb still-applicable answers and state which
|
|
29
|
-
forks moved after that version.
|
|
30
|
-
|
|
31
|
-
Run inline with shell and filesystem tools. Do not invoke Claude Code commands
|
|
32
|
-
or Loom delegation.
|
|
33
|
-
|
|
34
|
-
## Build a new scroll
|
|
35
|
-
|
|
36
|
-
1. Read the source design, relevant memory, code, and quest context in full.
|
|
37
|
-
2. Derive a stable kebab-case slug of at most 50 characters. Create:
|
|
38
|
-
- surface id `ds-<date>-<slug>`;
|
|
39
|
-
- harvest id `harvest-<date>-<slug>`;
|
|
40
|
-
- a short unique `<prefix>.harvest` browser storage key.
|
|
41
|
-
3. Copy `.codex/skills/scroll/assets/shell.html` into `tmp/<slug>/index.html`.
|
|
42
|
-
Keep this build source in the worktree so future turns can tend it.
|
|
43
|
-
4. Inject the canonical design-system CSS at build time from
|
|
44
|
-
`packages/egregore-artifacts/lib/vendor/design-system/dist/egregore-design.css`
|
|
45
|
-
into `/*__MERIDIAN_CSS__*/`. If the packages tree is unavailable, extract the
|
|
46
|
-
same path from `egregore-artifacts@latest` rather than freezing tokens.
|
|
47
|
-
5. Fill every placeholder and replace the `__FACE__` and `__HARVEST__` slot
|
|
48
|
-
comments using the shell's syntax reference and the composition rules below.
|
|
49
|
-
|
|
50
|
-
### Write the face
|
|
51
|
-
|
|
52
|
-
Create a light paper that reads as if freshly written by someone who knows
|
|
53
|
-
every absorbed decision, not a transcript with updates appended.
|
|
54
|
-
|
|
55
|
-
- A paper header with kicker, title, italic subtitle, grounds, date, and
|
|
56
|
-
`Version vN — updates in place at this URL`.
|
|
57
|
-
- **Setting** is mandatory: orient the reader in current reality, the question
|
|
58
|
-
or gap, and the thesis; include verified numbers when they carry the claim.
|
|
59
|
-
- **Honest costs** is mandatory: name real tradeoffs, uncertainty, and
|
|
60
|
-
operational burden. A cost that an open fork can price calls
|
|
61
|
-
`goFork('<fork-id>')`; settled costs become accepted, mitigated, or residual.
|
|
62
|
-
- Choose every other module by fit: evidence or claims; a concrete machine,
|
|
63
|
-
anatomy, or protocol; examples or cases; stress tests; consequences;
|
|
64
|
-
boundaries or alternatives; decision history. For each plausible optional
|
|
65
|
-
module, be able to say why it is in or out. Never include one because this
|
|
66
|
-
list names it. A stress test must be able to fail the design.
|
|
67
|
-
- Use tokenized SVG figures where a visual materially helps. Mark illustrative
|
|
68
|
-
charts `shapes, not measurements`.
|
|
69
|
-
|
|
70
|
-
### Write the harvest
|
|
71
|
-
|
|
72
|
-
Create two to four bands of decision cards. Each card needs:
|
|
73
|
-
|
|
74
|
-
- a stable fork id, grounded framing, and a reference back into the face;
|
|
75
|
-
- an explicit answer `mode` for new forks; omit it only when preserving a legacy
|
|
76
|
-
single fork, give every `multi` fork an integer `max`, and give every
|
|
77
|
-
`spectrum` fork exactly two `ends`;
|
|
78
|
-
- two to four real options for single/multi, each with one credible advantage
|
|
79
|
-
and disadvantage; 2–5 labeled items for rank, each with the same honest
|
|
80
|
-
tradeoff pair; or 5–7 fully labeled discrete stops for spectrum;
|
|
81
|
-
- at most one starred lean, presented as a position to challenge;
|
|
82
|
-
- a why textarea whose note returns with the pick.
|
|
83
|
-
|
|
84
|
-
An option with no credible disadvantage is propaganda. A fork is one open
|
|
85
|
-
question carried across versions by its lineage; it renders as a decision card
|
|
86
|
-
and returns as a `Q<n>` line. A turn is one person's answers to one version.
|
|
87
|
-
Accepted means approved; absorbed means published in a new version.
|
|
88
|
-
|
|
89
|
-
Read `.codex/skills/harvest/QUESTION_PALETTE.md` for the canonical
|
|
90
|
-
intent-to-shape rules. A multi card uses matching `data-mode="multi"` and
|
|
91
|
-
`data-max="N"` attributes; the runtime exposes checkboxes and enforces the cap.
|
|
92
|
-
A spectrum card uses `data-mode="spectrum"`, matching `data-left`/`data-right`
|
|
93
|
-
poles, and 5–7 native `.sstop` buttons with normalized `data-pos` values and
|
|
94
|
-
non-blank `data-label` values. Do not author a slider or a selected stop.
|
|
95
|
-
Untouched, an explicitly selected midpoint, and UNDECIDED are distinct.
|
|
96
|
-
A rank card uses `data-mode="rank"` and a `.rank-list` of 2–5 `.rank-item`
|
|
97
|
-
candidates. Each candidate has a unique `data-opt`, a non-blank `data-label`,
|
|
98
|
-
one native `.rank-toggle`, and one honest `.otrade`. The runtime supports
|
|
99
|
-
partial top-k, tier reordering, and ties. Use best-worst dialogue for a longer
|
|
100
|
-
list.
|
|
101
|
-
|
|
102
|
-
Add open prompts for material that is not a fork. Prefer questions grounded in
|
|
103
|
-
the work over meta-prompts asking what to ask next. The copydock must emit:
|
|
104
|
-
|
|
105
|
-
```text
|
|
106
|
-
#<slug>-decisions:v<N>
|
|
107
|
-
surface: <surface-id>
|
|
108
|
-
harvest: <harvest-id>
|
|
109
|
-
date: <date>
|
|
110
|
-
|
|
111
|
-
Q1 <fork-id>: <key> ("<label>")
|
|
112
|
-
note: |
|
|
113
|
-
<verbatim line>
|
|
114
|
-
<blank or verbatim line>
|
|
115
|
-
Q2 <fork-id>: [<key-a>, <key-b>] ("<Label A>" + "<Label B>")
|
|
116
|
-
Q3 <fork-id>: <key-b> > <key-a> = <key-c>
|
|
117
|
-
Q4 <fork-id>: <position> (<left pole>→<right pole>)
|
|
118
|
-
Q5 <fork-id>: UNDECIDED
|
|
119
|
-
O1 <prompt-id>: <text | UNDECIDED>
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Emit a `Q<n>` line only after the respondent chooses an option or activates
|
|
123
|
-
**Leave this open**. Omit untouched forks; Leave this open emits `UNDECIDED`,
|
|
124
|
-
looks distinct from untouched state, and comes back at most once in a different
|
|
125
|
-
form. Keep `n` as the fork's surface ordinal, so omissions may leave gaps. A
|
|
126
|
-
non-blank why-note on an otherwise untouched fork activates Leave this open.
|
|
127
|
-
Multi turns store
|
|
128
|
-
`{mode:"multi", picks:[...], labels:[...]}` rather than a singular `pick`;
|
|
129
|
-
the bracketed return line is comma-separated and its labels are joined with
|
|
130
|
-
` + `. Leave-this-open on a multi fork stores
|
|
131
|
-
`{mode:"multi", picks:["UNDECIDED"]}` with no labels. Missing fork mode remains
|
|
132
|
-
`single` for backward compatibility. A chosen spectrum stop stores
|
|
133
|
-
`{mode:"spectrum", position:<number>, label:"<stop label>"}`; activating it
|
|
134
|
-
again clears to untouched. Leave-this-open stores
|
|
135
|
-
`{mode:"spectrum", position:"UNDECIDED"}` with no label.
|
|
136
|
-
Rank return lines use `>` between ordered tiers and `=` inside a tie; omitted
|
|
137
|
-
items form a valid partial top-k. Rank turns store
|
|
138
|
-
`{mode:"rank", ranks:[["B"],["A","C"]]}`. Leave-this-open stores
|
|
139
|
-
`{mode:"rank", ranks:[["UNDECIDED"]]}`.
|
|
140
|
-
Decision notes use a block scalar: indent `note: |` exactly three spaces and
|
|
141
|
-
every content line exactly six spaces. Removing those six spaces must reproduce
|
|
142
|
-
the NFC+LF-normalized textarea value verbatim, including blank lines and a
|
|
143
|
-
trailing newline.
|
|
144
|
-
|
|
145
|
-
## Theme and asset constraints
|
|
146
|
-
|
|
147
|
-
Choose the default theme pair from the primary reader's recorded preference
|
|
148
|
-
when available: `sovereign`/`bedrock`, `meridian`/`nocturne`, or
|
|
149
|
-
`agronomic`/`soil`. Record a newly stated preference in that person's memory
|
|
150
|
-
profile.
|
|
151
|
-
|
|
152
|
-
Keep theme state on `<html data-theme>` and restore it before paint. In authored
|
|
153
|
-
body content and SVGs, every theme-sensitive fill, stroke, background, border,
|
|
154
|
-
and text color must use `var(--token)`. Do not emit inline hex colors. Preserve
|
|
155
|
-
the shell's persisted palette picker and print/mobile behavior.
|
|
156
|
-
|
|
157
|
-
Before publishing:
|
|
158
|
-
|
|
159
|
-
1. Confirm no `__[A-Z_]*__` placeholders remain.
|
|
160
|
-
2. Check tag balance and that every `goFork()` id has one matching
|
|
161
|
-
`data-decision` card.
|
|
162
|
-
3. Grep authored content for raw hex and resolved inline palette values.
|
|
163
|
-
4. Capture both `file://...` and `file://...#harvest` views and inspect them.
|
|
164
|
-
5. Confirm headings use the intended display face rather than a system serif.
|
|
165
|
-
|
|
166
|
-
## Publish and record
|
|
167
|
-
|
|
168
|
-
Publish connected configurations to the permanent slug:
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
bash bin/publish-artifact.sh document tmp/<slug>/index.html --raw-html \
|
|
172
|
-
--id <slug> --title "<title>" --author "<author>" \
|
|
173
|
-
--description "<description>"
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
Verify the returned URL, open it, and report it. Every later version must reuse
|
|
177
|
-
the same `--id`; never mint a new URL for an update. In local mode, publishing
|
|
178
|
-
is unavailable: open the file locally and report the source path without
|
|
179
|
-
suggesting configuration changes.
|
|
180
|
-
|
|
181
|
-
Add the URL or local path, source location, version, and return-block tag to the
|
|
182
|
-
relevant quest's log/artifacts tables. If no quest is relevant, keep the source
|
|
183
|
-
path as the durable record and state it.
|
|
184
|
-
|
|
185
|
-
## Creator gate — before any absorb
|
|
186
|
-
|
|
187
|
-
The scroll record `memory/scrolls/<slug>.md` names `creator: <person-slug>` and
|
|
188
|
-
optionally `trusted: [<person-slug>, …]`. A record missing `creator:` is
|
|
189
|
-
backfilled from unambiguous existing attribution, otherwise ask the user once
|
|
190
|
-
and write it — never silently default the gate open.
|
|
191
|
-
|
|
192
|
-
Derive the paster from the session person (`.egregore-state.json`, then git
|
|
193
|
-
config) — never from the return block's self-declared `respondent:` line, which
|
|
194
|
-
is attribution metadata, not an authorization credential.
|
|
195
|
-
|
|
196
|
-
If the paster is not the creator and not in `trusted:`, the return is **gated**:
|
|
197
|
-
|
|
198
|
-
1. Append a `turn-received` event to `memory/scrolls/.events/<slug>.jsonl`
|
|
199
|
-
(create the file if absent). Event ids are append-if-absent and MUST match
|
|
200
|
-
the Claude corpus exactly — both runtimes share one event log:
|
|
201
|
-
`turn.id = respondent + '|' + base_version + '|' + date + '|' + digest`;
|
|
202
|
-
digest = FNV-1a 32-bit hex over the UTF-8 bytes of
|
|
203
|
-
`JSON.stringify([respondent, String(base_version), date, sortedAnswers,
|
|
204
|
-
sortedOpens])` where `sortedAnswers` = answers sorted by fork id, each
|
|
205
|
-
mapped to `[fork, pick-or-UNDECIDED, note-or-empty]` for single,
|
|
206
|
-
`[fork, sorted-picks-array, note-or-empty]` for multi, or
|
|
207
|
-
`[fork, ordered-rank-tiers-with-each-tie-sorted, note-or-empty]` for rank,
|
|
208
|
-
or `[fork, position-or-UNDECIDED, note-or-empty]` for spectrum (labels are excluded),
|
|
209
|
-
and `sortedOpens` = opens sorted by prompt id, each mapped to
|
|
210
|
-
`[prompt, text-or-UNDECIDED]`; every string is NFC-normalized and
|
|
211
|
-
CRLF→LF-normalized before hashing. Legacy single turn ids remain unchanged.
|
|
212
|
-
Record `submitted_by: <paster>` on the
|
|
213
|
-
event (event-log metadata only — never projected into a published ledger)
|
|
214
|
-
and `merged_into: "pending"`.
|
|
215
|
-
2. Do NOT absorb: no `memory/knowledge/decisions/` writes, no spec/plan edits,
|
|
216
|
-
no face rewrite, no version bump, no republish of new content. Republishing
|
|
217
|
-
the unchanged current version to acknowledge the turn is allowed and appends
|
|
218
|
-
no version event.
|
|
219
|
-
3. In connected mode, follow `.claude/context/notification-consent.md` and
|
|
220
|
-
prepare a direct notification to the creator without sending:
|
|
221
|
-
`bash bin/notify.sh plan send <creator> "<paster> answered your scroll
|
|
222
|
-
<slug> (vN): <digest> — pending your review"`. Show a separate exact Send /
|
|
223
|
-
Edit / Cancel checkpoint. In local mode, write an addressed handoff in
|
|
224
|
-
`memory/handoffs/` naming the scroll,
|
|
225
|
-
paster, base version, digest, and the dispositions below. The contributor
|
|
226
|
-
may also send the artifact link directly.
|
|
227
|
-
4. Report the gated state and stop.
|
|
228
|
-
|
|
229
|
-
**Creator review.** The creator disposes in chat: **accept** (absorb into the
|
|
230
|
-
next version), **decline — <reason>** (mandatory nonblank note; refuse a
|
|
231
|
-
decline without one), per-answer overrides (top-level disposition is the
|
|
232
|
-
default, listed answers override; a turn with zero effectively accepted answers
|
|
233
|
-
is a plain decline; a zero-answer turn takes the top-level disposition), or
|
|
234
|
-
**synthesize** (compose one proposal from all pending turns — consensus
|
|
235
|
-
decides, conflicts become new explicit forks — and publish only on creator
|
|
236
|
-
approval). Every disposition appends `turn-reviewed`
|
|
237
|
-
`{type, turn, disposition: accepted|declined, by, date, note?, answers?}` with
|
|
238
|
-
id `review|<turn.id>` before any composition. An accepted turn stays pending
|
|
239
|
-
until a version actually absorbs it. Declined turns are never absorbed, stay
|
|
240
|
-
attributed in the log, and their reason travels with them. The creator's own
|
|
241
|
-
returns and trusted respondents keep the immediate loop below.
|
|
242
|
-
|
|
243
|
-
## Update loop
|
|
244
|
-
|
|
245
|
-
On a returned block (creator or trusted paster — gated returns stop above):
|
|
246
|
-
|
|
247
|
-
1. **Absorb.** Parse Q/O lines and notes. Write durable decisions with their
|
|
248
|
-
reasoning to `memory/knowledge/decisions/`, update the underlying spec or
|
|
249
|
-
plan, and add connected HarvestTurn records when available. `UNDECIDED` is a
|
|
250
|
-
valid answer.
|
|
251
|
-
2. **Rewrite the face.** Weave settled answers and reasoning into fresh prose,
|
|
252
|
-
mark them `decided v<N> · <date>`, and update linked cost cards to accepted,
|
|
253
|
-
mitigated, or remaining residuals. Re-evaluate every optional face module by
|
|
254
|
-
the fit rule above.
|
|
255
|
-
3. **Regenerate the harvest.** Retire answered cards. Carry an undecided fork
|
|
256
|
-
once at most; after two undecided returns, reframe it or demote it to an open
|
|
257
|
-
prompt. If its note actually resolves it, absorb the note as the decision.
|
|
258
|
-
Mint new forks from newly unlocked consequences, respondent requests, and
|
|
259
|
-
new ground truth. Treat an answer outside the listed options as a candidate
|
|
260
|
-
option at review, never as the nearest pick.
|
|
261
|
-
4. **Show, then ask.** When abstract forks run dry or the respondent asks for
|
|
262
|
-
something concrete, place only the relevant draft or excerpt in the
|
|
263
|
-
decisions view and ask grounded open prompts beside selected material. This
|
|
264
|
-
is a selective authoring move, not a standing interaction mode: never make
|
|
265
|
-
every face section reactable, add question controls to the readable face,
|
|
266
|
-
or ask generic ready/not-ready verdicts.
|
|
267
|
-
5. **Version.** Bump every version marker, update the copydock, and append a
|
|
268
|
-
one-line changelog with absorbed and newly opened forks.
|
|
269
|
-
6. **Republish.** Publish to the same stable id, update the quest record, open
|
|
270
|
-
the refreshed URL, and state what changed and what the new version asks.
|
|
271
|
-
|
|
272
|
-
Multiple returns against one version are separate turns. Merge compatible
|
|
273
|
-
answers; turn conflicting choices into a new explicit fork instead of silently
|
|
274
|
-
resolving them.
|
|
275
|
-
|
|
276
|
-
## Voice and telemetry
|
|
277
|
-
|
|
278
|
-
Write the face as external-grade Egregore prose: declarative, precise, grounded
|
|
279
|
-
in real numbers, and honest about costs. Put metaphor in visuals rather than
|
|
280
|
-
labels; prefer established terms over coinages.
|
|
281
|
-
|
|
282
|
-
After completion, emit telemetry best-effort:
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
bash bin/telemetry.sh emit "command" '{"command":"scroll"}' 2>/dev/null &
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
Never call the deprecated `egregore-handoff` CLI.
|