This is _bmad-output/planning-artifacts/implementation-readiness-report-2026-09-22.md, the plan this mind was built from, published as it is written with one change: the owner's name is replaced with "the owner". Every FR, AC, NFR, AR and story tag on this site links to the place here that defines it.


stepsCompleted: [1, 2, 3, 4, 5, 6] status: complete readiness: READY documentsAssessed:

  • _bmad-output/planning-artifacts/prd.md
  • _bmad-output/planning-artifacts/architecture.md
  • _bmad-output/planning-artifacts/epics.md
  • _bmad-output/planning-artifacts/ux-design-specification.md

duplicatesFound: none shardedVersionsFound: none


Implementation Readiness Assessment Report

Date: 2026-09-22 Project: Human42

Document Inventory

All four documents exist as whole documents. No sharded versions, so no duplicate-format conflict to resolve.

DocumentFileSizeLast modifiedState
PRDprd.md356K2026-09-21 23:24stepsCompleted through step-12; 163 FRs; tools/check-prd.py passes 9/9
Architecturearchitecture.md96K2026-09-21 23:05status: complete, "READY FOR IMPLEMENTATION"
Epics & Storiesepics.md208K2026-09-22 00:07stepsCompleted: [1, 2, 3, 4]; 7 epics, 90 stories; tools/check-epics.py passes 18/18
UX Designux-design-specification.md96K2026-09-21 23:24workflowComplete: 2026-09-21 plus two recorded post-completion revisions

No missing documents. All four required types are present.

Supplementary artifacts the four documents depend on

Not discovered by the search patterns, but named as inputs by epics.md and architecture.md and therefore in scope for the assessment:

  • _bmad-output/design-artifacts/ux-verification-spine.md
  • _bmad-output/design-artifacts/roster-design.md
  • _bmad-output/design-artifacts/agent-examples/{amygdala,daydreamer,sunk-cost}.md
  • _bmad-output/design-artifacts/observatory-mock.html — a running mock Story 2.15 ports rather than reimplements
  • compliance/README.md and compliance/registry.json — the working FR125-FR127 implementation

Context carried into this assessment

The four documents changed materially on 2026-09-21 and 2026-09-22:

  • The PRD went 155 -> 163 requirements across four additions: the pairing layer (FR153, FR154), visitor participation (FR155, FR156), the implementer (FR157, FR158) and the prohibited classes with the bar (FR159, FR160).
  • Brain regions became modulators rather than scorers; the roster ships whole.
  • FR83 moved from Stage 4 to Stage 2; FR8 and FR79a gained build stages.
  • An adversarial review of epics.md produced 46 findings, of which 44 were valid. The story count went 71 -> 90 as a result.

Architecture and the UX specification were updated alongside each change, but only where the change was noticed, which is the class of gap this assessment exists to find.

PRD Analysis

Extraction is mechanical, from prd.md at 2026-09-21 23:24, and cross-checked against tools/check-prd.py. The full text of every requirement is in the PRD, which remains the contract; the operative clause of each is already indexed in epics.md's Requirements Inventory, built from this same document. This report records the extraction and its verification rather than reproducing 356K of source, and says so plainly rather than calling a copy a summary.

Functional Requirements

163 requirements. 8 Growth-tagged, 155 in the MVP. Numbered FR1 to FR160 with no gaps, plus three lettered requirements that trace and stage on their own account: FR55a, FR56a, FR79a.

