reflection-check 0.0.1 → 0.0.2
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/dist/cli.js +1 -1
- package/dist/commands/update.js +1 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/contracts/visual/baseline-compare.js +9 -1
- package/dist/contracts/visual/baseline-compare.js.map +1 -1
- package/dist/core/baseline-store.d.ts +2 -1
- package/dist/core/baseline-store.js +1 -1
- package/dist/core/baseline-store.js.map +1 -1
- package/docs/plans/reflection-dogfood-feedback-implementation-guide.md +625 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
package/dist/commands/update.js
CHANGED
|
@@ -124,6 +124,7 @@ function isTruthyCi(value) {
|
|
|
124
124
|
}
|
|
125
125
|
async function ensureBaselineDestinationInside(baselineRoot, baselinePath) {
|
|
126
126
|
ensureInside(baselineRoot, baselinePath);
|
|
127
|
+
await mkdir(baselineRoot, { recursive: true });
|
|
127
128
|
const realRoot = await realpath(baselineRoot);
|
|
128
129
|
await ensureDirectoryInsideBaselineRoot(baselineRoot, dirname(baselinePath), realRoot);
|
|
129
130
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,11 +27,19 @@ export async function compareRouteVisualBaseline(input) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
if (!(await pathExists(baselinePath))) {
|
|
30
|
+
const artifactBase = `visual/${input.visualCase.id}`;
|
|
31
|
+
const actualRunPath = input.store.resolveRunPath(actualArtifact.path);
|
|
32
|
+
const actualVisualArtifact = await input.store.writeBuffer(`${artifactBase}/actual.png`, await readFile(actualRunPath));
|
|
30
33
|
return createMissingBaselineCheck({
|
|
31
34
|
id: `visual.${input.visualCase.id}`,
|
|
32
35
|
target,
|
|
33
36
|
baselinePath: input.visualCase.baseline,
|
|
34
|
-
blocking
|
|
37
|
+
blocking,
|
|
38
|
+
artifacts: [actualVisualArtifact],
|
|
39
|
+
metadata: {
|
|
40
|
+
routeId: input.visualCase.route,
|
|
41
|
+
viewport: input.visualCase.viewport
|
|
42
|
+
}
|
|
35
43
|
});
|
|
36
44
|
}
|
|
37
45
|
const artifactBase = `visual/${input.visualCase.id}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline-compare.js","sourceRoot":"","sources":["../../../src/contracts/visual/baseline-compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAoBnD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAAsC;IACrF,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACnI,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACnH,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC;IACxF,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC;IAEtF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,UAAU,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE;YACnC,KAAK,EAAE,QAAQ;YACf,MAAM;YACN,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAClC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;YAC1C,OAAO,EAAE,sDAAsD,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG;YACrF,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE;gBACR,cAAc,EAAE,2BAA2B;gBAC3C,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK;gBAC/B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;gBACnC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;aACxC;YACD,iBAAiB,EAAE,8FAA8F;SAClH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,0BAA0B,CAAC;YAChC,EAAE,EAAE,UAAU,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE;YACnC,MAAM;YACN,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;YACvC,QAAQ;
|
|
1
|
+
{"version":3,"file":"baseline-compare.js","sourceRoot":"","sources":["../../../src/contracts/visual/baseline-compare.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CheckResult } from './report-schema.js';
|
|
1
|
+
import type { ArtifactRef, CheckResult } from './report-schema.js';
|
|
2
2
|
export type BaselineStore = {
|
|
3
3
|
rootDir: string;
|
|
4
4
|
resolveBaselinePath(relativePath: string): string;
|
|
@@ -11,6 +11,7 @@ export type MissingBaselineCheckOptions = {
|
|
|
11
11
|
target: string;
|
|
12
12
|
baselinePath: string;
|
|
13
13
|
blocking: boolean;
|
|
14
|
+
artifacts?: ArtifactRef[] | undefined;
|
|
14
15
|
metadata?: Record<string, unknown> | undefined;
|
|
15
16
|
};
|
|
16
17
|
export declare function createBaselineStore(options?: CreateBaselineStoreOptions): BaselineStore;
|
|
@@ -42,7 +42,7 @@ export function createMissingBaselineCheck(options) {
|
|
|
42
42
|
status,
|
|
43
43
|
severity,
|
|
44
44
|
summary: `Missing approved visual baseline: ${options.baselinePath}.`,
|
|
45
|
-
artifacts: [],
|
|
45
|
+
artifacts: options.artifacts ?? [],
|
|
46
46
|
metadata: {
|
|
47
47
|
...(options.metadata ?? {}),
|
|
48
48
|
classification: 'missing-baseline',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline-store.js","sourceRoot":"","sources":["../../src/core/baseline-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline-store.js","sourceRoot":"","sources":["../../src/core/baseline-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqB1D,SAAS,sBAAsB,CAAC,YAAoB;IAClD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxG,MAAM,IAAI,KAAK,CAAC,4DAA4D,YAAY,EAAE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,KAAa;IACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,4DAA4D,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAsC,EAAE;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,mBAAmB,CAAC,YAAoB;YACtC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAChD,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAoB,EAAE,YAAoB;IACnF,MAAM,IAAI,GAAG,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAE1C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAoC;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE1D,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,QAAQ;QACR,OAAO,EAAE,qCAAqC,OAAO,CAAC,YAAY,GAAG;QACrE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,QAAQ,EAAE;YACR,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3B,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC;QACD,iBAAiB,EAAE,OAAO,CAAC,QAAQ;YACjC,CAAC,CAAC,gFAAgF;YAClF,CAAC,CAAC,8GAA8G;KACnH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,625 @@
|
|
|
1
|
+
# Implementation Guide: Reflection Dogfood Feedback
|
|
2
|
+
|
|
3
|
+
Created: 2026-06-01
|
|
4
|
+
Status: draft
|
|
5
|
+
Branch: TBD
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Living Document
|
|
10
|
+
|
|
11
|
+
This guide must be updated during implementation:
|
|
12
|
+
|
|
13
|
+
- Check off tasks as they are completed.
|
|
14
|
+
- Add notes when reality diverges from plan.
|
|
15
|
+
- Reorder or split phases when blockers are discovered.
|
|
16
|
+
- Add new tasks discovered during implementation.
|
|
17
|
+
- Mark tasks as "skipped — reason" when they become irrelevant.
|
|
18
|
+
- Record timestamps on phase completions for velocity tracking.
|
|
19
|
+
- Update the test coverage map as tests are written.
|
|
20
|
+
|
|
21
|
+
**Last updated:** 2026-06-01
|
|
22
|
+
**Current phase:** Patch 0.0.2 candidate
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 0. Project Discovery
|
|
27
|
+
|
|
28
|
+
### Discovery Summary
|
|
29
|
+
|
|
30
|
+
| Variable | Value |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Package manager | pnpm (`pnpm-lock.yaml`) |
|
|
33
|
+
| Monorepo | No root workspace; includes `examples/basic-react` fixture app |
|
|
34
|
+
| Test runner | Vitest |
|
|
35
|
+
| Test command | `pnpm test` |
|
|
36
|
+
| Typecheck | `pnpm typecheck` |
|
|
37
|
+
| Lint | No lint script discovered |
|
|
38
|
+
| Build | `pnpm build` |
|
|
39
|
+
| Domain checks | `pnpm smoke:package`, `pnpm pack`, `npm publish --dry-run --access public` |
|
|
40
|
+
| CI | `.github/workflows/reflection.yml` |
|
|
41
|
+
| Feature paths | `src/commands/doctor.ts`, `src/commands/run.ts`, `src/core/config.ts`, `src/contracts/browser/**`, `src/core/report-schema.ts`, `docs/**`, `scripts/smoke-package-install.mjs` |
|
|
42
|
+
| Existing tests | `tests/unit/**/*.test.ts`, `tests/integration/**/*.test.ts`, `tests/e2e/**/*.test.ts` |
|
|
43
|
+
|
|
44
|
+
### Validation Stack
|
|
45
|
+
|
|
46
|
+
| Purpose | Command | Scope |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| Unit/integration/e2e tests | `pnpm test` | Full package |
|
|
49
|
+
| Typecheck | `pnpm typecheck` | TypeScript package |
|
|
50
|
+
| Build | `pnpm build` | Dist output |
|
|
51
|
+
| Package install smoke | `pnpm smoke:package` | Packed package in temp consumer |
|
|
52
|
+
| Publish dry-run | `npm publish --dry-run --access public` | npm packaging |
|
|
53
|
+
|
|
54
|
+
Validated during guide creation:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pnpm test
|
|
58
|
+
pnpm typecheck
|
|
59
|
+
pnpm build
|
|
60
|
+
pnpm smoke:package
|
|
61
|
+
npm publish --dry-run --access public
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Current package state:
|
|
65
|
+
|
|
66
|
+
- Published package name: `reflection-check`.
|
|
67
|
+
- Public import path: `import { defineReflection } from 'reflection-check';`
|
|
68
|
+
- CLI binaries: `reflection`, `reflection-check`.
|
|
69
|
+
- Node engine: `>=22`.
|
|
70
|
+
- Runtime browser dependency: `playwright`.
|
|
71
|
+
- Dogfood patch candidate: missing-baseline visual checks now carry the current actual screenshot so `reflection update --dry-run` and targeted update can promote first baselines.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 1. Architecture Contract
|
|
76
|
+
|
|
77
|
+
### Problem Statement
|
|
78
|
+
|
|
79
|
+
Sourcer dogfooding proved that `reflection-check@0.0.1` can be installed from npm and can produce useful browser evidence, but it also exposed gaps: `doctor` is too shallow, authenticated app setup requires a pattern, report next steps are generic, and setup/CI/baseline flows need stronger first-class support.
|
|
80
|
+
|
|
81
|
+
### Chosen Approach
|
|
82
|
+
|
|
83
|
+
Convert feedback into small, test-first package improvements. Prioritize improvements that help any consuming app before Sourcer-specific features: better `doctor --config`, explicit browser setup hooks, actionable report suggestions, an `init --dry-run` flow, and CI/package documentation. Keep Reflection read-only by default and avoid silently mutating baselines or target repos.
|
|
84
|
+
|
|
85
|
+
### Architecture Boundaries
|
|
86
|
+
|
|
87
|
+
| Layer | Owns | Does Not Own |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| CLI commands | User-facing command flow, errors, dry-run safety | App-specific state or fixtures |
|
|
90
|
+
| Config schema | Stable declarative contract and typed helper | Implicit target repo mutation |
|
|
91
|
+
| Browser contract | Route execution, setup hooks, assertions, screenshots | Login credentials or backend data generation |
|
|
92
|
+
| Report/review | Accurate status, artifacts, next steps | Product-specific remediation content |
|
|
93
|
+
| Docs/scripts | Package install, CI, release and dogfood workflow | Hidden local machine assumptions |
|
|
94
|
+
|
|
95
|
+
### Non-Negotiables
|
|
96
|
+
|
|
97
|
+
- [ ] Normal `reflection run` must not create or update baselines.
|
|
98
|
+
- [ ] `reflection update` stays explicit and targeted.
|
|
99
|
+
- [ ] `doctor` remains read-only.
|
|
100
|
+
- [ ] Setup hooks must not encourage real credentials or sensitive data in committed config.
|
|
101
|
+
- [ ] Public import path remains `reflection-check`.
|
|
102
|
+
- [ ] Package smoke must prove install from packed artifact before release.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## 2. Implementation Phases
|
|
107
|
+
|
|
108
|
+
### Patch 0.0.2 Candidate: Missing Baseline Promotion
|
|
109
|
+
|
|
110
|
+
**Goal:** Fix the Sourcer-discovered limitation where missing-baseline dry-run/update could not promote the current actual screenshot.
|
|
111
|
+
**Depends on:** Current `0.0.1` package shape
|
|
112
|
+
**Status:** Complete in working tree, pending full release validation and publish
|
|
113
|
+
|
|
114
|
+
#### Inputs
|
|
115
|
+
|
|
116
|
+
- Sourcer feedback: approving first login visual baselines was blocked because missing-baseline visual checks did not expose an `actual` artifact to `reflection update`.
|
|
117
|
+
- Existing visual smoke and update command tests.
|
|
118
|
+
|
|
119
|
+
#### Outputs
|
|
120
|
+
|
|
121
|
+
- Missing-baseline visual checks include `visual/<case-id>/actual.png`.
|
|
122
|
+
- `reflection update --dry-run --case <caseId>` can plan first-baseline promotion.
|
|
123
|
+
- Non-dry targeted update can create the missing baseline root and nested baseline path.
|
|
124
|
+
|
|
125
|
+
#### Relevant Paths
|
|
126
|
+
|
|
127
|
+
| What | Path | Action |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| Missing baseline check | `src/core/baseline-store.ts` | Edited |
|
|
130
|
+
| Visual comparison | `src/contracts/visual/baseline-compare.ts` | Edited |
|
|
131
|
+
| Baseline update | `src/commands/update.ts` | Edited |
|
|
132
|
+
| Visual smoke tests | `tests/integration/visual-smoke.test.ts` | Edited |
|
|
133
|
+
| Update tests | `tests/integration/update-command.test.ts` | Edited |
|
|
134
|
+
|
|
135
|
+
#### Tasks
|
|
136
|
+
|
|
137
|
+
- [x] Add RED test proving missing-baseline visual checks expose actual screenshot artifacts.
|
|
138
|
+
- **Tool:** edit
|
|
139
|
+
- **Verify:** `pnpm exec vitest run tests/integration/visual-smoke.test.ts`
|
|
140
|
+
|
|
141
|
+
- [x] Add RED test proving update can dry-run and promote a missing baseline into a new path.
|
|
142
|
+
- **Tool:** edit
|
|
143
|
+
- **Verify:** `pnpm exec vitest run tests/integration/update-command.test.ts`
|
|
144
|
+
|
|
145
|
+
- [x] Implement missing-baseline actual artifact and missing baseline root creation.
|
|
146
|
+
- **Tool:** edit
|
|
147
|
+
- **Verify:** focused tests pass.
|
|
148
|
+
|
|
149
|
+
#### Tests for This Patch
|
|
150
|
+
|
|
151
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
152
|
+
|---|---|---|---|
|
|
153
|
+
| Integration | Missing-baseline check links current actual artifact | Yes | `pnpm exec vitest run tests/integration/visual-smoke.test.ts` |
|
|
154
|
+
| Integration | Update promotes missing baseline into new path | Yes | `pnpm exec vitest run tests/integration/update-command.test.ts` |
|
|
155
|
+
| Full package | No regressions | Required before publish | `pnpm test`, `pnpm typecheck`, `pnpm smoke:package` |
|
|
156
|
+
|
|
157
|
+
#### Patch Exit Criteria
|
|
158
|
+
|
|
159
|
+
- [x] Focused visual/update tests pass.
|
|
160
|
+
- [ ] Full validation passes.
|
|
161
|
+
- [ ] Version bumped for patch release.
|
|
162
|
+
- [ ] Sourcer verifies first login baseline dry-run against the patched package.
|
|
163
|
+
- [ ] Guide updated with publish outcome.
|
|
164
|
+
|
|
165
|
+
#### Failure Protocol
|
|
166
|
+
|
|
167
|
+
| If | Then |
|
|
168
|
+
|---|---|
|
|
169
|
+
| Dry-run still cannot find actual artifact | Inspect `report.json` visual check artifacts before update planning |
|
|
170
|
+
| Non-dry update cannot create baseline path | Inspect baseline root existence and symlink safety checks |
|
|
171
|
+
| Sourcer still cannot approve baseline | Reproduce with Sourcer artifacts and add another integration test here |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### Phase 1: Useful `doctor --config`
|
|
176
|
+
|
|
177
|
+
**Goal:** Turn `doctor` from a placeholder into a real read-only preflight for consuming repos.
|
|
178
|
+
**Depends on:** Current `0.0.1` package shape
|
|
179
|
+
**Status:** Not started
|
|
180
|
+
|
|
181
|
+
#### Inputs
|
|
182
|
+
|
|
183
|
+
- Existing `src/commands/doctor.ts`.
|
|
184
|
+
- Existing config loader in `src/core/config.ts`.
|
|
185
|
+
- Server readiness behavior in `src/core/server-manager.ts`.
|
|
186
|
+
- Sourcer feedback: doctor currently only prints a placeholder.
|
|
187
|
+
|
|
188
|
+
#### Outputs
|
|
189
|
+
|
|
190
|
+
- `doctor --config` validates config file presence/import/schema.
|
|
191
|
+
- Doctor reports package/runtime readiness: Node version, Playwright import, browser availability if safe to check, configured routes count, server config summary.
|
|
192
|
+
- Doctor can optionally check server reachability without starting a long-running process unless explicitly configured.
|
|
193
|
+
- Machine-friendly errors with non-zero exit for invalid setup.
|
|
194
|
+
|
|
195
|
+
#### Relevant Paths
|
|
196
|
+
|
|
197
|
+
| What | Path | Action |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| Doctor command | `src/commands/doctor.ts` | Edit |
|
|
200
|
+
| Config loader | `src/core/config.ts` | Read |
|
|
201
|
+
| CLI wiring | `src/cli.ts` | Read/Edit if options change |
|
|
202
|
+
| Exit codes | `src/core/exit-codes.ts` | Read |
|
|
203
|
+
| Tests | `tests/unit/cli.test.ts`, new `tests/unit/doctor-command.test.ts` | Edit/Create |
|
|
204
|
+
| Docs | `docs/getting-started.md`, `docs/validation-process.md` | Edit |
|
|
205
|
+
|
|
206
|
+
#### Tasks
|
|
207
|
+
|
|
208
|
+
- [ ] Add failing unit tests for valid config, missing config, invalid config, and config summary output.
|
|
209
|
+
- **Tool:** edit
|
|
210
|
+
- **Verify:** `pnpm exec vitest run tests/unit/doctor-command.test.ts`
|
|
211
|
+
|
|
212
|
+
- [ ] Implement config-aware doctor output.
|
|
213
|
+
- **Tool:** edit
|
|
214
|
+
- **Verify:** focused doctor tests pass.
|
|
215
|
+
|
|
216
|
+
- [ ] Add runtime checks that do not mutate or start target state unexpectedly.
|
|
217
|
+
- **Tool:** edit
|
|
218
|
+
- **Verify:** tests cover Playwright/package readiness and safe server summary.
|
|
219
|
+
|
|
220
|
+
- [ ] Update docs to stop calling doctor a placeholder.
|
|
221
|
+
- **Tool:** edit
|
|
222
|
+
- **Verify:** `rg "placeholder|lightweight" docs src tests`
|
|
223
|
+
|
|
224
|
+
#### Tests for This Phase
|
|
225
|
+
|
|
226
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
227
|
+
|---|---|---|---|
|
|
228
|
+
| Unit | Doctor config success/failure summaries | No → create | `tests/unit/doctor-command.test.ts` |
|
|
229
|
+
| CLI | `reflection doctor --config` exit behavior | Partial | `tests/unit/cli.test.ts` |
|
|
230
|
+
| Type safety | Doctor options/types | Auto | `pnpm typecheck` |
|
|
231
|
+
| Package smoke | Installed CLI can run doctor | Yes | `pnpm smoke:package` |
|
|
232
|
+
|
|
233
|
+
#### Phase Exit Criteria
|
|
234
|
+
|
|
235
|
+
- [ ] `doctor --config` reports meaningful setup information.
|
|
236
|
+
- [ ] Invalid config exits non-zero with actionable error.
|
|
237
|
+
- [ ] Docs match behavior.
|
|
238
|
+
- [ ] `pnpm test`, `pnpm typecheck`, `pnpm smoke:package` pass.
|
|
239
|
+
- [ ] Guide updated with completion status.
|
|
240
|
+
|
|
241
|
+
#### Failure Protocol
|
|
242
|
+
|
|
243
|
+
| If | Then |
|
|
244
|
+
|---|---|
|
|
245
|
+
| Doctor becomes too slow | Split checks into default read-only and optional deep check |
|
|
246
|
+
| Check requires browser install | Report actionable warning instead of hard failure unless required |
|
|
247
|
+
| Output becomes noisy | Keep human summary concise; put detail in JSON later if needed |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### Phase 2: Browser Setup Hooks for Authenticated Apps
|
|
252
|
+
|
|
253
|
+
**Goal:** Support authenticated app smoke tests without Sourcer-specific hacks.
|
|
254
|
+
**Depends on:** Phase 1
|
|
255
|
+
**Status:** Not started
|
|
256
|
+
|
|
257
|
+
#### Inputs
|
|
258
|
+
|
|
259
|
+
- Sourcer need: seed localStorage/session or preload state before navigation.
|
|
260
|
+
- Existing browser context factory and route runner.
|
|
261
|
+
- Existing config schema and route expectation model.
|
|
262
|
+
|
|
263
|
+
#### Outputs
|
|
264
|
+
|
|
265
|
+
- Config schema supports a safe browser setup mechanism, such as route-level or browser-level `storageState`, `localStorage`, or `beforeNavigate` script.
|
|
266
|
+
- Route runner applies setup before visiting a route.
|
|
267
|
+
- Metadata records that setup was applied without logging sensitive values.
|
|
268
|
+
- Docs include examples for non-secret test tokens and mock/test-mode auth.
|
|
269
|
+
|
|
270
|
+
#### Relevant Paths
|
|
271
|
+
|
|
272
|
+
| What | Path | Action |
|
|
273
|
+
|---|---|---|
|
|
274
|
+
| Config schema | `src/core/config.ts` | Edit |
|
|
275
|
+
| Route runner | `src/contracts/browser/route-runner.ts` | Edit |
|
|
276
|
+
| Context factory | `src/integrations/playwright/context-factory.ts` | Edit if storage state belongs there |
|
|
277
|
+
| Browser tests | `tests/integration/browser-contract.test.ts` | Edit |
|
|
278
|
+
| Redaction | `src/core/redaction.ts`, `tests/unit/redaction.test.ts` | Read/Edit if metadata changes |
|
|
279
|
+
| Docs | `docs/configuration.md`, `docs/browser-contract.md` | Edit |
|
|
280
|
+
|
|
281
|
+
#### Tasks
|
|
282
|
+
|
|
283
|
+
- [ ] Design the smallest setup API and document rejected alternatives.
|
|
284
|
+
- **Tool:** research/edit guide
|
|
285
|
+
- **Verify:** decision recorded before implementation.
|
|
286
|
+
|
|
287
|
+
- [ ] Add failing config tests for setup schema.
|
|
288
|
+
- **Tool:** edit
|
|
289
|
+
- **Verify:** `pnpm exec vitest run tests/unit/config.test.ts`
|
|
290
|
+
|
|
291
|
+
- [ ] Add failing integration test proving localStorage/session setup before route navigation.
|
|
292
|
+
- **Tool:** edit
|
|
293
|
+
- **Verify:** `pnpm exec vitest run tests/integration/browser-contract.test.ts`
|
|
294
|
+
|
|
295
|
+
- [ ] Implement setup support and metadata redaction.
|
|
296
|
+
- **Tool:** edit
|
|
297
|
+
- **Verify:** focused tests pass.
|
|
298
|
+
|
|
299
|
+
#### Tests for This Phase
|
|
300
|
+
|
|
301
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
302
|
+
|---|---|---|---|
|
|
303
|
+
| Unit | Config schema accepts setup and rejects unsafe shapes | No → create | `tests/unit/config.test.ts` |
|
|
304
|
+
| Integration | Route sees seeded storage before render | No → create | `tests/integration/browser-contract.test.ts` |
|
|
305
|
+
| Redaction | Setup metadata does not leak token values | No → create if metadata stores keys | `tests/unit/redaction.test.ts` |
|
|
306
|
+
| Docs | Example compiles conceptually | Manual | `docs/configuration.md` |
|
|
307
|
+
|
|
308
|
+
#### Phase Exit Criteria
|
|
309
|
+
|
|
310
|
+
- [ ] Auth setup can be expressed without real credentials.
|
|
311
|
+
- [ ] Route runner applies setup before assertions.
|
|
312
|
+
- [ ] Sensitive values are not printed in report metadata.
|
|
313
|
+
- [ ] Sourcer can add one authenticated route without app-specific Reflection changes.
|
|
314
|
+
- [ ] Full validation passes.
|
|
315
|
+
|
|
316
|
+
#### Failure Protocol
|
|
317
|
+
|
|
318
|
+
| If | Then |
|
|
319
|
+
|---|---|
|
|
320
|
+
| API risks leaking secrets | Switch to file path/env reference or key-only metadata |
|
|
321
|
+
| Setup API becomes too broad | Start with localStorage/storageState only |
|
|
322
|
+
| Sourcer still cannot auth | Document missing app fixture requirement; do not overfit Reflection |
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
### Phase 3: Actionable Report Suggestions
|
|
327
|
+
|
|
328
|
+
**Goal:** Replace generic next steps with report suggestions derived from actual run results.
|
|
329
|
+
**Depends on:** Phase 1
|
|
330
|
+
**Status:** Not started
|
|
331
|
+
|
|
332
|
+
#### Inputs
|
|
333
|
+
|
|
334
|
+
- Current generic suggestion in `src/commands/run.ts`: "Implement the next contract runner phase."
|
|
335
|
+
- Review command JSON output.
|
|
336
|
+
- Sourcer feedback: generic suggestion is not useful in a consuming repo.
|
|
337
|
+
|
|
338
|
+
#### Outputs
|
|
339
|
+
|
|
340
|
+
- Suggested next steps reflect status:
|
|
341
|
+
- blocking failures → fix named checks.
|
|
342
|
+
- review-only visual diffs → inspect artifacts or dry-run update.
|
|
343
|
+
- missing baselines → create/review baseline.
|
|
344
|
+
- pass → no action required, optionally expand coverage.
|
|
345
|
+
- Review JSON remains stable and concise.
|
|
346
|
+
|
|
347
|
+
#### Relevant Paths
|
|
348
|
+
|
|
349
|
+
| What | Path | Action |
|
|
350
|
+
|---|---|---|
|
|
351
|
+
| Run command | `src/commands/run.ts` | Edit |
|
|
352
|
+
| Report schema | `src/core/report-schema.ts` | Read/Edit if needed |
|
|
353
|
+
| Report writer | `src/core/report-writer.ts` | Read/Edit |
|
|
354
|
+
| Review command | `src/commands/review.ts` | Read/Edit |
|
|
355
|
+
| Tests | `tests/unit/report-schema.test.ts`, `tests/unit/review-command.test.ts`, `tests/e2e/ci-mode.test.ts` | Edit |
|
|
356
|
+
|
|
357
|
+
#### Tasks
|
|
358
|
+
|
|
359
|
+
- [ ] Add tests for suggested steps by result type.
|
|
360
|
+
- **Tool:** edit
|
|
361
|
+
- **Verify:** `pnpm exec vitest run tests/unit/review-command.test.ts tests/unit/report-schema.test.ts`
|
|
362
|
+
|
|
363
|
+
- [ ] Implement derived suggestions.
|
|
364
|
+
- **Tool:** edit
|
|
365
|
+
- **Verify:** focused tests pass.
|
|
366
|
+
|
|
367
|
+
- [ ] Update docs with examples of pass/fail/review suggestions.
|
|
368
|
+
- **Tool:** edit
|
|
369
|
+
- **Verify:** docs mention dry-run update for visual review.
|
|
370
|
+
|
|
371
|
+
#### Tests for This Phase
|
|
372
|
+
|
|
373
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
374
|
+
|---|---|---|---|
|
|
375
|
+
| Unit | Derived suggestions for fail/review/pass | Partial → extend | `tests/unit/review-command.test.ts` |
|
|
376
|
+
| Schema | Suggested step shape remains stable | Yes | `tests/unit/report-schema.test.ts` |
|
|
377
|
+
| E2E | CI report has useful next steps | Partial | `tests/e2e/ci-mode.test.ts` |
|
|
378
|
+
|
|
379
|
+
#### Phase Exit Criteria
|
|
380
|
+
|
|
381
|
+
- [ ] No report emits the old generic implementation suggestion for consuming-project passes.
|
|
382
|
+
- [ ] Review JSON remains parseable.
|
|
383
|
+
- [ ] Full validation passes.
|
|
384
|
+
|
|
385
|
+
#### Failure Protocol
|
|
386
|
+
|
|
387
|
+
| If | Then |
|
|
388
|
+
|---|---|
|
|
389
|
+
| Suggestions become too verbose | Keep JSON summaries short and rely on artifact paths |
|
|
390
|
+
| Status mapping is ambiguous | Prefer conservative inspect/fix language |
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
### Phase 4: Safe `reflection init --dry-run`
|
|
395
|
+
|
|
396
|
+
**Goal:** Make first-time setup easier while preserving read-only safety by default.
|
|
397
|
+
**Depends on:** Phase 1
|
|
398
|
+
**Status:** Not started
|
|
399
|
+
|
|
400
|
+
#### Inputs
|
|
401
|
+
|
|
402
|
+
- Sourcer setup steps: install package, add config, scripts, ignores, AGENTS pointer.
|
|
403
|
+
- Existing CLI structure.
|
|
404
|
+
- Docs install flow.
|
|
405
|
+
|
|
406
|
+
#### Outputs
|
|
407
|
+
|
|
408
|
+
- `reflection init --dry-run` detects package manager and prints proposed files/scripts.
|
|
409
|
+
- Optional explicit `reflection init --write` can create minimal config after a later human-approved phase.
|
|
410
|
+
- Preset support starts explicit, for example `--preset vite-react`.
|
|
411
|
+
|
|
412
|
+
#### Relevant Paths
|
|
413
|
+
|
|
414
|
+
| What | Path | Action |
|
|
415
|
+
|---|---|---|
|
|
416
|
+
| CLI | `src/cli.ts` | Edit |
|
|
417
|
+
| New command | `src/commands/init.ts` | Create |
|
|
418
|
+
| Config helper | `src/core/config.ts` or new setup module | Read/Create |
|
|
419
|
+
| Tests | `tests/unit/cli.test.ts`, new `tests/unit/init-command.test.ts` | Edit/Create |
|
|
420
|
+
| Docs | `docs/getting-started.md`, `docs/agent-workflows.md` | Edit |
|
|
421
|
+
|
|
422
|
+
#### Tasks
|
|
423
|
+
|
|
424
|
+
- [ ] Add failing CLI tests for `init --dry-run`.
|
|
425
|
+
- **Tool:** edit
|
|
426
|
+
- **Verify:** `pnpm exec vitest run tests/unit/init-command.test.ts tests/unit/cli.test.ts`
|
|
427
|
+
|
|
428
|
+
- [ ] Implement read-only dry-run with detected package manager and suggested commands.
|
|
429
|
+
- **Tool:** edit
|
|
430
|
+
- **Verify:** focused tests pass.
|
|
431
|
+
|
|
432
|
+
- [ ] Document that `init --write` is not required for `0.0.1` consumers and must be explicit if added.
|
|
433
|
+
- **Tool:** edit
|
|
434
|
+
- **Verify:** docs mention dry-run safety.
|
|
435
|
+
|
|
436
|
+
#### Tests for This Phase
|
|
437
|
+
|
|
438
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
439
|
+
|---|---|---|---|
|
|
440
|
+
| Unit | Dry-run output for pnpm repo | No → create | `tests/unit/init-command.test.ts` |
|
|
441
|
+
| CLI | Command registration and invalid options | No → extend | `tests/unit/cli.test.ts` |
|
|
442
|
+
| Package smoke | New CLI still works installed | Yes | `pnpm smoke:package` |
|
|
443
|
+
|
|
444
|
+
#### Phase Exit Criteria
|
|
445
|
+
|
|
446
|
+
- [ ] `reflection init --dry-run` is read-only.
|
|
447
|
+
- [ ] Output matches current package name `reflection-check`.
|
|
448
|
+
- [ ] No repo files are mutated without `--write`.
|
|
449
|
+
- [ ] Full validation passes.
|
|
450
|
+
|
|
451
|
+
#### Failure Protocol
|
|
452
|
+
|
|
453
|
+
| If | Then |
|
|
454
|
+
|---|---|
|
|
455
|
+
| Auto-detection is unreliable | Require explicit preset before writing |
|
|
456
|
+
| User could confuse dry-run/write | Make write opt-in and noisy |
|
|
457
|
+
|
|
458
|
+
---
|
|
459
|
+
|
|
460
|
+
### Phase 5: CI and Baseline Workflow Polish
|
|
461
|
+
|
|
462
|
+
**Goal:** Make consuming-repo CI and visual baseline workflows obvious and hard to misuse.
|
|
463
|
+
**Depends on:** Phases 1-3
|
|
464
|
+
**Status:** Not started
|
|
465
|
+
|
|
466
|
+
#### Inputs
|
|
467
|
+
|
|
468
|
+
- Sourcer CI needs.
|
|
469
|
+
- Existing docs in `docs/ci.md`, `docs/validation-process.md`, and `docs/visual-contract.md`.
|
|
470
|
+
- Existing update command tests.
|
|
471
|
+
|
|
472
|
+
#### Outputs
|
|
473
|
+
|
|
474
|
+
- CI docs use public npm install and explicit report dir.
|
|
475
|
+
- Baseline update docs include dry-run first and artifact inspection.
|
|
476
|
+
- Optional example workflow for consuming repos.
|
|
477
|
+
- Better `update --dry-run` output if Sourcer dogfooding shows gaps.
|
|
478
|
+
|
|
479
|
+
#### Relevant Paths
|
|
480
|
+
|
|
481
|
+
| What | Path | Action |
|
|
482
|
+
|---|---|---|
|
|
483
|
+
| CI docs | `docs/ci.md` | Edit |
|
|
484
|
+
| Validation process | `docs/validation-process.md` | Edit |
|
|
485
|
+
| Visual contract docs | `docs/visual-contract.md` | Edit |
|
|
486
|
+
| Update command | `src/commands/update.ts` | Read/Edit if output changes |
|
|
487
|
+
| Tests | `tests/integration/update-command.test.ts`, `tests/e2e/ci-mode.test.ts` | Edit |
|
|
488
|
+
|
|
489
|
+
#### Tasks
|
|
490
|
+
|
|
491
|
+
- [ ] Update CI docs around `pnpm add -D reflection-check` and `reflection run --ci`.
|
|
492
|
+
- **Tool:** edit
|
|
493
|
+
- **Verify:** docs contain public package install path.
|
|
494
|
+
|
|
495
|
+
- [ ] Add or update CI-mode e2e tests if command shape changes.
|
|
496
|
+
- **Tool:** edit
|
|
497
|
+
- **Verify:** `pnpm exec vitest run tests/e2e/ci-mode.test.ts`.
|
|
498
|
+
|
|
499
|
+
- [ ] Improve baseline update dry-run messaging if needed.
|
|
500
|
+
- **Tool:** edit
|
|
501
|
+
- **Verify:** `pnpm exec vitest run tests/integration/update-command.test.ts`.
|
|
502
|
+
|
|
503
|
+
#### Tests for This Phase
|
|
504
|
+
|
|
505
|
+
| Test Type | What to Test | Exists? | Path / Command |
|
|
506
|
+
|---|---|---|---|
|
|
507
|
+
| E2E | CI report root and review | Yes | `tests/e2e/ci-mode.test.ts` |
|
|
508
|
+
| Integration | Baseline update dry-run safety | Yes | `tests/integration/update-command.test.ts` |
|
|
509
|
+
| Package | Public install smoke remains valid | Yes | `pnpm smoke:package` |
|
|
510
|
+
|
|
511
|
+
#### Phase Exit Criteria
|
|
512
|
+
|
|
513
|
+
- [ ] Consuming repo CI docs are copy-pasteable.
|
|
514
|
+
- [ ] Baseline update process is clear and safe.
|
|
515
|
+
- [ ] Full validation passes.
|
|
516
|
+
|
|
517
|
+
#### Failure Protocol
|
|
518
|
+
|
|
519
|
+
| If | Then |
|
|
520
|
+
|---|---|
|
|
521
|
+
| CI instructions conflict with package docs | Make package docs canonical and link from workflow examples |
|
|
522
|
+
| Update workflow feels too easy to misuse | Require more explicit target flags or confirmation text |
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## 3. Repeatable Unit Contract
|
|
527
|
+
|
|
528
|
+
### Unit Template: Reflection Feedback Item
|
|
529
|
+
|
|
530
|
+
| Step | Description | Path | Action | Verify | Test |
|
|
531
|
+
|---|---|---|---|---|---|
|
|
532
|
+
| 1 | Write failing test for the feedback item | `tests/**` | Create/Edit | Focused `pnpm exec vitest run ...` fails first | Required |
|
|
533
|
+
| 2 | Implement smallest package change | `src/**` | Edit | Focused test passes | Required |
|
|
534
|
+
| 3 | Update docs and examples | `docs/**`, `README.md`, `scripts/**` | Edit | `rg` confirms stale wording removed | Required |
|
|
535
|
+
| 4 | Validate package install | `scripts/smoke-package-install.mjs` | Run | `pnpm smoke:package` | Required |
|
|
536
|
+
| 5 | Record dogfood outcome | This guide | Edit | Completion tracker updated | Required |
|
|
537
|
+
|
|
538
|
+
**Unit done when:**
|
|
539
|
+
|
|
540
|
+
- [ ] Focused tests pass.
|
|
541
|
+
- [ ] `pnpm test`, `pnpm typecheck`, and `pnpm smoke:package` pass.
|
|
542
|
+
- [ ] Public package docs remain accurate.
|
|
543
|
+
- [ ] Guide updated.
|
|
544
|
+
|
|
545
|
+
### Units
|
|
546
|
+
|
|
547
|
+
| Unit | Status | Tests | Validation | Notes |
|
|
548
|
+
|---|---|---|---|---|
|
|
549
|
+
| Useful doctor | Not started | needed | — | Highest value from Sourcer feedback |
|
|
550
|
+
| Browser setup hooks | Not started | needed | — | Enables authenticated Sourcer coverage |
|
|
551
|
+
| Actionable next steps | Not started | needed | — | Replaces generic report suggestion |
|
|
552
|
+
| Init dry-run | Not started | needed | — | Improves new project setup |
|
|
553
|
+
| CI/baseline docs polish | Not started | partial | — | Needed before broader use |
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## 4. Test Strategy
|
|
558
|
+
|
|
559
|
+
### Principles
|
|
560
|
+
|
|
561
|
+
- Every feedback item starts with a failing test.
|
|
562
|
+
- Prefer unit tests for CLI/config/report behavior and integration tests for browser behavior.
|
|
563
|
+
- Package smoke must pass for any public-surface change.
|
|
564
|
+
- npm publish dry-run should pass before any release.
|
|
565
|
+
|
|
566
|
+
### Coverage Map
|
|
567
|
+
|
|
568
|
+
| Phase | What's Tested | Test Type | Exists? | Path |
|
|
569
|
+
|---|---|---|---|---|
|
|
570
|
+
| Phase 1 | Doctor config preflight | Unit/CLI | No | `tests/unit/doctor-command.test.ts`, `tests/unit/cli.test.ts` |
|
|
571
|
+
| Phase 2 | Browser setup hooks | Unit/integration | No | `tests/unit/config.test.ts`, `tests/integration/browser-contract.test.ts` |
|
|
572
|
+
| Phase 3 | Derived next steps | Unit/e2e | Partial | `tests/unit/review-command.test.ts`, `tests/e2e/ci-mode.test.ts` |
|
|
573
|
+
| Phase 4 | Init dry-run | Unit/CLI | No | `tests/unit/init-command.test.ts`, `tests/unit/cli.test.ts` |
|
|
574
|
+
| Phase 5 | CI/baseline docs and safety | E2E/integration | Partial | `tests/e2e/ci-mode.test.ts`, `tests/integration/update-command.test.ts` |
|
|
575
|
+
|
|
576
|
+
### Full Validation Run
|
|
577
|
+
|
|
578
|
+
Run after every phase completion:
|
|
579
|
+
|
|
580
|
+
```bash
|
|
581
|
+
pnpm test
|
|
582
|
+
pnpm typecheck
|
|
583
|
+
pnpm build
|
|
584
|
+
pnpm smoke:package
|
|
585
|
+
npm publish --dry-run --access public
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## 5. Failure and Rollback Protocol
|
|
591
|
+
|
|
592
|
+
| Failure Type | Detection | Action |
|
|
593
|
+
|---|---|---|
|
|
594
|
+
| Test failure | `pnpm test` or focused Vitest command exits non-zero | Fix before proceeding |
|
|
595
|
+
| Type error | `pnpm typecheck` exits non-zero | Check config/report public types |
|
|
596
|
+
| Package smoke failure | `pnpm smoke:package` exits non-zero | Fix exports, bin, dependencies, or pack files |
|
|
597
|
+
| Publish dry-run warning | npm emits corrections/warnings | Fix `package.json`; rerun dry-run |
|
|
598
|
+
| Browser flake | Integration test intermittently fails | Stabilize fixture, viewport, or threshold; do not hide failure |
|
|
599
|
+
| Secret exposure risk | Report/log contains sensitive values | Add redaction or remove value from metadata |
|
|
600
|
+
| Ambiguous requirement | Cannot determine safe behavior | Stop and ask Niklas |
|
|
601
|
+
| Repeated failure | Same check fails 3 times | Reassess approach and update this guide |
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
## 6. Completion Tracker
|
|
606
|
+
|
|
607
|
+
| Phase | Title | Status | Tests | Validation | Completed |
|
|
608
|
+
|---|---|---|---|---|---|
|
|
609
|
+
| Patch | Missing Baseline Promotion | In progress | focused pass | pending full | — |
|
|
610
|
+
| 1 | Useful `doctor --config` | Not started | — | — | — |
|
|
611
|
+
| 2 | Browser Setup Hooks for Authenticated Apps | Not started | — | — | — |
|
|
612
|
+
| 3 | Actionable Report Suggestions | Not started | — | — | — |
|
|
613
|
+
| 4 | Safe `reflection init --dry-run` | Not started | — | — | — |
|
|
614
|
+
| 5 | CI and Baseline Workflow Polish | Not started | — | — | — |
|
|
615
|
+
|
|
616
|
+
---
|
|
617
|
+
|
|
618
|
+
## 7. Post-Completion Checklist
|
|
619
|
+
|
|
620
|
+
- [ ] All phases marked complete or skipped with reason.
|
|
621
|
+
- [ ] Full validation suite passes.
|
|
622
|
+
- [ ] `pnpm smoke:package` proves public install surface.
|
|
623
|
+
- [ ] `npm publish --dry-run --access public` has no warnings.
|
|
624
|
+
- [ ] Docs and examples use `reflection-check` for imports.
|
|
625
|
+
- [ ] Sourcer dogfood confirms the improvement before the next npm release.
|