@mean-weasel/lineage 0.1.21-rc.3 → 0.1.22
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/CHANGELOG.md +13 -0
- package/MANUAL_INSTALL_DOGFOOD.md +340 -0
- package/README.md +38 -9
- package/dist/runtime-build.json +4 -4
- package/dist/web/assets/{app-thn9NlgT.js → app-D-7R33Mc.js} +1 -1
- package/dist/web/assets/landing-DIjBBL33.js +2 -0
- package/dist/web/assets/{landing-Dmkx4R_N.css → landing-wy4L-yBm.css} +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/landing/index.html +2 -2
- package/package.json +2 -1
- package/dist/web/assets/landing-CPZnU7M8.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.22
|
|
4
|
+
|
|
5
|
+
- Harden the landing page, README, and packaged manual dogfood guide with fail-fast first-run commands that complete the post-initialization runtime, profile, database, and service identity gate.
|
|
6
|
+
- Isolate bootstrap dependencies from stable and preview shims so repeat and coexisting channel installs cannot clobber their launchers.
|
|
7
|
+
- Package and scan the manual install runbook, and make the Node.js 22.22+ requirement explicit for the independently published Codex plugin installer.
|
|
8
|
+
- Stabilize the rich-demo browser readiness proof so delayed workspace discovery cannot race the media download check.
|
|
9
|
+
- Make plugin-installer dist-tag promotion verification tolerate npm registry propagation while still failing closed on the wrong version.
|
|
10
|
+
|
|
11
|
+
## 0.1.21
|
|
12
|
+
|
|
13
|
+
- Make immutable annotated tags on reviewed `main` the sole authority for matching npm and GitHub releases, with verified plugin assets built before publication and stable/prerelease channels selected directly from SemVer.
|
|
14
|
+
- Harden the tag-triggered workflow against synthetic checkout refs and require GitHub credentials for the assets-first npm publication proof.
|
|
15
|
+
|
|
3
16
|
## 0.1.21-rc.3
|
|
4
17
|
|
|
5
18
|
- Pass the workflow GitHub token into npm publication so the assets-first release guard can verify the matching prerelease tarball and checksum before publishing.
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# Hermetic manual install dogfood
|
|
2
|
+
|
|
3
|
+
Use this runbook to exercise the public first-user journey without modifying an
|
|
4
|
+
existing Lineage runtime, profile, database, service, npm prefix, cache, or
|
|
5
|
+
Codex home. Use synthetic demo data only. Never place credentials, customer
|
|
6
|
+
content, private media, or a live SQLite database in the dogfood root.
|
|
7
|
+
|
|
8
|
+
Run one channel at a time. The primary public journey is `stable`; stop it and
|
|
9
|
+
finish its evidence before beginning a separate checkout-only `dev` journey.
|
|
10
|
+
|
|
11
|
+
## Prepare isolated roots
|
|
12
|
+
|
|
13
|
+
Create one owner-only temporary root:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
DOGFOOD_ROOT="$(mktemp -d /tmp/lineage-manual-dogfood.XXXXXX)"
|
|
17
|
+
chmod 700 "$DOGFOOD_ROOT"
|
|
18
|
+
|
|
19
|
+
DOGFOOD_HOME="$DOGFOOD_ROOT/home"
|
|
20
|
+
DOGFOOD_NPM_PREFIX="$DOGFOOD_ROOT/npm-global"
|
|
21
|
+
DOGFOOD_NPM_CACHE="$DOGFOOD_ROOT/npm-cache"
|
|
22
|
+
DOGFOOD_RUNTIME_ROOT="$DOGFOOD_ROOT/runtimes"
|
|
23
|
+
DOGFOOD_PROFILE_ROOT="$DOGFOOD_ROOT/profiles"
|
|
24
|
+
DOGFOOD_SERVICE_ROOT="$DOGFOOD_ROOT/services"
|
|
25
|
+
DOGFOOD_CODEX_HOME="$DOGFOOD_ROOT/codex-home"
|
|
26
|
+
DOGFOOD_BASE_PATH="$PATH"
|
|
27
|
+
DOGFOOD_PROFILE="manual-stable"
|
|
28
|
+
DOGFOOD_PORT="5297"
|
|
29
|
+
DOGFOOD_ORIGIN="http://127.0.0.1:$DOGFOOD_PORT"
|
|
30
|
+
|
|
31
|
+
mkdir -p \
|
|
32
|
+
"$DOGFOOD_HOME" \
|
|
33
|
+
"$DOGFOOD_NPM_PREFIX" \
|
|
34
|
+
"$DOGFOOD_NPM_CACHE" \
|
|
35
|
+
"$DOGFOOD_RUNTIME_ROOT" \
|
|
36
|
+
"$DOGFOOD_PROFILE_ROOT" \
|
|
37
|
+
"$DOGFOOD_SERVICE_ROOT" \
|
|
38
|
+
"$DOGFOOD_CODEX_HOME"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Keep isolation scoped to each child process instead of exporting it over the
|
|
42
|
+
maintainer's normal shell:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
run_lineage_dogfood() {
|
|
46
|
+
env \
|
|
47
|
+
HOME="$DOGFOOD_HOME" \
|
|
48
|
+
CODEX_HOME="$DOGFOOD_CODEX_HOME" \
|
|
49
|
+
LINEAGE_RUNTIME_ROOT="$DOGFOOD_RUNTIME_ROOT" \
|
|
50
|
+
LINEAGE_PROFILE_ROOT="$DOGFOOD_PROFILE_ROOT" \
|
|
51
|
+
LINEAGE_SERVICE_ROOT="$DOGFOOD_SERVICE_ROOT" \
|
|
52
|
+
npm_config_cache="$DOGFOOD_NPM_CACHE" \
|
|
53
|
+
npm_config_prefix="$DOGFOOD_NPM_PREFIX" \
|
|
54
|
+
PATH="$DOGFOOD_NPM_PREFIX/bin:$DOGFOOD_RUNTIME_ROOT/bin:$DOGFOOD_BASE_PATH" \
|
|
55
|
+
"$@"
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Confirm the chosen port is unused before profile initialization:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
lsof -nP -iTCP:"$DOGFOOD_PORT" -sTCP:LISTEN
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Choose another port if that prints a listener. The service origin becomes part
|
|
66
|
+
of the immutable profile identity.
|
|
67
|
+
|
|
68
|
+
## Install the published stable channel
|
|
69
|
+
|
|
70
|
+
Record the prerequisites and registry selection:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
run_lineage_dogfood node --version
|
|
74
|
+
run_lineage_dogfood npm --version
|
|
75
|
+
run_lineage_dogfood codex --version
|
|
76
|
+
run_lineage_dogfood npm view @mean-weasel/lineage dist-tags version engines --json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Install the same global bootstrap and isolated stable runtime documented in the
|
|
80
|
+
public first run:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
run_lineage_dogfood npm install --global @mean-weasel/lineage@latest
|
|
84
|
+
run_lineage_dogfood lineage-channel install stable \
|
|
85
|
+
--root "$DOGFOOD_RUNTIME_ROOT" \
|
|
86
|
+
--shim-dir "$DOGFOOD_RUNTIME_ROOT/bin" \
|
|
87
|
+
--json
|
|
88
|
+
run_lineage_dogfood lineage-stable runtime doctor --json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Require `stable`, `package`, `verified: true`, and code/receipt paths beneath
|
|
92
|
+
`$DOGFOOD_RUNTIME_ROOT`. Stop if the launcher resolves into a checkout or any
|
|
93
|
+
normal user data root.
|
|
94
|
+
|
|
95
|
+
## Initialize and gate the fresh profile
|
|
96
|
+
|
|
97
|
+
Fresh-profile bootstrap exception: profile doctor and `db info` cannot pass
|
|
98
|
+
before the profile exists. Runtime doctor is therefore the only pre-init
|
|
99
|
+
identity check. Initialize atomically, then immediately complete the full gate:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
run_lineage_dogfood lineage-stable profile init \
|
|
103
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
104
|
+
--service-origin "$DOGFOOD_ORIGIN" \
|
|
105
|
+
--confirm-write \
|
|
106
|
+
--json
|
|
107
|
+
|
|
108
|
+
run_lineage_dogfood lineage-stable runtime doctor --json
|
|
109
|
+
run_lineage_dogfood lineage-stable profile doctor \
|
|
110
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
111
|
+
--json
|
|
112
|
+
run_lineage_dogfood lineage-stable db info \
|
|
113
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
114
|
+
--json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Require the runtime fingerprint, profile ID/environment/fingerprint, database
|
|
118
|
+
identity, and service origin to agree. Database and media paths must remain
|
|
119
|
+
beneath `$DOGFOOD_PROFILE_ROOT`. Offline database information should report
|
|
120
|
+
`process.role: command` and no live service object.
|
|
121
|
+
|
|
122
|
+
Repeat `profile init` once as a negative check. It must refuse to overwrite the
|
|
123
|
+
existing profile and print reuse or profile doctor guidance.
|
|
124
|
+
|
|
125
|
+
## Exercise foreground startup and the app
|
|
126
|
+
|
|
127
|
+
Start the exact public foreground command:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
run_lineage_dogfood lineage-stable start --profile "$DOGFOOD_PROFILE"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Open `$DOGFOOD_ORIGIN` in a browser. Record:
|
|
134
|
+
|
|
135
|
+
1. Runtime Settings show the exact stable package, profile, database, media
|
|
136
|
+
root, and service origin from the gate.
|
|
137
|
+
2. **Load demo lineage** produces 10 nodes and 9 edges.
|
|
138
|
+
3. **Load rich image demo** produces 14 nodes, 13 edges, and 14 PNG previews.
|
|
139
|
+
4. No preview is broken and no stale empty-lineage message remains.
|
|
140
|
+
5. Browser console errors and terminal warnings are copied verbatim.
|
|
141
|
+
6. A screenshot contains only synthetic demo content and temporary paths.
|
|
142
|
+
|
|
143
|
+
Stop with Ctrl-C and confirm the port closes.
|
|
144
|
+
|
|
145
|
+
## Exercise managed lifecycle and CLI handoff
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
run_lineage_dogfood lineage-stable-service start \
|
|
149
|
+
--channel stable \
|
|
150
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
151
|
+
--json
|
|
152
|
+
run_lineage_dogfood lineage-stable-service status \
|
|
153
|
+
--channel stable \
|
|
154
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
155
|
+
--json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Require the managed receipt and `/api/runtime` to agree on the service instance,
|
|
159
|
+
code fingerprint, profile/database fingerprints, and origin. Repeat `start` and
|
|
160
|
+
require the same healthy instance. Confirm both demo workspaces survived the
|
|
161
|
+
foreground restart.
|
|
162
|
+
|
|
163
|
+
Use the rich-demo root returned by the app:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
run_lineage_dogfood lineage-stable next \
|
|
167
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
168
|
+
--project demo-project \
|
|
169
|
+
--root "<rich-root-id>" \
|
|
170
|
+
--json
|
|
171
|
+
run_lineage_dogfood lineage-stable brief \
|
|
172
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
173
|
+
--project demo-project \
|
|
174
|
+
--root "<rich-root-id>" \
|
|
175
|
+
--json
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Generated handoff commands must retain `lineage-stable` and the selected
|
|
179
|
+
temporary profile.
|
|
180
|
+
|
|
181
|
+
## Exercise the optional Codex plugin
|
|
182
|
+
|
|
183
|
+
Install and doctor only the temporary Codex home:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
run_lineage_dogfood npx --yes \
|
|
187
|
+
@mean-weasel/lineage-plugin-installer@latest \
|
|
188
|
+
install \
|
|
189
|
+
--channel latest \
|
|
190
|
+
--codex-home "$DOGFOOD_CODEX_HOME" \
|
|
191
|
+
--json
|
|
192
|
+
run_lineage_dogfood npx --yes \
|
|
193
|
+
@mean-weasel/lineage-plugin-installer@latest \
|
|
194
|
+
doctor \
|
|
195
|
+
--channel latest \
|
|
196
|
+
--codex-home "$DOGFOOD_CODEX_HOME" \
|
|
197
|
+
--json
|
|
198
|
+
run_lineage_dogfood codex plugin list --json
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Require `lineage-codex-plugin@lineage` at the exact installed Lineage version,
|
|
202
|
+
installed and enabled. Repeat installation once to prove safe reinstall, then
|
|
203
|
+
remove only the temporary registration:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
run_lineage_dogfood codex plugin remove \
|
|
207
|
+
lineage-codex-plugin@lineage \
|
|
208
|
+
--json
|
|
209
|
+
run_lineage_dogfood codex plugin marketplace remove lineage --json
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Do not restart a normal Codex desktop session against this temporary home.
|
|
213
|
+
|
|
214
|
+
## Stop, recheck, and clean up
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
run_lineage_dogfood lineage-stable-service stop \
|
|
218
|
+
--channel stable \
|
|
219
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
220
|
+
--json
|
|
221
|
+
run_lineage_dogfood lineage-stable profile doctor \
|
|
222
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
223
|
+
--json
|
|
224
|
+
run_lineage_dogfood lineage-stable db info \
|
|
225
|
+
--profile "$DOGFOOD_PROFILE" \
|
|
226
|
+
--json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
The origin must be unreachable after stop, while the offline profile and
|
|
230
|
+
database checks still pass. Preserve the root for inspection on any failure.
|
|
231
|
+
After a clean pass and sanitized report, remove only the validated target:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
case "$DOGFOOD_ROOT" in
|
|
235
|
+
/tmp/lineage-manual-dogfood.*)
|
|
236
|
+
rm -rf -- "$DOGFOOD_ROOT"
|
|
237
|
+
;;
|
|
238
|
+
*)
|
|
239
|
+
echo "Refusing unexpected cleanup target: $DOGFOOD_ROOT"
|
|
240
|
+
exit 1
|
|
241
|
+
;;
|
|
242
|
+
esac
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Separate source-development journey
|
|
246
|
+
|
|
247
|
+
Create a second temporary root with a different profile, service origin, npm
|
|
248
|
+
cache, and Codex home. Do not reuse the stable profile or database:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
DEV_DOGFOOD_ROOT="$(mktemp -d /tmp/lineage-manual-dev-dogfood.XXXXXX)"
|
|
252
|
+
chmod 700 "$DEV_DOGFOOD_ROOT"
|
|
253
|
+
|
|
254
|
+
DEV_DOGFOOD_HOME="$DEV_DOGFOOD_ROOT/home"
|
|
255
|
+
DEV_DOGFOOD_NPM_CACHE="$DEV_DOGFOOD_ROOT/npm-cache"
|
|
256
|
+
DEV_DOGFOOD_RUNTIME_ROOT="$DEV_DOGFOOD_ROOT/runtimes"
|
|
257
|
+
DEV_DOGFOOD_PROFILE_ROOT="$DEV_DOGFOOD_ROOT/profiles"
|
|
258
|
+
DEV_DOGFOOD_SERVICE_ROOT="$DEV_DOGFOOD_ROOT/services"
|
|
259
|
+
DEV_DOGFOOD_CODEX_HOME="$DEV_DOGFOOD_ROOT/codex-home"
|
|
260
|
+
DEV_DOGFOOD_BASE_PATH="$PATH"
|
|
261
|
+
DEV_DOGFOOD_PROFILE="manual-development"
|
|
262
|
+
DEV_DOGFOOD_PORT="5298"
|
|
263
|
+
DEV_DOGFOOD_ORIGIN="http://127.0.0.1:$DEV_DOGFOOD_PORT"
|
|
264
|
+
|
|
265
|
+
mkdir -p \
|
|
266
|
+
"$DEV_DOGFOOD_HOME" \
|
|
267
|
+
"$DEV_DOGFOOD_NPM_CACHE" \
|
|
268
|
+
"$DEV_DOGFOOD_RUNTIME_ROOT" \
|
|
269
|
+
"$DEV_DOGFOOD_PROFILE_ROOT" \
|
|
270
|
+
"$DEV_DOGFOOD_SERVICE_ROOT" \
|
|
271
|
+
"$DEV_DOGFOOD_CODEX_HOME"
|
|
272
|
+
|
|
273
|
+
run_lineage_dev_dogfood() {
|
|
274
|
+
env \
|
|
275
|
+
HOME="$DEV_DOGFOOD_HOME" \
|
|
276
|
+
CODEX_HOME="$DEV_DOGFOOD_CODEX_HOME" \
|
|
277
|
+
LINEAGE_RUNTIME_ROOT="$DEV_DOGFOOD_RUNTIME_ROOT" \
|
|
278
|
+
LINEAGE_PROFILE_ROOT="$DEV_DOGFOOD_PROFILE_ROOT" \
|
|
279
|
+
LINEAGE_SERVICE_ROOT="$DEV_DOGFOOD_SERVICE_ROOT" \
|
|
280
|
+
npm_config_cache="$DEV_DOGFOOD_NPM_CACHE" \
|
|
281
|
+
PATH="$DEV_DOGFOOD_HOME/.local/bin:$DEV_DOGFOOD_BASE_PATH" \
|
|
282
|
+
"$@"
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
Confirm that `$DEV_DOGFOOD_PORT` is unused, choosing a different port if
|
|
287
|
+
necessary. Then perform every source command through the wrapper:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
run_lineage_dev_dogfood git clone \
|
|
291
|
+
https://github.com/mean-weasel/lineage.git \
|
|
292
|
+
"$DEV_DOGFOOD_ROOT/lineage"
|
|
293
|
+
cd "$DEV_DOGFOOD_ROOT/lineage"
|
|
294
|
+
run_lineage_dev_dogfood npm ci
|
|
295
|
+
run_lineage_dev_dogfood npm run lineage:dev -- runtime doctor --json
|
|
296
|
+
run_lineage_dev_dogfood npm run lineage:dev -- profile init \
|
|
297
|
+
--profile "$DEV_DOGFOOD_PROFILE" \
|
|
298
|
+
--service-origin "$DEV_DOGFOOD_ORIGIN" \
|
|
299
|
+
--confirm-write \
|
|
300
|
+
--json
|
|
301
|
+
run_lineage_dev_dogfood npm run lineage:dev -- runtime doctor --json
|
|
302
|
+
run_lineage_dev_dogfood npm run lineage:dev -- profile doctor \
|
|
303
|
+
--profile "$DEV_DOGFOOD_PROFILE" \
|
|
304
|
+
--json
|
|
305
|
+
run_lineage_dev_dogfood npm run lineage:dev -- db info \
|
|
306
|
+
--profile "$DEV_DOGFOOD_PROFILE" \
|
|
307
|
+
--json
|
|
308
|
+
run_lineage_dev_dogfood npm run dev -- --profile "$DEV_DOGFOOD_PROFILE"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Repeat the synthetic demo, restart, Settings, and CLI checks. Then stop the
|
|
312
|
+
foreground process and prove the bundled managed-development path:
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
run_lineage_dev_dogfood make install-dev
|
|
316
|
+
run_lineage_dev_dogfood npm run lineage:dev -- runtime doctor --json
|
|
317
|
+
run_lineage_dev_dogfood make start-dev-bg \
|
|
318
|
+
LINEAGE_DEV_PROFILE="$DEV_DOGFOOD_PROFILE"
|
|
319
|
+
run_lineage_dev_dogfood make status-dev \
|
|
320
|
+
LINEAGE_DEV_PROFILE="$DEV_DOGFOOD_PROFILE"
|
|
321
|
+
run_lineage_dev_dogfood make stop-dev \
|
|
322
|
+
LINEAGE_DEV_PROFILE="$DEV_DOGFOOD_PROFILE"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
The final evidence must identify `dev`, `checkout`, and the fresh clone's
|
|
326
|
+
canonical root and fingerprint. It must not match or open the stable database.
|
|
327
|
+
Preserve the temporary root on failure. After a clean pass, remove only the
|
|
328
|
+
guarded development target:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
case "$DEV_DOGFOOD_ROOT" in
|
|
332
|
+
/tmp/lineage-manual-dev-dogfood.*)
|
|
333
|
+
rm -rf -- "$DEV_DOGFOOD_ROOT"
|
|
334
|
+
;;
|
|
335
|
+
*)
|
|
336
|
+
echo "Refusing unexpected cleanup target: $DEV_DOGFOOD_ROOT"
|
|
337
|
+
exit 1
|
|
338
|
+
;;
|
|
339
|
+
esac
|
|
340
|
+
```
|
package/README.md
CHANGED
|
@@ -68,6 +68,11 @@ app, but required to install and activate the Codex plugin; verify that
|
|
|
68
68
|
additional prerequisite with `codex --version` before following the plugin
|
|
69
69
|
step.
|
|
70
70
|
|
|
71
|
+
On the minimum supported Node 22 line, foreground startup can print one
|
|
72
|
+
`ExperimentalWarning` for Node's built-in SQLite module before the healthy
|
|
73
|
+
`Lineage listening` line. Lineage keeps that category-specific warning visible;
|
|
74
|
+
it does not indicate an identity or database failure.
|
|
75
|
+
|
|
71
76
|
### Develop from a fresh clone
|
|
72
77
|
|
|
73
78
|
This is the shortest source-development path with hot reload and isolated
|
|
@@ -76,8 +81,12 @@ development data:
|
|
|
76
81
|
```bash
|
|
77
82
|
git clone https://github.com/mean-weasel/lineage.git
|
|
78
83
|
cd lineage
|
|
79
|
-
npm ci
|
|
80
|
-
npm run lineage:dev --
|
|
84
|
+
npm ci &&
|
|
85
|
+
npm run lineage:dev -- runtime doctor --json &&
|
|
86
|
+
npm run lineage:dev -- profile init --profile team-development --confirm-write --json &&
|
|
87
|
+
npm run lineage:dev -- runtime doctor --json &&
|
|
88
|
+
npm run lineage:dev -- profile doctor --profile team-development --json &&
|
|
89
|
+
npm run lineage:dev -- db info --profile team-development --json &&
|
|
81
90
|
npm run dev -- --profile team-development
|
|
82
91
|
```
|
|
83
92
|
|
|
@@ -94,19 +103,25 @@ Use the currently published npm dist-tags when you want installed rather than
|
|
|
94
103
|
checkout code:
|
|
95
104
|
|
|
96
105
|
```bash
|
|
97
|
-
npm install -g @mean-weasel/lineage@latest
|
|
98
|
-
lineage-channel install stable
|
|
99
|
-
lineage-stable runtime doctor --json
|
|
100
|
-
lineage-stable profile init --profile team-production --confirm-write --json
|
|
106
|
+
npm install -g @mean-weasel/lineage@latest &&
|
|
107
|
+
lineage-channel install stable &&
|
|
108
|
+
lineage-stable runtime doctor --json &&
|
|
109
|
+
lineage-stable profile init --profile team-production --confirm-write --json &&
|
|
110
|
+
lineage-stable runtime doctor --json &&
|
|
111
|
+
lineage-stable profile doctor --profile team-production --json &&
|
|
112
|
+
lineage-stable db info --profile team-production --json &&
|
|
101
113
|
lineage-stable start --profile team-production
|
|
102
114
|
```
|
|
103
115
|
|
|
104
116
|
Preview is independent and must use its own runtime root and profile:
|
|
105
117
|
|
|
106
118
|
```bash
|
|
107
|
-
lineage-channel install preview
|
|
108
|
-
lineage-preview runtime doctor --json
|
|
109
|
-
lineage-preview profile init --profile team-preview --confirm-write --json
|
|
119
|
+
lineage-channel install preview &&
|
|
120
|
+
lineage-preview runtime doctor --json &&
|
|
121
|
+
lineage-preview profile init --profile team-preview --confirm-write --json &&
|
|
122
|
+
lineage-preview runtime doctor --json &&
|
|
123
|
+
lineage-preview profile doctor --profile team-preview --json &&
|
|
124
|
+
lineage-preview db info --profile team-preview --json &&
|
|
110
125
|
lineage-preview start --profile team-preview
|
|
111
126
|
```
|
|
112
127
|
|
|
@@ -128,6 +143,10 @@ If doctor fails, it prints a version-pinned remediation command for that same
|
|
|
128
143
|
Codex home. For verification, use a temporary `--codex-home`; do not test an
|
|
129
144
|
installer against your real Codex profile.
|
|
130
145
|
|
|
146
|
+
Maintainers can exercise the complete published and source journeys without
|
|
147
|
+
touching an existing Lineage or Codex installation by following the
|
|
148
|
+
[hermetic manual install dogfood runbook](MANUAL_INSTALL_DOGFOOD.md).
|
|
149
|
+
|
|
131
150
|
## Package Channels
|
|
132
151
|
|
|
133
152
|
Lineage is packaged as `@mean-weasel/lineage`, but stable and preview must not
|
|
@@ -175,6 +194,12 @@ lineage-preview profile init --profile team-preview --confirm-write --json
|
|
|
175
194
|
npm run lineage:dev -- profile init --profile team-development --confirm-write --json
|
|
176
195
|
```
|
|
177
196
|
|
|
197
|
+
Fresh-profile bootstrap exception: because profile doctor and `db info` cannot
|
|
198
|
+
pass before a profile and database exist, run runtime doctor first, perform the
|
|
199
|
+
atomic `profile init`, and then immediately run runtime doctor, profile doctor,
|
|
200
|
+
and `db info --profile <profile> --json`. Do not start a service or perform
|
|
201
|
+
another write until that post-init gate passes.
|
|
202
|
+
|
|
178
203
|
`profile init` derives the environment and exact verified code pin from the
|
|
179
204
|
launcher, creates owner-only media and SQLite paths, binds the new database
|
|
180
205
|
identity, and publishes the profile manifest only after those steps succeed.
|
|
@@ -614,6 +639,10 @@ and then cleans up.
|
|
|
614
639
|
|
|
615
640
|
The root `Makefile` provides memorable wrappers for common setup, startup, and
|
|
616
641
|
verification commands. Run `make` or `make help` to list the available targets.
|
|
642
|
+
`make install-prod` and `make install-preview` bootstrap the published
|
|
643
|
+
`@mean-weasel/lineage@latest` package under the isolated runtime root before
|
|
644
|
+
creating the channel runtime and its launchers, so they work from a fresh clone
|
|
645
|
+
without checkout build artifacts or overwriting an existing channel launcher.
|
|
617
646
|
|
|
618
647
|
```bash
|
|
619
648
|
make install-prod
|
package/dist/runtime-build.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"build_fingerprint": "
|
|
2
|
+
"build_fingerprint": "f1dd9715d725c348a752b41311a8ea775d69046bb4455a1541d5a991c606cfc2",
|
|
3
3
|
"package_name": "@mean-weasel/lineage",
|
|
4
|
-
"package_version": "0.1.
|
|
4
|
+
"package_version": "0.1.22",
|
|
5
5
|
"schema_version": "lineage.runtime_build.v1",
|
|
6
6
|
"source_dirty": false,
|
|
7
|
-
"source_fingerprint": "
|
|
8
|
-
"source_git_sha": "
|
|
7
|
+
"source_fingerprint": "196c2f9e492cb0eb22a485c74a2747fc2179315a2746466e970f89c507e6048b",
|
|
8
|
+
"source_git_sha": "ff38ca8fca7fa4c8ad1cde6a700332a9118b1f00"
|
|
9
9
|
}
|