feat(unic-archon-dlc): port /explore to key-discriminated Archon schema (redesign step 12)#272
Merged
Merged
Conversation
…ma (redesign step 12) Why: the shipped `unic-dlc-explore` workflow was doubly dead — a `type:`-style spike gate that never paused (ADR-0011) and an import of the already-deleted `lib/config-loader.mjs`, so it could not run at all. Step 12 makes /explore the off-line, optional research + AFK-spike on-ramp whose findings.md seeds /specs. What: - Rewrite `.archon/workflows/unic-dlc-explore.yaml` to the key-discriminated node schema: bootstrap → guard → 4 parallel research nodes → synthesize → spike → spike-ticket → spike-branch-gate → preserve-spike. Self-contained prompt nodes, no plugin-lib import (ADR-0023 §5); artefacts at `<artifacts_dir>/<slug>/` (ADR-0015) instead of the old `docs/workflow/<slug>/`. - Tighten the /explore → /specs contract: synthesize writes the Integrated Brief as three explicitly-named lenses (Domain Model / Established Decisions / Prior Research) that /specs' load-context reads verbatim. - spike runs AFK (build/measure where feasible, else reason → VALIDATED / INVALIDATED / PARTIAL) and references Matt's /prototype for the interactive case (never invokes it — nodes have no live conversation). - Config-gated spike-branch gate (`gates.explore`, HITL default); the spike ticket is filed BEFORE the gate so the durable output survives a discard (approval schema only has on_reject). Ticket composes the tracker + classification.labels (ADR-0024). - Dissolve `findings-writer.mjs` + `spike-verdicts.mjs` (+ tests) — the last explore-only libs, per ADR-0018 #3. labels-config stays (config-schema uses it). - ADR-0029; CONTEXT/AGENTS/CHANGELOG + redesign progress table updated. No new config key → no /setup change. Bump 0.10.0 → 0.11.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Ports the unic-dlc-explore Archon workflow to the key-discriminated schema and repositions /explore as an optional offline research + AFK spike on-ramp whose findings.md becomes the explicit /specs baton in unic-archon-dlc.
Changes:
- Reworked
.archon/workflows/unic-dlc-explore.yamlinto a self-contained prompt-node workflow (bootstrap/guard → parallel research → synthesize → spike → ticket → optional approval-gated branch preserve). - Tightened the
/explore → /specscontract by defining the Integrated Brief as three named lenses (Domain Model / Established Decisions / Prior Research) and documenting the decision via ADR-0029. - Removed explore-only libs (
lib/findings-writer.mjs,lib/spike-verdicts.mjs) and their tests; bumped plugin version to0.11.0with changelog/docs updates.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| apps/claude-code/unic-archon-dlc/.archon/workflows/unic-dlc-explore.yaml | New key-discriminated /explore workflow graph, spike ticketing, and optional preserve gate |
| apps/claude-code/unic-archon-dlc/.archon/commands/unic-dlc-explore.md | Updated command docs to match the new workflow behavior and contract |
| apps/claude-code/unic-archon-dlc/docs/adr/0029-explore-research-spike-onramp.md | New ADR capturing the redesigned /explore intent and contract |
| apps/claude-code/unic-archon-dlc/docs/adr/README.md | Registers ADR-0029 in the ADR index |
| apps/claude-code/unic-archon-dlc/docs/redesign/README.md | Marks redesign step 12 (/explore) as complete with notes |
| apps/claude-code/unic-archon-dlc/CONTEXT.md | Updates “Findings” definition to reflect new structure and /specs baton lenses |
| apps/claude-code/unic-archon-dlc/AGENTS.md | Adds /explore as a load-bearing invariant consistent with ADR-0029 |
| apps/claude-code/unic-archon-dlc/CHANGELOG.md | Adds 0.11.0 entry documenting workflow port + lib dissolution |
| apps/claude-code/unic-archon-dlc/lib/findings-writer.mjs | Removed (explore nodes now write findings directly) |
| apps/claude-code/unic-archon-dlc/lib/spike-verdicts.mjs | Removed (spike node now writes verdicts directly) |
| apps/claude-code/unic-archon-dlc/test/findings-writer.test.mjs | Removed (tests for dissolved lib) |
| apps/claude-code/unic-archon-dlc/test/spike-verdicts.test.mjs | Removed (tests for dissolved lib) |
| apps/claude-code/unic-archon-dlc/package.json | Bumps version + removes deleted tests from the test script |
| apps/claude-code/unic-archon-dlc/.claude-plugin/plugin.json | Bumps plugin version to 0.11.0 |
| apps/claude-code/unic-archon-dlc/.claude-plugin/marketplace.json | Bumps marketplace version to 0.11.0 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+30
to
+31
| 1. Parse the FIRST whitespace-delimited token of "$ARGUMENTS" as the slug (kebab-case). | ||
| If $ARGUMENTS is empty → status "no-slug". |
Comment on lines
+285
to
+289
| 3. APPEND a "## Spike verdicts" section to findings.md, one subsection per unknown: | ||
| ## Spike verdicts | ||
| ### <title> — <VALIDATED|INVALIDATED|PARTIAL> | ||
| <evidence> | ||
| Do not disturb the sections synthesize wrote above it. |
Address three Copilot review comments on the ported explore workflow: - bootstrap: enforce a kebab-case regex on the slug and hard-gate non-matching tokens to no-slug (the slug is interpolated into branch names/shell commands). - spike: make the '## Spike verdicts' write idempotent — replace an existing section on re-run instead of appending a duplicate. - preserve-spike: quote the branch name in git checkout -b (user-controlled slug). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Redesign step 12 (
docs/redesign/12-explore.md). The shippedunic-dlc-exploreArchon workflow was doubly dead: it used the inerttype:-style node schema (itstype: interactivespike gate never paused — ADR-0011) and importedlib/config-loader.mjs, which was already deleted — so it could not run at all. This step turns/exploreinto the off-line, optional research + AFK-spike on-ramp whosefindings.mdmay seed/specs(PLAN decision #3/#8).What
.archon/workflows/unic-dlc-explore.yamlto the key-discriminated schema:bootstrap → guard → {stack, features, architecture, pitfalls} → synthesize → spike → spike-ticket → spike-branch-gate → preserve-spike. Every node is a self-containedprompt:node — no plugin-lib/import (ADR-0023 §5). Artefacts move to<artifacts_dir>/<slug>/(ADR-0015), off the olddocs/workflow/<slug>/./explore → /specscontract (grilled):synthesizewrites the Integrated Brief as three explicitly-named lenses — Domain Model / Established Decisions / Prior Research — that/specs' load-context reads verbatim.spikeruns AFK (build/measure where feasible, else reason → VALIDATED / INVALIDATED / PARTIAL) and references Matt's/prototypefor the interactive case — never invokes it (nodes have no live conversation, ADR-0017).gates.explore, HITL default). The spike ticket is filed before the gate so the durable output survives a "discard" (the approval schema only exposeson_reject). Ticket composes the tracker +classification.labels(ADR-0024), MCP-first/CLI-fallback.findings-writer.mjs+spike-verdicts.mjs(and their tests) — the last explore-only libs, completing ADR-0018 chore(spec-15): add spec and roadmap backlog section #3.labels-config.mjsstays (config-schema.mjsusesgetDefaultLabels).gates.explore+artifacts_diralready exist) → no/setupchange. Bump 0.10.0 → 0.11.0.Verification
pnpm --filter unic-archon-dlc typecheck✓ ·test✓ (100 tests, deleted-lib tests removed) ·verify:changelog✓pnpm ci:checkclean for all changed files (Biome + Prettier)./qaand/pr-review.🤖 Generated with Claude Code