# Evidence Loop — first milestone

An evidence-led framework for checking whether an AI-made website does what its user expected. It is more than a skill: the Codex entry point is paired with a small, dependency-free runner that freezes the brief and refuses to label a flow passed or failed without recording what was done and seen.

This is a **first milestone**, not a finished autonomous testing platform. It does not yet operate a browser or spawn independent agents by itself. A host AI app with browser access can perform the test and enter observations. The public page explains the project and lets a visitor inspect a sample report.

## Try it

Requires Node 18 or newer. In this folder:

1. `npm run demo` prints a clearly illustrative report, not a real test.
2. Copy `example/brief.json` and change the URL, original outcome, and flows to your own authorized site.
3. `node bin/loop.mjs init your-brief.json your-new-run-folder` freezes that brief and makes an empty observations file. The folder must not already exist.
4. In an interactive browser, actually perform each action against a fixed version. Record each persona's `flowId`, `status` (`pass`, `fail`, `uncertain`, or `not-tested`), `did`, `saw`, and any `evidence` or `uncertainty` in `observations.json`. Never paste passwords or private data into it.
5. `node bin/loop.mjs report your-new-run-folder your-new-report.md` creates the reviewable milestone report. The report path must not already exist.

The `SKILL.md` gives a compatible Codex agent the testing rules, but merely mentioning the skill must not start an autonomous run. Explicitly ask to run it and state what outcome you expect. Use it only on sites you own or are authorized to test. No active security attacks are included.

## What comes next

The next milestone is a host adapter that can drive browser tests and preserve screenshots or equivalent click evidence automatically, followed by a real Campus Compass run and then a holdout site chosen after the core is frozen. The first release intentionally keeps fix/retest human-gated and security testing out of scope.
