AI-Augmented SDLC
Four AI tools built for a small team running a large fleet - one kept, one shelved on evidence, one designed and not yet run live, one shipped into its own case study - with humans keeping every approval gate.
- Role
- Sole author
- Period
- 2026 - present
- Stack
- AWS Bedrock (Claude) · GitHub · Jira · Claude Code plugins · Python
Problem
A small team, one fleet: triage, code review, and backlog grooming eat the week if you let them. The interesting question wasn't whether AI could draft a fix - it was how to wire it in so speed goes up while accountability stays exactly where it was.
Approach
Every pipeline is built around human gates. State lives in labels on the ticket and PR, so any step is inspectable and reversible.
Decisions
- Agents propose; people approve: nothing merges without a named human owning the decision.
- Each tool has to earn its keep, and one that does not is shelved rather than invested in further.
- The auto-remediation service was shelved in August 2026 because 12 of its 13 remediation runs had failed.
Architecture
Kept - review: a Claude-based PR reviewer runs in CI ahead of the human pass. It was pulled from the portal pipelines when it crashed, then restored once guarded; it now runs across the API and portal repos.
Shelved - auto-remediation: an AWS Bedrock service (Claude via bedrock-runtime) built to triage production alerts, correlate them with recent changes, and open fix PRs.
Designed - delivery: an agentic pipeline from the ticket queue to GitHub - plan, branch, implement in an isolated worktree, open a draft PR - with human approval gates between intent and merge. Dry-run on one ticket, not yet run live.
Shipped - knowledge: the Bedrock knowledge-base agent over the billing system's (Oracle Utilities CCS) documentation and data, curated-first with a flagged SQL fallback; it has its own case study.
When it went wrong
I shipped three of the tooling's public Lambda Function URLs - the auto-fix, the ECS rollback and the Bitbucket bridge - with a fallback bearer token hardcoded in the source, and never overrode it live. In August 2026 I found what that meant: the URL plus a value anyone with repository access could read was enough to invoke them.
I gave each function its own secret, removed the fallback, rotated the credentials and wrote the change up. It made shelving the auto-fix a few days later an easy call - a tool that is not earning its keep should not also be an attack surface.
Outcome
- The reviewer runs in CI across the API and portal repos ahead of the human pass; the knowledge-base agent answers Oracle CCS questions from curated documentation and data.
- The auto-fix was shelved on measured evidence rather than kept alive because it was clever - the decision to stop is the result.
- Every merge still has a named human approver; the state machine makes each step auditable.