Files
ThothII/docs/testing/p11-manual-acceptance.md
T

3.7 KiB

P1.1 manual acceptance

This walkthrough is the separate human gate for the P1.1 workspace-directory registry. It is independent from both .artifacts/p1-integration/** and .artifacts/p11-integration/**. The helper prepares and serves the lab, but the reviewer performs the registry, Git, UI, export, render, tht, refusal, secret-scan, and cleanup checks and records the verdict.

Prerequisites

  • clean repository checkout with the P1.1 implementation present;
  • node, npm, git, curl, and python3 available;
  • built production assets:
npm --prefix backend run build
npm --prefix frontend run build
  • executable harness CLI at harness/.venv/bin/tht;
  • free loopback ports 127.0.0.1:8791 and 127.0.0.1:8792.

Lifecycle commands

Run from the repository root:

./scripts/p11-manual-acceptance.sh prepare
./scripts/p11-manual-acceptance.sh serve
./scripts/p11-manual-acceptance.sh stop
./scripts/p11-manual-acceptance.sh cleanup

The fixed lab root is:

.artifacts/manual-acceptance/p11/

Expected lifecycle behavior:

  • prepare creates the fixed root, ownership record, bare remote, curator clone, root catalog, nested filesystem evidence, fixture secrets, request fixtures, generated command scripts, and GUIDE.md; it leaves status PENDING, performs no reviewer publish operation, and never writes VERDICT.md.
  • serve starts the production backend on 127.0.0.1:8791 and a production-built frontend preview on 127.0.0.1:8792, recording exact ownership for both.
  • stop refuses foreign or partial ownership and stops only the two owned loopback processes.
  • cleanup refuses live state and removes only .artifacts/manual-acceptance/p11/.

Reviewer workflow

After prepare, open the generated .artifacts/manual-acceptance/p11/GUIDE.md and personally:

  1. inspect the catalog, nested descriptor/evidence layout, ownership, and secret-path bindings;
  2. serve both surfaces and verify the owned listeners;
  3. list configuration_required slots;
  4. validate and bootstrap-create descriptors exactly once;
  5. inspect catalog/descriptor/evidence/docs Git object IDs;
  6. retry create/update/delete and verify refusal plus unchanged object IDs;
  7. make a curator descriptor+catalog edit, push, pull, and verify the API did not rewrite curator bytes;
  8. make an evidence-only commit and inspect the new revision identity;
  9. verify the live UI shows read-only existing workspaces and bootstrap-only editing for missing slots;
  10. exercise export/import under bootstrap-only rules;
  11. render twice, diff the results, and run tht config check;
  12. run negative catalog/path/secret cases and a bounded secret scan;
  13. stop the lab, verify both listeners are gone, write VERDICT.md, and only then cleanup if desired.

Expected outcomes

  • prepare produces a fresh P1.1-only lab and leaves no VERDICT.md.
  • serve exposes only the owned loopback backend and frontend preview.
  • positive API operations succeed once; curator-owned follow-up mutations are refused safely;
  • curator Git changes become active only after pull;
  • renders are deterministic; tht config check -c <file> succeeds;
  • secret scans find no canaries outside the fixture-secret boundary;
  • after stop, nothing remains listening on 127.0.0.1:8791 or 127.0.0.1:8792.

Verdict format

The reviewer creates VERDICT.md manually. Include:

  • reviewer identity;
  • UTC timestamp;
  • result for each checklist step;
  • observations and failure evidence;
  • exactly one final line: manual acceptance: PASS or manual acceptance: FAIL.

Passing bash scripts/test-p11-manual-acceptance.sh proves only the tooling/lifecycle guards. It does not perform or approve manual acceptance.