Skip to content

wayfinder: e2e specs from acceptance criteria, at a second Consumer #538

Closed as not planned
13 of 15 issues completed
Closed as not planned

Description

@orioltf

Destination

A spec clear enough to hand to /to-spec and /to-tickets for running the DLC's own line at the second Consumer to produce Playwright e2e tests: /specs, /tickets, /build, /pr-review, /qa, with CI running the suite afterwards.

It covers two cases. One is e2e tests for a feature that already exists. The other is e2e tests written first for a new feature that /build then implements across frontend, backend and API.

The map decides which parts are context in the Consumer, which belong in an e2e Practice Pack, and which need a change to a DLC Box. It is done when every design decision is closed and nothing is left to decide before someone builds it.

Notes

Seed. Generate an e2e suite from acceptance criteria, with the DLC's shape, at a second Consumer is the brief. This map supersedes two of its sections, and the brief will say so:

  • § "Why this is not the /qa Box". It said nothing here extends unic-dlc-qa.yaml. The maintainer reframed the effort on 2026-09-23: the chain is the DLC's own line, adapted by context, and a Box change is allowed where context cannot do the job.
  • § "Scope boundary". It said this effort does not edit the four Box YAMLs. Tickets that change a Box stay in this map. They carry a cross-map blocked_by edge to the tickets already editing the same file.

The NDA rule. The second Consumer is never named on GitHub, and neither is anything that identifies it, a stack plus a sector included. Every ticket and comment says "the second Consumer". The detail lives in the seat's notes, outside git. Write bodies with a file and publish with --body-file, so .claude/hooks/block-nda-terms.mjs reads them.

Adaptation is context first. An existing Consumer already runs the DLC for another kind of output. It adapts the Boxes through .archon/unic-dlc.config.yaml and docs/agents/*.md and leaves .archon/methods/ byte-identical to the bundle. /setup replaces .archon/methods/ wholesale on every run, so a Method edited inside a Consumer loses the edit on the next /setup. That is Practice Packs must stack's problem, not a local fix.

Box files have another owner. The four unic-dlc-*.yaml files belong to the seat driving the map that proves unic-archon-dlc at a Consumer. No ticket that edits a Box file is dispatched before that seat hears of it. A cross-map blocked_by edge records the order. Any ticket that edits unic-dlc-build.yaml is blocked by open-pr precedes its gate and No Box can target a base branch that is not the trunk. Any ticket that needs a browser inside a node waits on Archon 0.9.0 stops workflow nodes inheriting MCP servers.

Cite by step, not by line. A criterion names the step or the ADR slug. ADRs here are plugin-local, under apps/claude-code/unic-archon-dlc/docs/adr/, so cite them by slug.

Two environments. Generation runs on a developer's machine, with agents and MCP servers. CI runs the suite and nothing else. A generated test that depends on anything agent-side passes where it was written and cannot run where it lives.

Skills. grilling and domain-modeling for grilling tickets, research for research tickets, unslop on every piece of prose that ships.

Proving value needs the Consumer's QA Baseline. The Consumer measures it, in its own tracker, before the first generated test merges to its integration branch. A work item in the Consumer's tracker carries that work; nothing on GitHub mirrors it. See the #548 resolution.

Settled while charting (2026-09-23)

  1. The map is a new issue, a sub-issue of the seed. The seed keeps its body as the brief.
  2. Running the suite is in scope, locally through /qa's e2e node, then in CI. The CI pipeline itself belongs to the Consumer. This map adds one rule to it: a generated test depends on nothing agent-side.
  3. The Practice Pack is in scope as decisions: where its repository lives, what it reuses, what name prefix it owns. Building it is out of scope, as building the chain is.
  4. /pr-review reviews e2e tests on both axes, Standards and Spec, as it reviews any other code. No axis change.
  5. The testability gate is not a step of its own. It becomes a demand on /specs and /tickets.
  6. The existing gates vocabulary covers the human gate. /build, /pr-review and /qa already carry hitl and afk gates, and the fit-gap found no Box change needed for them. No new gate.

Decisions so far

Not yet specified

  • The numbers. How many attempts before the Acceptance Slice's GREEN stops, and what share of review findings is acceptable at the pull-request gate. These are two thresholds on two scales: the QA defect scale for e2e failures, and /pr-review's scale for review findings. The same cap also bounds the sabotage proof of #540. One measured chain run took over half an hour, so the cap is a wall-clock question too.
  • What /qa does with a failing e2e test, and where the finding lands in the Consumer's tracker. Its e2e node also has no readiness check: a down environment reads as a failing suite.
  • How the e2e environment runs on the generation side. What /build's readiness check probes, and what starts the app. It stays open until a Consumer declares a data mechanism. The QA plugin leaves both to Playwright's webServer block.
  • The Consumer's PostToolUse hook. It fires on every Write and Edit in that repository, including a generated spec. What it does with a file outside its own domain is unmeasured.
  • The NDA guard inside an Archon node. Probably absent. Measure it before dispatching any Box that could publish.
  • Which testable criteria are worth automating. The sketch behind the seed ranks them by criticality and impact before any test is written. This map decides only whether a criterion is testable.
  • Where an ambiguous criterion goes back to. The sketch sends it from verification back to the testability gate, never to regeneration. This map has no path from /build back to /specs.
  • Tests that already exist. The sketch skips what the suite already covers. Nothing here says how /build learns what is covered.
  • Hand-offs to the QA process. The sketch takes its input from the analysis and design step of Unic's software quality management process and hands results to its defect management and completion steps. This map names neither hand-off.
  • Test-case items on the Consumer's tracker. The suite's author suggested an agent could also create the tracker items that document each automated test, with its scenario and linked bugs (#543). No ticket on this map covers it.
  • What a Practice Pack may carry about acceptance criteria. A template for how criteria are written, generic criteria such as accessibility or performance, general expectations for a kind of feature (ruled out of the chain by #631), a default gap ADR. Each raises a rule this map has not set: generic criteria are one more source the Consumer's precedence must name, and two gap ADRs need a rule for which wins.
  • The proposal to the second Consumer's team. What the team is asked about the DLC, /pr-review, a Practice Pack, and the QA Baseline proposal from #548. Whether a Practice Pack carries a generic QA Baseline template waits on Is the internal QA plugin's content reused in the e2e Practice Pack, and on what terms? #544 and Where does the e2e Practice Pack live, and what name prefix does it own? #545. It waits until there is something to hand over (Does /pr-review sit beside or replace the second Consumer's existing reviewer?).
  • Which of two Playwright artefacts survives. The e2e Practice Pack copies nothing from the internal QA plugin, but that plugin stays a separate, changing plugin that does a similar job, so two artefacts can drift apart. The plugin's authors know it and accept it for now (#544). Which one survives, and when, bears on #545.

Out of scope

Activity

  1. self-assigned this
    on Sep 23, 2026
  2. orioltf commented on Nov 3, 2026

    @orioltf
    MemberAuthor

    unic-archon-dlc is frozen. This question carries over to adlc, its successor, as input for adlc's map (internal Jira APD-3). Nothing more happens on it in this repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions