Dogfooding Checklist
February 1, 2026 · View on GitHub
This document provides daily, weekly, and monthly checklists to ensure we're actively dogfooding Plures tools and filing issues when friction is discovered.
Philosophy
Dogfooding = Using + Observing + Reporting
We dogfood to:
- Find friction before users do
- Validate our tools work in real scenarios
- Generate actionable improvements
- Build empathy with users
Key Principle: Prefer small, high-signal issues over comprehensive reports. File friction immediately when encountered.
Daily Development Workflow
Before Starting Work
-
Pull Latest: Ensure you have the latest changes
git pull origin main -
Build & Validate: Run the build and validation
npm run build npm run validate:contracts -
Check for Failures: Review any contract validation warnings
- If warnings exist, assess if they relate to your work
- File dogfooding issue if validation is unclear or unhelpful
During Development
When adding or modifying rules/constraints:
-
Define Contract: Create contract via
defineContract()const myContract = defineContract({ behavior: "Clear description of what this does", examples: [/* Given/When/Then scenarios */], invariants: [/* Constraints that must hold */], assumptions: [/* Explicit assumptions with confidence */], references: [/* Links to docs, issues, discussions */] }); -
Attach Contract: Add to rule/constraint meta
const myRule = defineRule({ id: 'module.action', meta: { contract: myContract }, // ... }); -
Write Tests: Cover every Given/When/Then example
- Name tests to include rule ID for validation tracking
- Test all invariants explicitly
-
Use Praxis CLI: Leverage CLI for generation when applicable
npx praxis generate --schema src/schemas/my-schema.ts -
File Friction Immediately: When you encounter any friction
- Confusing error message? → File issue
- Unclear API? → File issue
- Manual step that should be automated? → File issue
- Use the dogfooding issue template (see below)
Before Committing
-
Scan Rules: Run the rule scanner
npm run scan:rules -
Validate Contracts: Ensure all contracts are valid
npm run validate:contracts -
Run Tests: Ensure tests pass
npm test -
TypeCheck: Verify no type errors
npm run typecheck
Weekly Review (Friday or End of Sprint)
Tool Usage Review
-
Review Plures Tools Usage: Check which tools were used this week
- Praxis CLI: What commands did you use?
- PluresDB: Did you use it in development or tests?
- State-Docs: Did you generate documentation?
- CodeCanvas: Did you visualize any schemas?
- Unum: Did you use distributed features?
-
Identify Gaps: What could you have used but didn't?
- File a note or issue about why you didn't use a tool
- Was it not obvious when to use it?
- Was it too difficult to set up?
-
Review Filed Issues: Check dogfooding issues from the week
- Are they tagged with
dogfoodlabel? - Are they small and actionable?
- Do they have proper context?
- Are they tagged with
Contract Coverage Review
-
Run Coverage Check: Validate contract coverage
npm run validate:contracts -
Review Contract Gaps: Check for rules without contracts
- Prioritize high-impact rules
- File issues for contract gaps if needed
-
Update Documentation: If contracts changed behavior
- Update
docs/decision-ledger/BEHAVIOR_LEDGER.md - Update
docs/decision-ledger/LATEST.md
- Update
Monthly Assessment (First Week of Month)
Strategic Review
-
Review Plures Tools Inventory
- Update
docs/PLURES_TOOLS_INVENTORY.md - Reassess adoption status and priorities
- Update usage levels and integration status
- Update
-
Analyze Dogfooding Issues
- Group issues by tool/component
- Identify patterns and systemic problems
- Prioritize high-impact improvements
-
Measure Adoption Progress
- How many new tools were adopted this month?
- What percentage of development uses dogfooded tools?
- Are we using tools more effectively?
Contract Quality Review
-
Contract Drift Analysis
- Run ledger snapshot and compare to last month
- Identify rules with frequent contract changes
- Assess if changes indicate instability or evolution
-
Test Coverage for Contracts
- Ensure all contract examples have corresponding tests
- Verify invariants are tested
- Check for untested edge cases
Documentation Update
- Update Adoption Status: Reflect changes in inventory
- Share Learnings: Document what worked and what didn't
- Update Guidelines: If new patterns emerge, update CONTRIBUTING.md
Filing Dogfooding Issues
When to File
File an issue immediately when you encounter:
- Confusing error messages or validation output
- Unclear or missing documentation
- Manual steps that should be automated
- Unexpected behavior from tools
- Difficulty using a feature
- Missing features that would help
- Performance issues or slow commands
How to File
- Use the Dogfooding Issue Template:
.github/ISSUE_TEMPLATE/dogfooding.yml - Be Specific: Focus on one friction point per issue
- Provide Context: Include what you were trying to do
- Suggest Solutions: If you have ideas, share them
- Link to Related Work: Reference PRs, commits, or conversations
Example Good Issues
✅ Good: "Praxis CLI validate command doesn't show which file has the missing contract"
❌ Bad: "Validation is confusing"
✅ Good: "State-Docs generator requires manual configuration - should auto-detect schema files"
❌ Bad: "State-Docs is hard to use"
✅ Good: "No example of using CodeCanvas to visualize a schema with nested objects"
❌ Bad: "CodeCanvas documentation is incomplete"
Quick Reference
Essential Commands
# Build and validate
npm run build
npm run validate:contracts
# Scan and check
npm run scan:rules
npm test
npm run typecheck
# Generate docs
npx praxis docs generate
# Canvas export
npx praxis canvas src/schemas/app.schema.ts
Where to Find Things
- Tools Inventory:
docs/PLURES_TOOLS_INVENTORY.md - Decision Ledger:
docs/decision-ledger/DOGFOODING.md - Contributing:
CONTRIBUTING.md - Examples:
examples/directory
Meta-Dogfooding
Even this checklist is dogfooding! If you find:
- Missing items that should be checked
- Steps that are unclear
- Friction in following this checklist
File a dogfooding issue! Tag it with dogfood and documentation.
Last Updated: 2026-02-01
Maintainer: Praxis Core Team