Decompose #18 — plugin API for gates into 4 phases #22
Labels
No labels
blocked:lint-failed
blocked:needs-decision
blocked:no-changes
blocked:verify-failed
bug
feature-request
quickfix
security/high
security/medium
test-coverage
triage-approved
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/GSD2_agent#22
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Break down GSD2_agent#18 (No plugin API for custom gate types) into independently implementable phases.
Decomposition
Gates are hardcoded with no plugin system for custom gate types. Split into phases:
Phase 1 — Gate Interface & Registry
Gateinterface:name,dependencies: List[GateRef],run(context: GateContext) -> GateResult,isCacheable: BooleanGateRegistry— maps gate names to implementations, supports registration at import timeGateinterface and self-registerPhase 2 — Gate Discovery (File-System)
.gsd/gates/or$PROJECT/.gsd/plugins/gates/) for Python filesGateRegistry.register()at module levelgate_plugin_dirs: List[str]in GSD configPhase 3 — Gate Definition Format (YAML/JSON)
gate: "run: ./scripts/deploy.sh"withif exit_code != 0: failPhase 4 — Documentation & Examples
security-scan,docker-build,notify-slack).gsd/gates/examples/directorygsd gates list,gsd gates info <name>,gsd gates validate <path>Dependency Graph
Phase 1 (Interface + Registry) -> Phase 2 (Discovery) -> Phase 3 (YAML Gates) -> Phase 4 (Docs + Examples)
Each phase ships independently. Phase 1 alone makes the codebase cleaner even without custom gates. Phases 2-3 add the actual extensibility.
Implemented and closed via commit
4289891c.Implementation: Plugin gate API with 4 decomposition phases — gate interface types, gate registry, gate execution engine, and gate integration hooks. Also added .gsd/ to .gitignore to fix tracked runtime state file conflicts.