/ docs / USER_PROFILES.md
USER_PROFILES.md
  1  # User Profiles (Radicle-Native)
  2  
  3  These profiles define the **actors** used in this repo’s BDD scenarios.
  4  
  5  The BDD harness and `radicle-priorities` tooling expect each Scenario to include an actor line:
  6  
  7      As a <Profile>
  8  
  9  Where `<Profile>` matches one of the `## Profile:` headings below.
 10  
 11  The intent is not to “model org charts”. These are roles that naturally appear when you
 12  build and operate software in a **peer-to-peer source-control environment** with:
 13  
 14  - cryptographic identities,
 15  - replicated objects by hash,
 16  - patch-based review,
 17  - optional always-on seeds,
 18  - and minimal reliance on centralized services.
 19  
 20  ---
 21  
 22  ## Profile: Backlog Gardener
 23  
 24  **Who this is:** keeps the spec/backlog legible, minimal, and honest.
 25  
 26  **What they want:** contracts that can be implemented without private context.
 27  
 28  **What they do:**
 29  
 30  - Write and edit scenarios in `bdd/features/*.feature`.
 31  - Ensure every `@pending` scenario has exactly one priority (`@p1`/`@p2`/`@p3`) or is consciously left as triage (no priority tags).
 32  - Keep grouping sane via `bdd/FEATURE_CATALOG.md`.
 33  - Curate epic docs and components via `docs/EPIC_CATALOG.md`.
 34  
 35  **What success looks like:** someone can pick a card and ship without guessing what “done” means.
 36  
 37  ## Profile: Steward
 38  
 39  **Who this is:** the person (or small group) responsible for the project’s identity and merge policy.
 40  
 41  **What they want:** collaboration that scales without turning into a single point of control.
 42  
 43  **What they do:**
 44  
 45  - Maintain delegate/merge policy (who can approve patches, what counts as consensus).
 46  - Decide what gets published and what stays private.
 47  - Keep the “official” history coherent while allowing many contributors to work in parallel.
 48  
 49  **What success looks like:** contributors can participate safely, and the project keeps a clear trajectory.
 50  
 51  ## Profile: Contributor
 52  
 53  **Who this is:** builds changes and submits them for review.
 54  
 55  **What they want:** a workflow that works even when they are offline, traveling, or behind hostile networks.
 56  
 57  **What they do:**
 58  
 59  - Clone/mirror the repo locally, make commits, and propose patches for review.
 60  - Attach evidence (tests, repro steps, traces) to make review cheap.
 61  - Suggest improvements to scenarios when reality differs from the contract.
 62  
 63  **What success looks like:** patches move from idea → review → merged with minimal coordination overhead.
 64  
 65  ## Profile: Builder
 66  
 67  **Who this is:** implements features and turns scenarios into working behavior.
 68  
 69  **What they want:** constraints and acceptance criteria that can be verified.
 70  
 71  **What they do:**
 72  
 73  - Pick a scenario (typically `@p1`) and implement until it is no longer `@pending`.
 74  - Keep “works on my machine” honest by producing artifacts others can reproduce.
 75  - Prefer changes that degrade gracefully when peers are offline.
 76  
 77  **What success looks like:** scenarios move from pending → completed and stay completed.
 78  
 79  ## Profile: Reviewer
 80  
 81  **Who this is:** performs patch review (may be a Steward, but doesn’t have to be).
 82  
 83  **What they want:** high-signal diffs, clear intent, and low-risk merges.
 84  
 85  **What they do:**
 86  
 87  - Review patches, request clarifications, and propose edits.
 88  - Check that the change matches the scenario contract (or update the contract if needed).
 89  - Validate that the change doesn’t introduce “central dependency creep”.
 90  
 91  **What success looks like:** review improves quality without becoming a bottleneck.
 92  
 93  ## Profile: Seed Operator
 94  
 95  **Who this is:** runs always-on infrastructure that helps the network converge (without becoming “the server”).
 96  
 97  **What they want:** reliable replication and good uptime without taking custody of everything.
 98  
 99  **What they do:**
100  
101  - Operate a seed node (availability, disk, backups, alerts).
102  - Keep access boundaries explicit (what is public vs private, and who can mirror what).
103  - Provide a stable rendezvous point so new peers can find objects.
104  
105  **What success looks like:** collaboration is smooth for peers in different timezones and network conditions.
106  
107  ## Profile: Release Publisher
108  
109  **Who this is:** makes “what to run” explicit and verifiable.
110  
111  **What they want:** deployability without trusting an opaque build pipeline.
112  
113  **What they do:**
114  
115  - Produce release artifacts and publish a machine-verifiable manifest (hashes + provenance).
116  - Declare upgrade steps and backward-compat constraints.
117  - Keep rollback paths simple.
118  
119  **What success looks like:** operators can run the app and verify they are running the intended bytes.
120  
121  ## Profile: Mirror Operator
122  
123  **Who this is:** runs content-addressed distribution infrastructure for artifacts (bytes by hash).
124  
125  **What they want:** redundancy and availability without central “artifact custody”.
126  
127  **What they do:**
128  
129  - Serve artifacts by digest and retain them for long-lived verification.
130  - Publish where a given hash can be fetched from (so others can mirror).
131  - Keep storage costs predictable via GC policies and retention rules.
132  
133  **What success looks like:** releases remain retrievable even when any one host disappears.
134  
135  ## Profile: Issue Mirror Operator
136  
137  **Who this is:** runs the “metadata mirror” from canonical `.feature` backlog → collaboration surface.
138  
139  **What they want:** issues to be useful for coordination without becoming the source of truth.
140  
141  **What they do:**
142  
143  - Sync pending scenarios into Radicle issues:
144    - `python3 scripts/sync_bdd_issues.py --apply`
145  - Keep labels aligned with priority + categories + kanban state.
146  
147  **What success looks like:** `rad issue list` reads like a prioritized backlog, but edits still happen in `.feature` files.
148  
149  ## Profile: Suite Operator
150  
151  **Who this is:** runs this test suite against other repos to decide “does it qualify?”.
152  
153  **What they want:** a repeatable, explainable pass/fail report.
154  
155  **What they do:**
156  
157  - Run `scripts/radicle_native_probe.py` against a target repo.
158  - Publish the resulting report (and the reasoning behind failures).
159  - Propose minimal patches that move a repo from “nearly compatible” to “compatible”.
160  
161  **What success looks like:** teams can converge on shared standards without gatekeeping or ambiguity.
162  
163  ## Profile: Auditor
164  
165  **Who this is:** validates that a project’s claims match reality (security, governance, reproducibility).
166  
167  **What they want:** verifiable artifacts and inspectable workflows.
168  
169  **What they do:**
170  
171  - Check that identities, policies, and release evidence are consistent.
172  - Look for “hidden dependencies” on centralized accounts/services.
173  - Demand crisp invariants: what must be true even under partial network failure.
174  
175  **What success looks like:** the system is trustworthy without relying on reputation alone.