Skip to content

Reopen decision 14: is /setup retired, or is it the Consumer's installer? #402

Closed

Description

@orioltf

Question

Decision 14 retired /unic-archon-dlc:setup. Re-decide it, because three answers the maintainer gave on 2026-08-20 all assume the opposite, and everything downstream branches on which way this goes.

His words, grilled in-session while reviewing the 0.23.0 Consumer port (!5782 in DXP-DesignSystem):

  • .archon/unic-dlc.config.yaml should be generated by /setup, not hand-written.
  • docs/agents/issue-tracker.md and docs/agents/triage-labels.md should be generated too, from templates, the way Matt's own setup skill does it.
  • /setup should detect the Consumer's formatter and exclude what it installs from it — see the note on Rewrite commands/setup.md from scratch as prose #383.
  • "I may have taken a wrong decision in decision 14. I think /setup is needed."

That is not a retired command. It is the only thing that writes tenant-shaped files into a Consumer, which makes it the most load-bearing command in the plugin.

Why this gates rather than merely relates

#383 assumes the small version. Its framing is "rewrite as prose with no module behind it", and its four actions are copy workflows, copy Methods, write a config, patch a CLAUDE.md block. If /setup also generates the tracker contract from templates, detects the Consumer's toolchain, and owns re-runs after an upgrade, that ticket is materially bigger and its own open question — whether bundling the Methods stays right — changes answer with it.

And the Consumer-lifecycle map cannot be charted until this lands. The two branches need different destinations:

  • /setup stays retired → the effort is "how does a Consumer detect drift it must fix by hand".
  • /setup returns as the installer → the effort is "what does the Consumer lifecycle own, and how do setup and an upgrade path divide it".

Charting before this is charting on fog that one session can clear.

What is measured, so this is not re-derived

Established on 2026-08-20 during the 0.23.0 port. Take these as facts:

  • Distribution is already solved; installation is not. autoUpdate on the marketplace entry puts the whole plugin on the machine at ~/.claude/plugins/cache/<marketplace>/unic-archon-dlc/<version>/, and that directory carries .archon/workflows/ (the four Boxes) and vendor/mattpocock-skills/ (the eleven Methods). The bytes arrive. Nothing copies them into the repository.
  • The "hand-copy half" is two different things. The Boxes and the Methods are verbatim plugin output that should track the release exactly. The config and the two docs/agents/ files are tenant-authored and must never be overwritten. Lumping them is what makes this look structural.
  • Nothing carries a version marker. grep -rl "0.2[23].0" .archon/ in the Consumer returns nothing. CONTEXT.md already defines Generated header as where install provenance lives — and /setup is its only writer, so retiring /setup removed the mechanism the vocabulary still describes.
  • A stale Box breaks nothing. Agreed in-session: a Box is self-contained (ADR-0023 §5), so a stale one misses an improvement and does no worse. Both real failures to date — Move the DLC's tracker contract from config into the repo docs #389's wrong parity claim, and the two rotted files this port found — were detection failures, which no updater would have fixed.
  • PULL over PUSH, provisionally agreed: something notices drift and says so, rather than an unattended actor copying into a tracked tree. A push needs an actor at update time and can clobber; nobody is present when autoUpdate fires.

The question this ticket must not dodge

autoUpdate: true is live in DXP-DesignSystem and nobody chose it — it came with the install. The maintainer's objection is the sharpest thing in the grilling and it has no answer yet:

I'm not sure consumers will want autoUpdate. At an enterprise level, an update from the DLC may require an update from Archon too. What if the new version from the DLC and Archon includes breaking changes for a specific Consumer?

