feat: Orchard branch auto-enrollment and submission anonymization #27
Labels
No labels
compliance
demo
deployment
docs
enhancement
parser
patterns
performance
security
ux
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/turnstone#27
Loading…
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?
Summary
As The Orchard grows beyond Xander and Daniel, manual provisioning (new container + Caddy route per submitter) does not scale. We need an enrollment flow that provisions new branches automatically and anonymizes submitted entries before they reach the Avocet training store.
Proposed design
Terminology
Enrollment flow (grafting)
POST /api/orchard/graftwith{slug, contact_email, agreed_to_terms: true}/devl/docker/turnstone-submissions/<slug>/turnstone-submissions-<slug>container on the next available port (8536+)handle_path /<slug>/*block to harvest.circuitforge.tech in Caddyfile and reloads{submit_endpoint: "https://harvest.circuitforge.tech/<slug>", api_key: "<token>"}TURNSTONE_SUBMIT_ENDPOINTandTURNSTONE_SUBMIT_KEYin their.envAnonymization
Run as a post-processing step (separate worker, not in the ingest path) over each branch DB before Avocet reads it:
host-<short-hash>user-<short-hash>API key auth
POST /api/ingest/batchshould requireAuthorization: Bearer <api_key>whenTURNSTONE_BRANCH_KEYis set on the receiving instance.Acceptance criteria
POST /api/orchard/graftendpoint on harvest receiver (or management endpoint)anonymizedflag per branch DB entryDELETE /api/orchard/branches/<slug>)Notes
.env), not self-serviceharvest-branches.caddyinclude file rather than editing main Caddyfile