Repository navigation
feat(web): put the SDLC board behind a feature flag, off by default - #932
Merged
Merged
Conversation
Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Adds FeatureFlags.sdlcBoard (default false) with migration 170 (feature_flag_sdlc_board INTEGER NOT NULL DEFAULT 0), the mapper and repository columns, the web flag state and a Platform entry in the flag catalog, so it shows on /settings/feature-flags and in `shep settings flags`. Labels in all 9 locales. Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Moves the off-flag 404 out of the intake module into lib/feature-gate.ts (isFeatureOn, featureNotFound, FEATURE_OFF_ERROR). requireFeaturePage and the feedback and alerts routes use it; the SDLC board gates next reuse it. Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
While sdlcBoard is off the sidebar hides the SDLC Board link, /sdlc and /api/sdlc-events return 404, and the four board actions return an error without calling their use cases. Turn it on from /settings/feature-flags or with `shep settings flags enable sdlcBoard`. The canvas and /features are unchanged. Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
The /sdlc accessibility case enables the flag for its run. FEATURES and domain-models list sdlcBoard (off), the LESSONS flag checklist names the shared feature gate, and spec 140 is marked implemented. Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Migration 170 is taken by the checkpoints workstream. Claude-Session: https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
arielshad
marked this pull request as ready for review
October 11, 2026 12:48
arielshad
pushed a commit
that referenced
this pull request
Oct 11, 2026
<p align="center"> <a href="https://github.com/shep-ai/shep"> <img src="https://raw.githubusercontent.com/shep-ai/shep/main/docs/screenshots/shep-card.jpg" alt="Shep — run multiple AI agents in parallel" width="720" /> </a> </p> # 🚀 Shep [v1.241.0](/compare/v1.240.0...v1.241.0) · _2026-10-11_ > Your organization does not have access to Claude. Please login again or contact your administrator. ### ✨ Features * **agents:** emit decision.answered and decision.defaulted telemetry (spec 136) ([#929](#929)) ([1e1f859](1e1f859)), closes [#922](#922) [#925](#925)     * **agents:** git checkpoints after each feature-agent step (spec 138) ([#931](#931)) ([26265ed](26265ed)), closes [#925](#925)     * **web:** put the SDLC board behind a feature flag, off by default ([#932](#932)) ([e71f138](e71f138)), closes [#925](#925) ### 🐛 Bug Fixes * **cli:** wait for the conpty host to exit when a terminal closes ([#928](#928)) ([94a846d](94a846d)), closes [#925](#925) [#925](#925) ## 📦 Install or update ```bash # upgrade an existing install npm i -g @shepai/cli@1.241.0 # or run instantly without installing npx @shepai/cli@latest ``` ## 💬 Join the community [💬 **Discord**](https://discord.gg/ES6tdVFfur) · [📖 **Docs**](https://github.com/shep-ai/shep#readme) · [⭐ **Star on GitHub**](https://github.com/shep-ai/shep) · [🐛 **Report an issue**](https://github.com/shep-ai/shep/issues) --- <sub>🤖 Released autonomously by Shep — built by parallel AI agents working in isolated git worktrees. Try it: `npx @shepai/cli`</sub> Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.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
Adds an
sdlcBoardfeature flag, off by default, and puts the SDLC board behind it. While the flag is off:/sdlcreturns 404;GET /api/sdlc-eventsreturns 404;listSdlcBoard,reorderSdlcTask,updateSdlcTaskStatusandupdateSdlcSubTaskStatusreturn an error without calling their use cases.The flag is in the feature-flag catalog under Platform. It is listed on
/settings/feature-flagswith a switch, andshep settings flags enable sdlcBoardturns it on from the CLI. While it is on, everything works as before.Unchanged: the Control Center canvas, the
/featurestable, and the agent-side board tracker. The tracker keeps recording tasks, so turning the flag on shows a complete board. The board has no CLI command group, so there is no CLI gate to add.19edf55= false), defaults, migration 171 (feature_flag_sdlc_board INTEGER NOT NULL DEFAULT 0), mapper, repository SQL, web flag state, catalog entry, and labels in all 9 locales777699blib/feature-gate.ts(isFeatureOn,featureNotFound,FEATURE_OFF_ERROR).requireFeaturePageand the feedback/alerts routes now use it;intakeDisabled()is removed6227dca50e73f2/sdlcaccessibility e2e case turns the flag on; FEATURES, domain-models and the LESSONS flag checklist are updated05e4558Why
The owner decided the SDLC board should not be part of the default product surface. Implements
specs/140-sdlc-board-flag/, building on the flag catalog and/settings/feature-flagsfrom #925 (spec 135).Screenshots / Recording
There is no new component. The flags view renders the new row from the catalog, like every other flag. The web e2e suite ran locally against the release build; it covers
/settings/feature-flags, plus/sdlcwith the flag on.Testing
Local runs:
pnpm generatepnpm lint,pnpm format:check,pnpm typecheck,pnpm tsp:compilepnpm test:unitmainat1e1f859)pnpm test:intpnpm check:storiespnpm build:release,pnpm build:storybookNew tests, each landed RED first:
tests/unit/presentation/web/app/sdlc-board-gating.test.tscovers the page, the SSE route and all four actions, with the flag off and on.tests/unit/presentation/web/lib/feature-gate.test.ts./sdlc.migration-171-sdlc-board-flag.test.ts, which checks the column,DEFAULT 0and idempotency.Checklist
pnpm lintpassespnpm format:checkpassespnpm typecheckpassespnpm test:unitandpnpm test:intpasspnpm buildsucceedspnpm build:storybooksucceeds (no new components)pnpm tsp:compileran andpackages/core/src/domain/generated/output.tsis committeddomain/orapplication/file imports anything frominfrastructure/featfor the user-visible change🤖 Generated with Claude Code
https://claude.ai/code/session_01TxtN2VcWzg6NTCLj4DbmfL
Generated by Claude Code