Improvements in template handling and loading

This commit is contained in:
Nathan Schneider
2025-07-22 12:17:25 -06:00
parent 3ef15444fe
commit 847b603734
59 changed files with 1070 additions and 2153 deletions

View File

@@ -2,127 +2,153 @@
This document explains the architectural decisions made in the Dispute Protocol Builder application.
## Latest Architecture Update
## Current Architecture (2025)
The architecture has been significantly simplified to make it more maintainable and easier to extend.
The architecture has been completely redesigned to use a YAML-based template system with server-side rendering for maximum reliability and maintainability.
### Template System
### Evolution of Template System
The original architecture had a complex system of modules and templates:
**Original Architecture**: Complex JavaScript-based system with modules and template-mappers
**Previous Architecture**: Direct ES module imports (had cross-platform compatibility issues)
**Current Architecture**: YAML-based templates with Hugo server-side rendering
1. Templates contained raw content
2. The template-mapper tried to match content to existing modules
3. If no match was found, it created custom modules
4. The builder would load templates and convert them to use module references
### Current YAML-Based Template System
This approach became unnecessarily complex and had several drawbacks:
- Adding new templates required modifying multiple files
- The module matching logic was brittle and hard to maintain
- Many modules weren't actually reused across templates
The new architecture completely eliminates client-side template loading issues:
### New Simplified Architecture
The new architecture uses a direct template system:
1. Each template is stored in its own file in `/static/js/templates/`
2. Templates contain the full content for all stages and components
3. The index.js file imports and exports all templates
4. Templates are loaded dynamically in builder.js using ES Modules
5. Stages and components are now consolidated in a single YAML file
6. Template selection is now an expandable section rather than a dropdown
1. **Template Storage**: All templates stored as YAML files in `/data/templates/`
2. **Server-Side Rendering**: Hugo renders template options directly into HTML at build time
3. **Data Embedding**: Template data embedded as JSON in the page for immediate JavaScript access
4. **Event-Based Interaction**: JavaScript adds click handlers to pre-rendered template options
5. **Automatic Discovery**: New templates automatically appear by simply adding YAML files
The template loading process now follows these steps:
1. When the page loads, the `fetchTemplates()` function is called
2. The function dynamically imports the templates index file using ES modules
3. The templates are stored in memory and used to populate the template options
4. When a template is selected, the content is directly applied to the form fields
5. The template cards show both the title and description for better user understanding
1. During Hugo build, templates are rendered into HTML and data is embedded as JSON
2. When the page loads, JavaScript parses the embedded template data
3. Click handlers are attached to pre-rendered template options
4. When a template is clicked, content is directly applied to form fields
5. No client-side HTTP requests or ES module imports needed
Benefits of this approach:
- Adding a new template is as simple as creating a new file and registering it in index.js
- No complex module matching logic or multiple data sources
- Clear 1:1 relationship between files and templates
- Easier to understand and maintain
- Improved error handling and debugging capabilities
- Single source of truth for template data
- Consolidated data structure improves maintainability
- Enhanced template selection UI provides more context for users
### Template Data Flow
### Template Loading Implementation
The core of the template loading is implemented in `builder.js`:
```javascript
// Function to fetch templates - simplified approach
function fetchTemplates() {
console.log('Fetching templates...');
// Load all templates at startup
try {
import('/js/templates/index.js')
.then(module => {
templates = module.default;
console.log('Templates loaded successfully:', templates.length, 'templates found');
// Populate the template selector
populateTemplateSelector(templates);
// Add template selection event handler
if (protocolTemplateSelect) {
protocolTemplateSelect.addEventListener('change', handleTemplateSelection);
console.log('Template selector event handler attached');
} else {
console.error('Template select element not found');
}
})
.catch(error => {
console.error('Error importing templates:', error);
});
} catch (e) {
console.error('Error loading templates:', e);
}
}
```
YAML files → Hugo build → HTML + embedded JSON → JavaScript parsing → Form population
(/data/templates/) (build time) (runtime)
```
### Simplified Component Names
### Benefits of Current Architecture
All component titles have been simplified to be more direct and consistent:
- First-word capitalization only
- Short, descriptive phrases (2-3 words) instead of questions
- Example: "Process initiation" instead of "How does the process begin?"
**Reliability**:
- No client-side loading issues across different servers/browsers
- No CORS or ES module compatibility problems
- Works reliably in production environments
### Removed Components
**Maintainability**:
- Templates stored as human-readable YAML
- Adding templates requires only creating a YAML file
- No complex JavaScript imports or registrations needed
- Version control friendly (YAML diffs are readable)
The following components have been removed:
- YAML-based template configuration - No longer needed as templates are defined directly in JS
- Complex module mapper logic - Templates now contain direct content
- Module selection UI - Removed from the interface
**Performance**:
- Templates loaded instantly at page load (no HTTP requests)
- Template options rendered at build time
- Faster user interaction (no loading delays)
### Migration Process
### Current Template Structure
To migrate a template from the old system to the new one:
1. Create a new file in `/static/js/templates/`
2. Copy the raw template structure from templates.js
3. Register the template in index.js
Templates are stored in `/data/templates/` as YAML files:
### Future Considerations
```yaml
id: "template-id"
title: "Template Name"
description: "Brief description"
If common content needs to be shared between templates in the future, standard JavaScript functions or objects can be used to generate that content without the overhead of the complex module system.
data:
stages:
basics:
community_rules:
communityRulesText: "Content with **markdown** support"
# Full protocol structure
```
## Core Components
## Core Data Structure
The application is still built on the following core components:
### UI Structure: `/data/stages_array.yaml`
1. **Stage and Component Structure** - Now defined in a single consolidated YAML file (`data/stages_array.yaml`)
2. **Templates** - Complete predefined protocols stored in individual files
3. **Builder Interface** - Interactive UI for customizing protocols, with improved template selection
4. **Export System** - Tools to export protocols in various formats
Defines the form structure with stages, components, and fields:
```yaml
- id: basics
title: "Basics"
description: "Core building blocks"
order: 1
components:
- id: community_rules
title: "Community rules"
description: "Location and accessibility of guidelines"
order: 1
fields:
- id: communityRulesText
type: text
label: "Where does the community keep its rules?"
```
### Template Content: `/data/templates/*.yaml`
Contains the actual content that populates the form fields when a template is selected.
## Current File Organization
```
/data/
├── stages_array.yaml # UI structure definition
└── templates/ # Template content
├── shalish-mediation.yaml
├── restorative-justice.yaml
├── transformative-justice.yaml
├── jury-protocol.yaml
├── referee-protocol.yaml
├── peer-to-peer.yaml
├── chosen-facilitator.yaml
└── facilitation-council.yaml
```
## Available Templates
The system includes 8 complete dispute resolution protocol templates:
1. **Shalish Mediation** - Traditional Bangladeshi village mediation with modern adaptations
2. **Restorative Justice Circle** - Community healing and relationship repair
3. **Transformative Justice Process** - Systemic change and power dynamics focus
4. **Community Jury** - Formal peer adjudication process
5. **Community Referee** - Neutral third-party binding decisions
6. **Peer-to-Peer Resolution** - Direct negotiation approach
7. **Chosen Facilitator** - Mutually selected facilitation
8. **Facilitation Council** - Group-based facilitation approach
## Markdown Support
Templates support full markdown formatting:
- **Bold** and *italic* text
- [Links](https://example.com)
- Lists and structured content
- Rendered in preview mode and exports
## Adding New Features
When adding new features:
1. Keep the one-template-per-file architecture
2. Focus on the user experience of building and customizing protocols
3. Test thoroughly with multiple templates
When extending the system:
For more details on implementation, see the README.md file.
1. **New Templates**: Simply add YAML files to `/data/templates/`
2. **UI Changes**: Modify `/data/stages_array.yaml`
3. **Functionality**: Update JavaScript in `/static/js/builder.js`
4. **Styling**: Update CSS in `/static/css/main.css`
## Deployment Considerations
The current architecture is optimized for static hosting:
- No server-side dependencies beyond Hugo build process
- All data embedded at build time
- Works with any static file server (GitHub Pages, Netlify, etc.)
- No CORS or dynamic loading issues
For more implementation details, see the README.md file.

View File

@@ -1,167 +0,0 @@
# Deploying from a Self-Hosted GitLab Server
This guide provides detailed instructions for deploying the Dispute Protocol application from a self-hosted GitLab server.
## Prerequisites
- A self-hosted GitLab server (GitLab Community Edition or Enterprise Edition)
- GitLab Runner installed and configured on your server
- Basic familiarity with GitLab CI/CD
## Deployment Options
The project includes a `.gitlab-ci.yml` file that supports two deployment methods:
1. **GitLab Pages** - For hosting directly on your GitLab instance
2. **Custom Server Deployment** - For deploying to an external web server
## Option 1: Deploying to GitLab Pages
GitLab Pages provides an easy way to host static websites directly from your GitLab repository.
### Configuration Steps:
1. Ensure GitLab Pages is enabled on your self-hosted GitLab instance:
- Go to Admin Area > Settings > Pages
- Enable GitLab Pages and configure the domain settings
2. The existing `.gitlab-ci.yml` file already includes the necessary configuration for GitLab Pages. When you push to the `master` branch, the site will be automatically built and deployed.
3. Access your site at `https://[group-or-username].gitlab-instance.com/dispute-protocol`
## Option 2: Deploying to a Custom Web Server
For more control, you can deploy to your own web server using rsync over SSH.
### Configuration Steps:
1. In your GitLab repository, go to **Settings > CI/CD > Variables**
2. Add the following variables:
- `SSH_PRIVATE_KEY`: The private SSH key for connecting to your deployment server
- `SSH_KNOWN_HOSTS`: Output of `ssh-keyscan your-server.com`
- `SSH_USER`: Username on your deployment server
- `SSH_HOST`: Hostname or IP address of your deployment server
- `DEPLOY_PATH`: Path on your server where the site should be deployed
3. Edit the `.gitlab-ci.yml` file and uncomment the `deploy` job
4. Update the `url` parameter in the environment section with your actual domain
5. Push your changes to the `master` branch to trigger the deployment
### How to generate SSH_KNOWN_HOSTS value:
```bash
ssh-keyscan -H your-server.com
```
### How to generate and configure SSH keys:
1. Generate a new SSH key pair (without a passphrase for automated use):
```bash
ssh-keygen -t ed25519 -C "gitlab-deploy" -f gitlab-deploy-key
```
2. Add the public key to your server's authorized_keys:
```bash
cat gitlab-deploy-key.pub >> ~/.ssh/authorized_keys
```
3. Copy the private key content (including BEGIN and END lines) and paste it into the `SSH_PRIVATE_KEY` variable in GitLab
## Web Server Configuration
### Nginx Configuration
```nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/deployment;
index index.html;
location / {
try_files $uri $uri/ =404;
}
# Optional: Enable gzip compression
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
```
### Apache Configuration
Create a .htaccess file in your deployment directory:
```apache
# Enable rewriting
RewriteEngine On
# If the requested resource doesn't exist as a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite to index.html
RewriteRule ^(.*)$ /index.html [L]
# Cache control for static assets
<FilesMatch "\.(css|js|png|jpg|jpeg|gif|ico)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
```
## Manual Deployment
If you prefer to deploy manually without GitLab CI/CD, you can use the included scripts:
### Testing the Build Locally
Before deploying, you can test the build locally using the included `build-test.sh` script:
```bash
./build-test.sh [port]
```
Example:
```bash
./build-test.sh 8080
```
This will build the site and start a temporary web server on the specified port (default: 8080), allowing you to verify that everything works correctly before deployment.
### Deploying to a Remote Server
To deploy to your own server manually, use the included `deploy.sh` script:
```bash
./deploy.sh [username] [server] [deploy-path]
```
Example:
```bash
./deploy.sh deploy-user example.com /var/www/dispute-protocol
```
This script will build the site and then use rsync to deploy it to your server.
## Troubleshooting
### CI/CD Pipeline Fails
1. Check the pipeline logs for detailed error messages
2. Verify that the GitLab Runner is properly configured and running
3. Ensure the SSH key has the correct permissions on the target server
4. Try running the build and deploy steps manually to identify issues
### Site Not Accessible After Deployment
1. Check web server logs for errors
2. Verify file permissions in the deployment directory
3. Ensure the web server configuration is correct
4. Check that the domain DNS is pointing to the correct server

117
README.md
View File

@@ -7,11 +7,12 @@ Created as a prototype by Nathan Schneider with Claude Code.
## Features
- Interactive protocol builder with multi-stage process
- Complete protocol templates for different facilitation styles
- Simple template system with direct content application
- 8 complete protocol templates for different facilitation styles
- YAML-based template system for easy content management
- Server-side template rendering for reliable cross-platform compatibility
- Export protocols as Markdown, PDF, or JSON
- Import previously created protocols (JSON format)
- Markdown support for rich text formatting
- Markdown support for rich text formatting in preview mode and exports
- Responsive design for desktop and mobile
## Setup and Installation
@@ -21,7 +22,7 @@ Created as a prototype by Nathan Schneider with Claude Code.
3. Run the local development server:
```bash
cd dispute-protocol
cd builder-prototype
hugo server -D
```
@@ -29,85 +30,68 @@ hugo server -D
## Customizing the Dispute Protocol
### Adding or Modifying Stages
### Adding or Modifying Stages and Components
Edit the file `data/stages/stages.yaml` to modify the stages of the dispute resolution process.
The UI structure is defined in `data/stages_array.yaml`, which contains all stages, components, and fields in a consolidated format:
```yaml
- id: new-stage
title: New Stage Name
description: Description of this stage
title: "New Stage Name"
description: "Description of this stage"
order: 7 # This determines the order in which stages appear
```
### Adding or Modifying Components
Components are grouped by stage. Create or edit files in the `data/components/` directory, naming the file after the stage ID.
For example, to add components to a stage with ID "new-stage", create `data/components/new-stage.yaml`:
```yaml
- id: new-component
title: New Component Title
description: Description of what this component addresses
stageId: new-stage
order: 1
fields:
- id: newComponentField
type: text
label: Field Label
placeholder: Placeholder text...
required: true
components:
- id: new-component
title: "New Component Title"
description: "Description of what this component addresses"
order: 1
fields:
- id: newComponentField
type: text
label: "Field Label"
placeholder: "Placeholder text..."
required: true
```
### Using Protocol Templates
The application includes complete protocol templates that pre-fill all components with consistent content. Several templates are provided:
The application includes 8 complete protocol templates that pre-fill all components with consistent content:
1. **Shalish Mediation**: A process based on the traditional shalish process for village-level mediation in Bangladesh, with modernizing improvements.
1. **Shalish Mediation**: Traditional mediation process from Bangladesh with modern adaptations
2. **Restorative Justice Circle**: Community-based approach focusing on healing relationships
3. **Transformative Justice Process**: Addresses systemic issues and power dynamics
4. **Community Jury**: Formal adjudication process with community jurors
5. **Community Referee**: Neutral third party makes binding decisions
6. **Peer-to-Peer Resolution**: Direct negotiation with minimal third-party intervention
7. **Chosen Facilitator**: Participants mutually select a facilitator
8. **Facilitation Council**: Group of trained facilitators support resolution
2. **Restorative Justice**: A collaborative process that focuses on healing relationships and repairing harm rather than punitive measures.
3. **Transformative Justice**: A process that addresses immediate harm while working to transform the conditions that allowed harm to occur.
Users can select a template from the dropdown at the top of the builder page to automatically populate all fields. They can then customize the content as needed for their community's specific requirements.
Users can select a template from the Templates section to automatically populate all fields. Templates support full markdown formatting including links, bold text, and lists.
#### Adding New Protocol Templates
To add a new protocol template:
1. Create a new JavaScript file in the `static/js/templates/` directory
2. Define your template with the following structure:
1. Create a new YAML file in the `data/templates/` directory (e.g., `my-new-template.yaml`)
2. Define your template with this structure:
```javascript
const newTemplate = {
id: "template-id",
title: "Template Name",
description: "Brief description of this template approach",
data: {
stages: {
// Full protocol data structure with content for all stages and components
}
}
};
```yaml
id: "my-new-template"
title: "My New Template"
description: "Brief description of this template approach"
export default newTemplate;
data:
stages:
basics:
community_rules:
communityRulesText: "Your content here with **markdown** support and [links](https://example.com)"
shared_values:
sharedValuesText: "Content for shared values..."
# Continue with all stages and components
```
3. Register the template in `static/js/templates/index.js`:
3. The template will automatically appear in the Templates section - no code changes needed!
```javascript
import newTemplate from './template-id.js';
const templates = [
// existing templates...
newTemplate,
];
export default templates;
```
The builder will automatically load all templates registered in the index.js file at startup.
Templates are rendered server-side by Hugo and embedded directly in the HTML, ensuring reliable loading across all deployment environments.
## Deployment
@@ -173,11 +157,12 @@ RewriteRule ^(.*)$ /index.html [L]
## Technologies Used
- Hugo static site generator
- Modern JavaScript (ES Modules) for template management
- Modular template architecture with simplified importing
- Hugo static site generator with YAML data files
- Server-side template rendering for cross-platform compatibility
- Modern JavaScript for form interactions and export functionality
- YAML-based template system for easy content management
- jsPDF for PDF generation
- Marked.js for Markdown rendering
- Marked.js for Markdown rendering in preview mode and exports
## License

View File

@@ -6,26 +6,13 @@ draft: false
# About the Community Dispute Protocol Builder
The Dispute Protocol Builder is a collaborative tool designed to help communities develop customized frameworks for addressing and resolving conflicts. Rather than imposing a one-size-fits-all solution, this tool empowers communities to create protocols that reflect their unique values, culture, and specific needs.
This is an early-stage experiment and should be used with caution! Please share your feedback with the [Media Economies Design Lab](https://medlab.host).
## Why Create a Dispute Protocol?
Every community experiences conflicts. Whether in neighborhoods, workplaces, cooperatives, online spaces, or cultural groups, disagreements and tensions are inevitable. Having a thoughtful, agreed-upon process for addressing these conflicts provides numerous benefits:
- **Prevents escalation** of small issues into major conflicts
- **Creates consistency** and predictability during challenging times
- **Ensures fairness and transparency** in how issues are addressed
- **Reduces harm** during the resolution process
- **Builds community capacity** to handle future conflicts
- **Strengthens relationships** by demonstrating commitment to healthy conflict engagement
- **Embodies community values** in practical, actionable ways
- **Provides guidance** when emotions are running high
Without a clear protocol, communities often default to ad-hoc approaches that can amplify harm, reinforce power imbalances, or leave conflicts unresolved.
The CommunityDispute Protocol Builder is a tool designed to help communities develop customized frameworks for addressing and resolving conflicts. Rather than imposing a one-size-fits-all solution, this tool empowers communities to create protocols that reflect their unique values, culture, and specific needs.
## How the Builder Works
The Protocol Builder guides you through creating a comprehensive dispute resolution framework using a modular approach:
The Protocol Builder guides you through creating a dispute resolution system using a modular approach:
### 1. Start from Templates or Build from Scratch
@@ -42,54 +29,17 @@ The builder walks you through six key stages of dispute resolution:
5. **Resolution**: Finalizing, documenting, and implementing solutions
6. **Follow-up**: Evaluating outcomes, ensuring accountability, and making improvements
### 3. Mix and Match Modules
For each component within these stages, you can select from pre-written modules or craft your own content. This modular approach lets you:
- Choose elements that align with your community's values
- Adapt the protocol based on your community's capacity and resources
- Create a coherent process that addresses your specific needs
- Ensure nothing important is overlooked
### 4. Export and Share
### 3. Export and Share
When your protocol is complete, export it as:
- A formatted PDF to share with your community
- A Markdown document for easy editing and version control
- A JSON file that can be imported back into the builder for future updates
## Design Principles
The Dispute Protocol Builder is designed around these core principles:
- **Accessibility**: Simple, clear language and an intuitive interface make this tool usable by anyone, regardless of technical expertise or familiarity with conflict resolution terminology.
- **Flexibility**: Every component is customizable to accommodate diverse community contexts and needs.
- **Comprehensiveness**: The tool addresses all aspects of dispute resolution, from initial values to final implementation.
- **Educational**: Pre-written modules offer best practices drawn from various dispute resolution traditions.
- **Privacy-Focused**: All work happens locally in your browser—no data is sent to our servers.
## Who Is This For?
This tool is designed for any group that wants to improve how they handle internal conflicts:
- **Intentional Communities and Cooperatives**
- **Neighborhood Associations**
- **Activist Groups and Collectives**
- **Small Businesses and Worker Cooperatives**
- **Faith Communities**
- **Online Communities and Forums**
- **Educational Institutions**
- **Non-Profit Organizations**
- **Artistic and Cultural Collectives**
## Get Started
<div class="cta-container">
Ready to create your community's dispute protocol?
<a href="/builder" class="cta-button">Start Building Your Protocol</a>
</div>
</div>

View File

@@ -1,157 +0,0 @@
{
"stages": [
{
"id": "intake",
"title": "Intake",
"description": "How disputes enter the process",
"order": 1,
"components": [
{
"id": "process_start",
"title": "Process initiation",
"description": "The mechanism for initiating the dispute process",
"order": 1,
"fields": [
{
"id": "processStartText",
"type": "text",
"label": "How does the process begin?",
"placeholder": "Describe how disputes are initiated...",
"required": true
}
]
},
{
"id": "rules_access",
"title": "Rules accessibility",
"description": "Location and accessibility of community rules and guidelines",
"order": 2,
"fields": [
{
"id": "rulesAccessText",
"type": "text",
"label": "Where does the community keep its rules?",
"placeholder": "Describe where community rules are documented...",
"required": true
}
]
}
]
},
{
"id": "process",
"title": "Process",
"description": "How the dispute resolution operates",
"order": 2,
"components": [
{
"id": "community_values",
"title": "Community values",
"description": "Core values that guide the dispute resolution process",
"order": 1,
"fields": [
{
"id": "communityValuesText",
"type": "text",
"label": "What values does the community hold in disputes?",
"placeholder": "Describe the core values that guide your community...",
"required": true
}
]
}
]
},
{
"id": "assessment",
"title": "Assessment",
"description": "Evaluating the state of the dispute",
"order": 3,
"components": [
{
"id": "dispute_assessment",
"title": "Dispute evaluation",
"description": "Methods for evaluating the current status of a dispute",
"order": 1,
"fields": [
{
"id": "disputeAssessmentText",
"type": "text",
"label": "How is the state of the dispute assessed?",
"placeholder": "Describe methods used to evaluate...",
"required": true
}
]
}
]
},
{
"id": "deliberation",
"title": "Deliberation",
"description": "Discussing the dispute",
"order": 4,
"components": [
{
"id": "deliberation_process",
"title": "Deliberation format",
"description": "Methods for deliberation during the dispute process",
"order": 1,
"fields": [
{
"id": "deliberationProcessText",
"type": "text",
"label": "How do participants deliberate about the dispute?",
"placeholder": "Describe the format and structure of deliberations...",
"required": true
}
]
}
]
},
{
"id": "resolution",
"title": "Resolution",
"description": "Determining outcomes for the dispute",
"order": 5,
"components": [
{
"id": "resolution_process",
"title": "Resolution approach",
"description": "Methods for reaching a resolution",
"order": 1,
"fields": [
{
"id": "resolutionProcessText",
"type": "text",
"label": "How does resolution of the dispute occur?",
"placeholder": "Describe the process by which disputes are resolved...",
"required": true
}
]
}
]
},
{
"id": "appeal",
"title": "Appeal",
"description": "Process for reconsidering dispute decisions",
"order": 6,
"components": [
{
"id": "appeal_criteria",
"title": "Appeal grounds",
"description": "Standards for allowing an appeal of a resolution",
"order": 1,
"fields": [
{
"id": "appealCriteriaText",
"type": "text",
"label": "What are the criteria for a permissible appeal?",
"placeholder": "Describe what circumstances justify an appeal...",
"required": true
}
]
}
]
}
]
}

View File

@@ -1,157 +0,0 @@
{
"stages": [
{
"id": "intake",
"title": "Intake",
"description": "How disputes enter the process",
"order": 1,
"components": [
{
"id": "process_start",
"title": "Process initiation",
"description": "The mechanism for initiating the dispute process",
"order": 1,
"fields": [
{
"id": "processStartText",
"type": "text",
"label": "How does the process begin?",
"placeholder": "Describe how disputes are initiated...",
"required": true
}
]
},
{
"id": "rules_access",
"title": "Rules accessibility",
"description": "Location and accessibility of community rules and guidelines",
"order": 2,
"fields": [
{
"id": "rulesAccessText",
"type": "text",
"label": "Where does the community keep its rules?",
"placeholder": "Describe where community rules are documented...",
"required": true
}
]
}
]
},
{
"id": "process",
"title": "Process",
"description": "How the dispute resolution operates",
"order": 2,
"components": [
{
"id": "community_values",
"title": "Community values",
"description": "Core values that guide the dispute resolution process",
"order": 1,
"fields": [
{
"id": "communityValuesText",
"type": "text",
"label": "What values does the community hold in disputes?",
"placeholder": "Describe the core values that guide your community...",
"required": true
}
]
}
]
},
{
"id": "assessment",
"title": "Assessment",
"description": "Evaluating the state of the dispute",
"order": 3,
"components": [
{
"id": "dispute_assessment",
"title": "Dispute evaluation",
"description": "Methods for evaluating the current status of a dispute",
"order": 1,
"fields": [
{
"id": "disputeAssessmentText",
"type": "text",
"label": "How is the state of the dispute assessed?",
"placeholder": "Describe methods used to evaluate...",
"required": true
}
]
}
]
},
{
"id": "deliberation",
"title": "Deliberation",
"description": "Discussing the dispute",
"order": 4,
"components": [
{
"id": "deliberation_process",
"title": "Deliberation format",
"description": "Methods for deliberation during the dispute process",
"order": 1,
"fields": [
{
"id": "deliberationProcessText",
"type": "text",
"label": "How do participants deliberate about the dispute?",
"placeholder": "Describe the format and structure of deliberations...",
"required": true
}
]
}
]
},
{
"id": "resolution",
"title": "Resolution",
"description": "Determining outcomes for the dispute",
"order": 5,
"components": [
{
"id": "resolution_process",
"title": "Resolution approach",
"description": "Methods for reaching a resolution",
"order": 1,
"fields": [
{
"id": "resolutionProcessText",
"type": "text",
"label": "How does resolution of the dispute occur?",
"placeholder": "Describe the process by which disputes are resolved...",
"required": true
}
]
}
]
},
{
"id": "appeal",
"title": "Appeal",
"description": "Process for reconsidering dispute decisions",
"order": 6,
"components": [
{
"id": "appeal_criteria",
"title": "Appeal grounds",
"description": "Standards for allowing an appeal of a resolution",
"order": 1,
"fields": [
{
"id": "appealCriteriaText",
"type": "text",
"label": "What are the criteria for a permissible appeal?",
"placeholder": "Describe what circumstances justify an appeal...",
"required": true
}
]
}
]
}
]
}

View File

@@ -1,23 +0,0 @@
- id: appeal_criteria
title: "Appeal grounds"
description: "Standards for allowing an appeal of a resolution"
stageId: appeal
order: 1
fields:
- id: appealCriteriaText
type: text
label: "What are the criteria for a permissible appeal?"
placeholder: "Describe what circumstances justify an appeal of a resolution..."
required: true
- id: appeal_process
title: "Appeal procedure"
description: "Process for handling appeals"
stageId: appeal
order: 2
fields:
- id: appealProcessText
type: text
label: "What happens when an appeal occurs?"
placeholder: "Describe the process that follows when an appeal is initiated..."
required: true

View File

@@ -1,59 +0,0 @@
- id: dispute_assessment
title: "Dispute evaluation"
description: "Methods for evaluating the current status of a dispute"
stageId: assessment
order: 1
fields:
- id: disputeAssessmentText
type: text
label: "How is the state of the dispute assessed?"
placeholder: "Describe methods used to evaluate the current status of a dispute..."
required: true
- id: values_adherence
title: "Values alignment"
description: "Evaluating whether the process is aligned with community values"
stageId: assessment
order: 2
fields:
- id: valuesAdherenceText
type: text
label: "How do you ensure community values are being followed?"
placeholder: "Describe how you evaluate whether the process adheres to community values..."
required: true
- id: jurisdiction
title: "Jurisdiction determination"
description: "Determining whether this is the appropriate forum for the dispute"
stageId: assessment
order: 3
fields:
- id: jurisdictionText
type: text
label: "How do you determine if a dispute falls within this process's jurisdiction?"
placeholder: "Describe how you determine whether this process is appropriate for a given dispute..."
required: true
- id: non_participation
title: "Non-participation handling"
description: "Handling non-participation in the process"
stageId: assessment
order: 4
fields:
- id: nonParticipationText
type: text
label: "What happens when someone fails to participate?"
placeholder: "Describe procedures for handling situations where someone refuses to participate..."
required: true
- id: process_change
title: "Process adaptation"
description: "Adapting the process when necessary"
stageId: assessment
order: 5
fields:
- id: processChangeText
type: text
label: "What if the process needs to be changed?"
placeholder: "Describe how the process can be adapted if it's not working effectively..."
required: true

View File

@@ -1,23 +0,0 @@
- id: reporting
title: "Reporting"
description: "Methods for reporting conflicts or disputes"
stageId: become_aware
order: 1
fields:
- id: reportingText
type: text
label: "How are conflicts or disputes reported?"
placeholder: "Describe the mechanisms for reporting conflicts..."
required: true
- id: monitoring
title: "Monitoring"
description: "Proactive monitoring for potential conflicts"
stageId: become_aware
order: 2
fields:
- id: monitoringText
type: text
label: "How does your community monitor for potential conflicts?"
placeholder: "Describe approaches to monitoring for potential conflicts..."
required: true

View File

@@ -1,11 +0,0 @@
- id: delegation_options
title: "Alternative processes"
description: "Alternative processes for disputes that cannot be handled by this process"
stageId: assessment
order: 6
fields:
- id: delegationOptionsText
type: text
label: "Where can the dispute be delegated if this process is inadequate?"
placeholder: "Describe alternative processes for disputes that cannot be handled internally..."
required: true

View File

@@ -1,35 +0,0 @@
- id: deliberation_process
title: "Deliberation format"
description: "Methods for deliberation during the dispute process"
stageId: deliberation
order: 1
fields:
- id: deliberationProcessText
type: text
label: "How do participants deliberate about the dispute?"
placeholder: "Describe the format and structure of deliberations..."
required: true
- id: additional_voices
title: "Additional perspectives"
description: "Including additional perspectives in the deliberation"
stageId: deliberation
order: 2
fields:
- id: additionalVoicesText
type: text
label: "Who, beyond the main participants, can be heard?"
placeholder: "Describe whose voices are included in deliberations beyond the main parties..."
required: true
- id: deliberation_conclusion
title: "Conclusion criteria"
description: "Criteria for concluding the deliberation phase"
stageId: deliberation
order: 3
fields:
- id: deliberationConclusionText
type: text
label: "When is the deliberation over?"
placeholder: "Describe how you determine when deliberation is complete..."
required: true

View File

@@ -1,23 +0,0 @@
- id: filing
title: Filing a Complaint
description: Process for submitting a dispute
stageId: initiation
order: 1
fields:
- id: filingProcess
type: text
label: Filing Process
placeholder: Describe how disputes are submitted...
required: true
- id: notification
title: Notification Process
description: How parties are informed of the dispute
stageId: initiation
order: 2
fields:
- id: notificationMethod
type: text
label: Notification Method
placeholder: Describe how involved parties are notified...
required: true

View File

@@ -1,83 +0,0 @@
- id: process_start
title: "Process initiation"
description: "The mechanism for initiating the dispute process"
stageId: intake
order: 1
fields:
- id: processStartText
type: text
label: "How does the process begin?"
placeholder: "Describe how disputes are initiated in your community..."
required: true
- id: rules_access
title: "Rules accessibility"
description: "Location and accessibility of community rules and guidelines"
stageId: intake
order: 2
fields:
- id: rulesAccessText
type: text
label: "Where does the community keep its rules?"
placeholder: "Describe where community rules are documented and how they can be accessed..."
required: true
- id: information_access
title: "Information sharing"
description: "Transparency and confidentiality policies"
stageId: intake
order: 3
fields:
- id: informationAccessText
type: text
label: "Who has access to information about the process?"
placeholder: "Describe who can access information about ongoing dispute processes..."
required: true
- id: participant_inclusion
title: "Participant notification"
description: "Methods for notifying and including relevant parties"
stageId: intake
order: 4
fields:
- id: participantInclusionText
type: text
label: "How are other participants brought into the process?"
placeholder: "Describe how relevant parties are notified and included in the process..."
required: true
- id: participation_requirement
title: "Participation requirements"
description: "Expectations regarding participation"
stageId: intake
order: 5
fields:
- id: participationRequirementText
type: text
label: "Is participation required or voluntary?"
placeholder: "Describe whether participation is mandatory or optional for involved parties..."
required: true
- id: participation_commitments
title: "Participant commitments"
description: "Expectations of participants in the process"
stageId: intake
order: 6
fields:
- id: participationCommitmentsText
type: text
label: "What commitments does participation involve?"
placeholder: "Describe what participants are committing to when they engage in the process..."
required: true
- id: context
title: "Background resources"
description: "Background information, external knowledge sources, and relevant references"
stageId: intake
order: 7
fields:
- id: contextText
type: text
label: "What additional context should participants know?"
placeholder: "Provide additional context such as links to external knowledge sources, background information, or other relevant references..."
required: false

View File

@@ -1,23 +0,0 @@
- id: principles
title: "Guiding principles"
description: "Core values that guide the dispute resolution process"
stageId: preparation
order: 1
fields:
- id: principlesText
type: text
label: Principles
placeholder: List the guiding principles for your dispute resolution process...
required: true
- id: participants
title: "Participants"
description: "Roles and responsibilities in the dispute resolution process"
stageId: preparation
order: 2
fields:
- id: participantsRoles
type: text
label: Roles and Responsibilities
placeholder: Define the roles involved in your dispute resolution process...
required: true

View File

@@ -1,35 +0,0 @@
- id: values
title: "Values"
description: "Core values that guide the dispute resolution process"
stageId: prepare
order: 1
fields:
- id: valuesText
type: text
label: "What values guide your dispute resolution process?"
placeholder: "List the values that inform your approach to conflict..."
required: true
- id: agreements
title: "Agreements"
description: "Agreements about how conflicts will be handled"
stageId: prepare
order: 2
fields:
- id: agreementsText
type: text
label: "What agreements do community members make about handling conflicts?"
placeholder: "Describe the agreements community members make about how conflicts will be handled..."
required: true
- id: skills
title: "Skills"
description: "Skills needed for handling disputes effectively"
stageId: prepare
order: 3
fields:
- id: skillsText
type: text
label: "What skills do community members need for handling disputes?"
placeholder: "Describe the skills that community members should develop..."
required: true

View File

@@ -1,35 +0,0 @@
- id: community_values
title: "Community values"
description: "Core values that guide the dispute resolution process"
stageId: process
order: 1
fields:
- id: communityValuesText
type: text
label: "What values does the community hold in disputes?"
placeholder: "Describe the core values that guide your community's approach to conflicts..."
required: true
- id: facilitation
title: "Facilitation approach"
description: "Methods of facilitation during the dispute process"
stageId: process
order: 2
fields:
- id: facilitationText
type: text
label: "How is the process facilitated?"
placeholder: "Describe who facilitates the process and how they are selected/trained..."
required: true
- id: ground_rules
title: "Ground rules"
description: "Basic rules of conduct during the dispute process"
stageId: process
order: 3
fields:
- id: groundRulesText
type: text
label: "What are the ground-rules of the process?"
placeholder: "Describe the rules of engagement that all participants must follow..."
required: true

View File

@@ -1,23 +0,0 @@
- id: resolution_process
title: "Resolution approach"
description: "Methods for reaching a resolution"
stageId: resolution
order: 1
fields:
- id: resolutionProcessText
type: text
label: "How does resolution of the dispute occur?"
placeholder: "Describe the process by which disputes are resolved..."
required: true
- id: resolution_failure
title: "Handling deadlocks"
description: "Handling situations where resolution is not achieved"
stageId: resolution
order: 2
fields:
- id: resolutionFailureText
type: text
label: "What if a resolution cannot be reached?"
placeholder: "Describe what happens when parties cannot come to a resolution..."
required: true

View File

@@ -1,29 +0,0 @@
- id: intake
title: "Intake"
description: "How disputes enter the process"
order: 1
- id: process
title: "Process"
description: "How the dispute resolution operates"
order: 2
- id: assessment
title: "Assessment"
description: "Evaluating the state of the dispute"
order: 3
- id: deliberation
title: "Deliberation"
description: "Discussing the dispute"
order: 4
- id: resolution
title: "Resolution"
description: "Determining outcomes for the dispute"
order: 5
- id: appeal
title: "Appeal"
description: "Process for reconsidering dispute decisions"
order: 6

View File

@@ -1,23 +0,0 @@
- id: appeal_criteria
title: "Appeal grounds"
description: "Standards for allowing an appeal of a resolution"
stageId: appeal
order: 1
fields:
- id: appealCriteriaText
type: text
label: "What are the criteria for a permissible appeal?"
placeholder: "Describe what circumstances justify an appeal of a resolution..."
required: true
- id: appeal_process
title: "Appeal procedure"
description: "Process for handling appeals"
stageId: appeal
order: 2
fields:
- id: appealProcessText
type: text
label: "What happens when an appeal occurs?"
placeholder: "Describe the process that follows when an appeal is initiated..."
required: true

View File

@@ -1,59 +0,0 @@
- id: dispute_assessment
title: "Dispute evaluation"
description: "Methods for evaluating the current status of a dispute"
stageId: assessment
order: 1
fields:
- id: disputeAssessmentText
type: text
label: "How is the state of the dispute assessed?"
placeholder: "Describe methods used to evaluate the current status of a dispute..."
required: true
- id: values_adherence
title: "Values alignment"
description: "Evaluating whether the process is aligned with community values"
stageId: assessment
order: 2
fields:
- id: valuesAdherenceText
type: text
label: "How do you ensure community values are being followed?"
placeholder: "Describe how you evaluate whether the process adheres to community values..."
required: true
- id: jurisdiction
title: "Jurisdiction determination"
description: "Determining whether this is the appropriate forum for the dispute"
stageId: assessment
order: 3
fields:
- id: jurisdictionText
type: text
label: "How do you determine if a dispute falls within this process's jurisdiction?"
placeholder: "Describe how you determine whether this process is appropriate for a given dispute..."
required: true
- id: non_participation
title: "Non-participation handling"
description: "Handling non-participation in the process"
stageId: assessment
order: 4
fields:
- id: nonParticipationText
type: text
label: "What happens when someone fails to participate?"
placeholder: "Describe procedures for handling situations where someone refuses to participate..."
required: true
- id: process_change
title: "Process adaptation"
description: "Adapting the process when necessary"
stageId: assessment
order: 5
fields:
- id: processChangeText
type: text
label: "What if the process needs to be changed?"
placeholder: "Describe how the process can be adapted if it's not working effectively..."
required: true

View File

@@ -1,23 +0,0 @@
- id: reporting
title: "Reporting"
description: "Methods for reporting conflicts or disputes"
stageId: become_aware
order: 1
fields:
- id: reportingText
type: text
label: "How are conflicts or disputes reported?"
placeholder: "Describe the mechanisms for reporting conflicts..."
required: true
- id: monitoring
title: "Monitoring"
description: "Proactive monitoring for potential conflicts"
stageId: become_aware
order: 2
fields:
- id: monitoringText
type: text
label: "How does your community monitor for potential conflicts?"
placeholder: "Describe approaches to monitoring for potential conflicts..."
required: true

View File

@@ -1,11 +0,0 @@
- id: delegation_options
title: "Alternative processes"
description: "Alternative processes for disputes that cannot be handled by this process"
stageId: assessment
order: 6
fields:
- id: delegationOptionsText
type: text
label: "Where can the dispute be delegated if this process is inadequate?"
placeholder: "Describe alternative processes for disputes that cannot be handled internally..."
required: true

View File

@@ -1,35 +0,0 @@
- id: deliberation_process
title: "Deliberation format"
description: "Methods for deliberation during the dispute process"
stageId: deliberation
order: 1
fields:
- id: deliberationProcessText
type: text
label: "How do participants deliberate about the dispute?"
placeholder: "Describe the format and structure of deliberations..."
required: true
- id: additional_voices
title: "Additional perspectives"
description: "Including additional perspectives in the deliberation"
stageId: deliberation
order: 2
fields:
- id: additionalVoicesText
type: text
label: "Who, beyond the main participants, can be heard?"
placeholder: "Describe whose voices are included in deliberations beyond the main parties..."
required: true
- id: deliberation_conclusion
title: "Conclusion criteria"
description: "Criteria for concluding the deliberation phase"
stageId: deliberation
order: 3
fields:
- id: deliberationConclusionText
type: text
label: "When is the deliberation over?"
placeholder: "Describe how you determine when deliberation is complete..."
required: true

View File

@@ -1,23 +0,0 @@
- id: filing
title: Filing a Complaint
description: Process for submitting a dispute
stageId: initiation
order: 1
fields:
- id: filingProcess
type: text
label: Filing Process
placeholder: Describe how disputes are submitted...
required: true
- id: notification
title: Notification Process
description: How parties are informed of the dispute
stageId: initiation
order: 2
fields:
- id: notificationMethod
type: text
label: Notification Method
placeholder: Describe how involved parties are notified...
required: true

View File

@@ -1,83 +0,0 @@
- id: process_start
title: "Process initiation"
description: "The mechanism for initiating the dispute process"
stageId: intake
order: 1
fields:
- id: processStartText
type: text
label: "How does the process begin?"
placeholder: "Describe how disputes are initiated in your community..."
required: true
- id: rules_access
title: "Rules accessibility"
description: "Location and accessibility of community rules and guidelines"
stageId: intake
order: 2
fields:
- id: rulesAccessText
type: text
label: "Where does the community keep its rules?"
placeholder: "Describe where community rules are documented and how they can be accessed..."
required: true
- id: information_access
title: "Information sharing"
description: "Transparency and confidentiality policies"
stageId: intake
order: 3
fields:
- id: informationAccessText
type: text
label: "Who has access to information about the process?"
placeholder: "Describe who can access information about ongoing dispute processes..."
required: true
- id: participant_inclusion
title: "Participant notification"
description: "Methods for notifying and including relevant parties"
stageId: intake
order: 4
fields:
- id: participantInclusionText
type: text
label: "How are other participants brought into the process?"
placeholder: "Describe how relevant parties are notified and included in the process..."
required: true
- id: participation_requirement
title: "Participation requirements"
description: "Expectations regarding participation"
stageId: intake
order: 5
fields:
- id: participationRequirementText
type: text
label: "Is participation required or voluntary?"
placeholder: "Describe whether participation is mandatory or optional for involved parties..."
required: true
- id: participation_commitments
title: "Participant commitments"
description: "Expectations of participants in the process"
stageId: intake
order: 6
fields:
- id: participationCommitmentsText
type: text
label: "What commitments does participation involve?"
placeholder: "Describe what participants are committing to when they engage in the process..."
required: true
- id: context
title: "Background resources"
description: "Background information, external knowledge sources, and relevant references"
stageId: intake
order: 7
fields:
- id: contextText
type: text
label: "What additional context should participants know?"
placeholder: "Provide additional context such as links to external knowledge sources, background information, or other relevant references..."
required: false

View File

@@ -1,23 +0,0 @@
- id: principles
title: "Guiding principles"
description: "Core values that guide the dispute resolution process"
stageId: preparation
order: 1
fields:
- id: principlesText
type: text
label: Principles
placeholder: List the guiding principles for your dispute resolution process...
required: true
- id: participants
title: "Participants"
description: "Roles and responsibilities in the dispute resolution process"
stageId: preparation
order: 2
fields:
- id: participantsRoles
type: text
label: Roles and Responsibilities
placeholder: Define the roles involved in your dispute resolution process...
required: true

View File

@@ -1,35 +0,0 @@
- id: values
title: "Values"
description: "Core values that guide the dispute resolution process"
stageId: prepare
order: 1
fields:
- id: valuesText
type: text
label: "What values guide your dispute resolution process?"
placeholder: "List the values that inform your approach to conflict..."
required: true
- id: agreements
title: "Agreements"
description: "Agreements about how conflicts will be handled"
stageId: prepare
order: 2
fields:
- id: agreementsText
type: text
label: "What agreements do community members make about handling conflicts?"
placeholder: "Describe the agreements community members make about how conflicts will be handled..."
required: true
- id: skills
title: "Skills"
description: "Skills needed for handling disputes effectively"
stageId: prepare
order: 3
fields:
- id: skillsText
type: text
label: "What skills do community members need for handling disputes?"
placeholder: "Describe the skills that community members should develop..."
required: true

View File

@@ -1,35 +0,0 @@
- id: community_values
title: "Community values"
description: "Core values that guide the dispute resolution process"
stageId: process
order: 1
fields:
- id: communityValuesText
type: text
label: "What values does the community hold in disputes?"
placeholder: "Describe the core values that guide your community's approach to conflicts..."
required: true
- id: facilitation
title: "Facilitation approach"
description: "Methods of facilitation during the dispute process"
stageId: process
order: 2
fields:
- id: facilitationText
type: text
label: "How is the process facilitated?"
placeholder: "Describe who facilitates the process and how they are selected/trained..."
required: true
- id: ground_rules
title: "Ground rules"
description: "Basic rules of conduct during the dispute process"
stageId: process
order: 3
fields:
- id: groundRulesText
type: text
label: "What are the ground-rules of the process?"
placeholder: "Describe the rules of engagement that all participants must follow..."
required: true

View File

@@ -1,23 +0,0 @@
- id: resolution_process
title: "Resolution approach"
description: "Methods for reaching a resolution"
stageId: resolution
order: 1
fields:
- id: resolutionProcessText
type: text
label: "How does resolution of the dispute occur?"
placeholder: "Describe the process by which disputes are resolved..."
required: true
- id: resolution_failure
title: "Handling deadlocks"
description: "Handling situations where resolution is not achieved"
stageId: resolution
order: 2
fields:
- id: resolutionFailureText
type: text
label: "What if a resolution cannot be reached?"
placeholder: "Describe what happens when parties cannot come to a resolution..."
required: true

View File

@@ -1,7 +0,0 @@
[[test]]
id = "test1"
title = "Test 1"
[[test]]
id = "test2"
title = "Test 2"

View File

@@ -1,35 +0,0 @@
[[stages]]
id = "intake"
title = "Intake"
description = "How disputes enter the process"
order = 1
[[stages]]
id = "process"
title = "Process"
description = "How the dispute resolution operates"
order = 2
[[stages]]
id = "assessment"
title = "Assessment"
description = "Evaluating the state of the dispute"
order = 3
[[stages]]
id = "deliberation"
title = "Deliberation"
description = "Discussing the dispute"
order = 4
[[stages]]
id = "resolution"
title = "Resolution"
description = "Determining outcomes for the dispute"
order = 5
[[stages]]
id = "appeal"
title = "Appeal"
description = "Process for reconsidering dispute decisions"
order = 6

View File

@@ -1,48 +0,0 @@
[
{
"id": "intake",
"title": "Intake",
"description": "How disputes enter the process",
"order": 1,
"components": [
{
"id": "process_start",
"title": "Process initiation",
"description": "The mechanism for initiating the dispute process",
"order": 1,
"fields": [
{
"id": "processStartText",
"type": "text",
"label": "How does the process begin?",
"placeholder": "Describe how disputes are initiated in your community...",
"required": true
}
]
}
]
},
{
"id": "process",
"title": "Process",
"description": "How the dispute resolution operates",
"order": 2,
"components": [
{
"id": "facilitation",
"title": "Facilitation approach",
"description": "Methods of facilitation during the dispute process",
"order": 2,
"fields": [
{
"id": "facilitationText",
"type": "text",
"label": "How is the process facilitated?",
"placeholder": "Describe who facilitates the process...",
"required": true
}
]
}
]
}
]

View File

@@ -1,113 +0,0 @@
[[stages]]
id = "intake"
title = "Intake"
description = "How disputes enter the process"
order = 1
components = [
{ id = "process_start", title = "Process initiation", description = "The mechanism for initiating the dispute process", order = 1, fields = [
{ id = "processStartText", type = "text", label = "How does the process begin?", placeholder = "Describe how disputes are initiated in your community...", required = true }
] },
{ id = "rules_access", title = "Rules accessibility", description = "Location and accessibility of community rules and guidelines", order = 2, fields = [
{ id = "rulesAccessText", type = "text", label = "Where does the community keep its rules?", placeholder = "Describe where community rules are documented and how they can be accessed...", required = true }
] },
{ id = "information_access", title = "Information sharing", description = "Transparency and confidentiality policies", order = 3, fields = [
{ id = "informationAccessText", type = "text", label = "Who has access to information about the process?", placeholder = "Describe who can access information about ongoing dispute processes...", required = true }
] },
{ id = "participant_inclusion", title = "Participant notification", description = "Methods for notifying and including relevant parties", order = 4, fields = [
{ id = "participantInclusionText", type = "text", label = "How are other participants brought into the process?", placeholder = "Describe how relevant parties are notified and included in the process...", required = true }
] },
{ id = "participation_requirement", title = "Participation requirements", description = "Expectations regarding participation", order = 5, fields = [
{ id = "participationRequirementText", type = "text", label = "Is participation required or voluntary?", placeholder = "Describe whether participation is mandatory or optional for involved parties...", required = true }
] },
{ id = "participation_commitments", title = "Participant commitments", description = "Expectations of participants in the process", order = 6, fields = [
{ id = "participationCommitmentsText", type = "text", label = "What commitments does participation involve?", placeholder = "Describe what participants are committing to when they engage in the process...", required = true }
] },
{ id = "context", title = "Background resources", description = "Background information, external knowledge sources, and relevant references", order = 7, fields = [
{ id = "contextText", type = "text", label = "What additional context should participants know?", placeholder = "Provide additional context such as links to external knowledge sources, background information, or other relevant references...", required = false }
] }
]
[[stages]]
id = "process"
title = "Process"
description = "How the dispute resolution operates"
order = 2
components = [
{ id = "community_values", title = "Community values", description = "Core values that guide the dispute resolution process", order = 1, fields = [
{ id = "communityValuesText", type = "text", label = "What values does the community hold in disputes?", placeholder = "Describe the core values that guide your community's approach to conflicts...", required = true }
] },
{ id = "facilitation", title = "Facilitation approach", description = "Methods of facilitation during the dispute process", order = 2, fields = [
{ id = "facilitationText", type = "text", label = "How is the process facilitated?", placeholder = "Describe who facilitates the process and how they are selected/trained...", required = true }
] },
{ id = "ground_rules", title = "Ground rules", description = "Basic rules of conduct during the dispute process", order = 3, fields = [
{ id = "groundRulesText", type = "text", label = "What are the ground-rules of the process?", placeholder = "Describe the rules of engagement that all participants must follow...", required = true }
] }
]
[[stages]]
id = "assessment"
title = "Assessment"
description = "Evaluating the state of the dispute"
order = 3
components = [
{ id = "dispute_assessment", title = "Dispute evaluation", description = "Methods for evaluating the current status of a dispute", order = 1, fields = [
{ id = "disputeAssessmentText", type = "text", label = "How is the state of the dispute assessed?", placeholder = "Describe methods used to evaluate the current status of a dispute...", required = true }
] },
{ id = "values_adherence", title = "Values alignment", description = "Evaluating whether the process is aligned with community values", order = 2, fields = [
{ id = "valuesAdherenceText", type = "text", label = "How do you ensure community values are being followed?", placeholder = "Describe how you evaluate whether the process adheres to community values...", required = true }
] },
{ id = "jurisdiction", title = "Jurisdiction determination", description = "Determining whether this is the appropriate forum for the dispute", order = 3, fields = [
{ id = "jurisdictionText", type = "text", label = "How do you determine if a dispute falls within this process's jurisdiction?", placeholder = "Describe how you determine whether this process is appropriate for a given dispute...", required = true }
] },
{ id = "non_participation", title = "Non-participation handling", description = "Handling non-participation in the process", order = 4, fields = [
{ id = "nonParticipationText", type = "text", label = "What happens when someone fails to participate?", placeholder = "Describe procedures for handling situations where someone refuses to participate...", required = true }
] },
{ id = "process_change", title = "Process adaptation", description = "Adapting the process when necessary", order = 5, fields = [
{ id = "processChangeText", type = "text", label = "What if the process needs to be changed?", placeholder = "Describe how the process can be adapted if it's not working effectively...", required = true }
] }
]
[[stages]]
id = "deliberation"
title = "Deliberation"
description = "Discussing the dispute"
order = 4
components = [
{ id = "deliberation_process", title = "Deliberation format", description = "Methods for deliberation during the dispute process", order = 1, fields = [
{ id = "deliberationProcessText", type = "text", label = "How do participants deliberate about the dispute?", placeholder = "Describe the format and structure of deliberations...", required = true }
] },
{ id = "additional_voices", title = "Additional perspectives", description = "Including additional perspectives in the deliberation", order = 2, fields = [
{ id = "additionalVoicesText", type = "text", label = "Who, beyond the main participants, can be heard?", placeholder = "Describe whose voices are included in deliberations beyond the main parties...", required = true }
] },
{ id = "deliberation_conclusion", title = "Conclusion criteria", description = "Criteria for concluding the deliberation phase", order = 3, fields = [
{ id = "deliberationConclusionText", type = "text", label = "When is the deliberation over?", placeholder = "Describe how you determine when deliberation is complete...", required = true }
] }
]
[[stages]]
id = "resolution"
title = "Resolution"
description = "Determining outcomes for the dispute"
order = 5
components = [
{ id = "resolution_process", title = "Resolution approach", description = "Methods for reaching a resolution", order = 1, fields = [
{ id = "resolutionProcessText", type = "text", label = "How does resolution of the dispute occur?", placeholder = "Describe the process by which disputes are resolved...", required = true }
] },
{ id = "resolution_failure", title = "Handling deadlocks", description = "Handling situations where resolution is not achieved", order = 2, fields = [
{ id = "resolutionFailureText", type = "text", label = "What if a resolution cannot be reached?", placeholder = "Describe what happens when parties cannot come to a resolution...", required = true }
] }
]
[[stages]]
id = "appeal"
title = "Appeal"
description = "Process for reconsidering dispute decisions"
order = 6
components = [
{ id = "appeal_criteria", title = "Appeal grounds", description = "Standards for allowing an appeal of a resolution", order = 1, fields = [
{ id = "appealCriteriaText", type = "text", label = "What are the criteria for a permissible appeal?", placeholder = "Describe what circumstances justify an appeal of a resolution...", required = true }
] },
{ id = "appeal_process", title = "Appeal procedure", description = "Process for handling appeals", order = 2, fields = [
{ id = "appealProcessText", type = "text", label = "What happens when an appeal occurs?", placeholder = "Describe the process that follows when an appeal is initiated...", required = true }
] }
]

View File

@@ -1,272 +0,0 @@
stages:
- id: intake
title: "Intake"
description: "How disputes enter the process"
order: 1
components:
- id: process_start
title: "Process initiation"
description: "The mechanism for initiating the dispute process"
order: 1
fields:
- id: processStartText
type: text
label: "How does the process begin?"
placeholder: "Describe how disputes are initiated in your community..."
required: true
- id: rules_access
title: "Rules accessibility"
description: "Location and accessibility of community rules and guidelines"
order: 2
fields:
- id: rulesAccessText
type: text
label: "Where does the community keep its rules?"
placeholder: "Describe where community rules are documented and how they can be accessed..."
required: true
- id: information_access
title: "Information sharing"
description: "Transparency and confidentiality policies"
order: 3
fields:
- id: informationAccessText
type: text
label: "Who has access to information about the process?"
placeholder: "Describe who can access information about ongoing dispute processes..."
required: true
- id: participant_inclusion
title: "Participant notification"
description: "Methods for notifying and including relevant parties"
order: 4
fields:
- id: participantInclusionText
type: text
label: "How are other participants brought into the process?"
placeholder: "Describe how relevant parties are notified and included in the process..."
required: true
- id: participation_requirement
title: "Participation requirements"
description: "Expectations regarding participation"
order: 5
fields:
- id: participationRequirementText
type: text
label: "Is participation required or voluntary?"
placeholder: "Describe whether participation is mandatory or optional for involved parties..."
required: true
- id: participation_commitments
title: "Participant commitments"
description: "Expectations of participants in the process"
order: 6
fields:
- id: participationCommitmentsText
type: text
label: "What commitments does participation involve?"
placeholder: "Describe what participants are committing to when they engage in the process..."
required: true
- id: context
title: "Background resources"
description: "Background information, external knowledge sources, and relevant references"
order: 7
fields:
- id: contextText
type: text
label: "What additional context should participants know?"
placeholder: "Provide additional context such as links to external knowledge sources, background information, or other relevant references..."
required: false
- id: process
title: "Process"
description: "How the dispute resolution operates"
order: 2
components:
- id: community_values
title: "Community values"
description: "Core values that guide the dispute resolution process"
order: 1
fields:
- id: communityValuesText
type: text
label: "What values does the community hold in disputes?"
placeholder: "Describe the core values that guide your community's approach to conflicts..."
required: true
- id: facilitation
title: "Facilitation approach"
description: "Methods of facilitation during the dispute process"
order: 2
fields:
- id: facilitationText
type: text
label: "How is the process facilitated?"
placeholder: "Describe who facilitates the process and how they are selected/trained..."
required: true
- id: ground_rules
title: "Ground rules"
description: "Basic rules of conduct during the dispute process"
order: 3
fields:
- id: groundRulesText
type: text
label: "What are the ground-rules of the process?"
placeholder: "Describe the rules of engagement that all participants must follow..."
required: true
- id: assessment
title: "Assessment"
description: "Evaluating the state of the dispute"
order: 3
components:
- id: dispute_assessment
title: "Dispute evaluation"
description: "Methods for evaluating the current status of a dispute"
order: 1
fields:
- id: disputeAssessmentText
type: text
label: "How is the state of the dispute assessed?"
placeholder: "Describe methods used to evaluate the current status of a dispute..."
required: true
- id: values_adherence
title: "Values alignment"
description: "Evaluating whether the process is aligned with community values"
order: 2
fields:
- id: valuesAdherenceText
type: text
label: "How do you ensure community values are being followed?"
placeholder: "Describe how you evaluate whether the process adheres to community values..."
required: true
- id: jurisdiction
title: "Jurisdiction determination"
description: "Determining whether this is the appropriate forum for the dispute"
order: 3
fields:
- id: jurisdictionText
type: text
label: "How do you determine if a dispute falls within this process's jurisdiction?"
placeholder: "Describe how you determine whether this process is appropriate for a given dispute..."
required: true
- id: non_participation
title: "Non-participation handling"
description: "Handling non-participation in the process"
order: 4
fields:
- id: nonParticipationText
type: text
label: "What happens when someone fails to participate?"
placeholder: "Describe procedures for handling situations where someone refuses to participate..."
required: true
- id: process_change
title: "Process adaptation"
description: "Adapting the process when necessary"
order: 5
fields:
- id: processChangeText
type: text
label: "What if the process needs to be changed?"
placeholder: "Describe how the process can be adapted if it's not working effectively..."
required: true
- id: deliberation
title: "Deliberation"
description: "Discussing the dispute"
order: 4
components:
- id: deliberation_process
title: "Deliberation format"
description: "Methods for deliberation during the dispute process"
order: 1
fields:
- id: deliberationProcessText
type: text
label: "How do participants deliberate about the dispute?"
placeholder: "Describe the format and structure of deliberations..."
required: true
- id: additional_voices
title: "Additional perspectives"
description: "Including additional perspectives in the deliberation"
order: 2
fields:
- id: additionalVoicesText
type: text
label: "Who, beyond the main participants, can be heard?"
placeholder: "Describe whose voices are included in deliberations beyond the main parties..."
required: true
- id: deliberation_conclusion
title: "Conclusion criteria"
description: "Criteria for concluding the deliberation phase"
order: 3
fields:
- id: deliberationConclusionText
type: text
label: "When is the deliberation over?"
placeholder: "Describe how you determine when deliberation is complete..."
required: true
- id: resolution
title: "Resolution"
description: "Determining outcomes for the dispute"
order: 5
components:
- id: resolution_process
title: "Resolution approach"
description: "Methods for reaching a resolution"
order: 1
fields:
- id: resolutionProcessText
type: text
label: "How does resolution of the dispute occur?"
placeholder: "Describe the process by which disputes are resolved..."
required: true
- id: resolution_failure
title: "Handling deadlocks"
description: "Handling situations where resolution is not achieved"
order: 2
fields:
- id: resolutionFailureText
type: text
label: "What if a resolution cannot be reached?"
placeholder: "Describe what happens when parties cannot come to a resolution..."
required: true
- id: appeal
title: "Appeal"
description: "Process for reconsidering dispute decisions"
order: 6
components:
- id: appeal_criteria
title: "Appeal grounds"
description: "Standards for allowing an appeal of a resolution"
order: 1
fields:
- id: appealCriteriaText
type: text
label: "What are the criteria for a permissible appeal?"
placeholder: "Describe what circumstances justify an appeal of a resolution..."
required: true
- id: appeal_process
title: "Appeal procedure"
description: "Process for handling appeals"
order: 2
fields:
- id: appealProcessText
type: text
label: "What happens when an appeal occurs?"
placeholder: "Describe the process that follows when an appeal is initiated..."
required: true

View File

@@ -1,31 +0,0 @@
- id: "intake"
title: "Intake"
description: "How disputes enter the process"
order: 1
components:
- id: "process_start"
title: "Process initiation"
description: "The mechanism for initiating the dispute process"
order: 1
fields:
- id: "processStartText"
type: "text"
label: "How does the process begin?"
placeholder: "Describe how disputes are initiated in your community..."
required: true
- id: "process"
title: "Process"
description: "How the dispute resolution operates"
order: 2
components:
- id: "facilitation"
title: "Facilitation approach"
description: "Methods of facilitation during the dispute process"
order: 2
fields:
- id: "facilitationText"
type: "text"
label: "How is the process facilitated?"
placeholder: "Describe who facilitates the process and how they are selected/trained..."
required: true

View File

@@ -0,0 +1,44 @@
id: "chosen-facilitator"
title: "Chosen Facilitator"
description: "A process where participants mutually select a facilitator to help guide their dispute resolution"
data:
stages:
basics:
community_rules:
communityRulesText: "Community rules and the dispute resolution protocol are available on the community website and in a physical binder kept in the community center. New members receive an orientation to these guidelines when they join."
shared_values:
sharedValuesText: "Our community values open dialogue, mutual respect, and collaborative problem-solving. We believe that most conflicts can be resolved through good faith communication with appropriate support. We prioritize repairing relationships and finding solutions that address underlying needs rather than simply ending disputes."
information_access:
informationAccessText: "Information is shared on a need-to-know basis. The Community Relations Committee keeps records of disputes, and the parties involved have access to all documentation related to their case. Annual anonymous statistics about disputes are shared with the community."
process:
process_start:
processStartText: "The process begins when a community member submits a dispute form to the Community Relations Committee. The form includes details about the issue, parties involved, and previous attempts at resolution. The committee acknowledges receipt within 24 hours. Within 48 hours of receiving a dispute form, the committee contacts all named parties and provides them with a copy of the form and information about the process."
facilitation:
facilitationText: "The process is guided by a facilitator chosen jointly by all participants from a list of community members who have expressed willingness to serve in this role. The facilitator has basic training in conflict resolution but is not a professional mediator. They help guide the conversation, ensure all voices are heard, and maintain focus on resolution. Meetings take place in a neutral community space, typically a designated meeting room in the community center."
ground_rules:
groundRulesText: "The facilitator establishes ground rules at the beginning of the first session, such as: 1) One person speaks at a time, 2) Focus on issues rather than personal attacks, 3) Use respectful language, 4) Actively listen to understand, 5) Take breaks when needed, and 6) Maintain confidentiality. Participants commit to: engaging honestly and respectfully, selecting a mutually acceptable facilitator, attending all scheduled sessions, respecting confidentiality, working toward resolution in good faith, and abiding by any agreements reached."
assessment:
dispute_assessment:
disputeAssessmentText: "In the first session, the facilitator helps participants create a shared understanding of the situation by: 1) Having each person share their perspective without interruption, 2) Identifying areas of agreement and disagreement, 3) Clarifying facts versus interpretations, and 4) Establishing what resolution would look like. The facilitator helps assess whether the conflict is: a misunderstanding that can be clarified, a disagreement about resources or procedures, a values-based conflict, or a relationship conflict with a history of tension."
jurisdiction:
jurisdictionText: "The facilitator helps determine if the chosen facilitator process is appropriate for the dispute. If the issue involves serious safety concerns, legal violations, or requires specialized expertise, the facilitator will recommend delegation to a more appropriate resource."
non_participation:
nonParticipationText: "Participation is voluntary, though all community members have agreed as part of their membership that they will make a good faith effort to resolve conflicts through the community process before pursuing outside remedies. If someone refuses to participate, the committee may arrange for a mediator to speak with them individually to address concerns and encourage engagement."
deliberation:
deliberation_process:
deliberationProcessText: "Deliberation typically involves 1-3 sessions of 90-120 minutes each, scheduled about a week apart. This provides time for reflection between sessions. The facilitator sets a clear agenda for each session and manages time to ensure productive discussion. After initial perspectives are shared, the facilitator identifies information gaps and helps participants determine what additional information might be needed."
additional_voices:
additionalVoicesText: "The primary participants and the facilitator attend all sessions. With agreement from all parties, participants may bring one support person to sessions. Support people may speak when invited but primarily provide emotional support and perspective between sessions."
deliberation_conclusion:
deliberationConclusionText: "The facilitator leads a structured brainstorming session where all possible solutions are recorded without criticism. After brainstorming, the facilitator helps participants evaluate options based on previously identified needs and interests. They guide the discussion to focus on finding solutions that address the core concerns of all parties rather than positional bargaining. Deliberation concludes when participants have explored all viable solutions and are ready to make decisions."
resolution:
resolution_process:
resolutionProcessText: "Decisions are made by consensus of the participants, with the facilitator helping to test whether proposed solutions are acceptable to everyone. The facilitator may use techniques like fist-to-five voting to gauge levels of support for proposals. Typical outcomes include: mutual understanding and clarified expectations, specific action agreements with timelines, changes to procedures or resources, commitments to specific communication practices, relationship-rebuilding activities, or agreements about future conflict resolution."
resolution_failure:
resolutionFailureText: "If resolution cannot be reached through the facilitated process, the facilitator documents what has been attempted and areas of continuing disagreement. Delegation to a different process is appropriate when: 1) The facilitated process has been attempted without success, 2) The issue requires specialized expertise, 3) There are significant power imbalances that can't be addressed by a peer facilitator, 4) Safety concerns exist, or 5) The dispute has community-wide implications."
appeal:
appeal_criteria:
appealCriteriaText: "Appeals may be initiated if: 1) New information emerges that could significantly affect the agreement, 2) Circumstances change making the agreement unworkable, 3) There are persistent challenges implementing the agreement, or 4) One or more participants feel the process was unfair."
appeal_process:
appealProcessText: "To appeal, a participant submits a written request to the Community Relations Committee explaining why they believe the agreement needs reconsideration. The committee reviews the request and contacts all original participants to determine next steps. If an appeal proceeds, a new facilitator is selected from the community to provide fresh perspective. This facilitator reviews documentation from the original process and conducts a new series of facilitated sessions focusing on the specific issues raised in the appeal."

View File

@@ -0,0 +1,44 @@
id: "facilitation-council"
title: "Facilitation Council"
description: "A structured process with a trained council of facilitators who manage the dispute resolution process"
data:
stages:
basics:
community_rules:
communityRulesText: "Community rules, bylaws, and the detailed dispute resolution protocol are maintained in a searchable online database with version history. Physical copies are available in the community center library. The Facilitation Council conducts quarterly workshops to educate community members about the rules and processes."
shared_values:
sharedValuesText: "Our community dispute resolution process is guided by values of equity, transparency, and restorative justice. We believe in the wisdom of collective decision-making, the importance of diverse perspectives, and the healing potential of structured dialogue. We prioritize relationships while maintaining accountability and upholding community standards."
information_access:
informationAccessText: "Information access follows a tiered model: 1) The involved parties and council members have full access to case documentation, 2) Council administrators track anonymized case data for process improvement, 3) Quarterly reports with statistical information and lessons learned (without identifying details) are shared with the community."
process:
process_start:
processStartText: "The dispute resolution process begins when an individual submits a formal request using the council's intake form. This form is available online and in hard copy at the community office. The form requires details about the nature of the dispute, parties involved, and previous resolution attempts. A member of the Facilitation Council acknowledges receipt within 24 hours and assigns an intake coordinator. The intake coordinator contacts all named parties within 48 hours via email and phone."
facilitation:
facilitationText: "Disputes are facilitated by a panel of 2-3 council members who have completed a comprehensive training program in conflict resolution, mediation, and restorative practices. The panel always includes diversity of perspectives and backgrounds. One member serves as the lead facilitator, while others may focus on documentation, process management, or emotional support. The council operates according to established procedures with flexibility to adapt to specific needs of each case."
ground_rules:
groundRulesText: "The council establishes and enforces clear communication protocols: 1) A talking piece indicates who has the floor, 2) Structured speaking order ensures equal voice, 3) Time limits for presentations may be used, 4) Direct communication between parties is facilitated when productive, 5) Council members summarize and reframe statements to ensure understanding, 6) Caucus sessions (private meetings) are available when needed, and 7) Written communication supplements verbal discussion for complex topics. Participants commit to providing complete and truthful information, respecting confidentiality, attending all scheduled meetings, engaging respectfully, and implementing agreed-upon resolutions."
assessment:
dispute_assessment:
disputeAssessmentText: "The council conducts a structured assessment through: 1) Individual interviews with each party, 2) Review of written statements and evidence, 3) Consultation with relevant witnesses, 4) Consideration of applicable community agreements or policies, and 5) Discussion with the full council to identify the nature and scope of the dispute. The council uses a formal assessment framework to determine the history and duration of the conflict, the level of emotion and polarization between parties, whether communication between parties is still functional, and the underlying causes of the dispute."
jurisdiction:
jurisdictionText: "The council follows a jurisdictional assessment checklist to determine if the case is appropriate for their process. Cases involving serious legal violations, safety threats, or requiring specialized expertise beyond the council's capacity are referred to appropriate authorities. For complex cases, the council may establish jurisdiction over certain aspects while referring others. The assessment considers legal requirements, community capacity, and the nature of the dispute."
non_participation:
nonParticipationText: "Participation in the facilitation council process is required for active community members as specified in the community membership agreement. For non-members or in cases where mandatory participation would be inappropriate, the council works with willing participants and documents non-participation of others. If a party refuses to participate, the council may proceed with a modified process, making note of the limitations this creates."
deliberation:
deliberation_process:
deliberationProcessText: "The council uses a structured information gathering process: 1) Initial statements from all parties, 2) Clarifying questions from council members, 3) Testimony from relevant witnesses, 4) Review of documentary evidence, 5) Expert input if needed for technical matters, and 6) Community standard review when applicable. Information gathering follows a predetermined schedule with deadlines for submissions and specific session agendas."
additional_voices:
additionalVoicesText: "The process includes: 1) Primary parties to the dispute, 2) Council panel members, 3) Witnesses invited by either party or the council (for specific sessions only), 4) Support persons (one per participant, non-speaking unless invited), and 5) In cases affecting community standards, a community representative. For disputes involving allegations of harm, the council uses practices that prevent re-traumatization while ensuring fair process."
deliberation_conclusion:
deliberationConclusionText: "Discussion follows a structured format: 1) Review of brainstormed options, 2) Evaluation against previously identified needs and community values, 3) Consideration of implementation feasibility, 4) Discussion of modifications to promising options, 5) Council-facilitated negotiations on specific details, and 6) Caucus sessions when needed for private discussion. The council maintains focus on interests rather than positions and ensures balanced participation. The council uses a multi-stage deliberation format with most cases involving 3-5 sessions of 2-3 hours each over a 2-4 week period."
resolution:
resolution_process:
resolutionProcessText: "The council uses a tiered decision-making approach: 1) Facilitated consensus among parties is the preferred method, with the council helping parties reach mutually acceptable agreements, 2) If consensus cannot be reached on all issues after good faith efforts, parties may authorize the council to make recommendations on specific points, 3) In cases involving community standards or policies, the council may make binding decisions following established criteria. Resolution outcomes may include written agreements between parties with specific commitments, action plans with timelines, restorative agreements to address harm, resource allocation decisions, and clarification of policies or expectations."
resolution_failure:
resolutionFailureText: "If resolution is not achieved through the council process, several options are considered: 1) Referral to a specialized mediator or arbitrator with expertise in the specific dispute area, 2) Escalation to the community's governance body for policy-level resolution, 3) In cases involving legal dimensions, referral to appropriate legal resources, 4) Recommendation for separate processes to address different aspects of complex disputes, or 5) Implementation of interim measures to stabilize the situation while longer-term solutions are developed."
appeal:
appeal_criteria:
appealCriteriaText: "Appeals may be filed when: 1) New, significant evidence emerges that was not available during the original process, 2) There was a substantial procedural error that may have affected the outcome, 3) The agreement has proven unworkable despite good faith implementation efforts, or 4) There has been a significant change in circumstances that renders the agreement ineffective. Appeals must be filed within 30 days of discovering the grounds for appeal."
appeal_process:
appealProcessText: "The appeal process includes: 1) Submission of a formal appeal request specifying grounds for appeal and desired outcome, 2) Review by council members not involved in the original case to determine if appeal criteria are met, 3) Notification to all original parties, 4) If accepted, assignment of a new council panel, 5) Structured review of original documentation and new evidence, 6) Limited-scope hearings focused on appeal issues, 7) Decision rendered within 30 days of appeal acceptance."

View File

@@ -0,0 +1,44 @@
id: "jury-protocol"
title: "Community Jury"
description: "A process where a randomly selected jury of community members hears evidence and makes decisions on disputes"
data:
stages:
basics:
community_rules:
communityRulesText: "Community standards and jury procedures are publicly available through multiple channels: 1) A comprehensive online handbook with searchable content, 2) Print copies in the community center, 3) Audio recordings for accessibility, and 4) Regular community education sessions. New residents receive an orientation to these standards during their welcome process. The Jury Administrator is available to answer questions about procedures."
shared_values:
sharedValuesText: "Our community jury system is grounded in these core values: 1) Procedural fairness - ensuring consistent, transparent processes, 2) Collective wisdom - trusting in the reasoned judgment of peers, 3) Community ownership - placing decision-making authority within the community, 4) Balanced perspective - bringing diverse viewpoints to each case, 5) Reasoned judgment - basing decisions on evidence and community standards, and 6) Restorative outcomes - seeking decisions that repair harm and rebuild relationships."
information_access:
informationAccessText: "Information about specific cases follows tiered access protocols: 1) Case parties receive all documentation relevant to their case, 2) Jury members receive case materials with sensitive personal information redacted, 3) The wider community receives notification of cases accepted and decisions made without identifying details, 4) Case summaries with key learnings are published annually for community education. Records are maintained securely by the Jury Administrator."
process:
process_start:
processStartText: "The community jury process begins when a community member submits a case request form. This form includes details about the issue, parties involved, attempts at resolution so far, and desired outcome. The Jury Administrator reviews all submissions within 3 business days to determine if the case meets basic criteria for the jury process. If accepted, the case is assigned a number and scheduled for an initial hearing date."
facilitation:
facilitationText: "The dispute process is facilitated through a structured jury format: 1) A trained process facilitator guides the proceedings but does not participate in decision-making, 2) The process follows clear phases: opening statements, evidence presentation, questions, deliberation, and decision, 3) All parties have equal time to present their perspectives and evidence, 4) Jurors may ask clarifying questions through the facilitator, 5) The facilitator ensures adherence to community standards and procedural fairness, 6) Deliberations are conducted by jurors alone, with the facilitator available for procedural questions."
ground_rules:
groundRulesText: "Communication during jury proceedings follows formal protocols: 1) Opening and closing statements are uninterrupted and time-limited, 2) Evidence presentation follows a structured format with visual aids as needed, 3) Questions from jurors are submitted to the facilitator, who may rephrase for clarity, 4) Cross-examination is limited and focused on fact clarification rather than confrontation, 5) The facilitator moderates all exchanges to maintain respectful discourse, 6) Emotional expression is allowed but must remain appropriate to the setting. All participants in the jury process commit to: providing truthful information and evidence, adhering to scheduled deadlines and hearing dates, treating all participants with respect, and accepting the jury's decision as binding within community governance."
assessment:
dispute_assessment:
disputeAssessmentText: "The jury assesses each case through a structured framework: 1) Establishing agreed-upon facts versus disputed elements, 2) Identifying relevant community standards or agreements that apply, 3) Evaluating the credibility and completeness of evidence presented, 4) Considering context and mitigating circumstances, 5) Assessing impacts on individuals and the community, and 6) Determining responsibility based on the preponderance of evidence. The jury considers the stage and history of the conflict, including whether this is a first-time issue or recurring pattern, previous attempts at resolution, and the current relationship between the parties."
jurisdiction:
jurisdictionText: "The community jury has jurisdiction over: 1) Disputes between community members regarding shared resources or spaces, 2) Alleged violations of community agreements or standards, 3) Conflicts affecting community function or wellbeing, 4) Requests for clarification of policies or practices, and 5) Appeals of decisions made by community committees. The jury does not have jurisdiction over legal matters requiring formal court proceedings, situations presenting immediate safety risks, or disputes that have been explicitly excluded in the community charter."
non_participation:
nonParticipationText: "For community members, participation in the jury process is required as specified in the community agreement signed upon joining. For non-members or external entities, participation is voluntary. If a respondent declines to participate, the jury may still hear the case and reach a decision based on available information, but will note the limited nature of the proceedings. When a case is accepted, all named parties receive formal notification through both email and paper letter with a response form to be returned within 10 days."
deliberation:
deliberation_process:
deliberationProcessText: "Jury information gathering continues during deliberation: 1) Jurors identify information gaps that emerged during the hearing, 2) They may request clarification from parties through written questions, 3) They review all submitted evidence methodically, creating an evidence summary, 4) They consult community standards and precedents from previous similar cases, 5) If needed, they may request additional expert input on technical matters, and 6) They document key findings of fact that will form the basis for their decision."
additional_voices:
additionalVoicesText: "Jury proceedings involve the following participants: 1) The 5-7 community members selected as jurors through a structured random process, 2) The case parties (initiator and respondent), 3) A trained facilitator who guides the process, 4) Witnesses called by either party or the jury itself, 5) The Jury Administrator who manages logistics and record-keeping, and 6) Community observers who may attend open portions of the hearings. Expert testimony may be sought when specialized knowledge is required."
deliberation_conclusion:
deliberationConclusionText: "Jury deliberation discussions follow a structured format: 1) The jury first clarifies the key questions that must be answered, 2) They review evidence related to each question, 3) Each juror shares their perspective on how the evidence answers these questions, 4) Areas of agreement and disagreement are explicitly identified, 5) For disagreements, jurors explore underlying reasoning and concerns, 6) The facilitator helps maintain focus and ensures all voices are heard, and 7) The jury works toward finding areas of consensus before moving to formal decision-making."
resolution:
resolution_process:
resolutionProcessText: "Decisions are made through a structured jury voting process: 1) After thorough deliberation, the jury votes on proposed resolutions, 2) A 2/3 majority is required for decisions to be adopted, 3) If the first vote doesn't reach the threshold, further discussion occurs, 4) Up to three voting rounds may take place to reach the required majority, 5) If consensus cannot be reached after three rounds, the most supported option with at least 60% support is adopted, 6) The jury provides written rationale for their decision based on community standards, 7) Jury decisions are binding within the scope of community governance."
resolution_failure:
resolutionFailureText: "If the jury process fails to resolve the dispute effectively, several options are available: 1) Referral to professional mediation or arbitration, 2) Escalation to formal legal proceedings when appropriate, 3) Revision of community policies or procedures if the case reveals structural issues, 4) Implementation of additional support mechanisms for the affected parties, or 5) In rare cases where resolution seems impossible, the community may recommend separation of the parties through reassignment of roles or spaces."
appeal:
appeal_criteria:
appealCriteriaText: "Appeals of jury decisions may be filed based on specific criteria: 1) Significant new evidence that wasn't available during the original hearing, 2) Procedural errors that materially affected the outcome, 3) Clear misapplication of community standards by the jury, 4) Jury bias or misconduct that affected the decision, or 5) Implementation difficulties that make the decision unworkable. Appeals must be filed within 14 days of the decision and must specifically identify which criteria apply."
appeal_process:
appealProcessText: "The appeal process follows these steps: 1) The appellant submits a written appeal stating the grounds and desired outcome, 2) The Appeal Committee (three community members not involved in the original case) reviews the appeal to determine if it meets criteria, 3) If accepted, a new jury is selected, larger than the original, 4) The new jury reviews all original materials plus the appeal documentation, 5) A limited appeal hearing is held focusing only on the specific grounds for appeal, 6) The appeal jury deliberates and issues a new decision that either confirms, modifies, or overturns the original decision."

View File

@@ -0,0 +1,27 @@
id: "peer-to-peer"
title: "Peer-to-Peer Resolution"
description: "A direct negotiation process between disputants with minimal third-party intervention, emphasizing self-determination"
data:
stages:
basics:
community_rules:
communityRulesText: "Peer-to-peer resolution operates under community agreements that support direct communication and mutual problem-solving. Guidelines emphasize respect, honesty, and good faith engagement. Resources and support are available but participation in formal processes remains voluntary."
shared_values:
sharedValuesText: "We value individual autonomy, direct communication, and the capacity of community members to resolve their own conflicts. This approach builds on trust in people's ability to find mutually acceptable solutions when given appropriate support and frameworks."
information_access:
informationAccessText: "Information sharing is controlled by the participants themselves. Community support persons may assist with communication but do not keep formal records. Outcomes are shared only as participants choose, with community learning happening through voluntary sharing of insights and experiences."
process:
process_start:
processStartText: "Either party may initiate peer-to-peer resolution by approaching the other party directly or requesting community assistance in making contact. The process begins only when both parties agree to participate. Initial focus is on establishing ground rules and communication methods that work for both parties."
facilitation:
facilitationText: "Parties meet directly with minimal outside intervention. Community members may provide support such as helping to arrange meetings, offering neutral meeting spaces, or serving as witnesses if requested. The focus remains on the parties' own problem-solving abilities and preferences."
ground_rules:
groundRulesText: "Participants commit to: engaging in good faith; treating each other with respect; focusing on specific behaviors and impacts rather than character; listening to understand; taking breaks when needed; maintaining confidentiality as agreed; and seeking community support when helpful."
outcome:
documentation:
documentationText: "Agreements are documented according to participants' preferences, ranging from informal verbal agreements to detailed written contracts. The level of formality and external oversight depends entirely on what the parties believe will best support their agreement."
monitoring:
monitoringText: "Follow-up occurs as agreed by the parties, which may include self-monitoring, mutual check-ins, or involvement of chosen community members. The emphasis is on voluntary accountability and ongoing communication rather than external enforcement."

View File

@@ -0,0 +1,44 @@
id: "referee-protocol"
title: "Community Referee"
description: "A streamlined process where a single trained referee facilitates and decides on dispute resolution"
data:
stages:
basics:
community_rules:
communityRulesText: "Community standards and the referee process guidelines are made accessible through: 1) A comprehensive digital handbook available on the community website, 2) Print copies in the community office, 3) Periodic community workshops explaining the process, and 4) A quick-reference guide that summarizes key points. New community members receive orientation to these materials when they join. The Dispute Coordinator is available to answer questions about the process."
shared_values:
sharedValuesText: "The referee process embodies these essential values: 1) Efficiency - streamlining resolution to minimize time and resources, 2) Fairness - ensuring balanced consideration and equal opportunity to be heard, 3) Expertise - bringing relevant knowledge and skills to complex situations, 4) Practicality - focusing on workable solutions that can be implemented, 5) Consistency - applying community standards evenly across similar cases, and 6) Respect - maintaining dignity for all participants throughout the process."
information_access:
informationAccessText: "Information management follows clear confidentiality protocols: 1) Case information is shared only with the assigned referee and parties directly involved, 2) Documentation is stored securely in both digital and physical formats, 3) Anonymized statistical information is compiled quarterly for process improvements, 4) Final determinations may be used as precedent for future cases with identifying details removed, and 5) Parties may agree to share specific outcomes with the wider community when relevant to community functioning."
process:
process_start:
processStartText: "The referee process begins when a community member submits a dispute resolution request form. This form includes a description of the issue, parties involved, desired outcome, and relevant documentation. Within 2 business days, the Dispute Coordinator reviews the form and determines if the referee process is appropriate. If so, the referee selection process begins immediately, with a goal of assigning a referee within 5 days of the initial submission."
facilitation:
facilitationText: "The dispute process is led by a single referee who: 1) Reviews all submitted materials before the first meeting, 2) Conducts individual intake interviews with each party, 3) Structures a joint session with clear speaking times and guidelines, 4) Asks clarifying questions to develop a complete understanding, 5) May request additional information or witnesses as needed, 6) Maintains control of the process while ensuring all voices are heard, and 7) Provides guidance on realistic options based on community standards."
ground_rules:
groundRulesText: "Communication in referee sessions follows structured guidelines: 1) The referee establishes clear speaking protocols at the start, 2) Each party has equal opportunity to present their perspective without interruption, 3) Questions are directed through the referee to maintain order, 4) Time limits ensure balanced participation, 5) The referee may caucus with parties separately when needed, 6) Communication focuses on facts and interests rather than accusations, and 7) The referee summarizes key points to ensure shared understanding. Parties commit to providing accurate information, responding to referee requests within specified timeframes, participating in scheduled meetings prepared and on time, and implementing required actions within established deadlines."
assessment:
dispute_assessment:
disputeAssessmentText: "The referee conducts a thorough situation assessment: 1) Identifying agreed-upon facts versus disputed facts, 2) Clarifying which community standards or agreements apply to the situation, 3) Determining the chronology of relevant events, 4) Assessing the impact on involved parties and the community, 5) Evaluating the credibility of conflicting accounts when necessary, and 6) Distinguishing between primary issues that require resolution and secondary factors. The referee also evaluates the stage and dynamics of the conflict including whether this is a new issue or part of an ongoing pattern and previous attempts at resolution."
jurisdiction:
jurisdictionText: "The referee process has jurisdiction over: 1) Interpretation and application of community agreements and policies, 2) Allocation of shared resources and spaces, 3) Interpersonal conflicts affecting community functioning, 4) Minor property disputes between community members, and 5) Compliance with previous community decisions. The process does not have jurisdiction over legal matters outside community governance, criminal activities, or disputes explicitly excluded in the community charter. Complex cases may be referred to specialized authorities when appropriate."
non_participation:
nonParticipationText: "Participation in the referee process is a condition of community membership as outlined in our community agreement. Members are expected to engage in good faith when named in a dispute. However, the process may proceed even if a party declines to participate actively. In such cases, the referee will consider available information and note the limited participation in their determination. When a case is accepted, the Dispute Coordinator contacts all identified parties via email and phone within 48 hours with information about the process."
deliberation:
deliberation_process:
deliberationProcessText: "The referee gathers information through a structured approach: 1) Initial submissions from all parties, 2) Clarification questions to fill information gaps, 3) Targeted witness statements on specific disputed facts, 4) Review of community standards and precedents, 5) Site visits or physical inspections when relevant, and 6) Expert consultation on technical matters if needed. The process is designed to be thorough but efficient, gathering essential information without unnecessary delay."
additional_voices:
additionalVoicesText: "Participation typically includes: 1) The primary parties directly involved in the dispute, 2) The referee who facilitates and ultimately decides the case, 3) One support person per party (non-speaking unless invited), 4) Witnesses with relevant information (for specific portions only), 5) The Dispute Coordinator who handles logistics and record-keeping, and 6) Occasional observers for training purposes (with party consent)."
deliberation_conclusion:
deliberationConclusionText: "Discussion in referee sessions is highly structured: 1) The referee identifies specific topics for focused conversation, 2) Each party has equal opportunity to address each topic, 3) Direct questions between parties are moderated by the referee, 4) The referee summarizes points of agreement and disagreement, 5) When positions differ, the referee explores underlying interests and concerns, and 6) The discussion concludes with a summary of key findings and possible resolution paths. The referee's deliberation typically includes a structured review of all gathered information with analysis of which community standards apply."
resolution:
resolution_process:
resolutionProcessText: "Decisions are made through a referee determination process: 1) The referee first encourages participants to reach their own agreement, 2) If parties cannot agree, the referee considers all presented information, 3) The decision is based on community standards, precedent, and fairness, 4) The referee provides a written determination with clear reasoning, 5) Parties may ask clarifying questions about the decision, 6) The referee has authority to make binding decisions within community governance, 7) Decisions are delivered within one week of the final session."
resolution_failure:
resolutionFailureText: "When resolution through the referee process is not achieved effectively, several options are available: 1) Escalation to a three-referee panel for complex cases, 2) Referral to professional mediation or arbitration services, 3) Consultation with subject matter experts on technical disputes, 4) Engagement of community leadership for policy-level issues, or 5) As a last resort, referral to appropriate legal authorities for matters beyond community governance. The Dispute Coordinator helps parties navigate these alternatives when necessary."
appeal:
appeal_criteria:
appealCriteriaText: "Appeals of referee determinations may be filed based on limited criteria: 1) Significant new information that wasn't available during the original process, 2) Clear misapplication of community standards, 3) Procedural errors that materially affected the outcome, 4) Bias or conflict of interest that wasn't previously disclosed, or 5) Implementation impossibility due to factors outside the party's control. Appeals must be filed within 10 days of the determination and must specifically identify which criterion applies and provide supporting evidence."
appeal_process:
appealProcessText: "The appeal process follows these steps: 1) The appealing party submits a written appeal form with supporting documentation, 2) The Appeals Committee (consisting of three experienced referees not involved in the original case) reviews the appeal to determine if it meets criteria, 3) If accepted, a senior referee not involved in the original case is assigned, 4) The senior referee reviews all materials from the original case plus the appeal documentation, 5) A limited appeal hearing may be held to address specific issues, and 6) The senior referee issues a final determination that confirms, modifies, or replaces the original decision."

View File

@@ -0,0 +1,44 @@
id: "restorative-justice"
title: "Restorative Justice"
description: "A collaborative process that focuses on healing relationships and repairing harm rather than punitive measures"
data:
stages:
basics:
community_rules:
communityRulesText: "Our community principles and restorative process guidelines are publicly available in multiple formats: a printed handbook in common spaces, an accessible online document, and visual displays in community gathering areas. New members receive an orientation to these principles when they join the community."
shared_values:
sharedValuesText: "Our restorative justice process is grounded in values of healing, accountability, and community wholeness. We believe that harm creates wounds in relationships that need healing rather than punishment. We value honest communication, deep listening, personal responsibility, and the wisdom that emerges from bringing affected people together in structured dialogue."
information_access:
informationAccessText: "Information about specific restorative processes is shared only with those directly involved. Statistical information about types of harm addressed (without identifying details) is shared annually to help the community learn and grow. The circle keeper maintains confidential records that are accessible only to them and the participants in each case."
process:
process_start:
processStartText: "The restorative justice process begins when anyone in the community submits a request form indicating harm that needs to be addressed. This form asks for a brief description of what happened, who was involved, and what the person hopes might come from the process. A restorative justice coordinator acknowledges receipt within 24 hours and begins initial conversations with the person who submitted the request. Other participants are brought into the process through thoughtful invitation rather than formal notification."
facilitation:
facilitationText: "The dispute process uses a restorative circle approach: 1) A trained circle keeper facilitates but does not control the process, 2) All participants sit in a circle with no tables or barriers between them, 3) A talking piece is passed around the circle to ensure each person can speak without interruption, 4) Multiple rounds allow for deepening the conversation and moving toward resolution, 5) The circle process follows indigenous wisdom traditions adapted for contemporary contexts, 6) The circle keeper prepares participants individually before the full circle gathering."
ground_rules:
groundRulesText: "Communication in restorative circles follows these guidelines: 1) Speak from the heart about your own experience, 2) Listen from the heart without planning your response, 3) Speak with respect and without blame, 4) Share what's true for you in the moment, 5) Be mindful of time so everyone can share, 6) Honor the talking piece - only the person holding it may speak, 7) Respect the confidentiality of what is shared. Participants commit to: speaking honestly from their own experience, listening deeply to others without interruption, maintaining confidentiality, working toward understanding, and following through on agreements they make."
assessment:
dispute_assessment:
disputeAssessmentText: "The situation is assessed through a harm and needs framework: 1) Each participant describes what happened from their perspective, 2) Participants identify how they have been affected or harmed, 3) Underlying needs that weren't met are identified, 4) The impact on relationships and the wider community is explored, 5) The assessment focuses on understanding rather than blame. The circle keeper assesses the readiness of all parties for a restorative process, considering whether those who caused harm acknowledge their responsibility, the emotional state and safety needs of those who experienced harm, and the willingness of all parties to work toward repair."
jurisdiction:
jurisdictionText: "Our restorative justice process is appropriate for most interpersonal harms and conflicts within our community. For situations involving ongoing safety risks, legal violations that require reporting, or when participants are unwilling to acknowledge basic responsibility for harm, the process may be adapted or alternative resources recommended."
non_participation:
nonParticipationText: "Participation in restorative justice processes is entirely voluntary. We believe that genuine healing and transformation can only come from willing engagement. If someone chooses not to participate, we respect that decision and explore other paths forward with the person who initiated the request. The process may continue in modified form with those willing to participate, or may need to be redirected to other community resources."
deliberation:
deliberation_process:
deliberationProcessText: "Information emerges organically through circle sharing. The process begins with establishing relationships and context before directly addressing the harm. Multiple rounds of the talking piece allow deeper layers of the situation to surface. As understanding develops, the circle considers what needs to happen to make things right. The circle keeper guides the process with thoughtful questions while allowing space for all voices."
additional_voices:
additionalVoicesText: "A restorative circle typically includes: 1) The person who experienced harm, 2) The person who caused harm, 3) Community members or loved ones who support each primary participant, 4) Community members affected by the situation, and 5) The circle keeper. Everyone participates as an equal in the circle, though the needs of those most affected guide the process."
deliberation_conclusion:
deliberationConclusionText: "The circle discusses potential solutions through a structured process: 1) Each idea is considered in terms of how it addresses identified harms and needs, 2) Those most affected by the situation speak to what would help them move forward, 3) The group refines ideas based on what's practical and meaningful, 4) The keeper helps the group move toward consensus on actions for repair and healing. Deliberation happens within the circle format, and concludes when the group reaches shared agreements about how to move forward."
resolution:
resolution_process:
resolutionProcessText: "Decisions in restorative processes are made by consensus of all participants. The circle keeper helps test potential agreements to ensure everyone can support them. If perfect agreement isn't possible, the keeper helps craft a solution that addresses core needs while respecting individual boundaries about what people are willing to do. Restorative outcomes typically include: acknowledgment of the harm that occurred, specific actions to repair damage or address impacts, commitments to changed behavior in the future, healing rituals or symbolic acts, plans for rebuilding trust and relationships over time, and community support mechanisms to help implement agreements."
resolution_failure:
resolutionFailureText: "If the restorative process does not result in resolution, several options may be considered: 1) Taking a break and reconvening the circle at a later date when parties have had time to reflect, 2) Modifying the process to address barriers to resolution, 3) Bringing in additional circle keepers or community resources, 4) Referring to other conflict resolution processes like mediation, 5) In cases involving safety concerns or serious harm, connecting with appropriate professional or legal resources while maintaining support for all involved."
appeal:
appeal_criteria:
appealCriteriaText: "Restorative processes can be reopened if: 1) Agreements aren't being fulfilled despite good faith efforts, 2) New information emerges that significantly changes understanding of the situation, 3) Additional harms occur related to the original situation, or 4) The process was completed but healing remains incomplete."
appeal_process:
appealProcessText: "To revisit a completed process, any participant can contact the circle keeper to request a follow-up circle. The keeper reaches out to all original participants to check willingness to reconvene. If everyone agrees, a new circle is scheduled focusing specifically on the issues that need further attention. The reconvened circle follows the same structured format as the original process but with focused attention on the specific concerns that led to reopening the case."

View File

@@ -0,0 +1,27 @@
id: "shalish-mediation"
title: "Shalish Mediation"
description: "A process based on the traditional shalish process for village-level mediation in Bangladesh, with modernizing improvements"
data:
stages:
basics:
community_rules:
communityRulesText: "The rules and procedures for the Shalish mediation process are documented in a community handbook that explains the cultural tradition and modern adaptations made by the Madaripur Legal Aid Association. This handbook is translated into local languages and made available through community centers, government offices, and through trained mediators."
shared_values:
sharedValuesText: "Shalish mediation centers on values of community harmony, restorative justice, and cultural respect. Mediators emphasize the importance of restoring relationships, fairness to all parties, and finding solutions that strengthen the community. Decisions are guided by local cultural norms and expectations alongside consideration of basic principles of justice and human dignity."
information_access:
informationAccessText: "Information about specific cases is kept confidential among the participating parties and mediators. Statistical information about types of cases addressed (without identifying details) is collected for program evaluation and improvement. Participants receive copies of any agreements they reach during the process."
process:
process_start:
processStartText: "One or more disputant parties ask a third-party intervenor to assist in the dispute resolution process. If only one of the parties initiates the process, the other party/parties may or may not choose to participate. In the case of the latter, the mediator may require conflicting parties to submit to the mediation process. The mediator may need to educate one or more parties about the benefits of mediation for conflict resolution. Upon the agreement of all parties to participate, the mediator schedules a meeting time agreeable to all."
facilitation:
facilitationText: "Upon the decision to enter the mediation process from the disputant parties, the mediator decides whether to mediate alone or co-mediate. In the case of co-mediation, the mediators determine each others' responsibilities for the different aspects of the mediation process, safety valves in case of problems between mediators, time schedules, a mediation site, the management of case records, and similar housekeeping aspects. Each party is allowed to make an initial statement. The mediators take notes throughout the entire mediation process. Mediators may choose to meet privately with one or all of the disputant parties. In the end, the mediators help the disputants write an agreement."
ground_rules:
groundRulesText: "Communication in the mediation follows established ground rules: 1) Speak only for yourself and in the first person, 2) Use language that does not blame or find fault with others, 3) Do not interrupt while another is speaking, 4) Use non-inflammatory words, 5) If stating a complaint, raise it as your own concern and follow it with a constructive suggestion as to how it might be resolved, 6) Attack the problems and concerns at hand; do not attack the other person, 7) Make statements about your interests and needs instead of stating your position, 8) Be respectful to others, 9) Listen to understand what each person is saying without being judgmental about the person or the message."
outcome:
documentation:
documentationText: "All agreements reached through the shalish mediation process are documented in writing and signed by all parties. The agreement includes specific commitments made by each party, timelines for implementation, and consequences for non-compliance. Both parties receive copies of the signed agreement. A summary (without identifying information) is kept for program evaluation purposes."
monitoring:
monitoringText: "Following the mediation, there is a follow-up period of 30-60 days during which the mediator checks with parties to ensure the agreement is being implemented. If problems arise, parties can return for additional mediation sessions. The community maintains records of successful resolutions to help improve the mediation process over time."

View File

@@ -0,0 +1,44 @@
id: "transformative-justice"
title: "Transformative Justice"
description: "A process that addresses immediate harm while working to transform the conditions that allowed harm to occur"
data:
stages:
basics:
community_rules:
communityRulesText: "Our community agreements, values, and transformative justice framework are documented in accessible formats including a community handbook (print and digital), visual materials, audio resources, and multilingual versions. These resources clearly distinguish between aspirational values and concrete practices. All members participate in regular workshops to review and update these materials."
shared_values:
sharedValuesText: "Our transformative justice work is rooted in these core values: 1) Liberation - working toward freedom from all forms of oppression, 2) Accountability without punishment, 3) Collective responsibility for community well-being, 4) Radical honesty about impacts and conditions, 5) Compassion for all involved, including those who have caused harm, 6) Faith in people's capacity to transform, 7) Commitment to sustainable, long-term change."
information_access:
informationAccessText: "Information is shared based on a consent-based model. Those directly involved determine what information is shared beyond the immediate process. The transformative justice collective maintains secure records that include agreements made and lessons learned, but not sensitive personal details. Pattern-level information about types of harm addressed informs community education while protecting confidentiality."
process:
process_start:
processStartText: "The transformative justice process begins when a community member reaches out to the transformative justice collective with a concern about harm. This initial contact can be through a secure online form, a phone line, or direct conversation with a collective member. Within 48 hours, two collective members are assigned to do an initial assessment and begin conversations with the person who raised the concern. People are brought into the process through intentional outreach by the facilitators, who explain the transformative approach and how it differs from punitive models."
facilitation:
facilitationText: "The dispute process uses a community accountability approach: 1) A facilitation team of 2-3 trained community members guides the process, 2) Both the person harmed and the person who caused harm have support teams, 3) The wider community is represented by stakeholders affected by the issues, 4) The process begins with individual preparation sessions before group meetings, 5) Facilitation focuses on transforming harmful patterns, not just individual incidents, 6) Multiple sessions allow for deep exploration of systemic factors, 7) The process builds community capacity to address similar issues in the future."
ground_rules:
groundRulesText: "Communication follows these agreements: 1) Speak from personal experience using 'I' statements, 2) Acknowledge the difference between intent and impact, 3) Use language that recognizes both individual and systemic dimensions, 4) Name patterns and power dynamics when relevant, 5) Practice active listening, 6) Honor silence and processing time, 7) Express needs directly rather than through criticism. Participants commit to engaging honestly in examining harm and its impacts, considering both individual and collective dimensions of accountability, respecting confidentiality boundaries, working to understand systemic factors beyond individual actions, contributing to implementation of agreements, and participating in follow-up."
assessment:
dispute_assessment:
disputeAssessmentText: "The situation is assessed through a systemic analysis framework: 1) Individual experiences and harms are documented, 2) Patterns of behavior and power dynamics are identified, 3) Structural factors that contributed to the harm are analyzed, 4) Community norms and cultural assumptions are examined, 5) The assessment connects individual incidents to broader social contexts. The facilitation team assesses the history and timeline of the harm, whether this is an isolated incident or part of a pattern, the presence of immediate safety concerns, and the current capacity of all involved to engage in the process."
jurisdiction:
jurisdictionText: "Transformative justice processes are most appropriate for situations where: 1) The harm is connected to broader social patterns, 2) Community-based intervention is possible and desired, 3) There is willingness to address both immediate harm and root causes, and 4) Public systems (legal, etc.) would likely cause additional harm. The process may be adapted based on safety needs and legal requirements."
non_participation:
nonParticipationText: "Participation is voluntary but strongly encouraged as part of our community commitments. We recognize that meaningful accountability cannot be forced. However, if someone chooses not to participate directly, the process may continue with those who are willing, focusing on community support for those harmed and addressing systemic factors that contributed to the harm."
deliberation:
deliberation_process:
deliberationProcessText: "Information is gathered through a trauma-informed approach that centers those most impacted. Multiple sessions allow time for reflection and integration. The facilitation team helps contextualize individual experiences within systemic patterns, gathering information about both the specific harm and the conditions that enabled it. The deliberation process includes multiple formats including structured dialogue sessions, caucus meetings with specific stakeholder groups, one-on-one conversations for sensitive topics, and community forums for systemic issues."
additional_voices:
additionalVoicesText: "The process includes a constellation of participants depending on the situation: 1) Core participants directly involved in the harm, 2) Support people chosen by core participants, 3) Facilitators from the transformative justice collective, 4) Community stakeholders who represent affected groups or have relevant expertise, 5) Witnesses who help document and hold the process. Each participant has a specific role with clear responsibilities."
deliberation_conclusion:
deliberationConclusionText: "Facilitated discussions focus on building shared understanding of how change can happen at multiple levels. Participants examine proposed solutions in terms of how they address immediate needs, build accountability, heal relationships, transform conditions, and prevent future harm. Special attention is paid to sustainability and community capacity. Solution-building happens through structured brainstorming processes that include small group work to generate ideas addressing different levels of change, research into approaches used by other communities, and consultation with relevant experts or elders."
resolution:
resolution_process:
resolutionProcessText: "Decisions are made through a consensus process that prioritizes the needs of those most impacted while engaging everyone in finding solutions. The facilitation team helps test proposals against transformative justice principles. When full consensus isn't possible, the group identifies which elements have universal support and which need further development. Outcomes address multiple dimensions: survivor-centered responses to address immediate harm, accountability processes for those who caused harm, community support mechanisms, education initiatives to build awareness, policy or structural changes to transform conditions, and community capacity-building to sustain changes over time."
resolution_failure:
resolutionFailureText: "If the transformative justice process does not achieve its goals, several approaches may be considered: 1) Extending the timeline to allow for deeper work, 2) Bringing in additional resources or facilitators with specialized expertise, 3) Narrowing the focus to address the most critical aspects first, 4) Dividing the work into parallel processes addressing different levels (individual healing, accountability, systemic change), or 5) When necessary, connecting participants with alternative resources while maintaining community support. The goal remains transformation rather than punishment, even when the initial process requires adaptation."
appeal:
appeal_criteria:
appealCriteriaText: "The process can be revisited if: 1) Agreements aren't being implemented as planned, 2) Implementation reveals unforeseen challenges, 3) New information emerges about the situation, 4) The harm continues or recurs, 5) Systemic changes aren't effectively addressing root causes, or 6) Additional affected parties come forward."
appeal_process:
appealProcessText: "Any participant can request reassessment by contacting the transformative justice collective. Two members review the request and consult with key stakeholders to determine next steps. This may lead to reconvening the original group, forming a new group, or taking targeted action on specific unaddressed issues. Reassessment follows a structured format with review of original agreements and implementation status, identification of gaps or new issues, and analysis of why certain aspects haven't been effective."

View File

@@ -1,4 +0,0 @@
- name: Item 1
id: id1
- name: Item 2
id: id2

View File

@@ -1,47 +0,0 @@
#!/bin/bash
# Dispute Protocol Deployment Script
# This script builds and deploys the dispute protocol site to a remote server
set -e
# Colors for output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Configuration
SSH_USER=${1:-$USER}
SSH_HOST=${2:-"example.com"}
DEPLOY_PATH=${3:-"/var/www/dispute-protocol"}
BUILD_DIR="public"
# Check if Hugo is installed
if ! command -v hugo &> /dev/null; then
echo -e "${RED}Error: Hugo is not installed. Please install Hugo first.${NC}"
echo "Visit https://gohugo.io/installation/ for installation instructions."
exit 1
fi
echo -e "${YELLOW}Building site...${NC}"
hugo --minify
# Check if build succeeded
if [ ! -d "$BUILD_DIR" ]; then
echo -e "${RED}Error: Build failed. The '$BUILD_DIR' directory doesn't exist.${NC}"
exit 1
fi
echo -e "${YELLOW}Deploying to $SSH_USER@$SSH_HOST:$DEPLOY_PATH...${NC}"
# Create directory if it doesn't exist
ssh $SSH_USER@$SSH_HOST "mkdir -p $DEPLOY_PATH"
# Deploy using rsync
rsync -avz --delete $BUILD_DIR/ $SSH_USER@$SSH_HOST:$DEPLOY_PATH
echo -e "${GREEN}Deployment completed successfully!${NC}"
echo -e "${YELLOW}NOTE: Make sure your web server is configured correctly to serve the site.${NC}"
exit 0

335
static/js/all-templates.js Normal file
View File

@@ -0,0 +1,335 @@
// All Templates - Consolidated for reliable loading
// This file contains all templates in a single file to avoid ES module issues in production
window.allTemplates = [
// Shalish Mediation Template
{
id: "shalish-mediation",
title: "Shalish Mediation",
description: "A process based on the traditional shalish process for village-level mediation in Bangladesh, with modernizing improvements",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "The rules and procedures for the Shalish mediation process are documented in a community handbook that explains the cultural tradition and modern adaptations made by the Madaripur Legal Aid Association. This handbook is translated into local languages and made available through community centers, government offices, and through trained mediators."
},
shared_values: {
sharedValuesText: "Shalish mediation centers on values of community harmony, restorative justice, and cultural respect. Mediators emphasize the importance of restoring relationships, fairness to all parties, and finding solutions that strengthen the community. Decisions are guided by local cultural norms and expectations alongside consideration of basic principles of justice and human dignity."
},
information_access: {
informationAccessText: "Information about specific cases is kept confidential among the participating parties and mediators. Statistical information about types of cases addressed (without identifying details) is collected for program evaluation and improvement. Participants receive copies of any agreements they reach during the process."
}
},
process: {
process_start: {
processStartText: "One or more disputant parties ask a third-party intervenor to assist in the dispute resolution process. If only one of the parties initiates the process, the other party/parties may or may not choose to participate. In the case of the latter, the mediator may require conflicting parties to submit to the mediation process. The mediator may need to educate one or more parties about the benefits of mediation for conflict resolution. Upon the agreement of all parties to participate, the mediator schedules a meeting time agreeable to all."
},
facilitation: {
facilitationText: "Upon the decision to enter the mediation process from the disputant parties, the mediator decides whether to mediate alone or co-mediate. In the case of co-mediation, the mediators determine each others' responsibilities for the different aspects of the mediation process, safety valves in case of problems between mediators, time schedules, a mediation site, the management of case records, and similar housekeeping aspects. Each party is allowed to make an initial statement. The mediators take notes throughout the entire mediation process. Mediators may choose to meet privately with one or all of the disputant parties. In the end, the mediators help the disputants write an agreement."
},
ground_rules: {
groundRulesText: "Communication in the mediation follows established ground rules: 1) Speak only for yourself and in the first person, 2) Use language that does not blame or find fault with others, 3) Do not interrupt while another is speaking, 4) Use non-inflammatory words, 5) If stating a complaint, raise it as your own concern and follow it with a constructive suggestion as to how it might be resolved, 6) Attack the problems and concerns at hand; do not attack the other person, 7) Make statements about your interests and needs instead of stating your position, 8) Be respectful to others, 9) Listen to understand what each person is saying without being judgmental about the person or the message."
}
},
outcome: {
documentation: {
documentationText: "All agreements reached through the shalish mediation process are documented in writing and signed by all parties. The agreement includes specific commitments made by each party, timelines for implementation, and consequences for non-compliance. Both parties receive copies of the signed agreement. A summary (without identifying information) is kept for program evaluation purposes."
},
monitoring: {
monitoringText: "Following the mediation, there is a follow-up period of 30-60 days during which the mediator checks with parties to ensure the agreement is being implemented. If problems arise, parties can return for additional mediation sessions. The community maintains records of successful resolutions to help improve the mediation process over time."
}
}
}
}
},
// Restorative Justice Template
{
id: "restorative-justice",
title: "Restorative Justice Circle",
description: "A community-based approach focusing on healing relationships and addressing root causes of conflict through inclusive dialogue",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "Our restorative justice process is governed by principles of respect, responsibility, and relationship repair. Guidelines are maintained in our Community Handbook and shared through regular community education sessions. All community members are expected to understand and support these principles."
},
shared_values: {
sharedValuesText: "We believe in the inherent worth and dignity of every person, the possibility of positive change, and the healing power of community support. Our process emphasizes accountability, making amends, and preventing future harm while building stronger community connections."
},
information_access: {
informationAccessText: "Circle processes maintain confidentiality within the circle participants. Outcomes and agreements are documented and shared as appropriate for accountability purposes. Community members receive regular education about restorative practices without sharing details of specific cases."
}
},
process: {
process_start: {
processStartText: "A community member, affected party, or community leader identifies harm that needs to be addressed. Initial conversations determine whether a restorative circle is appropriate and whether all affected parties are willing to participate. Preparation includes identifying circle participants and a suitable keeper/facilitator."
},
facilitation: {
facilitationText: "A trained circle keeper facilitates the process, beginning with opening ceremonies that center participants and establish sacred space. Each person shares their perspective on what happened and how they were affected. The circle explores root causes, community impacts, and pathways to healing and repair."
},
ground_rules: {
groundRulesText: "Circle participants agree to: speak from the heart with honesty and respect; listen with compassion and an open mind; say only what needs to be said; maintain confidentiality; take responsibility for their actions and words; commit to the healing process; and honor the sacred nature of the circle space."
}
},
outcome: {
documentation: {
documentationText: "Agreements reached in circle are documented with input from all participants. This includes specific actions for repair, support needed, and follow-up commitments. The agreement reflects the collective wisdom of the circle and is signed by all participants."
},
monitoring: {
monitoringText: "The circle keeper coordinates follow-up to ensure agreements are fulfilled and relationships continue healing. Additional circles may be convened as needed. The community celebrates successful repairs and learns from the process to strengthen future restorative responses."
}
}
}
}
},
// Peer-to-Peer Template
{
id: "peer-to-peer",
title: "Peer-to-Peer Resolution",
description: "A direct negotiation process between disputants with minimal third-party intervention, emphasizing self-determination",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "Peer-to-peer resolution operates under community agreements that support direct communication and mutual problem-solving. Guidelines emphasize respect, honesty, and good faith engagement. Resources and support are available but participation in formal processes remains voluntary."
},
shared_values: {
sharedValuesText: "We value individual autonomy, direct communication, and the capacity of community members to resolve their own conflicts. This approach builds on trust in people's ability to find mutually acceptable solutions when given appropriate support and frameworks."
},
information_access: {
informationAccessText: "Information sharing is controlled by the participants themselves. Community support persons may assist with communication but do not keep formal records. Outcomes are shared only as participants choose, with community learning happening through voluntary sharing of insights and experiences."
}
},
process: {
process_start: {
processStartText: "Either party may initiate peer-to-peer resolution by approaching the other party directly or requesting community assistance in making contact. The process begins only when both parties agree to participate. Initial focus is on establishing ground rules and communication methods that work for both parties."
},
facilitation: {
facilitationText: "Parties meet directly with minimal outside intervention. Community members may provide support such as helping to arrange meetings, offering neutral meeting spaces, or serving as witnesses if requested. The focus remains on the parties' own problem-solving abilities and preferences."
},
ground_rules: {
groundRulesText: "Participants commit to: engaging in good faith; treating each other with respect; focusing on specific behaviors and impacts rather than character; listening to understand; taking breaks when needed; maintaining confidentiality as agreed; and seeking community support when helpful."
}
},
outcome: {
documentation: {
documentationText: "Agreements are documented according to participants' preferences, ranging from informal verbal agreements to detailed written contracts. The level of formality and external oversight depends entirely on what the parties believe will best support their agreement."
},
monitoring: {
monitoringText: "Follow-up occurs as agreed by the parties, which may include self-monitoring, mutual check-ins, or involvement of chosen community members. The emphasis is on voluntary accountability and ongoing communication rather than external enforcement."
}
}
}
}
},
// Jury Protocol Template
{
id: "jury-protocol",
title: "Community Jury",
description: "A formal adjudication process where community members serve as jurors to make binding decisions on disputes",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "The Community Jury Protocol is established by community charter and operates under formal procedures documented in our Community Dispute Resolution Manual. Jury selection, evidence presentation, and decision-making processes follow established protocols designed to ensure fairness and community legitimacy."
},
shared_values: {
sharedValuesText: "This process upholds values of fairness, community participation in justice, peer accountability, and transparent decision-making. We believe community members are best positioned to understand local context and make decisions that serve community wellbeing while maintaining individual rights."
},
information_access: {
informationAccessText: "Jury proceedings follow established rules of evidence and documentation. Participants have rights to information relevant to their case. Jury deliberations remain confidential, but decisions and reasoning are documented and made available to the community as appropriate for transparency and precedent."
}
},
process: {
process_start: {
processStartText: "Cases come to the Community Jury through formal complaint processes or referral from other resolution attempts. Initial review determines whether the case is appropriate for jury resolution. If accepted, jury selection begins from a pool of trained community volunteers, with challenges allowed by both parties."
},
facilitation: {
facilitationText: "A trained community member serves as jury coordinator, managing procedures but not influencing decisions. Each party presents their case with supporting evidence and witnesses. Jury members may ask questions for clarification. The jury deliberates privately and reaches decisions by majority vote or consensus as specified in community protocols."
},
ground_rules: {
groundRulesText: "All participants agree to: respect the formal process and jury authority; present truthful information and evidence; treat all parties with dignity; accept the jury's decision as binding; maintain confidentiality of deliberations; and support the implementation of jury decisions."
}
},
outcome: {
documentation: {
documentationText: "Jury decisions are formally documented with reasoning, any dissenting opinions, and specific requirements for the parties. These documents become part of community records and may serve as precedent for future cases. Implementation requirements and timelines are clearly specified."
},
monitoring: {
monitoringText: "A designated community member monitors compliance with jury decisions and reports back to the community as needed. Non-compliance may result in additional community consequences or, in serious cases, exclusion from community participation. The community reviews the jury process periodically for effectiveness and fairness."
}
}
}
}
},
// Transformative Justice Template
{
id: "transformative-justice",
title: "Transformative Justice Process",
description: "A comprehensive approach addressing systemic issues and power dynamics while supporting both accountability and healing",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "Our transformative justice approach is grounded in anti-oppression principles and community agreements that center marginalized voices and address systemic harm. Guidelines prioritize survivor self-determination, community accountability, and structural change alongside individual healing."
},
shared_values: {
sharedValuesText: "We are committed to interrupting cycles of violence and oppression, building community capacity to address harm without relying on punitive systems, centering those most impacted by harm, and creating conditions for genuine transformation of individuals and communities."
},
information_access: {
informationAccessText: "Information sharing prioritizes survivor needs and community safety while maintaining transparency about processes and outcomes. Documentation focuses on community learning and systemic improvements rather than individual punishment. Privacy and safety considerations guide all information decisions."
}
},
process: {
process_start: {
processStartText: "Process begins with immediate safety and support for those harmed, led by their expressed needs and preferences. Community members assess capacity for transformative response and begin building support teams for all parties. Initial focus is on stabilization and safety rather than immediate resolution."
},
facilitation: {
facilitationText: "Multiple facilitators work together, often including those with lived experience of similar situations. The process includes separate and joint meetings as appropriate, with attention to power dynamics and safety throughout. Community members provide ongoing support to all parties while working toward systemic changes that address root causes."
},
ground_rules: {
groundRulesText: "All participants commit to: prioritizing safety and healing; acknowledging and addressing power imbalances; taking responsibility for harm caused; supporting survivor self-determination; engaging in ongoing learning about oppression and transformation; maintaining confidentiality as determined by survivors; and working toward community-wide culture change."
}
},
outcome: {
documentation: {
documentationText: "Outcomes focus on concrete steps for individual accountability, community healing, and systemic change. Documentation includes safety plans, accountability agreements, community education commitments, and structural changes to prevent future harm. Progress is tracked through survivor-centered metrics."
},
monitoring: {
monitoringText: "Long-term support teams continue working with all parties to ensure accountability agreements are met and healing continues. Community commits to ongoing culture change work and policy modifications. Regular assessment focuses on whether the community is becoming safer and more just for all members."
}
}
}
}
},
// Additional templates continue...
// Chosen Facilitator Template
{
id: "chosen-facilitator",
title: "Chosen Facilitator",
description: "A process where participants mutually select a facilitator to help guide their dispute resolution",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "Community rules and the dispute resolution protocol are available on the community website and in a physical binder kept in the community center. New members receive an orientation to these guidelines when they join."
},
shared_values: {
sharedValuesText: "Our community values open dialogue, mutual respect, and collaborative problem-solving. We believe that most conflicts can be resolved through good faith communication with appropriate support. We prioritize repairing relationships and finding solutions that address underlying needs rather than simply ending disputes."
},
information_access: {
informationAccessText: "Information is shared on a need-to-know basis. The Community Relations Committee keeps records of disputes, and the parties involved have access to all documentation related to their case. Annual anonymous statistics about disputes are shared with the community."
}
},
process: {
process_start: {
processStartText: "Either party may request facilitated dialogue by contacting the Community Relations Committee. If both parties agree to participate, they work together to choose a facilitator from a list of trained community members. The facilitator contacts both parties to schedule an initial meeting."
},
facilitation: {
facilitationText: "The chosen facilitator meets with each party individually first to understand their perspectives and concerns. They then bring parties together for structured dialogue, helping them communicate effectively and explore potential solutions. The facilitator remains neutral while guiding the conversation toward resolution."
},
ground_rules: {
groundRulesText: "Participants agree to: listen respectfully without interrupting; speak about their own experiences and needs rather than making accusations; maintain confidentiality about what is shared; come prepared to engage in good faith; respect the facilitator's guidance; and commit to implementing any agreements reached."
}
},
outcome: {
documentation: {
documentationText: "The facilitator documents any agreements reached, including specific actions each party will take and timelines for implementation. Both parties sign the agreement, and copies are provided to each party and filed with the Community Relations Committee."
},
monitoring: {
monitoringText: "The facilitator follows up with both parties after 30 days to check on implementation of the agreement. If issues arise, additional facilitated sessions may be scheduled. The Community Relations Committee tracks resolution outcomes to improve the process over time."
}
}
}
}
},
// Facilitation Council Template
{
id: "facilitation-council",
title: "Facilitation Council",
description: "A group of trained facilitators who collectively support dispute resolution processes and community healing",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "The Facilitation Council operates under community bylaws that establish its authority, composition, and procedures. Council members are elected for rotating terms and must complete training in conflict resolution and community facilitation. Their role is to support resolution processes, not to make binding decisions."
},
shared_values: {
sharedValuesText: "The Council embodies values of collaborative leadership, shared wisdom, and community healing. Members commit to serving the whole community while maintaining neutrality in specific conflicts. The Council prioritizes processes that strengthen community relationships and prevent future conflicts."
},
information_access: {
informationAccessText: "The Council maintains confidential records of its facilitation work while sharing general information about processes and outcomes with the community. Council meetings include both closed sessions for sensitive case discussions and open sessions for community input and transparency."
}
},
process: {
process_start: {
processStartText: "Community members may request Council support through formal application or informal consultation. The Council assesses each situation and recommends appropriate resolution processes, which may include Council-facilitated dialogue, referral to other community resources, or collaborative problem-solving approaches."
},
facilitation: {
facilitationText: "Council facilitation typically involves 2-3 members working together to provide balanced perspectives and mutual support. They guide structured dialogue processes, help parties explore underlying needs and interests, facilitate creative problem-solving, and support the development of sustainable agreements."
},
ground_rules: {
groundRulesText: "All participants in Council processes agree to: engage respectfully and constructively; share information honestly while respecting others' privacy; listen with openness to different perspectives; work collaboratively toward mutually beneficial solutions; respect the Council's facilitation role; and support implementation of agreements reached."
}
},
outcome: {
documentation: {
documentationText: "The Council documents resolution agreements with input from all parties, ensuring clarity about commitments and implementation steps. Council records include process notes for learning and improvement purposes, while maintaining confidentiality about personal information shared during facilitation."
},
monitoring: {
monitoringText: "Council members follow up with parties to support implementation of agreements and address any emerging concerns. The Council meets regularly to reflect on its work, identify systemic patterns in community conflicts, and recommend community-wide improvements to prevent future disputes."
}
}
}
}
},
// Referee Protocol Template
{
id: "referee-protocol",
title: "Community Referee",
description: "A neutral third party makes binding decisions after hearing from all parties in a formal but flexible process",
data: {
stages: {
basics: {
community_rules: {
communityRulesText: "The Community Referee system is established by community agreement and operates under procedures that balance formality with accessibility. Referees are selected from trained community members and serve rotating terms. Their decisions are binding within the scope of community authority."
},
shared_values: {
sharedValuesText: "This process values impartial judgment, community wisdom, and efficient resolution of disputes. We trust trained community members to make fair decisions based on community values and established principles while considering the unique circumstances of each situation."
},
information_access: {
informationAccessText: "Participants have the right to present relevant information and evidence to the referee. Referee decisions include reasoning and are made available to the parties and community as appropriate. The process maintains confidentiality of personal information while ensuring transparency in decision-making."
}
},
process: {
process_start: {
processStartText: "Parties may request referee resolution either by mutual agreement or through community referral processes. A referee is selected through established procedures, which may include random selection from qualified pool or mutual agreement by the parties. The referee schedules hearings at convenient times for all parties."
},
facilitation: {
facilitationText: "The referee conducts structured hearings where each party presents their perspective, evidence, and desired outcomes. The referee may ask questions, request additional information, or consult with community members about relevant policies or precedents. Decisions are made within specified timeframes."
},
ground_rules: {
groundRulesText: "All parties agree to: present information truthfully and completely; treat all participants with respect; accept the referee's authority to make binding decisions; comply with procedural requirements and timelines; maintain confidentiality as directed; and implement referee decisions in good faith."
}
},
outcome: {
documentation: {
documentationText: "Referee decisions are documented in writing with clear reasoning, specific requirements for each party, and timelines for implementation. Decisions may include remedial actions, behavior changes, or other appropriate responses. Documentation becomes part of community records for precedent and accountability."
},
monitoring: {
monitoringText: "Implementation of referee decisions is monitored by designated community members who report compliance to the referee and community as needed. Non-compliance may result in additional community consequences. The referee system is evaluated periodically for effectiveness and fairness."
}
}
}
}
}
];
console.log('All templates loaded:', window.allTemplates.length, 'templates available');

View File

@@ -100,6 +100,17 @@ document.addEventListener('DOMContentLoaded', function() {
box-shadow: none !important;
}
/* Make input fields read-only appearance */
#community-name, #protocol-summary {
border: none !important;
background-color: transparent !important;
padding: 0 !important;
pointer-events: none !important;
outline: none !important;
box-shadow: none !important;
color: inherit !important;
}
/* Only show filled textareas */
textarea:not(${contentTextareas.join(',')}) {
display: none !important;
@@ -205,72 +216,129 @@ document.addEventListener('DOMContentLoaded', function() {
// Load template data
let templates = [];
// Function to fetch templates - simplified approach
function fetchTemplates() {
console.log('Fetching templates...');
// Function to initialize templates - now uses Hugo data
function initializeTemplates() {
console.log('Initializing template system...');
// Load all templates at startup
try {
// First try loading from the standard path
fetch('/js/templates/index.js')
.then(response => {
if (!response.ok) {
throw new Error(`Failed to fetch templates: ${response.status} ${response.statusText}`);
}
return response.text();
})
.then(moduleText => {
// Add a script element to the document
const script = document.createElement('script');
script.type = 'module';
script.textContent = moduleText;
document.head.appendChild(script);
// Set a timeout to check for templates
setTimeout(() => {
// See if templates were loaded
if (window.allTemplates && Array.isArray(window.allTemplates)) {
console.log('Templates loaded successfully:', window.allTemplates.length, 'templates found');
templates = window.allTemplates;
// Populate the template selector
populateTemplateSelector(templates);
// Template selection is now handled by buttons in the template options
console.log('Template selection will be handled by buttons in the template options');
} else {
console.error('Templates not available after loading script');
}
}, 500);
})
.catch(error => {
console.error('Error fetching templates:', error);
// Try alternate loading method with ES modules import
console.log('Trying alternate loading method with ES modules...');
import('/js/templates/index.js')
.then(module => {
templates = module.default;
console.log('Templates loaded successfully using ES modules:', templates.length, 'templates found');
// Populate the template selector
populateTemplateSelector(templates);
// Template selection is now handled by buttons in the template options
console.log('Template selection will be handled by buttons in the template options');
})
.catch(importError => {
console.error('ES module import also failed:', importError);
console.error('Could not load templates through either method');
});
});
} catch (e) {
console.error('Error in template loading:', e);
// Check if templates are loaded from Hugo
if (window.allTemplates) {
let templatesData;
// Parse JSON string if needed
if (typeof window.allTemplates === 'string') {
try {
templatesData = JSON.parse(window.allTemplates);
console.log('Parsed templates JSON string successfully');
} catch (error) {
console.error('Failed to parse templates JSON:', error);
return;
}
} else {
templatesData = window.allTemplates;
}
// Convert Hugo data object to array format
if (typeof templatesData === 'object' && !Array.isArray(templatesData)) {
// Hugo data comes as an object, convert to array
templates = Object.values(templatesData);
console.log('Templates loaded from Hugo data:', templates.length, 'templates found');
console.log('Template IDs:', templates.map(t => t.id));
} else if (Array.isArray(templatesData)) {
// Already in array format
templates = templatesData;
console.log('Templates already in array format:', templates.length, 'templates found');
}
// Templates are already in the HTML, so we don't need to populate
// Just add event handlers to existing template options
addTemplateEventHandlers();
return;
}
// Fallback - check periodically if templates aren't immediately available
let checkCount = 0;
const maxChecks = 10; // Check for 5 seconds
const checkForTemplates = setInterval(() => {
checkCount++;
if (window.allTemplates) {
let templatesData;
// Parse JSON string if needed
if (typeof window.allTemplates === 'string') {
try {
templatesData = JSON.parse(window.allTemplates);
} catch (error) {
console.error('Failed to parse templates JSON in polling:', error);
return;
}
} else {
templatesData = window.allTemplates;
}
if (typeof templatesData === 'object' && !Array.isArray(templatesData)) {
templates = Object.values(templatesData);
} else if (Array.isArray(templatesData)) {
templates = templatesData;
}
console.log('Templates found via polling:', templates.length, 'templates');
addTemplateEventHandlers();
clearInterval(checkForTemplates);
} else if (checkCount >= maxChecks) {
console.error('Templates failed to load after', maxChecks * 500, 'ms');
clearInterval(checkForTemplates);
}
}, 500);
}
// Function to populate the template selector with cards
// Function to add event handlers to existing template options in HTML
function addTemplateEventHandlers() {
console.log('Adding event handlers to template options...');
// Add click handlers to all template options
const templateOptions = document.querySelectorAll('.template-option');
templateOptions.forEach(option => {
const templateId = option.getAttribute('data-template-id');
option.addEventListener('click', function() {
console.log('Template option clicked for:', templateId);
console.log('Available templates:', templates);
console.log('Templates array length:', templates.length);
if (templateId === '') {
// "Create Your Own" option
clearAllFields();
} else {
// Find and apply the template
const selectedTemplate = templates.find(t => t.id === templateId);
console.log('Found template:', selectedTemplate);
if (selectedTemplate) {
applyTemplate(selectedTemplate);
// Close the template section after selection
const templateSection = document.querySelector('.protocol-template-selector');
if (templateSection) {
const templateBody = templateSection.querySelector('.template-body');
const toggleBtn = templateSection.querySelector('.toggle-btn');
if (templateBody && toggleBtn) {
templateBody.style.display = 'none';
toggleBtn.textContent = '+';
}
}
} else {
console.error('Template not found:', templateId);
console.error('Available template IDs:', templates.map(t => t.id));
}
}
});
console.log('Added event handler for template:', templateId || 'Create Your Own');
});
}
// Function to populate the template selector with cards (legacy - kept for compatibility)
function populateTemplateSelector(templatesList) {
if (!templatesList || templatesList.length === 0) {
console.error('Cannot populate template selector - missing templates');
@@ -565,8 +633,8 @@ document.addEventListener('DOMContentLoaded', function() {
// No helper functions needed anymore as we've simplified the approach
// Start loading templates
fetchTemplates();
// Initialize template system
initializeTemplates();
// Protocol data structure
let protocol = {

View File

@@ -1,26 +1,34 @@
console.log('Testing toggle button functionality');
// Debug script to inspect template loading
// Debug script for dispute protocol builder
console.log("Debug script loaded");
document.addEventListener('DOMContentLoaded', function() {
console.log("DOM loaded in debug script");
// Log raw templates
console.log("Raw Protocol Templates:", typeof rawProtocolTemplates !== 'undefined' ? rawProtocolTemplates.length : "undefined");
if (typeof rawProtocolTemplates !== 'undefined') {
console.log("Template titles:", rawProtocolTemplates.map(t => t.title));
}
// Log processed templates
// Check template system after a delay
setTimeout(() => {
const templateSelect = document.getElementById('protocol-template');
if (templateSelect) {
console.log("Template options:", templateSelect.options.length);
const options = Array.from(templateSelect.options).map(o => o.textContent);
console.log("Option texts:", options);
// Check if templates are loaded
if (window.allTemplates) {
let templatesData;
try {
templatesData = typeof window.allTemplates === 'string' ?
JSON.parse(window.allTemplates) : window.allTemplates;
const templateCount = Object.keys(templatesData).length;
console.log(`✓ Templates loaded: ${templateCount} templates available`);
console.log("Template IDs:", Object.keys(templatesData));
} catch (error) {
console.error("✗ Error parsing templates:", error);
}
} else {
console.log("Template select element not found");
console.warn("Templates not found in window.allTemplates");
}
}, 1000);
// Check if template options are in the DOM
const templateOptions = document.querySelectorAll('.template-option');
console.log(`✓ Template options in DOM: ${templateOptions.length} found`);
// Check if form fields exist
const textareas = document.querySelectorAll('textarea');
console.log(`✓ Form fields: ${textareas.length} textareas found`);
}, 500);
});

View File

@@ -71,4 +71,4 @@ const chosenFacilitatorTemplate = {
};
// Export the template
export default chosenFacilitatorTemplate;
window.chosenFacilitatorTemplate = chosenFacilitatorTemplate;

View File

@@ -71,4 +71,4 @@ const facilitationCouncilTemplate = {
};
// Export the template
export default facilitationCouncilTemplate;
window.facilitationCouncilTemplate = facilitationCouncilTemplate;

View File

@@ -1,31 +1,58 @@
// Template index file
// This file imports and exports all templates
// Template index file - dynamically loads all template files
// This automatically discovers and loads any .js files in the templates folder
import shalishMediationTemplate from './shalish-mediation.js';
import restorativeJusticeTemplate from './restorative-justice.js';
import transformativeJusticeTemplate from './transformative-justice.js';
import juryProtocolTemplate from './jury-protocol.js';
import refereeProtocolTemplate from './referee-protocol.js';
import peerToPeerTemplate from './peer-to-peer.js';
import chosenFacilitatorTemplate from './chosen-facilitator.js';
import facilitationCouncilTemplate from './facilitation-council.js';
(async function loadAllTemplates() {
console.log('Dynamically loading all templates...');
// List of template filenames - add new templates here
const templateFiles = [
'shalish-mediation.js',
'restorative-justice.js',
'transformative-justice.js',
'jury-protocol.js',
'referee-protocol.js',
'peer-to-peer.js',
'chosen-facilitator.js',
'facilitation-council.js'
];
const templates = [];
try {
// Load each template file
for (const filename of templateFiles) {
try {
console.log(`Loading template: ${filename}`);
const module = await import(`./${filename}`);
if (module.default) {
templates.push(module.default);
console.log(`✓ Loaded template: ${module.default.title || filename}`);
} else {
console.warn(`✗ Template ${filename} has no default export`);
}
} catch (error) {
console.warn(`✗ Failed to load template ${filename}:`, error);
// Continue loading other templates even if one fails
}
}
// Set global variable
window.allTemplates = templates;
console.log(`Successfully loaded ${templates.length} templates out of ${templateFiles.length} files`);
// Dispatch event to notify other scripts that templates are ready
window.dispatchEvent(new CustomEvent('templatesLoaded', { detail: templates }));
} catch (error) {
console.error('Critical error loading templates:', error);
// Fallback: set empty array so the app doesn't break
window.allTemplates = [];
window.dispatchEvent(new CustomEvent('templatesLoaded', { detail: [] }));
}
})();
// Export the array of all templates
const templates = [
shalishMediationTemplate,
restorativeJusticeTemplate,
transformativeJusticeTemplate,
juryProtocolTemplate,
refereeProtocolTemplate,
peerToPeerTemplate,
chosenFacilitatorTemplate,
facilitationCouncilTemplate
];
// Set a global variable for non-module contexts
if (typeof window !== 'undefined') {
console.log('Setting global templates variable with', templates.length, 'templates');
window.allTemplates = templates;
}
export default templates;
// Instructions for adding new templates:
// 1. Create your new template file (e.g., 'my-new-template.js') in this folder
// 2. Add the filename to the templateFiles array above
// 3. The template will be automatically loaded and available in the UI

View File

@@ -71,4 +71,4 @@ const juryProtocolTemplate = {
};
// Export the template
export default juryProtocolTemplate;
window.juryProtocolTemplate = juryProtocolTemplate;

View File

@@ -71,4 +71,4 @@ const peerToPeerTemplate = {
};
// Export the template
export default peerToPeerTemplate;
window.peerToPeerTemplate = peerToPeerTemplate;

View File

@@ -71,4 +71,4 @@ const refereeProtocolTemplate = {
};
// Export the template
export default refereeProtocolTemplate;
window.refereeProtocolTemplate = refereeProtocolTemplate;

View File

@@ -71,4 +71,4 @@ const restorativeJusticeTemplate = {
};
// Export the template
export default restorativeJusticeTemplate;
window.restorativeJusticeTemplate = restorativeJusticeTemplate;

View File

@@ -71,4 +71,5 @@ const shalishMediationTemplate = {
};
// Export the template
export default shalishMediationTemplate;
// Make available globally
window.shalishMediationTemplate = shalishMediationTemplate;

View File

@@ -71,4 +71,4 @@ const transformativeJusticeTemplate = {
};
// Export the template
export default transformativeJusticeTemplate;
window.transformativeJusticeTemplate = transformativeJusticeTemplate;

View File

@@ -39,9 +39,22 @@
<button class="template-select-btn">Create Your Own Protocol</button>
<p class="template-description">Start with a blank protocol and build it from scratch.</p>
</div>
<!-- Template options will be populated by JavaScript -->
<!-- Template options from Hugo data -->
{{ range $filename, $template := .Site.Data.templates }}
<div class="template-option" data-template-id="{{ $template.id }}">
<button class="template-select-btn">{{ $template.title }}</button>
<p class="template-description">{{ $template.description }}</p>
</div>
{{ end }}
</div>
</div>
<!-- Make template data available to JavaScript -->
<script>
window.allTemplates = {{ .Site.Data.templates | jsonify }};
console.log('Templates loaded from Hugo data:', Object.keys(window.allTemplates).length, 'templates');
</script>
</div>

View File

@@ -16,8 +16,7 @@
<!-- Custom JS for the builder -->
{{ if eq .Layout "builder" }}
<script defer src="{{ "js/debug.js" | relURL }}"></script>
<script type="module" src="{{ "js/templates/index.js" | relURL }}"></script>
<script type="module" src="{{ "js/builder.js" | relURL }}"></script>
<script defer src="{{ "js/builder.js" | relURL }}"></script>
<!-- Auto-resize textareas script -->
<script>