GroupCountRequirements
Cognition and Workspace47FR14, FR15, FR16, FR17, FR18, FR19, FR20, FR21, FR22, FR23, FR24, FR25, FR26, FR27, FR107, FR108, FR109, FR110, FR111, FR112, FR113, FR116, FR117, FR118, FR121, FR125, FR126, FR127, FR128, FR129, FR130, FR131, FR132, FR133, FR134, FR135, FR136, FR137, FR138, FR139, FR140, FR141, FR142, FR152, FR153, FR154, FR155
Operations, Safety, and Persistence22FR87, FR88, FR89, FR90, FR91, FR92, FR93, FR94, FR95, FR96, FR97, FR98, FR99, FR100, FR101, FR102, FR103, FR104, FR105, FR106, FR114, FR115
Observatory and Sharing20FR54, FR55, FR55a, FR56, FR57, FR58, FR59, FR60, FR61, FR62, FR63, FR64, FR65, FR66, FR119, FR122, FR144, FR145, FR151, FR156
Economy and Revenue20FR56a, FR73, FR74, FR75, FR76, FR77, FR78, FR79, FR79a, FR80, FR81, FR82, FR83, FR84, FR85, FR86, FR120, FR146, FR147, FR150
Thought Intake18FR1, FR2, FR3, FR4, FR5, FR6, FR7, FR8, FR9, FR10, FR11, FR12, FR13, FR123, FR148, FR149, FR159, FR160
Roster, Contracts, and Contribution12FR42, FR43, FR44, FR45, FR46, FR47, FR48, FR49, FR50, FR51, FR52, FR53
Self-Modification and Action11FR28, FR29, FR30, FR31, FR32, FR33, FR34, FR35, FR36, FR157, FR158
Outcome Judgment and Learning7FR37, FR38, FR39, FR40, FR41, FR124, FR143
Decisions and Verdicts6FR67, FR68, FR69, FR70, FR71, FR72
Total163

Growth-tagged and outside the MVP build: FR36, FR41, FR53, FR66, FR72, FR86, FR105, FR106.

Non-Functional Requirements

84 rows across 9 categories. The PRD states NFRs as measured rows rather than numbered items; epics.md numbers them NFR-P1 to NFR-V5 so stories can cite them. 83 carry an explicit verification gate, and five carry two, so the class counts sum to 88 rather than 83.

CategoryRowsGate classCount
Performance20Launch gate (blocks t0)12
Security and Containment13Per release (blocks a merge)45
Reliability and Durability11Drill (weekly or quarterly)5
Scalability8Monitored (reported in the digest)26
Integration8
Operability and Portability7Ungated: Reliability's "Loss of the world
Accessibility6is the only unacceptable outage" — a posture
Cost6rather than a measurement
Reproducibility and Observability5

Additional Requirements

  • 57 acceptance criteria in the PRD's own appendix, which states that "Downstream stories inherit them."
  • 94 parameter rows across 5 tables, which the appendix declares is a build artifact: "the schema for the substrate config file that lives outside the repository's write path."
  • 11 user journeys, every requirement tracing to at least one.
  • 6 build stages, every MVP requirement staged in exactly one.
  • Compliance, technical constraints and integration requirements in Domain-Specific Requirements; platform requirements in Web Application Specific Requirements, including the 28-feature thought vocabulary and the one-file agent contract.

PRD Completeness Assessment

Internally consistent on every check available. Verified mechanically rather than by reading:

CheckResult
FR numberingFR1-FR160, no gaps, 3 lettered
Every FR traces to a journeypass
Every MVP FR has a build stagepass
Every MVP FR is classified t0 or deferredpass — 93 at t0, 62 following, summing to 155
Dangling FR referencesnone
Dangling AC referencesnone
tools/check-prd.py9 of 9 pass

One minor defect found. The Parameters appendix states its own contract — "Columns: the default at launch, the bounds the substrate enforces, and who may change it" — and of 94 rows, **one has no owner in its "Changed by" column: Launch roster**. Defensible in substance, since a launch roster is not a tunable after launch, but it is the appendix failing its own stated rule and it is the only row that does. Recorded rather than fixed here, since this workflow assesses rather than edits.

Traceability into the epics is clean: no requirement exists in the PRD and not in the epics inventory, none exists in the inventory and not in the PRD, and none exists in the PRD without appearing in at least one story.

Epic Coverage Validation

Coverage Statistics

Total PRD functional requirements163
Covered by at least one story163
Covered inside an acceptance criterion rather than only in prose163
Coverage100%
Requirements in the epics but not in the PRDnone

