Skip to content

feat(unic-archon-dlc): port /qa to Archon pipeline + issue-producing on-ramp (redesign step 08)#268

Merged
orioltf merged 4 commits into
developfrom
feature/unic-archon-dlc-qa
Jul 3, 2026
Merged

feat(unic-archon-dlc): port /qa to Archon pipeline + issue-producing on-ramp (redesign step 08)#268
orioltf merged 4 commits into
developfrom
feature/unic-archon-dlc-qa

Conversation

@orioltf

@orioltf orioltf commented Jul 2, 2026

Copy link
Copy Markdown
Member

Redesign step 08 — ports the unic-dlc-qa Archon box off the inert type:-style schema and turns /qa into an issue-producing on-ramp. Follows docs/redesign/08-qa.md; design in ADR-0025.

What changed

  • Ported unic-dlc-qa.yaml to the key-discriminated node schema (ADR-0011), inheriting /build's self-contained-node conventions (ADR-0023 §5). Pipeline: bootstrap → guard → e2e → coverage-gate → uat-prep → uat-gate → verify-pr-base → merge-gate → merge, interactive: true.
  • Two config-gated approvals (UAT + merge), both governed by gates.qa (HITL default, AFK opt-in).
  • New qa config block { e2e_command, coverage_threshold } resolving qa.* ?? build.*; mergeConfig back-fills existing configs (no /setup change) + 3 new tests.
  • ADR-0025 + ADR index + AGENTS.md doctrine + redesign progress table. Bumps 0.6.0 → 0.7.0.

Why

  • The shipped type: interactive UAT gate never paused (silent-fail per ADR-0011); config reads were flat JSON with docs/workflow/<slug>/ paths.
  • AFK-safe by construction: downstream nodes use trigger_rule: all_done so AFK skips both gates and auto-merges a clean build; the merge node fail-closes (when on e2e/coverage results + verified PR base) so a red build or wrong base never auto-merges, in either mode.
  • On-ramp (PLAN Feature/marketplace plugins fixes #5): a UAT rejection files each defect directly as a ready-for-agent tracker issue — composing the configured tracker + classification.labels (single source of truth), Matt's qa brief shape (blocked-by honesty, no file paths), and the > *This was generated by AI during QA.* disclaimer — feeding /tickets. Not lib/tracker-adapter.mjs (dissolved). Filed ready-for-agent (not needs-triage) because the UAT rejecter already vetted it. Routes to /tickets per PLAN Develop #8, reconciling the step doc's "feed /build".

Verification

  • pnpm --filter unic-archon-dlc typecheck ✓ · test ✓ (106) · verify:changelog
  • pnpm ci:check ✓ (Biome + Prettier, whole tree)
  • archon validate workflows unic-dlc-qaok
  • ⚠ Full behavioural validation (gates pause, AFK auto-merges, red build blocks merge) needs a real Archon run against a Consumer with an open PR — logged as a manual follow-up (ADR-0011 §6), not asserted by CI.

🤖 Generated with Claude Code

orioltf and others added 3 commits July 2, 2026 22:46
…on-ramp (redesign step 08)

Port the inert type:-style unic-dlc-qa workflow to the key-discriminated node
schema (ADR-0011), inheriting /build's self-contained-node conventions
(ADR-0023 §5). Pipeline: bootstrap → guard → e2e → coverage-gate → uat-prep →
uat-gate → verify-pr-base → merge-gate → merge.

Why:
- The shipped type: interactive UAT gate never paused (silent-fail per ADR-0011),
  and it read a flat .archon/unic-dlc.config.json with docs/workflow/<slug>/ paths.
- Two real approval gates (UAT + merge) now honour gates.qa (HITL default, AFK
  opt-in). Downstream nodes use trigger_rule: all_done so AFK skips the gates and
  auto-merges a clean build; the merge node fail-closes (when on e2e/coverage
  results + verified PR base) so a red build or wrong base never auto-merges.
- /qa becomes an issue-producing on-ramp (PLAN #5): a UAT rejection files each
  defect directly as a ready-for-agent tracker issue (composing the configured
  tracker + classification.labels as the single source of truth, Matt's qa brief
  shape, AI disclaimer) that feeds /tickets — not lib/tracker-adapter.mjs
  (dissolved). Filed ready-for-agent (not needs-triage) since the UAT rejecter
  already vetted it. On-ramp routes to /tickets per PLAN #8, reconciling the step
  doc's "feed /build".
- New qa config block { e2e_command, coverage_threshold } resolving qa.* ?? build.*;
  mergeConfig back-fills existing configs (no /setup change). A missing command
  now skips with a warning instead of hard-failing.

ADR-0025 records the port, two-gate model, AFK-safe all_done + fail-closed merge,
and the finding-capture on-ramp. archon validate passes; full behavioural
validation (gates pause, AFK auto-merges, red build blocks) is a manual follow-up
(ADR-0011 §6). Bumps 0.6.0 → 0.7.0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Ports the unic-dlc-qa Archon workflow to the key-discriminated node schema and turns /qa into an issue-producing on-ramp, backed by a new QA-focused config block and accompanying ADR/docs/version updates.

Changes:

  • Add qa: { e2e_command, coverage_threshold } to the DLC config defaults and extend config merge behavior with tests.
  • Replace the old type:-style QA workflow with a key-discriminated pipeline including e2e/coverage verdict reporting, UAT + merge approvals, PR-base verification, and UAT-reject issue filing.
  • Document the redesign step/ADR updates and bump unic-archon-dlc to 0.7.0 with changelog entry.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
apps/claude-code/unic-archon-dlc/test/config-schema.test.mjs Adds tests for default qa config and mergeConfig backfill behavior.
apps/claude-code/unic-archon-dlc/package.json Bumps package version to 0.7.0.
apps/claude-code/unic-archon-dlc/lib/config-schema.mjs Adds qa defaults to defaultConfig().
apps/claude-code/unic-archon-dlc/docs/redesign/README.md Marks redesign step 08 /qa as completed with updated notes.
apps/claude-code/unic-archon-dlc/docs/adr/README.md Adds ADR-0025 to the ADR index.
apps/claude-code/unic-archon-dlc/docs/adr/0025-qa-pipeline-onramp.md Introduces ADR documenting the new /qa pipeline + on-ramp design.
apps/claude-code/unic-archon-dlc/CHANGELOG.md Adds 0.7.0 entry describing /qa port + on-ramp and new config block.
apps/claude-code/unic-archon-dlc/AGENTS.md Updates plugin doctrine/invariants to include new /qa behavior.
apps/claude-code/unic-archon-dlc/.claude-plugin/plugin.json Bumps plugin manifest version to 0.7.0.
apps/claude-code/unic-archon-dlc/.claude-plugin/marketplace.json Bumps marketplace version to 0.7.0.
apps/claude-code/unic-archon-dlc/.archon/workflows/unic-dlc-qa.yaml Replaces inert workflow with key-discriminated /qa pipeline and approvals/on-ramp.
apps/claude-code/unic-archon-dlc/.archon/commands/unic-dlc-qa.md Updates /unic-dlc-qa command docs to match new pipeline and config.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/claude-code/unic-archon-dlc/.archon/workflows/unic-dlc-qa.yaml
Comment thread apps/claude-code/unic-archon-dlc/.archon/workflows/unic-dlc-qa.yaml
Comment thread apps/claude-code/unic-archon-dlc/.archon/workflows/unic-dlc-qa.yaml
- base_ok is now a string enum ['true','false'] not a boolean, so the
  merge-gate + merge `when` comparisons (`== 'true'`) are unambiguous
  string equality — a JSON boolean's coercion in Archon's when-grammar was
  undocumented and this gates the fail-closed merge safety.
- bootstrap now always emits every required output_format field (with stated
  defaults) in the no-slug/no-config/no-prd branches, so the object validates
  before guard-not-ready cancels.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@orioltf orioltf merged commit 80cbb8c into develop Jul 3, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants