ai-sdlc-harness

A governed multi-agent SDLC pipeline for Claude Code and Qwen Code. It drives a real engineering workflow — plan, adversarial plan review, proven-red TDD, security scan, PR, comment rounds — across one repo or many.

The model gets judgment. Code gets the rules.

CI status Latest release MIT License Claude Code plugin Qwen Code extension

The problem it solves

Agentic coding tools will happily tell you a test passed, a review approved, and a plan was followed. The interesting question is what happens when that is not true.

This harness moves every mechanical rule out of prose the model is asked to obey and into code that simply runs. Pipeline shape is declared data read by both the orchestrator and the enforcement layer, so there is no second copy to drift. Workflow state is HMAC-chain-sealed and the evidence ledgers are append-only — an out-of-band edit surfaces as a refusal, not a surprise. Your reply at a human gate is captured verbatim by a hook and parsed by deterministic code, so the model cannot approve on your behalf.

Full mode, end to end

fetch + classify intake plan adversarial panel approve-plan proven-red TDD approve-impl harden security scan pre-PR review approve-pre-pr create PR reconcile + metrics

Orange steps are human gates. Everything between them runs hands-off. Lean mode keeps identical rigor but gates by exception — one stop, right before the PR. Quick mode handles trivial changes, and mechanically escalates itself back to full if the real diff turns out to be anything but.

What is actually enforced

Proof-anchored TDD

Writes to non-test paths are hook-refused until the test has been observed failing. The proof is sealed and the test set blob-SHA-locked, so a quietly weakened assertion refuses the completion transition.

Verdicts, not paraphrases

A task cannot reach done without a hook-captured APPROVED in the ledger. The orchestrator cannot summarize a review into an approval.

Owned git

Raw history-mutating git verbs are blocked inside a bootstrapped workspace. Every mutation goes through an entry point that validates, executes, and ledgers in one place.

Fail-closed spawning

Only the subagent set the manifest declares for the current cursor position may be spawned — shape and mode header both checked, fail-closed even on ambiguity.

Scoped planning

You confirm the target repos before a plan exists. Task registration then refuses anything outside that scope; widening mid-plan comes back through you.

An audit trail that travels

Every deviation, token, verdict, and decision is ledgered and mirrored onto the feature branch at gate crossings — minus your raw replies, which never leave the workspace.

Install

Claude Code

/plugin marketplace add MostAshraf/ai-sdlc-harness
/plugin install ai-sdlc-harness@ai-sdlc-harness

Qwen Code

qwen extensions install MostAshraf/ai-sdlc-harness

One repository, natively both — a Claude Code plugin and a Qwen Code extension, no conversion step. Restart the CLI so skills and hooks load, then:

/init-workspace   # one-time interview: provider, repos, discovered toolchain
/dev-workflow <work-item-id>

Needs Git and Python 3.10+. No language prerequisites — toolchains are discovered, and the setup step builds its own venv without touching system Python.

Work-item providers

local-markdown github gitlab ado ado-mcp jira zoho

Code modules behind one interface, each held to a shared contract test. local-markdown needs nothing at all — work items are just files.