diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-24 08:02:12 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-12-24 11:54:18 +0000 |
| commit | 70d0197e85ae4ef85202781f6d2dc9e76bd508b3 (patch) | |
| tree | 45efb6565e81ba755acc5955e68d5b7119d1e122 /docs/explanation/decisions.md | |
| parent | f8c3e3920ed2a1bdaab30be912276993449a5476 (diff) | |
feat(purgatory): add broken purgatory implementation
Diffstat (limited to 'docs/explanation/decisions.md')
| -rw-r--r-- | docs/explanation/decisions.md | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/docs/explanation/decisions.md b/docs/explanation/decisions.md index e9b7422..c72112d 100644 --- a/docs/explanation/decisions.md +++ b/docs/explanation/decisions.md | |||
| @@ -172,3 +172,32 @@ The additional complexity of parsing the Git protocol is minimal compared to the | |||
| 172 | 6. ⏭️ Implement push validation logic | 172 | 6. ⏭️ Implement push validation logic |
| 173 | 7. ⏭️ Integration tests | 173 | 7. ⏭️ Integration tests |
| 174 | 8. ⏭️ GRASP-01 compliance testing | 174 | 8. ⏭️ GRASP-01 compliance testing |
| 175 | |||
| 176 | ## Purgatory Implementation (2025-12-23) | ||
| 177 | |||
| 178 | Implemented according to design specification in [`purgatory-design.md`](purgatory-design.md). No significant deviations from original design. | ||
| 179 | |||
| 180 | **Implementation approach:** | ||
| 181 | - Phases 1-7 completed sequentially as planned | ||
| 182 | - All data structures match design specifications | ||
| 183 | - Integration points implemented as designed | ||
| 184 | |||
| 185 | **Key technical choices:** | ||
| 186 | |||
| 187 | 1. **Optional Purgatory in Git Handlers**: Used `Option<Arc<Purgatory>>` in git handler signatures for backward compatibility. This allows git handlers to function even when no purgatory is provided (e.g., in minimal test setups). | ||
| 188 | |||
| 189 | 2. **Cleanup Interval**: Background cleanup task runs every 60 seconds as designed, removing expired entries from both state and PR stores. | ||
| 190 | |||
| 191 | 3. **Thread-Safe Storage**: Used `Arc<DashMap>` for lock-free concurrent access, enabling safe sharing between HTTP handlers, WebSocket handlers, and background tasks. | ||
| 192 | |||
| 193 | 4. **Late Binding Implementation**: Ref extraction logic in [`helpers.rs`](../../src/purgatory/helpers.rs) extracts refs at git push time, not event arrival time, as specified in the design. | ||
| 194 | |||
| 195 | **Test integration:** | ||
| 196 | - Existing test code in `grasp-audit` was uncommented (Phases 7) | ||
| 197 | - No new integration tests added (as instructed) | ||
| 198 | - Test verification enabled in [`grasp-audit/src/client.rs`](../../grasp-audit/src/client.rs) and [`grasp-audit/src/specs/grasp01/push_authorization.rs`](../../grasp-audit/src/specs/grasp01/push_authorization.rs) | ||
| 199 | |||
| 200 | **Related Documentation:** | ||
| 201 | - Design: [`purgatory-design.md`](purgatory-design.md) | ||
| 202 | - Architecture: [`architecture.md`](architecture.md#5-purgatory-system-srcpurgatory) | ||
| 203 | - Implementation Plan: [`../purgatory-implementation-plan.md`](../purgatory-implementation-plan.md) | ||