upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/docs/explanation/decisions.md
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2025-12-24 08:02:12 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2025-12-24 11:54:18 +0000
commit70d0197e85ae4ef85202781f6d2dc9e76bd508b3 (patch)
tree45efb6565e81ba755acc5955e68d5b7119d1e122 /docs/explanation/decisions.md
parentf8c3e3920ed2a1bdaab30be912276993449a5476 (diff)
feat(purgatory): add broken purgatory implementation
Diffstat (limited to 'docs/explanation/decisions.md')
-rw-r--r--docs/explanation/decisions.md29
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
1726. ⏭️ Implement push validation logic 1726. ⏭️ Implement push validation logic
1737. ⏭️ Integration tests 1737. ⏭️ Integration tests
1748. ⏭️ GRASP-01 compliance testing 1748. ⏭️ GRASP-01 compliance testing
175
176## Purgatory Implementation (2025-12-23)
177
178Implemented 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
1871. **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
1892. **Cleanup Interval**: Background cleanup task runs every 60 seconds as designed, removing expired entries from both state and PR stores.
190
1913. **Thread-Safe Storage**: Used `Arc<DashMap>` for lock-free concurrent access, enabling safe sharing between HTTP handlers, WebSocket handlers, and background tasks.
192
1934. **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)