Currently planfile has confusing data storage:
planfile.yamlcontains strategy metadata with unusedtickets: {}fields.planfile/sprints/contains the actual tickets (runtime data)- Integration configurations are mixed with ticket data
- Users are confused about where the "real" data lives
The .planfile/ directory becomes the canonical store for ALL ticket data:
.planfile/
├── config.yaml # Project configuration (name, prefix, etc.)
├── sprints/
│ ├── current.yaml # Current sprint tickets
│ ├── backlog.yaml # Backlog tickets
│ └── done.yaml # Completed tickets
└── sync/
└── [integration-sync-state]
All integration configurations move to a dedicated file:
# integrations.yaml
integrations:
github:
type: github
config:
token: ${GITHUB_TOKEN}
repo: semcod/planfile
sync:
enabled: true
direction: both
gitlab:
type: gitlab
config:
token: ${GITLAB_TOKEN}
project_id: ${GITLAB_PROJECT_ID}
sync:
enabled: true
direction: both
jira:
type: jira
config:
email: ${JIRA_EMAIL}
token: ${JIRA_TOKEN}
url: ${JIRA_URL}
project: ${JIRA_PROJECT}
sync:
enabled: true
direction: bothThe main planfile.yaml becomes purely strategic:
# planfile.yaml
name: "Project Strategy"
description: "High-level project strategy and goals"
project:
name: "My Project"
description: "Project description"
prefix: "PROJ"
strategy:
goals:
- "Goal 1"
- "Goal 2"
quality_gates:
- "CC̄ ≤ 3.0"
- "Test coverage ≥ 80%"- Remove
tickets: {}from Sprint model in planfile.yaml - Ensure all ticket operations use
.planfile/sprints/exclusively
- Create
planfile/core/integrations.pyfor integration config management - Update importers to use integration configs from
integrations.yaml - Add
planfile integrationsCLI command for managing integrations
- Split all examples into:
planfile.yaml(strategy only)integrations.yaml(integration configs)- Ticket data in
.planfile/(runtime)
- Update documentation to reflect clear separation
planfile ticketcommands always work with.planfile/planfile syncusesintegrations.yamlplanfile importuses integration configs for tool-specific settings
-
Clarity: Everyone knows where to find what
- Tasks →
.planfile/ - Integrations →
integrations.yaml - Strategy →
planfile.yaml
- Tasks →
-
Separation of Concerns:
- Runtime data (tickets) separate from configuration
- Integration configs separate from project strategy
- Each file has a single responsibility
-
Better UX:
- No more confusion about why
planfile.yamldoesn't show tickets - Clear mental model for users
- Easier to backup/sync specific parts
- No more confusion about why
- Update Sprint model to remove tickets field
- Create IntegrationConfig model and manager
- Add integrations.yaml support
- Update all importers to use integration configs
- Create
planfile integrationsCLI command - Update all examples to use new structure
- Update documentation
- Add migration guide for existing users