feat: initial release of Protocol Droid v0.2.0

A tool for authoring, sharing, and curating social protocols.

Features:
- Protocol library with search, tag filtering, and sort by date/relevance
- Protocol authoring with structured fields (title, description, steps, outcome, practice, source, tags)
- Protocol forking with provenance tracking
- Collection creation with searchable protocol picker and ordering
- User accounts with roles (admin, member, viewer)
- YAML import/export for portability
- Self-hostable on LAMP/Cloudron, works in subdirectories
- Responsive design with hamburger menu on mobile
- About page

Security:
- CSRF protection via Origin/Referer validation
- Session regeneration on login/register
- Secure session cookie params (HttpOnly, SameSite, Secure)
- Visibility enforcement on private/unlisted items
- YAML object injection hardening
- Login rate limiting
- Path traversal protection
- Input validation and length clamping
- Vote value constraining

Stack: PHP 8.x + MySQL/MariaDB, vanilla JS frontend, no external dependencies.

Hippocratic License (HL3-CORE).
This commit is contained in:
Protocolbot
2026-07-06 13:18:08 -06:00
commit 02794e565e
23 changed files with 3346 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
id: appreciative-apology
title: Appreciative Apology
description: >-
A protocol for repairing harm through structured acknowledgment, moving
beyond reflexive apologies toward genuine accountability.
source: Restorative Justice Project
source_url: https://restorativejustice.org/
tags: [conflict]
forked_from: null
image: null
steps:
- headline: Name the harm
description: >-
The person apologizing specifically describes what they did, without
minimization or justification.
- headline: Acknowledge the impact
description: >-
They describe the impact they understand their action had on the
other person or group.
- headline: Express commitment
description: >-
They state what they will do differently, concretely. No future
promises without specific actions.
- headline: Invite response
description: >-
They ask the other person if there is anything they have missed, and
listen without defending.
outcome: >-
The harmed party feels heard and acknowledged. The relationship has a
path forward with concrete commitments.
practice: >-
Avoid the word "but" — it negates everything before it. "I'm sorry, but..."
is not an apology. Practice pausing after each step.
+38
View File
@@ -0,0 +1,38 @@
id: consent-decision-making
title: Consent Decision-Making
description: >-
A process for making decisions that no one objects to, enabling rapid
group decisions without requiring full agreement.
source: Sociocracy for All
source_url: https://www.sociocracyforall.org/
tags: [decision, facilitation]
forked_from: null
image: null
steps:
- headline: Present the proposal
description: >-
The proposer reads the proposal aloud. Clarifying questions are
allowed, but no discussion yet.
- headline: Round of reactions
description: >-
Each person briefly shares their reaction. No cross-discussion —
just hearing all voices.
- headline: Amend the proposal
description: >-
The proposer may amend based on reactions. The group can suggest
changes by consent.
- headline: Test for consent
description: >-
The facilitator asks: "Does anyone have a reasoned, paramount
objection to this proposal?"
- headline: Declare the decision
description: >-
If no objections remain, the decision is adopted. Objections are
integrated and the process repeats from step 3.
outcome: >-
A decision is made that no one has a paramount objection to. The group
moves forward without blocking minority voices.
practice: >-
A "reasoned, paramount objection" is not a preference — it must explain
why the proposal would cause harm. Practice distinguishing preferences
from objections.
+34
View File
@@ -0,0 +1,34 @@
id: dot-voting
title: Dot Voting
description: >-
A quick visual method for a group to prioritize options together using
adhesive dots on a shared display.
source: Group Works Deck
source_url: https://groupworksdeck.org/deck
tags: [decision, facilitation]
forked_from: null
image: null
steps:
- headline: Post the options
description: >-
All options are written on a shared wall or board, spaced apart for
easy voting.
- headline: Distribute dots
description: >-
Each person receives a fixed number of adhesive dots (typically 3-5).
They may place multiple dots on one option.
- headline: Vote silently
description: >-
Everyone places their dots simultaneously. No discussion during
voting.
- headline: Review results
description: >-
The group reviews the dot distribution together. High-vote items
become priorities, but the pattern matters more than the count.
outcome: >-
The group has a visual map of collective priorities. Everyone
participated equally, and the result is transparent.
practice: >-
Use different colored dots for different categories of voter (e.g.,
staff vs. volunteers) to see patterns. Photograph the result before
taking it down.
+36
View File
@@ -0,0 +1,36 @@
id: fishbowl-discussion
title: Fishbowl Discussion
description: >-
A format for productive conversation in large groups, where a small
inner circle discusses while an outer circle observes.
source: Group Works Deck
source_url: https://groupworksdeck.org/deck
tags: [facilitation]
forked_from: null
image: null
steps:
- headline: Set up the circles
description: >-
Arrange 4-6 chairs in an inner circle for discussants. The rest of
the group sits in an outer circle around them.
- headline: Begin the discussion
description: >-
The inner circle discusses the topic. Only people in the inner
circle may speak.
- headline: Rotate seats
description: >-
One chair is left empty. Anyone from the outer circle can tap a
discussant and take their seat. The displaced person joins the
outer circle.
- headline: Debrief together
description: >-
After the discussion, the full group reflects on what was said and
what patterns they noticed in the conversation.
outcome: >-
A focused, in-depth discussion happens without the chaos of a
full-group free-for-all. More voices contribute than in a panel
format.
practice: >-
Set a minimum time before rotation (2-3 minutes) so discussants can
make a point before being tapped. Brief the outer circle to listen
for themes.
+30
View File
@@ -0,0 +1,30 @@
id: round-robin-check-in
title: Round Robin Check-In
description: >-
A structured way for each person in a group to share briefly,
ensuring everyone is heard before discussion begins.
source: Group Works Deck
source_url: https://groupworksdeck.org/deck
tags: [check-in, facilitation]
forked_from: null
image: null
steps:
- headline: Frame the round
description: >-
The facilitator explains that each person will have up to one minute
to share, with no cross-talk or responses.
- headline: Go around
description: >-
Each person speaks in turn, proceeding around the circle. Passing is
always an option.
- headline: Note themes
description: >-
The facilitator notes recurring themes without commenting. These
become the basis for the discussion that follows.
outcome: >-
Everyone has been heard; the group has a shared sense of where things
stand and what themes deserve further discussion.
practice: >-
Use a talking object to signal whose turn it is. Keep time gently — a
soft chime works better than a timer. If the group is large (12+),
consider breaking into smaller rounds.
+37
View File
@@ -0,0 +1,37 @@
id: temperature-reading
title: Temperature Reading
description: >-
A regular practice for surfacing group dynamics before they escalate,
developed by Diana Larsen at the Software Testing Support Center.
source: STSC / Diana Larsen
source_url: https://www.dianalarsen.com/
tags: [check-in, conflict]
forked_from: null
image: null
steps:
- headline: Appreciations
description: >-
Each person shares something they appreciate about another group
member or the group as a whole.
- headline: New information
description: >-
Each person shares any new information relevant to the group that
others may not know.
- headline: Puzzles
description: >-
Each person shares something they are confused or wondering about.
No responses needed yet.
- headline: Complaints with advice
description: >-
Each person may share a complaint — but must pair it with a
suggestion for improvement.
- headline: Wishes, hopes, and dreams
description: >-
Each person shares something they hope for the group's future.
End on an aspirational note.
outcome: >-
The group has a current snapshot of its emotional and informational
state. Unspoken tensions have a structured outlet.
practice: >-
Do this regularly (weekly or biweekly) so it becomes routine. Time-box
each section to 5 minutes. Model vulnerability as a facilitator.