ZeroVerify Team Charter
Standard Operating Procedures for ZeroVerify team
Version 1.1 | Last Updated: February 2025
Team Members
Lisa Nguyen
Anton Sakhanovych
Souleymane Sono
Fateha Ima
Simon Griemert
Communication Protocol
Channels
Discord: All project decisions, technical discussions, sprint coordination, and blocker notifications
GitHub: Code reviews, issues, pull requests, and technical documentation
Email: Professor escalations only
Response Time Commitments
Discord direct mentions: Acknowledge within 24 hours (weekdays), 48 hours (weekends)
Code review requests: Initial review within 24 hours
Blocker notifications: Response required within 12 hours
Pull request approvals: Complete review within 48 hours of request
Communication Standards
The Golden Rule: We critique code, not people. Technical disagreements focus on tradeoffs and project goals, not individual competence.
No critical project decisions via private DMs, all decisions happen in shared Discord channels.
Use thread replies in Discord to keep discussions organized.
Tag specific people when requesting action or input.
Meeting Schedule
All meeting times are arranged and agreed upon in the Discord group channel to accommodate team members” schedules.
Sprint Structure (2-week iterations)
Sprint Planning
Review completed work from previous sprint
Select user stories for upcoming sprint
Break stories into tasks and assign ownership
Daily Standups
What did I complete yesterday?
What am I working on today?
Am I blocked? If yes, what specifically blocks me? How can team help to unblock you?
Backlog Refinement
Clarify upcoming user stories
Estimate story points
Demo completed features (working code only)
Assign RAG status to project
Retrospective: What went well? What needs improvement?
Action items for next sprint
Definition of Done
A task is DONE when all criteria are met:
Code pushed to feature branch with descriptive commit messages following conventional commits format
Pull request opened with:
Clear description of changes
Link to related issue/user story
Screenshots/test results if applicable
At least one other team member has reviewed and approved the PR
All tests pass (unit tests minimum, integration tests where applicable)
Documentation updated:
README if setup changed
API documentation if endpoints modified
Code merged to
mainbranch
Code Quality Standards
- Branch naming:
feature/short-description,bugfix/issue-number,docs/what-changed
Blocker Management
Recognizing Blockers
You are blocked if:
Cannot make progress for more than 4 hours
Need information, access, credentials, or decisions from another team member
Uncertain about technical approach and need architectural guidance
External dependencies (university OAuth, APIs) are unavailable
Conflicting requirements between capstone and thesis
Resolution Process
Phase 1: Self-Help (0-4 hours)
Document the problem clearly (what you’re trying to do, what’s failing)
Search existing resources (project docs, GitHub issues, relevant documentation)
Attempt at least two different approaches
Timebox your struggle at 4 hours maximum
Phase 2: Team Assistance (4-24 hours)
Post in Discord channel with:
Clear description of the blocker
What you’ve already tried (show your work)
Specific questions or help needed
Tag relevant team members
Urgency level:
[CAN CONTINUE OTHER WORK]or[COMPLETELY BLOCKED]
For complex technical blockers:
Request 15-30 minute pair programming session
Scrum Master facilitates scheduling within 24 hours
Decision timeout:
- If no technical consensus within 24 hours, trigger Technical Tie-Breaker
Phase 3: Technical Tie-Breaker (for deadlocked decisions)
When team cannot agree on technical approach after 24 hours:
Each side prepares written proposal (max 1 page) covering:
Alignment with project goals (security, privacy, usability, scalability)
Implementation complexity and timeline impact
Team reviews proposals and votes
If no majority reached, current Scrum Master makes final decision based on:
Available expertise on team
Time remaining in sprint/semester
Conflict Resolution Framework
Conflict Types & Resolution Paths
Technical Conflict
Symptoms: Extended debate over architecture, technology choices, API design, database schema
Resolution (48 hours):
Follow Technical Tie-Breaker protocol (Section 5.3)
If still unresolved, schedule 30-minute meeting with all team members.
Commitment Conflict
Symptoms: Missed deadlines, incomplete tasks, unresponsiveness, “ghosting”
Resolution (48 hours):
Scrum Master(or the person blocked) initiates private one-on-one conversation
Use “I” statements focusing on impact:
Wrong: “You never finish your code on time”
Right: “I’m blocked on frontend work because the API endpoints aren’t ready. Can we discuss what’s preventing progress?”
Identify root cause:
Overload from other classes → redistribute tasks
Technical difficulty → schedule pair programming
Unclear requirements → clarify and document
Personal issues → adjust sprint commitments realistically
3-Day Rule: If team member is unresponsive for 3 consecutive days without prior notice, trigger professor escalation.
Structural Conflict
Symptoms: Task overlap, unclear ownership, duplicated work, integration failures
Resolution (Immediate Meeting within 24 hours):
Stop current work and schedule 30-minute meeting
Review and update:
GitHub project board assignments
Definition of Done for each role
API contracts and integration points
Document decisions in the docs repository
Redistribute work to eliminate overlap
Interpersonal Conflict
Symptoms: Passive-aggressive comments, tension in meetings, communication breakdown
Resolution (48-hours):
Address directly but privately within 48 hours (don’t let it fester)
Use non-judgmental language focused on behavior impact:
Wrong: “You’re always dismissive in code reviews”
Right: “When my PRs receive comments like ‘this won’t work” without explanation, I feel my approach isn’t being considered. Can we discuss the technical tradeoffs more thoroughly?”
If unresolved after private conversation, Scrum Master mediates
If mediation fails, trigger professor escalation
For harassment or ethics violations, escalate immediately (no 48-hour wait)
Professor Escalation Protocol
When to Escalate (Point of No Return)
Immediate Escalation (within 24 hours):
- Harassment, discrimination, or bullying
Escalation Within 48 Hours:
Ghosting: Team member unresponsive for 3+ consecutive days without prior communication
Deadlock: Technical or process disagreement has completely halted project progress for 1+ week
Escalation Format:
Email to professor with subject: [CAPSTONE ESCALATION] Brief Description
Body should include:
Context: What conflict occurred and when it started
Resolution Attempts: What we tried internally (reference specific charter sections)
Current Impact: How this affects project timeline, deliverables, and team function
Request: Specific help needed (mediation, deadline adjustment, requirement clarification)
Sprint Tracking & Health Monitoring
RAG Status Assessment
At end of every backlog refinement, team assigns project health status:
Green: On track
All sprint commitments met or >80% complete
No critical blockers
Team morale positive
Amber: At risk (action plan required)
1-2 milestones behind schedule
Significant technical hurdle discovered
Team member struggling but responsive
Red: Critical (escalation required)
Significantly behind schedule (>2 weeks slip)
Core feature failing/not feasible
Team conflict unresolved after 48 hours
Action: If Red status persists for 2 consecutive sprints, automatic professor escalation.
GitHub Project Board Structure
Columns:
Backlog (prioritized, not yet refined)
Ready (refined with acceptance criteria, can be started)
In Progress (assigned, actively being worked)
In Review (PR open, awaiting approval)
Done (merged to main, documented)
Required Labels:
Priority:
priority: critical,priority: high,priority: lowType:
type: feature,type: bug,type: docs,type: infrastructureStatus:
blocked(with comment explaining blocker)
Board Maintenance:
Scrum Master updates at least twice per week
All team members responsible for moving their own cards
blockedlabel triggers immediate Scrum Master attention
Decision-Making Framework (GIST)
For proposing new features, technical approaches, or scope changes:
Goal: What problem are we solving? How does this align with zero-knowledge student verification and project success criteria?
Ideas: What are 2-3 alternative approaches? What are the tradeoffs?
Step-Project: What’s the smallest version we can build to validate this idea? Can we prototype in one sprint?
Tasks: Break down into implementable units (<8 hours each) with clear acceptance criteria.
Post-Conflict Protocol
After any conflict resolution:
Update Processes: If conflict revealed gap in this charter, propose amendment via PR
Reset RAG Status: Move from Red → Amber or Amber → Green with documented recovery plan
Blameless Retrospective: In next sprint retro, discuss what we learned as a system failure, not individual failure
Move Forward: Once resolved, discussion is closed-focus returns entirely to code and deliverables
Forgiveness Clause: Capstone is high-pressure and runs concurrently with other demanding coursework. We acknowledge stress happens, extract lessons from conflicts, and do not hold grudges. Every sprint is a fresh start.
Charter Amendments
Process:
Any team member can propose amendment via PR
Discuss in next scheduled team meeting
Requires 4 out of 5 votes to adopt
Version number increments, change log updated
Winter is coming. So is the deadline. Critique code, not teammates.
The North remembers. So does your Git history. Be kind.
Signatures
By signing below, all team members acknowledge they have read, understood, and agree to abide by the terms outlined in this Team Charter.
[TABLE]