Coverage is asserted by tools/check-epics.py, written during the preceding workflow precisely because no tool had ever read this document. It runs two distinct checks here: that every requirement appears in a story, and that it appears inside that story's acceptance criteria rather than merely in its prose. The second exists because a requirement can be name-dropped in a story title and never actually pinned by a criterion, which an adversarial review found in nine places before the story set was rebuilt.

Missing Requirements

None. No functional requirement in the PRD is absent from the story set.

Requirements carried by more than one story

Sixteen requirements are cited by two or more stories. None is a duplicate or a split responsibility; each is a deliberate seam where one requirement is enforced at more than one point, or built in one epic and surfaced in another. Listed because an assessment that reported only the total would hide them.

FRStoriesWhy more than one
FR43.5, 6.1The refusal surface exists in Epic 3; moderation itself goes live in Epic 6
FR83.5, 6.2Held status shown at the box; the held queue built with moderation
FR133.5, 6.4The session token is issued at injection; its purge is a retention story
FR224.1, 4.3The validator enforces the modulator shape; the roster is what has one
FR394.5, 4.6Standing moves on attribution; attribution is its own zero-sum rule
FR573.6, 3.17The permalink's content, and the SSR runtime that renders it
FR601.2, 3.9The about panel is drafted as a Stage 0 lead-time task and ships in Epic 3
FR611.2, 6.3, 6.5Same: drafted in Stage 0, referenced by the bar, gated at t0
FR715.12, 5.18Named in the verdict story, built by its own
FR773.8, 5.17The sponsorship link ships in Epic 3; its money reaches the ledger in Epic 5
FR805.2, 5.6Account creation, and the identity an account owed a share must add
FR845.7, 5.17The public aggregate, and sponsorship appearing on it as its own line
FR1475.6, 7.2Paying in credits now; the payout rail a Growth channel would need
FR1522.7, 3.7The third terminal state resolves in the ballot; the class is assigned on the page
FR1592.12, 3.2, 3.5, 6.1Three enforcement points by design — implementation, graduation, intake — plus the refusal variant
FR1603.2, 3.5, 6.3The bar's refusal surface, and the bar itself

FR159 is worth reading twice. The requirement states it is "enforced three times, because a text, a decision and a piece of work are three different things", so two of its enforcement points deliberately live four epics before the requirement's own stage. That is a designed inversion rather than a traceability defect, and both affected epics carry it as a note.

Coverage Matrix

163 rows, generated from the documents rather than transcribed. Covered means the requirement is cited inside a story's acceptance criteria.

