conductor/BASELINE.md

190 lines
6.8 KiB
Markdown

# Validation Baseline
## Date
2026-07-18
## Environment
- Target toolchain: Node.js 20 and npm 10
- Executed toolchain: Node.js 20.20.2 and npm 10.9.8, supplied ephemerally through `npx`
- Docker CLI: available on Windows
- Docker engine: unavailable because Docker Desktop's Linux engine was not running
- Docker inside WSL: unavailable because WSL integration was disabled
## Dependency Installation
- Root `npm ci`: passed under the preinstalled WSL Node 18/npm 9 toolchain; reported 2 high-severity audit findings in `ajv-cli` dependencies.
- Frontend clean install initially failed because `frontend/package-lock.json` was missing `yaml@2.9.0`.
- `npm install --package-lock-only` under Node 20/npm 10 repaired the frontend lockfile.
- Frontend clean install then passed under Node 20/npm 10; npm reported 28 dependency vulnerabilities: 9 low, 6 moderate, and 13 high.
- Backend clean install passed under Node 20/npm 10; npm reported 0 vulnerabilities.
## Automated Checks
### Frontend tests
Command:
```bash
npx --yes --package=node@20 --package=npm@10 npm test -- --watchAll=false --runInBand
```
Result: Passed.
- Test suites: 7 passed, 7 total
- Tests: 433 passed, 433 total
- Snapshots: 0
### Frontend production build
Command:
```bash
npx --yes --package=node@20 --package=npm@10 npm run build
```
Result: Passed.
### Backend TypeScript build
Command:
```bash
npx --yes --package=node@20 --package=npm@10 npm run build
```
Result: Passed.
## Schema Matrix
Twelve `valid-*.json` project definitions pass validation against `shared/schemas/conductor-project.schema.json`, including the Slice 1 all-components fixture.
Two schema-invalid fixtures failed validation as expected:
- `invalid-dropdown-option-shape.json`
- `invalid-missing-required.json`
Two diagnostic-invalid fixtures passed structural schema validation as designed because their defects require semantic/runtime diagnostics:
- `invalid-template-malformed.json`
- `invalid-template-missing-component.json`
## Slice 1 Manual Acceptance
User validation completed successfully on 2026-07-18:
- All five new components can be configured and manipulated in the Visual Editor.
- Preview interaction, disabled and hidden behavior, and Status Panel tones work as expected.
- Visual Editor and JSON Editor synchronization works.
- Save/load persistence and existing-component regression checks pass.
## Slice 2 Increment 1 Validation
Validation completed on 2026-07-18 for visual anonymous REST action authoring.
### Focused editor tests
Command:
```bash
npm test -- --watchAll=false --runInBand --runTestsByPath \
src/components/ActionInspector/actionEditorUtils.test.ts \
src/components/ActionInspector/ActionInspector.test.tsx
```
Result: Passed.
- Test suites: 2 passed, 2 total
- Tests: 23 passed, 23 total
- Covers canonical CRUD, duplicate-ID safety, reference discovery, request-map and URL validation, anonymous duplication, immediate document synchronization, and invalid local drafts.
### Full target-toolchain checks
Commands:
```bash
npx --yes --package=node@20 --package=npm@10 npm test -- --watchAll=false --runInBand
npx --yes --package=node@20 --package=npm@10 npm run build
```
The frontend commands ran from `frontend/`. The build command also ran from `backend/`.
Results:
- Frontend tests: 9 suites and 456 tests passed; 0 snapshots.
- Frontend production build: passed.
- Backend TypeScript build: passed.
### Schema fixture matrix
Each fixture was checked with:
```bash
./node_modules/.bin/ajv validate \
-s shared/schemas/conductor-project.schema.json \
-d <fixture> \
--spec=draft2020
```
Results:
- 13 of 13 `valid-*.json` fixtures passed, including `valid-visual-rest-actions.json`.
- 2 of 2 schema-invalid fixtures failed as expected.
- 2 of 2 diagnostic-invalid fixtures passed structural validation as designed.
### Standalone frontend TypeScript check
Command:
```bash
npx tsc --noEmit
```
Result: Blocked by an existing dependency/toolchain mismatch. Frontend TypeScript 4.9 cannot parse syntax in resolved `@types/node@26.1.0` (first error: `node_modules/@types/node/ffi.d.ts(94,21): TS1139`). The CRA production build performs the application TypeScript compile and passed.
### Visual QA
The frontend development server compiled successfully at `http://localhost:3000`. In-app browser automation could not start during implementation while Docker Desktop was not running; its Node REPL kernel reported `helper_unknown_error: setup refresh had errors` during Windows sandbox setup.
After Docker Desktop and the app were started, the user completed the Slice 2 Increment 1 manual acceptance on 2026-07-19. The accepted workflow covered visual anonymous REST action authoring, a Button `events` entry inserted through canonical JSON for an `onClick` action reference, and referenced-action deletion confirmation. Full Slice 2 workflow-launcher and dependent-data acceptance remains pending later increments.
## Runtime Startup
Initial backend startup against a clean SQLite database failed with:
```text
SqliteError: no such table: projects
```
Cause: `backend/src/index.ts` statically imported `app` before calling `initDatabase()`. Importing the app loaded project routes and prepared SQL statements before the `projects` table existed.
Fix: run `initDatabase()` first, then dynamically import the Express app and start listening.
After the fix, clean-database startup, HTTP health, complete CRUD, cleanup, and persistence across a backend container restart all passed.
## Docker Validation
Docker Desktop was started and validation completed. Both images built, both services started, the frontend compiled, the backend initialized SQLite, and health, CRUD, cleanup, and restart-persistence checks passed.
## Baseline Status
Passing for the current automated and Docker smoke-test scope:
- [x] Locked frontend dependencies repaired
- [x] Frontend tests pass
- [x] Frontend production build passes
- [x] Backend TypeScript build passes
- [x] Schema matrix behaves as expected
- [x] Backend starts against a clean database
- [x] Health and CRUD smoke checks pass
- [x] Persistence survives a backend container restart
- [x] Docker Compose build and integration checks pass
Remaining release work includes broader backend tests, browser end-to-end tests, security regression tests, and resolution of the frontend dependency audit findings.
## Slice 2 Increment 2 Button Event Validation
On 2026-07-19, focused tests passed (3 suites / 6 tests), full frontend tests passed (12 suites / 462 tests), the frontend and backend builds passed, and the schema matrix passed at 13 / 2 / 2. `ComponentEvent.inputMap` was documented as compatibility-only; executed request inputs continue to use component/variable REST templates. Automated Preview dispatch passed. The user then manually verified creating a REST action and assigning it visually to a Button; Increment 2 Button `onClick` acceptance passed.