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 CHANGED
@@ -13,7 +13,7 @@ export function createCli() {
13
13
  program
14
14
  .name('reflection')
15
15
  .description('Evidence-backed rendered UI validation.')
16
- .version('0.0.1')
16
+ .version('0.0.2')
17
17
  .configureOutput({
18
18
  outputError: (message, write) => write(message)
19
19
  });
@@ -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":"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"}
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;AAoB1D,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,EAAE;QACb,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"}
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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reflection-check",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "CLI for evidence-backed rendered UI validation.",
5
5
  "license": "MIT",
6
6
  "type": "module",