feat(pipeline): config schema (off by default) + daemon boot wiring - #205
Merged
Conversation
🤖 Gemini code reviewThe PR successfully introduces the configuration schema and daemon-level wiring for the SDLC pipeline feature. It is properly gated behind a default-off switch and includes comprehensive unit tests verifying the factory behavior and persistence. Findings: 🔴 0 · 🟠 0 · 🟡 0 · 🟢 0 Tokens spent · ⬆️ Input: 3,187 · ⬇️ Output: 56 · Σ Total: 4,999 |
saucam
force-pushed
the
feat/sdlc-pipeline
branch
from
July 19, 2026 23:10
df421bd to
2d76c7c
Compare
saucam
force-pushed
the
feat/sdlc-pipeline-wiring
branch
from
July 19, 2026 23:10
aa80ef1 to
4390bd1
Compare
Add a PipelineSchema to config (enabled=false default, defaultPack=null) with a CODEOID_PIPELINE_ENABLED env switch, and construct a PipelineManager in SessionManager when enabled — sharing the daemon DB and rehydrating non-terminal pipelines on boot (resume). Undefined when disabled, so the daemon stays dark by default. Pure createPipelineManagerFromConfig() factory keeps the enable/disable + share-DB + restart-survival behavior unit-tested without a full SessionManager. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
saucam
force-pushed
the
feat/sdlc-pipeline
branch
from
July 19, 2026 23:15
2d76c7c to
ab8bf98
Compare
saucam
force-pushed
the
feat/sdlc-pipeline-wiring
branch
from
July 19, 2026 23:15
4390bd1 to
b78f528
Compare
…ume (#206) Add the runtime layer. A 'skill' PhaseKind runs fn skills natively and drives prompt/slash skills through an injectable PhaseRunner (the backend seam; a SessionManager-backed adapter lands in a follow-up). PipelineManager.answer(id, requestId, {approved, value}) is the daemon side of halt -> answer-from-a-frontend -> resume: it resolves a halted phase (pass/fail) and continues advancing to the next halt or terminal. Fully unit-tested with fakes; no live backend required. Still dark (pipeline off by default). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
saucam
added a commit
that referenced
this pull request
Jul 20, 2026
…dark) (#204) * docs: SDLC pipeline design — external prior-art & SOTA validation + refinements Add §2a (Spec Kit / BMAD / Kiro / Roo / Aider + 2026 papers + omnigent/kiss_ai) and §5a (per-phase tool scoping, typed artifacts, entry/grounding gates, constitution/steering layer, gate enforcement tiers). Resolve open Q3/Q4/Q6; default the pipeline off (freestyle) until a pack is selected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(pipeline): SDLC pipeline primitive — engine, store, registries (dark) Methodology-agnostic pipeline foundation (docs/sdlc-pipeline.md §5): PhaseDef/PipelineState types + the four plugin seams (PhaseKind, GatePlugin, SkillPlugin, Pack), a Map-backed registry, a built-in noop phase kind + always/manual gates, the advance engine (entry/exit gates; onFail halt/retry/abort), durable bun:sqlite state, and PipelineManager with resume() for restart survival. No daemon wiring, no methodology content — lands dark. 26 unit tests; tsc + biome clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(pipeline): config schema (off by default) + daemon boot wiring (#205) * feat(pipeline): config schema (off by default) + daemon boot wiring Add a PipelineSchema to config (enabled=false default, defaultPack=null) with a CODEOID_PIPELINE_ENABLED env switch, and construct a PipelineManager in SessionManager when enabled — sharing the daemon DB and rehydrating non-terminal pipelines on boot (resume). Undefined when disabled, so the daemon stays dark by default. Pure createPipelineManagerFromConfig() factory keeps the enable/disable + share-DB + restart-survival behavior unit-tested without a full SessionManager. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(pipeline): skill phase kind + PhaseRunner seam + halt/answer/resume (#206) Add the runtime layer. A 'skill' PhaseKind runs fn skills natively and drives prompt/slash skills through an injectable PhaseRunner (the backend seam; a SessionManager-backed adapter lands in a follow-up). PipelineManager.answer(id, requestId, {approved, value}) is the daemon side of halt -> answer-from-a-frontend -> resume: it resolves a halted phase (pass/fail) and continues advancing to the next halt or terminal. Fully unit-tested with fakes; no live backend required. Still dark (pipeline off by default). Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <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.
What
Second slice: the config surface + daemon boot wiring for the SDLC pipeline. Still effectively dark — the pipeline is off by default.
PipelineSchemain config:enabled(default false) +defaultPack(defaultnull), plus aCODEOID_PIPELINE_ENABLEDenv switch (matching the dispatch/conductor kill-switch convention).SessionManagerconstructs aPipelineManageronly when enabled, sharing the daemon DB file so pipeline state persists and non-terminal pipelines rehydrate on boot (resume());get pipelines()returnsundefinedwhen disabled ⇒ the daemon holds no pipeline manager at all.createPipelineManagerFromConfig()— a pure factory so the enable/disable + share-DB + restart-survival behavior is unit-tested without standing up a fullSessionManager.Verification
tsc --noEmit— clean project-wide (0 errors)bun test— 95 pass / 0 fail (pipeline 30 + config/settings suites)biome check— cleanStacked
Base =
feat/sdlc-pipeline(#204). Review after #204. Next: PR #3 — a backend-drivenPhaseKind+ the halt →ui_request→ answer-from-frontend → resume path + additive protocol fields.🤖 Generated with Claude Code