# AWP External Consultation Record — 2026-08-21

**Date:** 2026-08-21
**Status:** Reference — findings and standing doctrine; binding rules it produced live in [`AWP-GOVERNANCE-AMENDMENT-2026-08-21.md`](AWP-GOVERNANCE-AMENDMENT-2026-08-21.md), [`I0-I1-AUTHORITY.md`](I0-I1-AUTHORITY.md), [`AWP-PAIN-INVARIANTS.md`](AWP-PAIN-INVARIANTS.md) and repo-root [`GOLIVE.md`](../../GOLIVE.md)
**Reviewer:** Claude Fable 5, owner-requested full-project consultation
**Purpose:** durable record of every recommendation, so none is lost to chat history again

## Verdict

The idea and architecture are sound. The K3s execution plane is the structural fix for the owner's worst measured pain category (workstation freezes, runaway agents, containment). The project was, however, repeating the owner's diagnosed finishing-gap disease one level up: unbounded documented activity with no ground-truth measure of distance-to-done. The corrections below were accepted by the owner in full and landed the same day.

## Findings (condensed)

```text
spec corpus       excellent vocabulary/invariants; ~140k tokens; 509/510
                  code fences were prose-only; no DDL, routes, error codes
plans corpus      ~50% meta-planning; three "implement I0" lists rewritten,
                  never executed; ~210k tokens marked binding
gates             deadlocked (Overdeck-harvest precondition unsatisfiable),
                  then silently bypassed by PRs #8-#16
auth              authorization deep, authentication absent          -> ADR 0009
DBOS/Drizzle      transaction seam undesigned                        -> seam spec
CI                none; foundation code merged ungated               -> ci.yml
finish line       AWP had no GOLIVE.md of its own                    -> GOLIVE.md
HTML twins        were runtime .md viewer shells, broken on file://,
                  with hardcoded drifting status text                -> removed
```

## Actions Landed 2026-08-21

```text
GOLIVE.md                        30 acceptance criteria, 0/30 start, cut list
AWP-PRIORITY-DECISION-…          review date 2026-09-15, extension freeze
AWP-GOVERNANCE-AMENDMENT-…       A1-A7: ratified start, harvest non-blocking,
                                 checkbox reclassification, proof descope,
                                 visual-freeze revoked, authority set reduced,
                                 internal merge protection
I0-I1-AUTHORITY.md               ~3.4k-token binding digest
AWP-PAIN-INVARIANTS.md           pain chains -> invariants -> regression gates
ADR 0009 + durable-workflow-transaction-seam.md
.github/workflows/ci.yml         six attributable gates, docs-only fast path,
                                 stop-the-line issue on red main
121 viewer shells deleted        one view.html?doc=… + pnpm docs:serve
```

## Standing Doctrine (owner-ratified, keep applying)

### Spec format

Markdown is canonical and the only source. Rich reading (flowcharts, mockups) is delivered by rendering markdown — Mermaid fences plus the single viewer, and eventually AWP's own spec-browser page — never by per-file HTML companions. The per-file-HTML mandate is withdrawn.

### Token economics

```text
bulk generation / implementation   flat-rate ChatGPT-web orchestrator lanes
judgment / review / consultation   Claude (Fable), sparingly
mechanical subagent lanes          smallest capable model tier
binding context per agent          the authority digest, never the corpus
```

There is no sanctioned unlimited-usage channel for Claude; do not search for one. The division of labor above is the cost model. The authority-set reduction (210k -> ~5k tokens of binding context per implementing agent) is itself the largest single token saving.

### Verification doctrine (the "agents lie" fix)

Progress is counted only as passing GOLIVE criteria. Lane self-reports and progress docs are never evidence. A task is Done only when the machine-checked gate that covers it is green. CI green on the exact head commit is the merge precondition (A7).

### Scope doctrine

No new owner-vision extensions are specced before the GOLIVE journey passes. No I3–I9 spec deepening; those specs are reference, revisited when their increment arrives. Proof burden per provider is one integration test until the first dogfood run, except pod-execution containment, which is non-negotiable.

## Residual Follow-Ups (open)

```text
[x] replace PLATFORM_MODULES_NPM_TOKEN repo secret with a read:packages-only
    token (done 2026-08-21: platform/.secrets/github.read.token; CI verified)
[x] local ~/.npmrc swapped to the read:packages token as well (2026-08-21;
    backup at ~/.npmrc.bak-2026-08-21; private-package fetch verified) —
    the broad gho_ token no longer appears in any npm config
[ ] sessions table (ADR 0009) is absent from packages/persistence schema —
    add with the gateway/control-plane auth implementation
[ ] durable-workflow seam crash-replay proof test must exist before the
    first FactoryRun workflow ships (see the seam spec, Required Proof)
[ ] real-browser check of docs/specs/view.html link rewriting
    (verified only under a DOM shim)
[ ] delete the stray %h/ directory at the repository root
[ ] AWP dogfoods itself: repository becomes Project one (GOLIVE AC-28..30),
    and the I1 trusted-merge path replaces A7's convention-based protection
```
