CenterForDigitalHumanities / CenterForDigitalHumanities/TPEN-services
Collab Phase 3: Draft Buffer API and Operation Intake for Deferred Persistence
- Dominant language
- JavaScript
- Stars
- 2
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## Summary
Add transient draft operation intake and storage so interfaces can submit collaborative edits without immediate durable RERUM writes.
## Scope
- Add draft operation intake endpoint(s) for line text and bounds patches.
- Store coalesced transient draft state by project/page/line/user.
- Emit op accepted or rejected acknowledgements.
- Fanout accepted operations to websocket room members.
- Add validation and limits for payload size and queue depth.
## Acceptance Criteria
- Draft operations are accepted and visible to collaborators in realtime.
- Duplicate retry submissions are deduplicated by idempotency key.
- No durable RERUM write occurs in this phase.
- Rejected operations return machine-readable reason.
## Dependency
- Depends on websocket skeleton issue.
Contributor guide
Research direction
Begin by reviewing the websocket skeleton issue, which this work depends on, then locate the service entry points for HTTP intake, websocket rooms, and transient storage. Done means accepted drafts are visible to collaborators, retries are deduplicated, rejected payloads return machine-readable reasons, limits are enforced, and no durable RERUM write occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100