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:
Executable
+33
@@ -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.
|
||||
Executable
+38
@@ -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.
|
||||
Executable
+34
@@ -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.
|
||||
Executable
+36
@@ -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.
|
||||
Executable
+30
@@ -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.
|
||||
Executable
+37
@@ -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.
|
||||
Reference in New Issue
Block a user