From 063906f289d6870768cb50e12768a4145ce8eaa1 Mon Sep 17 00:00:00 2001 From: jwbron <8340608+jwbron@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:59:56 +0000 Subject: [PATCH 1/9] Implement Phase 4: Pipeline workflow for SDLC checkpoints Add GitHub Actions workflows and supporting scripts for the SDLC pipeline that orchestrates agent-based development with structurally enforced checkpoints. New files: - .github/workflows/sdlc-pipeline.yml: Main pipeline workflow with jobs for init, refine, plan, implement, review, loop, and PR phases - .github/workflows/sdlc-hitl.yml: HITL decision workflow that handles checkbox-based approvals with 30-second debounce - action/contract-state.sh: Contract state management script for loading, updating, and checking contract state during pipeline runs The pipeline implements: - Automated init job that creates contracts and branches - Phase-specific agent execution (refine, plan, implement, pr) - Reviewer-implementer cycle with automatic looping - Circuit breaker pattern with configurable thresholds - HITL decision handling with debounce for rapid edits - Phase approval via checkbox comments Issue: https://github.com/jwbron/egg/issues/133 Authored-by: egg --- .github/workflows/sdlc-hitl.yml | 417 ++++++++++++++++ .github/workflows/sdlc-pipeline.yml | 737 ++++++++++++++++++++++++++++ action/contract-state.sh | 485 ++++++++++++++++++ 3 files changed, 1639 insertions(+) create mode 100644 .github/workflows/sdlc-hitl.yml create mode 100644 .github/workflows/sdlc-pipeline.yml create mode 100755 action/contract-state.sh diff --git a/.github/workflows/sdlc-hitl.yml b/.github/workflows/sdlc-hitl.yml new file mode 100644 index 0000000000..c5f6600868 --- /dev/null +++ b/.github/workflows/sdlc-hitl.yml @@ -0,0 +1,417 @@ +name: "egg: SDLC HITL Decision Handler" + +# This workflow handles Human-In-The-Loop (HITL) decisions for the SDLC pipeline. +# It triggers when issue comments are edited (checkbox state changes) and +# updates the contract state accordingly. +# +# The workflow implements a 30-second debounce to prevent rapid-fire updates +# when humans check/uncheck multiple boxes in quick succession. + +on: + issue_comment: + types: [edited] + +permissions: + contents: write + issues: write + +jobs: + handle-decision: + name: Handle HITL decision + runs-on: ubuntu-latest + # Only trigger on comments that contain HITL decision markers + if: contains(github.event.comment.body, ' + DECISION_ID=$(echo "$COMMENT_BODY" | grep -oP ' DECISION_ID=$(echo "$COMMENT_BODY" | grep -oP '