FRStory or storiesStatus
FR13.5covered
FR22.9covered
FR35.12covered
FR43.5, 6.1covered
FR53.5covered
FR63.5covered
FR73.5covered
FR83.5, 6.2covered
FR93.5covered
FR106.2covered
FR115.3covered
FR126.4covered
FR133.5, 6.4covered
FR142.3covered
FR152.3covered
FR162.3covered
FR172.4covered
FR182.4covered
FR192.5covered
FR202.7covered
FR212.7covered
FR224.1, 4.3covered
FR234.7covered
FR244.7covered
FR254.7covered
FR265.11covered
FR274.4covered
FR282.11covered
FR292.11covered
FR302.16covered
FR312.11covered
FR322.17covered
FR335.10covered
FR345.11covered
FR355.10covered
FR367.1coveredGrowth
FR372.13covered
FR382.13covered
FR394.5, 4.6covered
FR405.13covered
FR417.3coveredGrowth
FR424.1covered
FR434.1covered
FR444.2covered
FR454.2covered
FR464.8covered
FR474.4covered
FR484.4covered
FR494.4covered
FR504.8covered
FR514.8covered
FR524.1covered
FR537.4coveredGrowth
FR543.2covered
FR553.3covered
FR55a3.1covered
FR563.4covered
FR56a3.6covered
FR573.17, 3.6covered
FR583.10covered
FR593.1covered
FR601.2, 3.9covered
FR611.2, 6.3, 6.5covered
FR623.9covered
FR633.8covered
FR645.13covered
FR653.6covered
FR667.5coveredGrowth
FR675.12covered
FR685.12covered
FR695.12covered
FR705.12covered
FR715.12, 5.18covered
FR727.3coveredGrowth
FR735.1covered
FR745.1covered
FR751.7covered
FR761.7covered
FR773.8, 5.17covered
FR785.2covered
FR795.2covered
FR79a5.4covered
FR805.2, 5.6covered
FR815.7covered
FR825.1covered
FR833.5covered
FR845.17, 5.7covered
FR855.7covered
FR867.2coveredGrowth
FR871.10covered
FR881.6covered
FR891.2covered
FR901.4covered
FR911.4covered
FR921.5covered
FR931.5covered
FR942.14covered
FR955.13covered
FR961.10covered
FR976.5covered
FR985.13covered
FR995.13covered
FR1001.10covered
FR1015.13covered
FR1025.14covered
FR1031.11covered
FR1045.14covered
FR1057.5coveredGrowth
FR1067.5coveredGrowth
FR1072.2covered
FR1082.10covered
FR1092.5covered
FR1105.10covered
FR1112.5covered
FR1124.5covered
FR1134.5covered
FR1141.11covered
FR1151.11covered
FR1165.5covered
FR1174.8covered
FR1185.10covered
FR1195.9covered
FR1205.14covered
FR1214.5covered
FR1223.11covered
FR1233.5covered
FR1243.11covered
FR1251.8covered
FR1261.8covered
FR1271.8covered
FR1283.9covered
FR1291.9covered
FR1304.9covered
FR1311.9covered
FR1321.8covered
FR1331.8covered
FR1342.1covered
FR1352.1covered
FR1362.6covered
FR1372.6covered
FR1382.7covered
FR1392.7covered
FR1402.7covered
FR1412.8covered
FR1422.8covered
FR1434.6covered
FR1443.2covered
FR1453.3covered
FR1465.5covered
FR1475.6, 7.2covered
FR1485.3covered
FR1495.3covered
FR1505.6covered
FR1513.8covered
FR1522.7, 3.7covered
FR1532.10covered
FR1544.9covered
FR1555.8covered
FR1565.8covered
FR1572.12covered
FR1582.12covered
FR1592.12, 3.2, 3.5, 6.1covered
FR1603.2, 3.5, 6.3covered

Assessment

Coverage is complete and is the strongest part of this planning set. It is also, on its own, the weakest possible assurance — 100% functional-requirement coverage was true of the previous story set too, while the verification spine, the live diff stream, the CI topology and nine of thirteen UI components were entirely unbuilt. A requirement map cannot see a deliverable that no requirement names. Steps 4 and 5 are where that is tested.

UX Alignment Assessment

UX Document Status

Found. ux-design-specification.md, 96K, workflowComplete: 2026-09-21, carrying two recorded post-completion revisions. Twelve of fourteen workflow steps produced content; steps 5 and 7 were skipped with reasons in frontmatter. It is unusually load-bearing for a UX document, because the engine repository is private and "the interface is not a window onto the product. It is the product's entire visible body."

UX to Architecture alignment: good

The architecture took its front-end decisions from this document rather than beside it, which is why they agree.

UX asksArchitecture answers
"One state model, two renderers, DOM first" — "five obligations discharged by one build"SvelteKit chosen so the DOM renderer and the permalink are one codebase; build order inverted deliberately
Custom design system, "the substrate's own vocabulary"sv scaffold with every add-on declined; go-blueprint rejected partly because "scaffolding Tailwind would import exactly the opinion the design spent its length removing"
First view under 5 seconds on a reference phoneSvelte over React on that single axis — "roughly 47 KB against React's 156 KB, spent directly against" that gate
Canvas 2D with a DOM layer above carrying all textAdopted; WebGL named as an upgrade threshold
One derived breakpoint, no tablet strategyDeferred to architecture as a measured value

Alignment Issues

