@outerlayer/cli 0.33.0-next.20261023030517 → 0.33.0-next.20261023120437
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/README.md +3 -2
- package/dist/{agent-setup-APFM4MZ4.js → agent-setup-YHEW3WXB.js} +10 -10
- package/dist/{artifact-link-cmd-IHHMU4EA.js → artifact-link-cmd-7FYKWA7J.js} +2 -2
- package/dist/{build-disk-55M4ZMDX.js → build-disk-ECTLWTPC.js} +4 -4
- package/dist/build-info.json +1 -1
- package/dist/{builder-DQZCPB7J.js → builder-LUPHKUFM.js} +3 -3
- package/dist/{check-AEMFDR55.js → check-4QNLMDP7.js} +27 -27
- package/dist/{chunk-X62C7V4B.js → chunk-2JLM4GUF.js} +12 -12
- package/dist/{chunk-M24H6JQW.js → chunk-44V5SD4G.js} +1 -1
- package/dist/{chunk-C66Q2CLW.js → chunk-5M2J7B5N.js} +2 -2
- package/dist/{chunk-PNIFQX73.js → chunk-6CXNWKWD.js} +1 -1
- package/dist/{chunk-UAJYWZ2F.js → chunk-6SPD266O.js} +3 -3
- package/dist/{chunk-4NKHOCTF.js → chunk-7IFYI7XF.js} +3 -3
- package/dist/{chunk-HUBRTT2C.js → chunk-7UPMYRPS.js} +4 -4
- package/dist/{chunk-X37GC7DM.js → chunk-7V5GUEDU.js} +1 -1
- package/dist/{chunk-2WZ66FXA.js → chunk-AKZRGFGT.js} +3 -3
- package/dist/{chunk-T4S2DVOA.js → chunk-D3EDZPJR.js} +5 -5
- package/dist/{chunk-35DSTT37.js → chunk-DKFUXYGD.js} +4 -4
- package/dist/{chunk-7HZH5D7H.js → chunk-EHOFFTVX.js} +2 -2
- package/dist/{chunk-6ANIBEQ6.js → chunk-EJL6CWSP.js} +6 -6
- package/dist/{chunk-UHFU3CBN.js → chunk-EXZACZ2P.js} +1 -1
- package/dist/{chunk-V7Q5OKN7.js → chunk-F2D5BSXS.js} +27 -2
- package/dist/{chunk-C7WGCI77.js → chunk-FT7MUQGO.js} +2 -2
- package/dist/{chunk-AXIK6F52.js → chunk-FZUFUVLK.js} +13 -13
- package/dist/{chunk-M3RYZRMH.js → chunk-GO2DUPQS.js} +3 -3
- package/dist/{chunk-CCOU4NXE.js → chunk-HLZMAJJD.js} +2 -2
- package/dist/{chunk-GFTWZSOW.js → chunk-IUPY54BZ.js} +10 -10
- package/dist/{chunk-T4TT76GG.js → chunk-JEVKOZBB.js} +1 -1
- package/dist/{chunk-XMPE5TT4.js → chunk-KUE4V2SK.js} +2 -2
- package/dist/{chunk-DHUHQPRQ.js → chunk-L6MDOEHN.js} +7 -7
- package/dist/{chunk-PJI5D2XT.js → chunk-LYGI3T66.js} +2 -2
- package/dist/{chunk-E4F7YE7P.js → chunk-MPC2UAW2.js} +1 -1
- package/dist/{chunk-QQXNS4G2.js → chunk-NIY2UBT6.js} +1 -1
- package/dist/{chunk-QKEOAQ2W.js → chunk-OGMXVPCS.js} +1 -1
- package/dist/{chunk-A5FFANL7.js → chunk-QKNFU5GA.js} +5 -5
- package/dist/{chunk-VJGQEASF.js → chunk-S5CNYXUA.js} +4 -4
- package/dist/{chunk-B6WW6AKO.js → chunk-SQQD5MST.js} +4 -4
- package/dist/{chunk-JB4R5IFJ.js → chunk-UK4RGH46.js} +2 -2
- package/dist/{chunk-PILHDNHX.js → chunk-V673DFOL.js} +4 -4
- package/dist/{chunk-ONUACB5C.js → chunk-VWQCYOBS.js} +2 -2
- package/dist/{chunk-LHKWWEQZ.js → chunk-X4JEBMYN.js} +1 -1
- package/dist/{chunk-Z4GLZTDF.js → chunk-XCRET2GZ.js} +2 -2
- package/dist/{chunk-RLAKWXDK.js → chunk-YGZLRX5U.js} +1 -1
- package/dist/{chunk-67KCGRKA.js → chunk-YSM4EEUK.js} +11 -11
- package/dist/{chunk-5FSVA3CO.js → chunk-YXMGHGHR.js} +5 -5
- package/dist/{chunk-6ZLI652Y.js → chunk-ZF24JN7R.js} +1 -1
- package/dist/{claude-launcher-B55NWRH5.js → claude-launcher-YRPW4SWA.js} +5 -5
- package/dist/{cli-5YT5EL2R.js → cli-BC7JWQUQ.js} +108 -105
- package/dist/{command-DYLRDCGC.js → command-SQ4466SL.js} +19 -19
- package/dist/{config-RRY7DIJG.js → config-MVA7YTFW.js} +5 -5
- package/dist/{connect-cmd-7C6W2SEP.js → connect-cmd-KWXV2CGC.js} +8 -8
- package/dist/{container-start-F7PBMTAL.js → container-start-AQJ64LCF.js} +20 -20
- package/dist/{context-cleanup-EKTPKJJT.js → context-cleanup-A2FGVVPH.js} +3 -3
- package/dist/{context-show-cmd-I5JC7EFH.js → context-show-cmd-6F4UF4ND.js} +9 -9
- package/dist/{control-plane-launch-NOKM6CBH.js → control-plane-launch-7SOH6IMA.js} +6 -6
- package/dist/{dist-LLYL5UCV.js → dist-IG2DKUJJ.js} +2 -2
- package/dist/{docker-W7WWFZ3Q.js → docker-YKYQJHL2.js} +3 -3
- package/dist/{doctor-LYOFFCQS.js → doctor-4YZOP343.js} +20 -20
- package/dist/{emit-artifact-cmd-RO34UG7A.js → emit-artifact-cmd-6QTTWBVN.js} +13 -13
- package/dist/{emit-cmd-GY7Z26DY.js → emit-cmd-3FG7FEGO.js} +6 -6
- package/dist/{emit-criteria-cmd-Y36QCPAM.js → emit-criteria-cmd-22VVCL2W.js} +10 -10
- package/dist/{emit-demo-cmd-YMWVF5U4.js → emit-demo-cmd-IQRS7BP2.js} +168 -46
- package/dist/{emit-finding-cmd-MH3ZWUNV.js → emit-finding-cmd-TXDPJFVT.js} +10 -10
- package/dist/{emit-result-cmd-ZARZZZ3Y.js → emit-result-cmd-QHJDUC7J.js} +12 -12
- package/dist/{emit-step-cmd-A6HQJDBY.js → emit-step-cmd-TQCOLXAA.js} +10 -10
- package/dist/{findings-cmd-OLLBWJXJ.js → findings-cmd-EURKADAY.js} +10 -10
- package/dist/{fleet-readiness-VB5QSFSY.js → fleet-readiness-GXDSFTLP.js} +8 -8
- package/dist/{governing-source-ZX7VXTOA.js → governing-source-IRRP7G5G.js} +13 -13
- package/dist/{hook-fast-4RYMBFPO.js → hook-fast-3IYSWDL4.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-BQCGL7UD.js → init-63X6ECKF.js} +19 -19
- package/dist/{init-NCCMB2UE.js → init-T64C4MID.js} +19 -19
- package/dist/{init-cmd-OW2L5HTI.js → init-cmd-7CGCDLBZ.js} +18 -18
- package/dist/{init-update-7LUMOECE.js → init-update-LFKSC6Y4.js} +17 -17
- package/dist/{install-5BQ3TFBT.js → install-47Z7VNWP.js} +6 -6
- package/dist/{layout-RGVPCX7Y.js → layout-44S4OYLK.js} +4 -4
- package/dist/{login-browser-BC2Z5QKG.js → login-browser-BJZYKWHF.js} +2 -2
- package/dist/{loop-BU634Y6A.js → loop-YJF27PUS.js} +27 -27
- package/dist/{machine-RI4KHRYP.js → machine-VBITNWTR.js} +19 -19
- package/dist/{machine-skills-CS5HAQHF.js → machine-skills-GOKW3U5N.js} +4 -4
- package/dist/{runner-env-QSLLOFNF.js → runner-env-ILP6BAC2.js} +7 -7
- package/dist/{runner-identity-DQAXW4DL.js → runner-identity-MF3AYBR6.js} +3 -3
- package/dist/{runner-key-UWL475RU.js → runner-key-5SGBLTDJ.js} +19 -19
- package/dist/{session-sender-OGDUJ2KK.js → session-sender-2DYAJIMM.js} +13 -13
- package/dist/{spec-cmd-WB4UOFPG.js → spec-cmd-E6SINBX6.js} +11 -11
- package/dist/{starter-pack-XHATFTO3.js → starter-pack-FWTXE6XB.js} +5 -5
- package/dist/{status-GFZFND6L.js → status-AYHBGIAP.js} +24 -24
- package/dist/{sync-cmd-GPZD2C45.js → sync-cmd-NGX2PGIW.js} +12 -12
- package/dist/{watch-5I3GURXY.js → watch-ZIWZVU3Z.js} +12 -12
- package/dist/{work-claim-cmd-J52UVCAF.js → work-claim-cmd-CIVWB7EJ.js} +15 -15
- package/dist/{work-cmd-PQZ5RYDB.js → work-cmd-OO6K6ELP.js} +10 -10
- package/dist/{work-comment-cmd-WI6B3IOS.js → work-comment-cmd-SY7NY2CR.js} +10 -10
- package/dist/{work-demo-cmd-3NDGSQKJ.js → work-demo-cmd-Y7EU335L.js} +10 -10
- package/dist/{work-logs-cmd-QCYZ5X5A.js → work-logs-cmd-PWOFLTGD.js} +10 -10
- package/dist/{work-open-pr-cmd-BRDF3ZKL.js → work-open-pr-cmd-AJUTKYWN.js} +11 -11
- package/dist/{work-pr-cmd-WY2TBAKW.js → work-pr-cmd-DH43AH3V.js} +10 -10
- package/dist/{work-proofs-cmd-R25HT6WP.js → work-proofs-cmd-6W6DDAP6.js} +10 -10
- package/dist/{work-stop-cmd-C52JPZ4E.js → work-stop-cmd-WZHBEKE4.js} +10 -10
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +8 -5
- package/skill-pack/maintained/outerlayer-build/references/evidence.md +3 -1
- package/skill-pack/maintained/outerlayer-evidence/SKILL.md +17 -16
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-
|
|
4
|
-
import { resolveCredentials } from './chunk-
|
|
3
|
+
import { itemLabel, runWorkPr, WorkPrCommandError } from './chunk-5M2J7B5N.js';
|
|
4
|
+
import { resolveCredentials } from './chunk-YXMGHGHR.js';
|
|
5
5
|
import './chunk-IP7BIBXJ.js';
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
6
|
+
import './chunk-HLZMAJJD.js';
|
|
7
|
+
import './chunk-S5CNYXUA.js';
|
|
8
|
+
import './chunk-MPC2UAW2.js';
|
|
9
|
+
import './chunk-NIY2UBT6.js';
|
|
10
|
+
import './chunk-LYGI3T66.js';
|
|
11
|
+
import './chunk-7V5GUEDU.js';
|
|
12
12
|
import './chunk-G2JWZDFA.js';
|
|
13
13
|
import { C } from './chunk-ANPNT6PM.js';
|
|
14
14
|
import { defaultFetch } from './chunk-6RKD7YZ6.js';
|
|
@@ -17,15 +17,15 @@ import './chunk-SOI6K5DY.js';
|
|
|
17
17
|
import './chunk-PA6CK6WQ.js';
|
|
18
18
|
import './chunk-BALIE3BA.js';
|
|
19
19
|
import './chunk-BJ3KTMDH.js';
|
|
20
|
-
import './chunk-
|
|
20
|
+
import './chunk-44V5SD4G.js';
|
|
21
21
|
import './chunk-5BHIBJDA.js';
|
|
22
22
|
import './chunk-CDDED64E.js';
|
|
23
23
|
import './chunk-RA3O54FC.js';
|
|
24
24
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
25
25
|
import './chunk-WZBHBH3J.js';
|
|
26
26
|
import './chunk-CRB3POP4.js';
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
27
|
+
import './chunk-6CXNWKWD.js';
|
|
28
|
+
import './chunk-F2D5BSXS.js';
|
|
29
29
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
30
30
|
import './chunk-HACGUL52.js';
|
|
31
31
|
import './chunk-MESOOLF4.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-
|
|
3
|
+
export { WorkPrCommandError, itemLabel, runWorkPr } from './chunk-5M2J7B5N.js';
|
|
4
4
|
import './chunk-IP7BIBXJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
5
|
+
import './chunk-HLZMAJJD.js';
|
|
6
|
+
import './chunk-S5CNYXUA.js';
|
|
7
|
+
import './chunk-MPC2UAW2.js';
|
|
8
|
+
import './chunk-NIY2UBT6.js';
|
|
9
|
+
import './chunk-LYGI3T66.js';
|
|
10
|
+
import './chunk-7V5GUEDU.js';
|
|
11
11
|
import './chunk-G2JWZDFA.js';
|
|
12
12
|
import './chunk-ANPNT6PM.js';
|
|
13
13
|
import './chunk-6RKD7YZ6.js';
|
|
@@ -16,15 +16,15 @@ import './chunk-SOI6K5DY.js';
|
|
|
16
16
|
import './chunk-PA6CK6WQ.js';
|
|
17
17
|
import './chunk-BALIE3BA.js';
|
|
18
18
|
import './chunk-BJ3KTMDH.js';
|
|
19
|
-
import './chunk-
|
|
19
|
+
import './chunk-44V5SD4G.js';
|
|
20
20
|
import './chunk-5BHIBJDA.js';
|
|
21
21
|
import './chunk-CDDED64E.js';
|
|
22
22
|
import './chunk-RA3O54FC.js';
|
|
23
23
|
import './chunk-T2Q7ISPE.js';
|
|
24
24
|
import './chunk-WZBHBH3J.js';
|
|
25
25
|
import './chunk-CRB3POP4.js';
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-
|
|
26
|
+
import './chunk-6CXNWKWD.js';
|
|
27
|
+
import './chunk-F2D5BSXS.js';
|
|
28
28
|
import './chunk-VNVZDWO3.js';
|
|
29
29
|
import './chunk-HACGUL52.js';
|
|
30
30
|
import './chunk-MESOOLF4.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { WorkCommandError, resolveCredentials, getJson } from './chunk-
|
|
3
|
+
import { WorkCommandError, resolveCredentials, getJson } from './chunk-YXMGHGHR.js';
|
|
4
4
|
import './chunk-IP7BIBXJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import { sanitizeTerminal } from './chunk-
|
|
8
|
-
import { resolveRepoIdentity } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
5
|
+
import './chunk-HLZMAJJD.js';
|
|
6
|
+
import './chunk-S5CNYXUA.js';
|
|
7
|
+
import { sanitizeTerminal } from './chunk-MPC2UAW2.js';
|
|
8
|
+
import { resolveRepoIdentity } from './chunk-NIY2UBT6.js';
|
|
9
|
+
import './chunk-LYGI3T66.js';
|
|
10
|
+
import './chunk-7V5GUEDU.js';
|
|
11
11
|
import './chunk-G2JWZDFA.js';
|
|
12
12
|
import { C } from './chunk-ANPNT6PM.js';
|
|
13
13
|
import { defaultFetch } from './chunk-6RKD7YZ6.js';
|
|
@@ -16,15 +16,15 @@ import './chunk-SOI6K5DY.js';
|
|
|
16
16
|
import './chunk-PA6CK6WQ.js';
|
|
17
17
|
import './chunk-BALIE3BA.js';
|
|
18
18
|
import './chunk-BJ3KTMDH.js';
|
|
19
|
-
import './chunk-
|
|
19
|
+
import './chunk-44V5SD4G.js';
|
|
20
20
|
import './chunk-5BHIBJDA.js';
|
|
21
21
|
import './chunk-CDDED64E.js';
|
|
22
22
|
import './chunk-RA3O54FC.js';
|
|
23
23
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
24
24
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
25
25
|
import './chunk-CRB3POP4.js';
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-
|
|
26
|
+
import './chunk-6CXNWKWD.js';
|
|
27
|
+
import './chunk-F2D5BSXS.js';
|
|
28
28
|
import './chunk-VNVZDWO3.js';
|
|
29
29
|
import './chunk-HACGUL52.js';
|
|
30
30
|
import './chunk-MESOOLF4.js';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { resolveCredentials, postJson, WorkCommandError } from './chunk-
|
|
3
|
+
import { resolveCredentials, postJson, WorkCommandError } from './chunk-YXMGHGHR.js';
|
|
4
4
|
import './chunk-IP7BIBXJ.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
5
|
+
import './chunk-HLZMAJJD.js';
|
|
6
|
+
import './chunk-S5CNYXUA.js';
|
|
7
|
+
import './chunk-MPC2UAW2.js';
|
|
8
|
+
import './chunk-NIY2UBT6.js';
|
|
9
|
+
import './chunk-LYGI3T66.js';
|
|
10
|
+
import './chunk-7V5GUEDU.js';
|
|
11
11
|
import './chunk-G2JWZDFA.js';
|
|
12
12
|
import './chunk-ANPNT6PM.js';
|
|
13
13
|
import { defaultFetch } from './chunk-6RKD7YZ6.js';
|
|
@@ -16,14 +16,14 @@ import './chunk-SOI6K5DY.js';
|
|
|
16
16
|
import './chunk-PA6CK6WQ.js';
|
|
17
17
|
import './chunk-BALIE3BA.js';
|
|
18
18
|
import './chunk-BJ3KTMDH.js';
|
|
19
|
-
import './chunk-
|
|
19
|
+
import './chunk-44V5SD4G.js';
|
|
20
20
|
import './chunk-5BHIBJDA.js';
|
|
21
21
|
import './chunk-CDDED64E.js';
|
|
22
22
|
import './chunk-RA3O54FC.js';
|
|
23
23
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
24
24
|
import './chunk-CRB3POP4.js';
|
|
25
|
-
import './chunk-
|
|
26
|
-
import './chunk-
|
|
25
|
+
import './chunk-6CXNWKWD.js';
|
|
26
|
+
import './chunk-F2D5BSXS.js';
|
|
27
27
|
import './chunk-VNVZDWO3.js';
|
|
28
28
|
import './chunk-HACGUL52.js';
|
|
29
29
|
import './chunk-MESOOLF4.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@outerlayer/cli",
|
|
3
|
-
"version": "0.33.0-next.
|
|
3
|
+
"version": "0.33.0-next.20261023120437",
|
|
4
4
|
"description": "OuterLayer CLI — commands: init, claude, connect, doctor, login, logout, sync, daemon (alias: watch), emit, findings, work, spec, runner, hooks, mcp, context. Capture and sync coding-agent sessions, and record proof of factory work.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Magu Studios, Inc.",
|
|
@@ -253,19 +253,22 @@ application's own paths. When a state cannot be reached that way, the criterion
|
|
|
253
253
|
is not evidenced, and `evidence.md` says why. Before emitting, look at each
|
|
254
254
|
capture: it shows the application's navigation and real rows.
|
|
255
255
|
|
|
256
|
-
Write the demo, when a criterion needs
|
|
257
|
-
of the change. Put it where the repository keeps its Playwright tests, in the
|
|
256
|
+
Write the demo, when a criterion needs a video or a screenshot, as a Playwright
|
|
257
|
+
test that is part of the change. Put it where the repository keeps its Playwright tests, in the
|
|
258
258
|
folder the instructions name, else in `e2e/demo/`. Name it `*.demo.spec.ts`.
|
|
259
259
|
Commit it in the pull request. The demo record names this test, so an amend
|
|
260
260
|
can run it again at a new head. If the repository's CI cannot start the app,
|
|
261
261
|
mark the file so that CI skips it, as `apps/e2e` does.
|
|
262
262
|
|
|
263
|
-
|
|
264
|
-
`
|
|
263
|
+
Record each criterion that declares `proof: screenshot` as a chapter of the same
|
|
264
|
+
demo, with a `demo.screenshot()` call where the result shows. The frame then
|
|
265
|
+
comes from the committed test, so an amend records it again at the new head. Put
|
|
266
|
+
a capture in a script under `build-reports/evidence/` and run the script only
|
|
267
|
+
when no demo test can reach its state. A later fix can invalidate what
|
|
265
268
|
you captured, and regenerating it must be one command. The scripts go when the
|
|
266
269
|
run's report directory goes. The emitted artifacts outlive the run.
|
|
267
270
|
|
|
268
|
-
Record the criteria that declare `proof: video` as one demo, as the
|
|
271
|
+
Record the criteria that declare `proof: video` or `proof: screenshot` as one demo, as the
|
|
269
272
|
outerlayer-evidence skill's "Record a demo" says. Write one Playwright test with
|
|
270
273
|
`@outerlayer/playwright` and one chapter for each of those criteria, in the
|
|
271
274
|
criteria's order. Run it, then run `outerlayer emit demo <manifest> --item
|
|
@@ -15,7 +15,9 @@ the issue, the pull request number, the criteria that declare a proof form, the
|
|
|
15
15
|
instructions-file pointer and the outerlayer-evidence skill.
|
|
16
16
|
|
|
17
17
|
A criterion that declares `proof: screenshot` needs a screenshot bound to its
|
|
18
|
-
id.
|
|
18
|
+
id. The evidence agent records it as a chapter of the item's demo, with a
|
|
19
|
+
`demo.screenshot()` call. It emits a screenshot with `emit artifact` only for a
|
|
20
|
+
state no demo test can reach. One that declares `proof: video` needs a video: its chapter of the
|
|
19
21
|
item's one demo. A screenshot never satisfies `proof: video`. A criterion with no proof form is proven by its
|
|
20
22
|
test, and needs no artifact.
|
|
21
23
|
|
|
@@ -16,10 +16,8 @@ spec asks for — a reviewer should see the change working, not a gallery.
|
|
|
16
16
|
|
|
17
17
|
## When to capture
|
|
18
18
|
|
|
19
|
-
Capture AFTER the state exists: run the app,
|
|
20
|
-
flow first, and shoot the working result. A screenshot of code is not
|
|
21
|
-
evidence; a screenshot of the rendered page is. If the state takes setup
|
|
22
|
-
(seed data, a logged-in user), finish the setup, verify by eye, then capture.
|
|
19
|
+
Capture AFTER the state exists: run the app, test, or
|
|
20
|
+
flow first, and shoot the working result. A screenshot of code is not evidence. Finish setup (seed data, a login) and check by eye first.
|
|
23
21
|
|
|
24
22
|
## Per-kind mechanics
|
|
25
23
|
|
|
@@ -82,9 +80,9 @@ the recorded list does not hold gets no row.
|
|
|
82
80
|
|
|
83
81
|
Record every video proof as a chapter of the item's one demo. A demo has
|
|
84
82
|
one chapter for each criterion that declares a video, in the criteria's
|
|
85
|
-
order. Each chapter is that criterion's video proof, with a spoken line
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
order. Each chapter is that criterion's video proof, with a spoken line and the
|
|
84
|
+
checks that ran. Emit a video with `emit artifact` only when Playwright cannot
|
|
85
|
+
drive the flow.
|
|
88
86
|
|
|
89
87
|
Write a Playwright test with `@outerlayer/playwright`, one `demo.chapter`
|
|
90
88
|
for each criterion:
|
|
@@ -99,13 +97,17 @@ for each criterion:
|
|
|
99
97
|
});
|
|
100
98
|
});
|
|
101
99
|
|
|
102
|
-
Commit the test
|
|
100
|
+
Commit the test: an amend runs it again.
|
|
101
|
+
|
|
102
|
+
Record each `proof: screenshot` criterion as a chapter too. Call `await
|
|
103
|
+
demo.screenshot()` inside it, right after the `expect` that shows the result.
|
|
104
|
+
Options: `{ fullPage: true }`, `{ masks: true }`. `emit demo` stores the frame
|
|
105
|
+
when every check passed, or says why not.
|
|
103
106
|
|
|
104
107
|
Install it with `npm install --save-dev @outerlayer/playwright`. Use the
|
|
105
108
|
recorded criterion id as the first argument, or `null` for an opening scene.
|
|
106
|
-
Keep each narration line short
|
|
107
|
-
|
|
108
|
-
is recorded as a check.
|
|
109
|
+
Keep each narration line short. Put the `expect` calls that prove the
|
|
110
|
+
criterion inside the chapter: each is recorded as a check.
|
|
109
111
|
|
|
110
112
|
Run the test. It writes `demo/manifest.json` and `demo/video.webm` in the
|
|
111
113
|
test's output folder. Then emit the demo:
|
|
@@ -117,11 +119,10 @@ Each chapter is its own video proof with a time range in that video. A
|
|
|
117
119
|
chapter whose checks all passed is bound to its criterion. A chapter with
|
|
118
120
|
a failed check is stored unbound, and the command exits 1: fix the app and
|
|
119
121
|
record again. The command needs `ffmpeg` and `espeak-ng` on PATH. Pass
|
|
120
|
-
`--no-narration`
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
for each chapter. In a runner build everything it needs is installed.
|
|
122
|
+
`--no-narration` when you cannot install `espeak-ng`. It refuses before it
|
|
123
|
+
uploads anything when a chapter is out of order, a criterion id is not
|
|
124
|
+
recorded, a line is too long, or a chapter's clip is over 8 MiB. A video over 8 MiB falls back to one clip
|
|
125
|
+
for each chapter. A runner build has everything installed.
|
|
125
126
|
|
|
126
127
|
## The noise rule
|
|
127
128
|
|