12 KiB
Backlog Gatekeeper Procedures
Last Updated: November 3, 2025 Status: Active (Phase 1B - Gatekeeper Enforcement)
Overview
This document defines the procedures for enforcing Rule 1 of the governance system:
Rule 1: Only approved governance workflows or the project owner may add items to the development backlog.
The gatekeeper system prevents unauthorized backlog access through automated enforcement and audit logging.
Rule 1: Backlog Access Control
Who Can Add to the Backlog?
✅ ALLOWED:
-
Project Owner (rajames440)
- May manually add items directly to backlog
- No approval required
- Full discretionary authority
-
Automated Workflows (Approved governance processes)
- ECO (Engineering Change Order) workflow
- Always routes to backlog
- Triggered by: ECO template + approval
- CAPA (Corrective/Preventive Action) workflow
- Routes to backlog if PM decides
- Triggered by: CAPA template + approval + PM decision (
route:backloglabel)
- ECO (Engineering Change Order) workflow
❌ NOT ALLOWED:
- Direct label application by non-owners
- Manual backlog entry without governance template
- Bypassing ECO/CAPA workflows
- Creating backlog issues without proper approval chain
- Applying
route:backloglabel outside workflow context
Enforcement Mechanism
Gatekeeper Workflow
File: .github/workflows/gatekeeper-backlog-enforcement.yml
Trigger: Monitors for route:backlog label application
Detection Logic:
IF route:backlog label applied THEN:
IF actor is owner (rajames440) THEN:
✓ ALLOW (owner has full discretionary authority)
ELSE IF issue has approval labels (approved-by-projm, approved-by-qualm, etc.) THEN:
✓ ALLOW (went through proper workflow)
ELSE IF issue is ECO (type:eco) THEN:
✓ ALLOW (ECO always goes to backlog)
ELSE:
✗ BYPASS DETECTED → Trigger enforcement actions
Bypass Detection & Response
When an unauthorized backlog access attempt is detected:
-
Security Warning Comment (Posted to original issue)
- Explains the violation
- References proper procedures
- Instructs user on correct process
- Links to governance documentation
-
PM Notification (Automatic)
- PM assigned to issue
- Ensures management awareness
- Allows PM to follow up with user
-
Incident Report Creation (Automatic)
- New IR issue created with evidence
- Severity: MAJOR
- Full audit trail documentation
- Links to original issue
-
Security Log Entry (Automatic)
- Event logged to
in_basket/SEC_LOG.adoc - Immutable audit trail in governance repository
- Timestamp, actor, method, and response recorded
- Event logged to
GitHub Permission Configuration
Recommended Setup
Since GitHub's native permissions are limited, we use a layered approach:
Layer 1: Repository Access Control
Team Structure:
Core Contributors- PM, QA Lead, Engineering Manager- Can create and modify any issue
- Can apply workflow labels
Development Team- Developers, Engineers- Can create issues (governance templates)
- Cannot directly modify backlog-related labels
- Must use proper workflows
Layer 2: Branch Protection (if using branches for backlog)
If backlog is tracked via git branch:
- Restrict direct commits to backlog branch
- Require PR and approval
- Enforce workflow checks before merge
Layer 3: Automated Enforcement (Currently Active)
Gatekeeper Workflow (primary enforcement)
- Detects label application violations
- Creates incidents for violations
- Logs to SEC_LOG.adoc
- Notifies PM
- This is the active enforcement layer
GitHub Repository Settings
To support gatekeeper enforcement:
-
GitHub Token Permissions
- Ensure
GITHUB_TOKENcan:- Write to issues (add comments, labels)
- Create new issues (for IR)
- Current: ✓ Configured in workflow
- Ensure
-
Workflow Permissions
- Enable "Allow GitHub Actions to create and approve pull requests"
- Ensure workflow
contents: writefor SEC_LOG updates - Current: ✓ Configured in workflow
-
Issue Labels
- Ensure these labels exist:
type:ir- For Incident Reportsseverity:major- For incident severitysecurity-violation- For security-related incidentsroute:backlog- For backlog routing- Approval labels:
approved-by-projm,approved-by-qualm
- Ensure these labels exist:
Procedures for Different User Types
Project Owner (rajames440)
Authority: Full discretionary control of backlog
Procedures:
-
Manual Backlog Addition (When Needed)
1. Create governance document issue (using template) 2. Review and approve as needed 3. Apply `route:backlog` label directly 4. Gatekeeper recognizes owner → ALLOWS -
Governance Oversight
- Review gatekeeper bypass incidents regularly
- Assess if education or access restrictions needed
- Update procedures based on patterns
Project Managers, QA Leads, Engineering Managers
Authority: Decision-makers for document routing
Procedures:
-
Receive Approval Request
1. Document submitted using proper template 2. PM/QA reviews and approves 3. Apply approval label (approved-by-projm, approved-by-qualm) 4. Wait for PM backlog vs vault decision request -
Make Routing Decision
1. Evaluate: "Will a developer work on this?" 2. If YES: Apply `route:backlog` label 3. If NO: Apply `route:vault` label 4. Gatekeeper validates approval + label → ALLOWS -
Handle Bypass Incidents
- Review IR created by gatekeeper
- Assess if user education needed
- Contact violating user with guidance
Development Team
Authority: Submit documents only through proper workflows
Procedures:
-
Submitting Work Request
1. Use appropriate template (ECR, CAPA, etc.) 2. Provide complete information 3. Submit via GitHub issue 4. Wait for approval workflow 5. DO NOT apply backlog labels directly -
ECO Creation (After ECR Approval)
1. ECR → PM approves → Engineering Manager receives notification 2. Engineering Manager creates ECO from approved ECR 3. ECO template → ECO automatically routes to backlog 4. Developer picks up from backlog -
CAPA Submission
1. CAPA template → Complete all required fields 2. QA/PM reviews and approves 3. PM decides: Backlog or Vault? 4. If backlog: developer picks up 5. If vault: routed to governance
Workflow Examples
Example 1: Authorized Backlog Addition (ECO)
Step 1: Engineering Manager receives approved ECR
Step 2: Creates ECO issue using eco.yml template
Step 3: Fills in related ECR reference, FMEA decision, priority
Step 4: ECO workflow automatically applies route:backlog label
Step 5: Gatekeeper sees:
- Actor: workflow (actions/github-script)
- Labels: type:eco, status:approved, route:backlog
- Evidence: ECO has required structure
→ ALLOW (recognized as approved workflow)
Step 6: Item appears in backlog
Step 7: Developer picks up and works on implementation
Result: ✓ Authorized, backlog entry allowed
Example 2: Unauthorized Backlog Addition (Bypass)
Step 1: Developer creates issue (e.g., "Add feature X")
Step 2: Developer applies route:backlog label
(Trying to skip approval process)
Step 3: Gatekeeper detects:
- Actor: developer (non-owner)
- Labels: route:backlog (but no approval evidence)
- No type:eco or approval labels found
→ BYPASS DETECTED
Step 4: Gatekeeper actions:
✓ Posts warning comment: "Use proper ECR/CAPA workflow"
✓ Assigns PM for review
✓ Creates IR issue: "Unauthorized Backlog Access"
✓ Logs to SEC_LOG.adoc: Timestamp, actor, method, action
Step 5: PM reviews incident
Step 6: PM contacts developer with guidance
Step 7: Developer resubmits using proper ECR workflow
Result: ✗ Unauthorized attempt detected, logged, and corrected
Example 3: Authorized PM Routing Decision
Step 1: CAPA submitted using capa.yml template
Step 2: QA reviews and approves
→ Adds approved-by-qualm label
Step 3: Gatekeeper rule 2 triggers: "Request PM decision"
Step 4: PM receives decision request comment
(Backlog = developer work vs Vault = documentation)
Step 5: PM evaluates: "Is this a bug that needs fixing?"
Yes → PM applies route:backlog label
Step 6: Gatekeeper sees:
- Actor: PM (rajames440 or delegated)
- Labels: type:capa, approved-by-qualm, route:backlog
- Evidence: Approval + PM decision
→ ALLOW
Step 7: Route-to-vault workflow checks:
route:backlog → Don't route to vault, stays in backlog
Step 8: Developer picks up CAPA from backlog
Result: ✓ Authorized through approval + PM decision chain
Audit Procedures
SEC_LOG.adoc
Location: /StarForth-Governance/in_basket/SEC_LOG.adoc
Contents:
- Timestamp (UTC) of security event
- Event type (Unauthorized Backlog Access, etc.)
- User/actor who triggered event
- Reference (Original issue #NNN)
- Detailed description of violation
- Severity level (CRITICAL, MAJOR, MINOR, LOW)
- Action taken (IR created, PM notified)
Access:
- Version controlled in StarForth-Governance repo
- Immutable audit trail
- Updated by workflows automatically
Incident Reports (IR)
Created By: Gatekeeper workflow
Labels: type:ir, severity:major, security-violation
Contains:
- Original violation details
- What the user did
- What the proper process should be
- Governance references
- Links to governance documentation
Review: PM reviews IR, contacts user, documents follow-up
Troubleshooting
Issue: "I applied route:backlog but got a warning"
Likely Cause: Missing approval labels or not following workflow
Solution:
- Check if your issue has proper approval labels
- If not, go back and request approval first
- PM will handle routing decision
- Let PM apply the
route:backloglabel
Reference: See "Procedures for Development Team" above
Issue: "My ECO should have gone to backlog but got a vault warning"
Likely Cause: ECO issue missing required fields or type label
Solution:
- Verify you used eco.yml template
- Check that issue has
type:ecolabel - Check that issue has
status:approvedlabel - Try re-applying
route:backlogafter template validation
Contact: PM (@rajames440) if issue persists
Issue: "I'm the owner but still got a warning"
Likely Cause: Workflow logic issue or label timing
Solution:
- Check that your GitHub username is exactly
rajames440 - Verify gatekeeper workflow has correct OWNER_USERNAME
- Check workflow execution logs in GitHub Actions
Reference: Gatekeeper workflow: .github/workflows/gatekeeper-backlog-enforcement.yml
Governance References
Related Documents:
GOVERNANCE_WORKFLOW_IMPLEMENTATION.md- Full workflow detailsGOVERNANCE_DOCUMENT_TYPE_SPECIFICATION.md- Document types and routing.github/workflows/gatekeeper-backlog-enforcement.yml- Enforcement code/StarForth-Governance/in_basket/SEC_LOG.adoc- Audit trail
Key Rules:
- Rule 1: Only approved workflows or owner may add to backlog
- Rule 2: All governance documents require approval before routing
- Rule 3: PM makes backlog vs vault routing decision for conditional types
Summary
| Aspect | Details |
|---|---|
| Rule | Only owner or approved workflows may add to backlog |
| Owner Authority | rajames440 has full discretionary backlog access |
| Approved Workflows | ECO (always), CAPA (if PM decides) |
| Detection | Gatekeeper monitors route:backlog label application |
| Bypass Response | Warning + IR creation + PM notification + Security logging |
| Audit Trail | SEC_LOG.adoc in in_basket (immutable) |
| Access Control | Layered: GitHub permissions + Gatekeeper enforcement |
Status: ✓ Enforcement Active (Ready for Use)