1. The UX specification does not know the roster became two kinds. modulator and scorer appear zero times in it, against 20 and 11 in the PRD. Brain regions became modulators on 2026-09-21, after this document completed. It is not cosmetic: the spec's four-state hue model assumes every bubble can be seated, and a modulator never is — it casts no vote, so it never shows a projection and, at a reveal, it has nothing to snap to. The spec already describes that exact silhouette for a recused author ("its bubble simply does not snap, and that absent snap is how recusal reads"), but a modulator holds it permanently rather than for one vote, and roughly a quarter of the launch roster will be one. Impact: the canvas stories inherit an unstated case. Recommend one paragraph in the spec's visual grammar and an acceptance criterion on Story 3.3.

2. Two documents state opposite rules about agent hue, and a story implements the losing one. The verification spine holds VI-2, Reserved gamut as a per-release check: "Substrate colour is unreachable from any agent value. Asserted as band membership in a perceptual colour space, not as a palette list." The UX specification withdraws exactly that: "That reservation is withdrawn. It contradicts the requirement that a projection is the bubble's own hue, which is precisely an agent painting itself in record colour as a claim." Story 3.16 builds the verification spine. Impact: a per-release check would fail a behaviour the design requires. The UX document is the later and better- reasoned of the two and should win; the spine's VI-2 needs striking or rewriting to assert motion rather than gamut, which is what actually partitions the two voices.

3. The specification contradicts itself on its own evidence base. The mock is described as revised "about thirty times" in Design Direction and "about fifty iterations" in Completion. Minor, but a story briefly depended on the larger figure before it was reworded, and this document opens by insisting its counts are mechanical.

Warnings

Not a conflict, but an open decision that blocks a story. The PRD's Stage 2 prose still reads "committee seating, which lights the 7 to 15 agents on the focused idea and dims the rest", while the UX specification and FR55 both hold that "no bubble greys." These are compatible — dimming is lowered lighting, greying is drained hue, and FR54 itself uses "dimming" — so this is not the contradiction it first appears to be. What is genuinely open is the adjacent question AR-X6 records: whether lit now means focused rather than seated, and whether focus defaults to the largest gathering. Those were the sweep's inferences rather than the owner's decision, and Epic 3 already carries a blocking note requiring confirmation before Story 3.2 is accepted.

Nothing else in the four post-completion PRD additions needs a UX surface. The implementer has no interface. Fit is measured and never displayed, deliberately — it is excluded from the tracked-signal list precisely so it cannot be optimised toward. FR155 and FR156's visitor bubbles and FR159/FR160's refusal variants were folded into the specification on 2026-09-21 and are recorded in its frontmatter.

Assessment

Aligned on everything architectural, with three documentation defects and one open owner decision. Only issue 2 could cause a build failure, and it would surface as a per-release check contradicting a designed behaviour rather than as anything silent.

Epic Quality Review

Validated against create-epics-and-stories standards. Findings are ordered by severity, and the ones that are deliberate deviations are labelled as such rather than excused — the standard is still the standard.

🔴 Critical

C1. Epic 1 is an infrastructure epic, which this standard forbids outright. The red-flag list names "Infrastructure Setup — not user-facing" and "Setup Database" as examples of what an epic must not be. Epic 1, "The substrate holds, before anything thinks", is sixteen stories of event store, broker, certificates, registry, cage, CI runners and hardware, and no human being can see any of it.

Why it stands anyway, recorded so a later reader can overturn it: the PRD makes this a gate rather than a phase — "No agent acts before all five are green. Brainstem before cortex" — and the reason is containment rather than sequencing: "The blast radius of the worst case is hardware the owner is willing to lose." Until the tiers are split, mind-authored and stranger-authored code has nowhere safe to run. Its outcome is also a named Success Criterion (the Month 0 gate) with a named user, and its done-condition is demonstrable rather than a milestone: "a container on the runner tier can reach nothing on the owner's personal network." Splitting it to manufacture user value would invent a delivery the PRD forbids.

This was raised and accepted during epic design. It remains a standards violation and is reported as one.

🟠 Major

