# Reproduce the recorded walkthrough

This script was added for portfolio review. It executes the existing service in a temporary SQLite database and invokes the real stdio MCP subprocess for tool discovery. All source content, drafts, and actors are scripted fixtures. It does not call an LLM or involve an actual human reviewer.

To reproduce the portfolio recording, clone https://github.com/Robiswell/ChangeFront and check out commit `fce2ae6edee00dbd68c081f87ae90fe4d1553cf3`. Download the runner from the portfolio and save it as `scripts/portfolio_walkthrough.py` in that checkout. This runner is a new addition supplied by the portfolio; it is not yet included in that public commit.

From the repository root, using Python 3.12 or later:

```sh
python3 scripts/portfolio_walkthrough.py
```

On Windows, use `python` if `python3` is not available. No package installation is required. The report is written to `runtime/portfolio-walkthrough.json`; the temporary database is removed after execution.

## What it checks

1. A recommendation and document proposal enter review citing version 1 of an invented policy.
2. A direct service-level approval attempt using the AI actor raises an approval-boundary error.
3. A scripted human-reviewer actor can record approval, but the document proposal remains unapplied.
4. A new source version changes the review interval from 90 to 30 days. Previously approved dependent work becomes invalidated.
5. The original evidence content remains preserved and the old recommendation cannot be resubmitted with superseded evidence.
6. A real MCP subprocess returns a tool catalog without approval or apply operations.
7. The complete audit event chain verifies.

The report contains eight assertions, four state snapshots, raw MCP request/response data, the audit events, the source revision, and separate source and runner hashes. `execution_sha256` hashes deterministic scenario outputs; it excludes the actual run timestamp and machine metadata. Matching hashes demonstrate repeatability, not independent authenticity.

## Limits

- `verification_state: verified` is a fixture-supplied designation. The application does not fact-check the source.
- Human identity is simulated. The test does not establish production authentication or a real person's acceptance.
- An audit hash chain without an external anchor cannot prove that a database owner did not rebuild the history.
- This is a new recorded demonstration, not historical employer work, a model-quality evaluation, or a production result.

The prepared GitHub workflow is not yet published. It is configured to run the unchanged test suite and this script on Linux, Windows, and macOS. A local run does not establish that those hosted jobs have passed.