That is a three-way version coupling — plugin × Archon × Consumer — and the vocabulary has no word for it. Today the plugin holds one floor (Archon 0.7.0, now stated in prose since #381) and has no concept of a Consumer declining an upgrade or pinning a known-good set. Whatever /setup becomes, it either owns that or explicitly does not.

Acceptance criteria

  • Decision 14 is either reaffirmed or reversed on wayfinder: unic-archon-dlc is prose, and proven at a Consumer #373, in one passage, with the reason.
  • The passage says which artefact classes /setup owns and which it must never touch, using the four classes above rather than "the non-plugin half".
  • Whether autoUpdate stays on for a Consumer is decided, or recorded as an open question with the reason it could not be decided here.
  • The Generated-header mechanism is either restored to a writer or removed from CONTEXT.md, so the vocabulary and the code agree.
  • Rewrite commands/setup.md from scratch as prose #383 is re-scoped to match the outcome, or confirmed unaffected in writing.
  • The grilling closes by listing what it did not decide. Every "either is acceptable" becomes an open question or gets decided here.

Activity

  1. orioltf commented on Aug 23, 2026

    @orioltf
    MemberAuthor

    How to start this session

    Posted 2026-08-23 at dispatch. First opener on this ticket.

    Produces: a decision — decision 14 reaffirmed or reversed, recorded on #373
    (#373) in one passage, plus the ticket's six
    criteria. A conversation with the maintainer, not a publish. Invoke /grilling, and
    /domain-modeling when the three-way version coupling needs words — it has none today. Do not
    invoke /implement, and do not start rewriting setup.md — that is #383
    (#383), which this ticket re-scopes.

    Read order

    1. This ticket's body, whole. The five measured facts are established — take them as facts, do
      not spend the session re-deriving them. All four moving-part claims re-verified 2026-08-23:
      Generated header at apps/claude-code/unic-archon-dlc/CONTEXT.md:253; the Archon ≥ 0.7.0
      floor in the plugin README; autoUpdate: true live in the Consumer's .claude/settings.json;
      Rewrite commands/setup.md from scratch as prose #383 open.
    2. wayfinder: unic-archon-dlc is prose, and proven at a Consumer #373's body: the decision table (row 14) and the "Not yet specified" section — the
      Consumer-lifecycle item there is what this decision unblocks or reshapes.
    3. The Consumer doc, read on origin/develop (never main — it is behind):
      ~/Sites/<customer>/DXP-DesignSystem/docs/agents/unic-archon-dlc.md — both install routes and what
      each carries today.
    4. Rewrite commands/setup.md from scratch as prose #383's body — the small-version assumption you are testing against the outcome.

    The one trap

    Dodging the autoUpdate question is a false close. The session can produce a clean
    reaffirm-or-reverse passage and still leave autoUpdate: true running at the Consumer with nobody having
    chosen it, and the plugin×Archon×Consumer coupling wordless. Criterion 3 accepts "recorded as an
    open question with the reason it could not be decided here" — the reason is the deliverable,
    not the escape hatch.

    The decision the ticket does not make

    Where the passage lives. Advice: append it to #373's "Decisions so far" with the date, and edit
    decision-table row 14 to a one-line pointer at it — never leave the table saying the opposite of
    the passage.

    Other traps

    • The four artefact classes (Boxes, Methods, config, tracker docs) are the vocabulary of criterion
      2 — "the non-plugin half" is the phrasing this ticket exists to kill.
    • If the outcome removes Generated header from CONTEXT.md, that is a one-line plugin PR —
      DLC repo, draft first (gh pr create --draft), flip when gh pr checks is green by exit code.
      If it restores a writer, the edit belongs to Rewrite commands/setup.md from scratch as prose #383's re-scope instead; do not ship it here.
    • Do not chart the Consumer-lifecycle map. The map's own rule: charting before this lands is
      charting on fog.
    • PULL over PUSH is provisionally agreed, not decided — it is inside this grilling's scope to
      overturn.

    The bar that proves it

    Criterion 6: the grilling closes by listing what it did not decide. A false pass reads well and
    hides an "either is acceptable" — every one of those becomes a named open question or gets decided
    in-session. Second false pass: #383 untouched at the end; it gets re-scoped or "confirmed
    unaffected" in writing on its ticket, never by silence.

    On landing

    1. The passage on wayfinder: unic-archon-dlc is prose, and proven at a Consumer #373 (append + repoint table row 14), tick the criteria on this ticket, close it.
    2. Update Rewrite commands/setup.md from scratch as prose #383's body or comment "confirmed unaffected", per criterion 5.
    3. If CONTEXT.md changed: the plugin PR per the pipeline; no version bump decision without
      reading plugin.json first (0.x rules).
    4. Tell the orchestrator which frontier tickets the outcome touches — Rewrite commands/setup.md from scratch as prose #383's scope decides
      whether the Consumer-lifecycle work exists as one effort or two.

    Report back

    BEFORE YOU FINISH, AND WHENEVER YOU LEARN SOMETHING THAT WOULD HAVE CHANGED THIS PROMPT,
    SendMessage to wayfinder-orchestrator with four things and nothing else: what you expected,
    what happened, the command or file that proved it, and whether it changes only this ticket or
    every session in this repo. Send it when you learn it, not only at the end.

  2. orioltf commented on Aug 23, 2026

    @orioltf
    MemberAuthor

    Closed — decision 14 stands, and it was never a retirement

    The decision passage is on #373, appended to
    "Decisions so far". The line that claimed the retirement is rewritten in place, in the same body.

    The premise was wrong, and that is the finding. Row 14 says /setup becomes prose with no module,
    rewritten from scratch. Decision 6 keeps setup inside the 1.0 box set. Neither retires anything. The
    word entered at one line of #373's Plugin → Consumer passage, citing decision 14 for something it does
    not say, and spread from there to #389's
    grounds for deleting config keys and to the Consumer doc. So there was nothing to reverse — there was a
    sentence to kill and a scope to decide.

    What was decided

    Question Answer
    Decision 14 Stands as written. /setup is the Consumer's installer. Row 14 unchanged
    Ownership Boxes + Methods: own and replace. Config + tracker docs: first write only; re-run reports and changes nothing
    autoUpdate Off in a Consumer. Marketplace ref pinning rejected
    Generated header Restored to a writer, plus one line: the Archon version observed at install time
    Methods provenance One .archon/methods/INSTALLED.md, not eleven stamped SKILL.md files
    Drift /setup --check — PULL stands, re-examined not inherited
    Formatter A marker-delimited block, the second instance of the CLAUDE.md rule
    Methods bundling Stays. Settled here, not left to #383

    One measured fact worth carrying forward. autoUpdate: true did not track every develop commit.
    plugin.json declares a version, and a declared version pins the plugin, so Claude Code skipped the
    update while that string was unchanged — it carried a version bump. Under this repo's release flow a
    bump merges to develop before the release PR to main, so a Consumer received it at merge rather than
    at tag. autoUpdate's exact firing moment is not documented on the marketplaces page — unverified.

    Where the work went

    What this grilling did not decide

    1. Which formatters /setup detects. Prettier is the only measured case. Biome and dprint are
      unmeasured, and this repository itself runs both Biome and Prettier. On Rewrite commands/setup.md from scratch as prose #383.
    2. Where the tracker-doc templates live — files in the plugin, or prose inside setup.md. The two
      answers rot differently. On Rewrite commands/setup.md from scratch as prose #383.
    3. The --check report shape. Whole-file comparison, header-line comparison and a line diff are
      three different answers, and an implementer will pick one and defend it. On Give /setup install provenance and a --check mode #408.
    4. Who remembers to run --check. The cure for "a hand-carried artefact nobody checks" is still a
      command a human must remember. Naming the moment, as the root AGENTS.md does for a vendored Bundle
      upgrade, is the cheapest honest answer and is not decided. On Give /setup install provenance and a --check mode #408.
    5. Whether --check belongs on /setup or on /archon-upgrade, which already reads versions and
      re-asserts the ADR-0011 schema traps by reading. The overlap is real. On Give /setup install provenance and a --check mode #408.
    6. Whether DXP-ProfileServices and DXP-Website get autoUpdate: false when they install. The
      same default is assumed and was not decided; wayfinder: unic-archon-dlc is prose, and proven at a Consumer #373's "Not yet specified" already holds those installs.

    Nothing above is an "either is acceptable" — each one names the ticket that must settle it before
    dispatch.

  3. added
    resolvedImplemented; ready for a PR
    and removed
    wayfinder:grillingWayfinder ticket: decide it by grilling
    on Aug 23, 2026
  4. added
    wayfinder:grillingWayfinder ticket: decide it by grilling
    and removed
    resolvedImplemented; ready for a PR
    on Aug 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions