Skip to content

feat: integrate open PRs #286, #281, #288 - #294

Merged
mrsimpson merged 3 commits into
mainfrom
feat/integrate-open-prs
Sep 21, 2026
Merged

mrsimpson merged 3 commits into
mainfrom
feat/integrate-open-prs

Conversation

@mrsimpson

Copy link
Copy Markdown
Collaborator

Summary

Integrates three open PRs that conflicted with main after the recent codebase trim. All changes were rebased cleanly onto current main rather than merging the original branches.

Commits

fix(workflows): remove abandon triggers from all workflows
Supersedes #286. Removes all abandon_* transitions from the 14 remaining workflows (bugfix, tdd, greenfield, epcc, qrspi, minor, posts, skilled-bugfix, skilled-epcc, skilled-greenfield, sdd-bugfix, sdd-feature, sdd-greenfield, slides). Global abandon transitions in sdd-* workflows are also removed.

feat: make default workflow domain configurable at runtime
Supersedes #281. Adds DOMAIN_DESCRIPTIONS, KNOWN_DOMAIN_NAMES, WorkflowManagerOptions, setDomains(), and a four-level env var precedence chain to WorkflowManager. Registers a load_workflows tool in both mcp-server and opencode-plugin so the LLM can switch domains at runtime. The domain:// resource from the original PR was dropped since resources were removed from the codebase — domain descriptions are embedded directly in the tool description.

feat(workflows): add socratic-recovery workflow
Supersedes #288. Adds resources/workflows/socratic-recovery.yaml (domain: architecture) — a 5-state Socratic Code-Theory Recovery workflow for undocumented legacy codebases. The cockburn-use-cases template was excluded (removed in the original PR itself before merge). Visualizer registration skipped — the visualizer package no longer exists in main.

## Intent

Abandon triggers were a pattern that tried to model explicit workflow
cancellation as state machine transitions. In practice they add noise to
the transition table without providing value — a user can simply start a
new session or switch context without needing a dedicated trigger. Removes
all abandon-style transitions from the 14 remaining workflows that still
carried them.

## Key decisions

- Global transitions removed from sdd-* workflows alongside per-state
  ones — the global_transitions block itself is dropped where abandon was
  the only entry, rather than leaving an empty block.
- No replacement trigger added: abandoning a workflow is implicit, not
  modelled.

## Side effects

- Supersedes PR #286 (fix/no-abandon-trigger) which covered the same
  change but conflicted with main after the recent codebase trim.
## Intent

Eliminate the hardcoded 'code' default in WorkflowManager and expose
runtime domain switching for long-lived processes (MCP server, OpenCode
plugin). The LLM can now call load_workflows to switch the active domain
set without restarting the server, enabling access to architecture, sdd,
office, or other domains on demand.

## Key decisions

- Four-level env var precedence chain: constructor param >
  WORKFLOW_DOMAINS > DEFAULT_DOMAINS > VIBE_WORKFLOW_DOMAINS > 'code'.
  VIBE_WORKFLOW_DOMAINS kept as lowest-priority alias for backward
  compatibility.
- Domain descriptions embedded directly in the load_workflows tool
  description rather than a separate domain:// resource — resources were
  removed from the codebase; the tool description is sufficient for LLM
  discovery.
- setDomains() validates against KNOWN_DOMAIN_NAMES and clears maps
  before reloading to prevent workflow accumulation.
- getAllAvailableWorkflows() uses constructor param instead of env var
  mutation for thread safety.

## Side effects

- DOMAIN_DESCRIPTIONS and KNOWN_DOMAIN_NAMES exported from core
- load_workflows tool registered in mcp-server and opencode-plugin
- Supersedes PR #281 (refactor/configurable-default-domain) which
  conflicted with main after the recent codebase trim
…ecture recovery

## Intent

Adds a 5-state Socratic Code-Theory Recovery workflow for undocumented
legacy codebases. Based on Naur (1985) / Ralf Müller: builds a
hierarchical Question Tree from source code, surfaces OPEN_QUESTIONS
for the team to answer, then synthesizes arc42, PRD, Cockburn use-case
spec, and Nygard ADRs — with an independent Fagan/ATAM review pass.
The OPEN_QUESTIONS file is the primary deliverable; gaps are never
invented.

## Key decisions

- Belongs to the 'architecture' domain (not 'code'), so it loads when
  WORKFLOW_DOMAINS includes 'architecture' or via load_workflows tool.
- Gate enforced in both answer_open_questions and synthesize_documentation
  (belt-and-suspenders) to prevent fabrication.
- All output files namespaced -<context-name> to support multiple bounded
  contexts without collision.

## Side effects

- Supersedes PR #288 (feat/socratic-architecture-recovery-workflow),
  which conflicted on .beads/ and visualizer files no longer present in main
@mrsimpson
mrsimpson merged commit 98795ae into main Sep 21, 2026
3 checks passed
@mrsimpson
mrsimpson deleted the feat/integrate-open-prs branch September 21, 2026 10:31
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.

1 participant