Ticket Structure
Each incident ticket is a JSON file stored in theincidents/ directory with a standardized structure. All fields provide critical information for investigating and resolving issues.
Complete Example
Here’s a complete incident ticket showing all fields:Field Reference
id
Type: String (required) Format:INC-XXX where XXX is a zero-padded number
Description: Unique identifier for the incident. Use the numbering convention:
INC-001toINC-099: Python service incidentsINC-101toINC-199: Node.js service incidents
title
Type: String (required) Description: Concise summary of the issue. Should include:- The affected endpoint or feature
- The symptom or error type
- Context about when it occurs
- Be specific (include endpoint names, error codes)
- Keep under 100 characters
- Front-load the most important information
severity
Type: String (required) Description: Priority level indicating urgency and impact. Valid Values:"P0 - Critical"- Complete service outage or data loss"P1 - Critical"- Core functionality broken, blocking users"P2 - High"- Major feature degraded, workaround available"P3 - Medium"- Minor issue, limited user impact
service
Type: String (required) Description: Which microservice is affected by this incident. Valid Values:"python-service"- Python Flask API"node-service"- Node.js Express API
reported_by
Type: String (required) Description: Team or individual who reported the incident. Common Values:"Frontend Team""Backend Team""DevOps Team""Platform Team""Customer Support""QA Team"
environment
Type: String (required) Description: Environment where the issue occurs. Valid Values:"development"- Local development"staging"- Staging environment"production"- Production environment
timestamp
Type: String (required) Format: ISO 8601 datetime with timezone (UTC) Description: When the incident was first reported or observed. Example:description
Type: String (required) Description: Detailed explanation of the issue including:- What is broken
- When it started occurring
- User impact
- Any relevant context
- Start with the user impact
- Mention when the issue started
- Include relevant context (deployment, config changes)
- Be clear and concise
steps_to_reproduce
Type: Array of strings (required) Description: Step-by-step instructions to reproduce the issue. Should be detailed enough that anyone can follow them and see the same behavior. Best Practices:- Number steps sequentially
- Include exact API calls, payloads, or user actions
- Specify what should happen at each step
- Include sample data where relevant
error_log
Type: String (required) Description: Actual error messages, stack traces, or log output from the system. Include:- Error type and message
- Stack trace (especially the top frames)
- File names and line numbers
- Relevant log entries
- Copy errors verbatim
- Include stack traces
- Note file paths and line numbers
- If no error occurs, describe the symptom (e.g., “No errors — endpoint returns correct data but very slowly”)
expected_behavior
Type: String (required) Description: What should happen when the system is working correctly. Be specific about:- Expected response codes
- Expected response format
- Expected timing/performance
- Expected side effects
actual_behavior
Type: String (required) Description: What actually happens when the issue occurs. Be specific about:- Actual response codes
- Actual response format
- Actual timing/performance
- Actual side effects
recent_changes
Type: String (required) Description: What changed before the issue appeared. Include:- Code changes (commits, PRs, refactors)
- Dependency updates
- Configuration changes
- Infrastructure changes
- Deployments
- Be specific about what changed
- Include version numbers for dependency updates
- Mention relevant commits or PRs if known
- If unknown, state “No recent changes known”
tags
Type: Array of strings (required) Description: Categorization labels for filtering and analysis. Use consistent tag names to enable trend analysis. Common Tag Categories: Issue Type:"runtime-crash"- Service crashes or exits"performance"- Slow response times"data-corruption"- Data integrity issues"security"- Security vulnerabilities
"authentication"- Login, registration, tokens"database"- Database queries, connections"api"- API endpoints"validation"- Input validation
"misconfiguration"- Configuration issues"dependency"- Third-party library issues"n+1-query"- Database query inefficiency"async-error"- Async/promise handling"race-condition"- Timing-dependent bugs
"blocking"- Blocks user workflows"process-exit"- Causes service to exit"data-loss"- May cause data loss
"environment"- Environment-specific issues"production-only"- Only occurs in production
Creating a New Ticket
Use this template to create new incident tickets:Real-World Examples
Example 1: Runtime Crash (Node.js)
Example 2: Configuration Issue (Python)
Example 3: Performance Issue (Python)
Validation Checklist
Before submitting an incident ticket, verify:- ID follows the numbering convention
- Title is specific and concise
- Severity matches the user impact
- Service is correctly identified
- Environment is specified
- Timestamp is in ISO 8601 format
- Description explains the issue clearly
- Reproduction steps are detailed and complete
- Error logs are included (or noted if none)
- Expected behavior is clearly stated
- Actual behavior is clearly stated
- Recent changes are documented
- Tags are appropriate and consistent
Next Steps
- Review Getting Started for incident workflow and best practices
- Browse existing incidents in
incidents/directory for more examples - Set up templates or scripts to generate new tickets from this format