M1. Story 3.5 carries twelve functional requirements — four times the median. "The one place a visitor puts something in" holds FR1, FR5, FR6, FR7, FR9, FR13, FR83, FR123, FR159, FR160 and the error-code envelope, across eight Given clauses. It is the injection box, the two substrate statements, rate limiting, intake shedding, the session token, the refusal notice, queue-position status, the copy registry and the eleven error codes. That is not one dev session. It grew to this size when the session token and the error envelope were added to close two gaps, and closing a gap by enlarging a story that was already the largest was the wrong move. Recommendation: split three ways — the injection box and its substrate copy; intake limits, shedding and the session token; the refusal notice and the error envelope. No forward dependency is created by doing so.

M2. Four more stories carry six or five requirements each. Story 5.13 ("Ten minutes on a Sunday") bundles the digest, the status page, incident issues, event-log query, the audit trail, automatic kill and judge sampling — six requirements and seven operator surfaces, of which the digest alone is a week. Story 5.12 bundles five verdict requirements plus the OpenAPI description. Story 2.7 bundles the denominator, the three seat behaviours, the compute wait and the constitutional void. Story 1.8 bundles the registry, its re-fetch, the capability matrix, licence class and commercial ceilings. Recommendation: split 5.13 at minimum. The other three are cohesive enough to defend, but should be sized by whoever picks them up rather than assumed.

🟡 Minor

m1. The starter-template rule is satisfied in two places rather than one. The standard says that where architecture specifies a starter, Epic 1 Story 1 must set it up. The architecture specifies two different answers: the backend takes none (*"go mod init, with the layout drawn from the tier topology"*) and the front end takes a real one (npx sv@0.17.0 create observatory). Story 1.1 does the first. The second is in Story 2.15, because the architecture is explicit that "the front-end scaffold is not needed until Stage 1's throwaway observatory." Deliberate, sourced, and a deviation from the letter of the rule.

m2. Two acceptance criteria still use a subjective predicate, both defensible: Story 3.16's "reads as a sentence in the text view" and Story 2.15's render-grader criterion, which pairs the subjective half with a machine- graded one and explicitly excludes the owner's judgement from being an AC.

Compliance checklist

CheckResult
Epic delivers user value6 of 7 — Epic 1 fails, deliberately (C1)
Epic can function independentlypass — no epic requires a later one to work
No forward dependencies between storiespass — asserted by check-epics.py
Stories appropriately sizedfail — 1 severe (M1), 4 borderline (M2); median is 2 FRs
Database tables created when neededpass — no story creates schema upfront
Every story has a user story and Given/When/Thenpass — 90 of 90
Traceability to FRs maintainedpass — 163 of 163
Starter template set up in Epic 1 Story 1partial (m1)

Acceptance criteria quality

421 Then/And lines, 228 of them containing a measurable value (54%). For comparison, the previous story set measured 30 of 298 (10%) when an adversarial reviewer counted it, which is what prompted the rebuild. Only two lines now carry a subjective predicate.

Assessment

Structurally sound, with one accepted violation and one real sizing defect. Nothing here blocks implementation. M1 should be fixed before anyone picks up Story 3.5, because a twelve-requirement story is where scope silently goes missing.

Summary and Recommendations

Overall Readiness Status

✅ READY, with six issues to fix and one decision to take

Nothing found blocks Stage 0 from starting. Two issues should be closed before the stories they affect are picked up, and one open decision blocks a single story in Epic 3.

Findings by severity

FindingWhereAction
🔴Epic 1 is an infrastructure epic, which the standard forbidsEpic quality C1Accept. The PRD makes it a containment gate, not a phase. Recorded as a standing violation so it can be overturned rather than forgotten
🟠Story 3.5 carries 12 requirements — four times the medianEpic quality M1Fix before it is picked up. Split three ways
🟠Story 5.13 bundles seven operator surfacesEpic quality M2Fix, or size it explicitly when picked up
🟠The verification spine and the UX spec state opposite rules on agent hueUX alignment 2Fix. Strike or rewrite VI-2; the UX document is later and better-reasoned
🟡The UX specification never learned the roster became two kindsUX alignment 1Fix: one paragraph plus an AC on Story 3.3
🟡The UX spec contradicts itself on the mock's iteration countUX alignment 3Trivial; pick one
🟡One parameter row has no owner in its "Changed by" columnPRD analysisTrivial; Launch roster
⏸️Three UX inferences need the owner's confirmationUX warningsDecide. Blocks acceptance of Story 3.2 only

