Repository navigation
Description
Rewritten 2026-09-03 by the #373 orchestrator. Four of this ticket's five original criteria
were met, twice, by runs 1 and 2; the fifth was not, and it is the one the client can see. The
original body — "Walk /specs → /tickets → /build once in DXP-DesignSystem and deliver the first
slices" — is in this issue's revision history. What follows is the remainder.
Question
Two full walks of the main line have run in DXP-DesignSystem. Neither left a component on
develop. Does a measurement run's output ever get merged, or does delivery need a pass of its own?
What is already done, and what is not
| Original criterion | |
|---|---|
/specs produces a PRD for the first slice set |
met, runs 1 and 2 |
/tickets publishes the slices to Azure DevOps with their blocking edges |
met, runs 1 and 2 |
/build completes at least one slice AFK and opens a pull request |
met — PR 5807, PR 5835 |
| The client can see something from the Figma page rendering in the repo | not met |
| Every failure is written up naming Box, node, and cause | met — docs/research/2026-08-31-dlc-run-2-findings.md, 63 findings |
origin/develop carries three contract.generated.md / screenshot.generated.png pairs,
index.ts, lib/utils.ts and styles.css. No component source and no story. Both builds live
on branches abandoned on purpose — 5e683a7 and a71e19f — because a run's output is a measured
artefact, and fixing it would destroy the baseline the next run is compared against.
That reasoning is sound and it has now held for two runs. The consequence is that the deliverable and
the measurement are the same task, and only the measurement happens.
The decision this ticket makes
Whether a run's output is ever merged, and if not, what delivers instead. Two shapes, and this ticket
picks one:
- The run delivers. A run's branch is reviewed and merged like any other, and the baseline for
the next comparison is a tag or a commit rather than the absence of code. Cheapest in effort;
changes what every future run means. - Delivery is its own pass. A separate slice, built from the run's output by hand or by a fresh
/build, lands ondevelop. Keeps the runs clean; costs a build that the client already paid for
once.
Acceptance criteria
- The decision above is recorded — which shape, and why the other was refused.
origin/developinDXP-DesignSystemcarries at least one component source file and at least one
story that the Storybook vitest project renders.- The component is one the Figma profile-card page names, so the client recognises it.
- The five mechanism checks 43020–43024 act on it rather than passing vacuously: each check has
something in the tree to inspect. - Whatever baseline run 3 is compared against is named as a commit, not as "develop is empty".
Why this is still p0
It is the only criterion of the original ticket that a client can see, and after two runs it is the
oldest unmet promise on this map.
Activity
orioltf commentedon Aug 14, 2026
How to start this session
Produces: the ten-day goal —
/specs→/tickets→/buildall run inDXP-DesignSystem, firstslices delivered, and a written list of what broke.
/wayfinder 373 #379here to claim. The work happens in the Consumer's clone./unic-archon-dlc:specs <slug>, then/unic-archon-dlc:tickets <slug>,then
archon workflow run unic-dlc-build "<slug>".mid-sprint.
Method caused it — then work around it and continue.
Traps
mainby default and ignoresbaseBranchin config. Pass--from <branch>andverify the fork point before trusting the run.
run ends.
TaskStopdoes not kill an Archon run./buildis the priority. If the ten days run short, one completed/buildslice is what mustsurvive.
9 remaining items
orioltf commentedon Aug 26, 2026
How to run the rest of the walk — the Consumer session (2026-08-26 17:35)
Pis merged: PR 5798 landed ondevelopasdda788a, target never retargeted, merge commit rather than squash.WI 42974 is
Ready for Test— and its real test isS1, which is the honest state for a prefactor.This note governs how the remaining steps are started. The opener above still governs everything else —
the three contracts, the icon trap, the design-file re-measure, the bar. Read it; this replaces only its
"claim it here" instruction, which no longer works.
Where it runs
/specsonward runs in a session rooted at the Consumer's clone.~/.claude/plugins/installed_plugins.jsonholds one entry forunic-archon-dlc, project-scoped to thatrepository, so a session rooted in the plugin repo has no DLC commands at all. That is the only
constraint on where the remaining steps run.
Nothing needs claiming first. Earlier revisions of this note made
/wayfindera condition on starting —it is not one, and treating it as one cost two sessions three exchanges over a step that changes no outcome.
The ticket is already claimed, this note and the opener carry the orientation, and
/specsis the work./wayfinder 373 #379remains useful only to give a cold agent the map's framing; skip it otherwise.Two checks before
/specs, both cheap and both de-risking everything afterdevelopfresh,pnpm installfrom thelockfile, then
pnpm build,pnpm lint,pnpm check-types,pnpm test, and start Storybook. Everygreen on this branch so far was measured in a worktree edited across eleven commits with
node_modulesfrom earlier states, and the lockfile itself moved by 42 lines. Judge by exit code, not by reading
output for the word "error".
scripts/add-dependency.shon a real add. Its fix was verified with an idempotent add — apackage already in the catalog, manifest unchanged — which may never reach the
pnpm addline where thebug was. The failing arms were
dep,devandpeer, each appending a second flag.@base-ui/reactis the honest test andS1/S2need it anyway:shadcn addemits an import for itand installs nothing. Add it with the script, to
packages/ui-react, and keep the result if it iscorrect. One command proves the fix and does the work.
Then
/specsThe slug is worth one thought before you type it, because it names
workflows/<slug>/PRD.md, the/specsbranch, and the arguments to/ticketsand/buildafterwards.profile-cardnames the feature'svisible outcome rather than one of its three components. Change it if you prefer; changing it later means
three paths move.
Sources to hand it, so it ingests rather than interviews from nothing: the card set (
189:5266) and thebadge set (
181:3820) inyCLWgCel1UcW7oToDge2fT, the icon set in the Assets file(
8jt7EUEGVwqyJswqLPk2sr— and read the opener's § one trap before that one), plusDesign System Components
as the parent the contracts publish under.
docs.publishistrueondevelop, so the three pages getcreated; the PRD publishes nothing and says so, which is correct.
One collision to decide before the
/specsgatecommands/specs.mdhardcodes the branchfeature/specs/<SLUG>. The Consumer's convention isfeature/<WI#>_<slug>, work item first. So the PRD's pull request will carry no work-item number in itsbranch name and will not auto-link to one. Two ways out, and the operator picks at the gate:
by hand.
hardcoded name does not fit a work-item-first tracker.
Either is fine. Which one you choose is a finding either way — the command names a branch shape without
asking the tracker contract, and that belongs in the walk's write-up.
At
/tickets: three criteria forS1that no command will remembercommands/tickets.mddoes not know design contracts exist and sets no parent, so the Step 10 gate is aby-hand pass. Four things to eyeball, three of them specific to
S1:passWithNoTestscomes out ofapps/storybook-react/vitest.config.ts— thread 65283, kept by designin
PbecausePships no tests;S1writes the first one, soS1is where it expires.packages/ui-react/tsconfig.jsonpaths mapping — thread 65287, serves the add-then-reshapewindow. Name the slice that closes that window, or declare it permanent.
obvious cause: the
@repo/design-tokensdependency inapps/storybook-react/package.json, its twopathsentries inapps/storybook-react/tsconfig.json, a.storybook/design-tokens-css.d.tsdeclaringthe two extensionless export keys, and the two imports in
.storybook/preview.ts.CLAUDE.md§ Build graph states the set; criteria 3 and 4 touch different
tsconfigfiles, so neither hidesthe other.
Each slice's binding home is its ADO work item, parented to
WI 42975 by hand —
/ticketssets no parent. Thiscomment only relays them across the session change.
Report back
SendMessagetowayfinder-orchestratorwith four things and nothing else: what you expected, whathappened, the command or file that proved it, and whether it changes only this ticket or every session in
this repository. Send it when you learn it, not at the end.
orioltf commentedon Aug 26, 2026
Walk report — the
Pleg, 2026-08-26This is the defect report the ticket asks for: what broke, where, and whether the tracker, the
Harness or the Method caused it. It covers the leg this session walked —
Planded by hand asPR 5798 (merged,
dda788aon
develop), twice reviewed by theunic-dlc-pr-reviewBox./specs→/tickets→/buildremain; the consolidated handover
is what the next session reads.
Harness (Archon engine)
abandon,resume,approve,rejectare hidden fromarchon --help(0.7.0). Read verbsfrom the binary. Already on #373's
Archon defect list.
resumeon a run that crashed at a HITL gate posts without any approve. Rune56747e9diedSIGTERMwhilepausedatreview-gate;resumereplayed the DAG and the post node ran —summary plus nine inline threads — with no approval ever accepted. Operational rule now on wayfinder: unic-archon-dlc is prose, and proven at a Consumer #373:
a crashed-at-gate run is abandoned, never resumed; dispatch detached or task-managed, never as a
shell
&child..archon/files in its own worktree from the invocation directory.The review Box read
docs.publish: false(the clone'sdevelop) while the branch under reviewcommitted
true, and reported the drift as a contradiction in two consecutive iterations. Knownbehaviour; it makes any
.archon/config change unreviewable by the Box that runs under it.Harness (the Box,
unic-dlc-pr-review)node_modules. Its summary said sohonestly, twice; both lines quoted verbatim on
#430, which owns the fix shapes.
byDesignthreads as fixed in the same run that set thembyDesignon the PR.#431 owns it. Corrected count for the
record: iteration 2's severity sections carry nine findings (2 critical, 2 important, 5 minor),
eight new plus one carried-over.
collateral the author missed (
Introduction.mdxdocumenting deleted scaffold). Iteration 2 caughtthat fixing ADR-0003 had moved a disagreement onto the work item — cross-source fixes need all
sources. The one defect neither iteration caught —
CLAUDE.md's build-graph diagram contradictinga dependency the fix commit removed — was a set-level read the orchestrator made after the fixes;
fixed in
18a51c1.Harness (the commands)
commands/specs.mdhardcodes the PR branch asfeature/specs/<SLUG>(lines 398, 402, 408 at0.26.0) while this Consumer's convention is
feature/<WI#>_<slug>, work item first — so the PRD'spull request will carry no work-item number and will not auto-link. The command names a branch
shape without consulting the tracker contract. Surfaces at the very next gate.
/ticketsdoes not know design contracts exist and sets no parent link — the operatorhand-verifies contract paths at the Step-10 gate and hand-parents the slices to Feature
42975. Known before the walk (Rewrite commands/tickets.md from scratch against the to-tickets Method #382 owns
the rewrite); the parent-link half was found during it.
/wayfindernor the DLC commands span both repositories. The DLC commands areproject-scoped to the Consumer;
/wayfinderis a repo-local skill here. No single session canclaim the ticket where it lives and run the commands where they are installed. This walk bridged
it by hand; the handover comment is the seam.
Method / stack (Consumer-side facts the next slices need)
shadcn initrefuses a plain library package ("We could not detect a supported framework");the manual
components.jsonroute is the only one inpackages/ui-react. What are the Consumer design system's first slices? #377's "Run shadcninit" was unrunnable as written.
shadcn addon the Base UI track emits correctdxp:-prefixed v4 classes and does not install@base-ui/react— the first slice needing a primitive adds it through the catalog.scripts/add-dependency.shfailed every typed add (flags passed as one string). Fixed in thePR; the fix itself was the review's proof case for re-dispatching rather than self-grading.
style-dictionarywrites nodist/at all from zero token sources, exit 0 — so thedesign-tokens edge was removed whole and S1 restores four things together (criterion 3 in the
handover;
CLAUDE.md§ Build graph carries the list).Tracker
reply/resolve all behaved. The
az devops invoketwo-call thread pattern held.Standing down.
Pis merged, the ticket stays open and unassigned for the Consumer-rootedsession that runs
/specsonward. What remains is the ticket's own acceptance list: the PRD, theslices on Azure DevOps with edges, one slice through
/buildto a PR, and the card rendering.orioltf commentedon Aug 26, 2026
Erratum on the walk report — one line of it is mine and it is wrong
The walk report is
otherwise the record; this corrects one claim in its § Harness (the commands), which it took from an
orchestrator message rather than measuring.
It says
/wayfinderis a repo-local skill of this repository and that no single session can both claim theticket and run the DLC commands. The first half is unverified and the maintainer reports the opposite.
/wayfinderis installed globally for him (2026-08-26 17:38), so a Consumer-rooted session may well be ableto claim normally.
What is actually measured, and what is not:
.claude/skills/wayfinderinunic-agents-plugins; theConsumer's own
.claude/holds onlysettings.jsonandsettings.local.json;~/.claude/skills/carriesno
wayfinderentry. The copy under~/.claude/plugins/marketplaces/unic-agent-plugins/is thatcheckout's own repo-local skill, not a user-scope one.
places a skill can live, and a negative from a directory listing is as weak as a positive from memory —
which is the actual lesson, and it is the orchestrator's to carry.
/wayfinderin a session rooted at the Consumer. If it is offered,claim with
/wayfinder 373 #379.What survives unchanged, because it was measured independently: the DLC commands are project-scoped
to
DXP-DesignSystemin~/.claude/plugins/installed_plugins.json, so/specsonward must run in aConsumer-rooted session. That is the load-bearing half of the finding and the reason the handover exists.
The branch-name collision in the same section —
feature/specs/<SLUG>at lines 398, 402 and 408 of theinstalled 0.26.0 copy against the Consumer's
feature/<WI#>_<slug>— was verified by the worker and stands.[-]Walk /specs → /tickets → /build once in DXP-DesignSystem and deliver the first slices[/-][+]Land a rendering component on develop, so the client sees the walk's output[/+]orioltf commentedon Sep 3, 2026
Body rewritten 2026-09-03 by the #373 orchestrator, on the maintainer's instruction. The original — "Walk
/specs→/tickets→/buildonce in DXP-DesignSystem and deliver the first slices" — is in this issue's revision history.Why, in one line: four of its five criteria were met twice, by runs 1 and 2, and the fifth was not. The ticket read as untouched work while being mostly done, and it sits
p0at the head of every frontier query.The measurement that decided it, run today against
origin/developinDXP-DesignSystem:Contracts and screenshots. No component source, no story — one
.tsxin the whole repository. Both builds live on branches abandoned on purpose (5e683a7,a71e19f).The rewrite turns the remainder into the decision underneath it: does a measurement run's output ever get merged, or does delivery need a pass of its own? Left as a task rather than a decision, someone lands a component without settling it and the same gap reopens after run 4.
orioltf commentedon Sep 17, 2026
Amended 2026-09-17 while charting run 4's map, #498
This ticket moved from #373 to #498. GitHub
allows one parent, so the move is a replacement rather than an addition. The effort it serves has not
changed; the map that carries it has.
The decision this ticket asked for, taken
A run's output is merged, and the merge is split into two acts. The question was "does a measurement
run's output ever get merged, or does delivery need a pass of its own?" Both, in sequence:
/qamerges the run's pull request tointegration/dlc, a long-lived branch.developstays as it is, the run stays comparable with runs 1 to 3, and the branch is resettableintegration/dlcreachesdevelopthrough an ordinary pull request — #503Why not merge straight to
develop. Runs 2 and 3 each wiped the previous run's artefacts so the nextrun started from an empty tree (
d09feff,5e39db6). A merge todevelopwould mean every later runstarts from a tree that carries a component, which is a different question from the one three runs have
asked. Splitting the act keeps the measurement comparable and puts the component in front of the
client, and it means
developreceives it by a human decision rather than as a side effect of ameasurement.
Why not a pass of its own, as the original body proposed. Run 4 ends in a merge by design, because
#439 criterion 18 has
/qaclose the groupingticket when it merges the pull request. A separate delivery pass would pay for a second build the client
has already paid for once, to produce what run 4 produces anyway.
Criterion 2 is amended
It read:
It now reads:
Amended rather than quietly satisfied: an integration branch is not
develop, and a run that satisfied adifferent criterion while the written one said
developis the gap shape the rootAGENTS.mdfour readsexist to catch.
The other four criteria stand. The fifth — "whatever baseline run 4 is compared against is named as a
commit, not as
develop is empty" — is now carried by#502, which creates
integration/dlcand namesthe commit in the run record.
What the client actually sees
A locally-run Storybook on a shared screen, with the maintainer and Jessi. Jessi does not review code she
does not understand, and the Consumer has no CI to publish Storybook — giving it one stays out of scope,
on #373. So "the client sees something render" is satisfied by the demo, and
developis where it landsafterwards.
Why this ticket stays open and blocked
Its decision is taken; its criteria are verified by run 4 and by act 2. It is
blocked_by#503 so the frontier cannot offer it before
there is anything to verify against.
orioltf commentedon Oct 30, 2026
Closed as superseded by #678's resolution, approved by the maintainer on 2026-10-30: run 4 is dropped and
unic-archon-dlcis frozen. Reason for this ticket: "the client sees a rendered component" becomes the successor's first milestone in #687 (decision 2).—
unic-sdlc-orchestrator-9