Critical issues requiring immediate action

None. The single 🔴 is an accepted, documented deviation rather than a defect, and the two 🟠 that matter are story-sizing problems in Epics 3 and 5 — neither of which is reached before Stage 0 and Stage 1 are done.

What this assessment could not tell you

Stated plainly, because the most valuable finding of the preceding workflow was exactly this kind of blindness.

Requirement coverage is 100% and that is nearly worthless on its own. It was also 100% for the story set that preceded this one, while the verification spine, the live diff stream, the CI topology and nine of thirteen UI components were entirely unbuilt. A requirement map cannot see a deliverable that no requirement names. What caught those was an adversarial reviewer with no stake in the work, and then tools/check-epics.py, which now asserts against the architecture's package tree, the UX specification's components and the NFR gate classes rather than against requirement numbers alone.

This assessment inherits that limit. It can compare documents against each other; it cannot tell you whether the four of them together describe a system that works. Story sizing is judged from requirement counts and criterion weight, which is a proxy. Whether ninety stories is the right decomposition of this product is not a question any of these checks answers.

  1. Split Story 3.5 before Epic 3 begins. Twelve requirements in one story is where scope goes missing quietly.
  2. Resolve the gamut conflict. The verification spine's VI-2 asserts a reserved gamut the UX specification explicitly withdrew; Story 3.16 builds the spine, so a per-release check would fail a behaviour the design requires.
  3. Confirm or overturn the three UX inferences (AR-X6) before Story 3.2 is accepted. Overturning changes its acceptance criteria and a PRD sentence together.
  4. Teach the UX specification about modulators — one paragraph, plus an acceptance criterion on Story 3.3 for the bubble that never snaps.
  5. Split Story 5.13, or size it deliberately when it is picked up.
  6. Begin Stage 0. Nothing above touches Epic 1, and its checkpoint is the one gate the PRD says nothing proceeds without.

Final note

This assessment identified 8 issues across 3 categories — one accepted standards violation, two story-sizing defects, four documentation defects, and one open owner decision. None blocks implementation starting. Two should be closed before the epics they sit in are reached.

The planning set is in unusually good shape for a reason worth naming: it was attacked by something that had no stake in it, and the things that attack found are now asserted by two checkers that will outlive the session that wrote them. tools/check-prd.py holds nine invariants over the PRD; tools/check-epics.py holds eighteen over the breakdown, including the four sources a requirement map cannot see. Both pass.


Assessed: 2026-09-22 · Assessor: implementation-readiness workflow, Human42 · Documents: prd.md, architecture.md, epics.md, ux-design-specification.md


Addendum — 2026-09-22: four documentation defects closed

Fixed after the assessment, in the order the report recommended. The two story-sizing defects (M1, M2) and the open owner decision are not closed and remain the outstanding work.

UX alignment 2 — the gamut conflict. Closed. ux-verification-spine.md's VI-2 was rewritten from "Reserved gamut" to "Reserved application, not reserved gamut", with the original text and the reason for the change recorded in place. It now asserts who applied a hue, never which hue it is: an agent may project any hue including one inside the stance ramp, the validator rejects a file declaring a stance colour, an outcome colour or a ramp, and every substrate-drawn hue is applied to a whole gathering in one frame by a paint context that exposes no way for an agent value to reach it. The one band that remains a band is the agent identity floor at chroma >= 0.10, which is a floor on agents rather than a reservation for the substrate. A per-release check would no longer fail a behaviour the design requires.

UX alignment 1 — modulators. Closed. The UX specification's colour system gained a paragraph: a modulator holds a size, a hue and a shimmer, is never seated, never projects, and at a reveal has nothing to reveal, so it lives permanently in the first state of hue. It is the silhouette the document already described for a recused author, held always rather than for one vote. Explicitly not marked as a modulator, because that would be a fifth channel and because a reader who notices it never snapping has learned something true. Story 3.3 gained the matching acceptance criterion.

UX alignment 3 — the mock's iteration count. Closed. The specification said "about thirty times" in Design Direction and "about fifty iterations" in Completion. Harmonised to fifty, with the disagreement recorded in frontmatter rather than silently resolved.

PRD analysis — the unowned parameter. Closed. Launch roster now names Owner in its "Changed by" column, so all 94 parameter rows satisfy the appendix's own stated contract. (Repaired on a second pass: the first edit produced a five-column row, which the column-count check caught.)

Still open after this addendum: M1 (split Story 3.5), M2 (split Story 5.13), and the three UX inferences awaiting the owner's confirmation. C1 stands as an accepted violation.


Addendum 2 — 2026-09-22: both sizing defects closed

M1 — Story 3.5. Closed, split three ways. It owned ten requirements against a median of two. Now:

  • 3.5 The one place a visitor puts something in — the box, its two substrate statements, and the copy registry that no self-change may edit (FR1, FR5, FR83, FR123)
  • 3.6 Who is speaking, how often, and what happens when there is too much — the HMAC session token, per-session and per-address limits, intake shedding, and injected-thought status (FR6, FR9, FR13)
  • 3.7 Nothing fails silently — the eleven error codes and the refusal notice with its variant list open (FR7)

M2 — Story 5.13. Closed, split two ways.

  • 5.13 Ten minutes on a Sunday — the weekly digest and the status page, generated from the same substrate numbers so no two views disagree (FR101)
  • 5.14 The surfaces you reach when the Sunday was not normal — incident issues, event-log query, the audit trail, automatic kill, and judge sampling (FR64, FR95, FR98, FR99, FR40)

Epic 3 went 17 to 19 stories and Epic 5 18 to 19, with everything after each split renumbered. 93 stories. No duplicate identifiers, every epic contiguous from .1, and no story depending on a later one.

Sizing after the splits

Measured as requirements a story owns — its epic matches the requirement's build stage — rather than requirements it merely names, since a story that cites a later epic's requirement to say when something arrives does not implement it.

BeforeAfter
Largest story10 owned (3.5)6 owned (5.12)
Stories owning 5 or more54
Median22
Mean—1.8

The four remaining at five or six are cohesive rather than bundled: 5.12 is the verdict path, 5.14 is the operator's abnormal-week surfaces, 2.7 is one vote's resolution, 1.8 is one registry. Each should still be sized by whoever picks it up rather than assumed, but none is the kind of story where scope goes missing.

Status after both addenda: all six fixable issues closed. What remains is the one accepted violation (C1, Epic 1 as an infrastructure epic) and the one open owner decision (the three UX inferences blocking acceptance of Story 3.2).


Addendum 3 — 2026-09-22: the last open decision, taken

The three UX inferences are confirmed as documented, so AR-X6 is closed and Story 3.2 is unblocked. Greying the unseated remainder is retired; lit means focused rather than seated; focus defaults to the largest gathering.

The middle one was queried rather than recorded, because the owner's phrasing was "lit means focused or seated" while every document says lighting follows focus rather than seating. The difference is not editorial. With 5 to 10 votes live at once and committees of 7 to 15, lighting every seat takes the lit and fully animating count from 7-15 to 35-150, which reopens two frame-rate requirements written against one lit committee — including NFR-C5's "seating holds the lit, fully animating count at 7 to 15 however far the roster grows, so a larger roster costs more in the dimmed field and nothing in the committee." Confirmed as focused-only, so no requirement, NFR or parameter moves.

Story 3.2 now states the rule and the reason together, and names the third state explicitly: a seated agent on an unfocused idea is gathered rather than lit — drawn to its idea and shimmering, showing no vote colour.

Assessment status: closed

Fixable issues found6
Fixable issues closed6
Open owner decisions0
Accepted standing violations1 — C1, Epic 1 as an infrastructure epic

Nothing is outstanding but the one deviation that was accepted on the record.