diff --git a/.governance/manifest.json b/.governance/manifest.json index fb8faa7..33487eb 100644 --- a/.governance/manifest.json +++ b/.governance/manifest.json @@ -59,6 +59,7 @@ ".github/workflows/planfile-github-sync.yml", ".gitignore", ".governance/**", + ".planfile/**/*.fast.json", ".subactor/**", "AGENTS.md", "CLAUDE.md", diff --git a/.governance/standard-adoption.json b/.governance/standard-adoption.json index 6339828..4bc3650 100644 --- a/.governance/standard-adoption.json +++ b/.governance/standard-adoption.json @@ -19,34 +19,34 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S4", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -59,34 +59,34 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S4", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -99,29 +99,29 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -134,34 +134,34 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S4", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -174,34 +174,34 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S4", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -214,29 +214,29 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] }, @@ -249,29 +249,29 @@ "artifacts": [ { "target": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ], "evidence": [ { "level": "S0", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S1", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S2", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" }, { "level": "S3", "uri": ".governance/manifest.json", - "sha256": "d679a9f0bad4e2930929802daa26a01a7481e0a2e617f49774d2a34c025c7355" + "sha256": "e2f3cb82b08161e80bc44e15bf15265a4a28eee8196c63482cd0058ea97cf634" } ] } diff --git a/.planfile/config.yaml.fast.json b/.planfile/config.yaml.fast.json deleted file mode 100644 index eb250d4..0000000 --- a/.planfile/config.yaml.fast.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "yaml_mtime_ns": 1783110270526294700, "data": {"next_id": 66, "prefix": "PLF", "project": "planfile"}} \ No newline at end of file diff --git a/.planfile/sprints/backlog.yaml.fast.json b/.planfile/sprints/backlog.yaml.fast.json deleted file mode 100644 index 403c1f5..0000000 --- a/.planfile/sprints/backlog.yaml.fast.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "yaml_mtime_ns": 1775671166002965122, "data": {"sprint": {"id": "backlog", "name": "Backlog", "status": "active", "tickets": {"PLF-027": {"id": "PLF-027", "title": "Critical priority task - must be done first", "status": "open", "priority": "critical", "sprint": "backlog", "source": {"tool": "todo-import", "timestamp": "2026-04-01T15:06:52.002870", "context": {"source_file": "TODO_TEST.md", "line": 5}}, "description": "", "acceptance_criteria": [], "labels": [], "blocked_by": [], "blocks": [], "sync": {}, "history": [], "created_at": "2026-04-01T15:06:52.002879", "updated_at": "2026-04-01T15:06:52.002880"}, "GITHUB-14": {"title": "No title", "description": "", "status": "open", "assignee": null, "labels": ["setup", "integration", "priority-high", "planfile", "managed"], "external_id": "14", "backend": "github", "integration": "github"}, "GITHUB-13": {"title": "No title", "description": "", "status": "open", "assignee": null, "labels": ["setup", "integration", "priority-high", "planfile", "managed"], "external_id": "13", "backend": "github", "integration": "github"}, "GITHUB-11": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["setup", "integration", "priority-high", "planfile", "managed"], "external_id": "11", "backend": "github", "integration": "github"}, "GITHUB-9": {"title": "No title", "description": "", "status": "open", "assignee": null, "labels": ["setup", "integration", "priority-high", "planfile", "managed"], "external_id": "9", "backend": "github", "integration": "github"}, "GITHUB-8": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["setup", "integration", "priority-high", "planfile", "managed"], "external_id": "8", "backend": "github", "integration": "github"}, "GITHUB-7": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["setup", "integration", "priority: high", "priority-high", "planfile", "managed"], "external_id": "7", "backend": "github", "integration": "github"}, "GITHUB-6": {"title": "No title", "description": "", "status": "open", "assignee": null, "labels": ["enhancement", "planfile", "managed", "priority: low", "priority-low", "templates"], "external_id": "6", "backend": "github", "integration": "github"}, "GITHUB-5": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["enhancement", "planfile", "managed", "priority: normal", "priority-normal", "milestone"], "external_id": "5", "backend": "github", "integration": "github"}, "GITHUB-4": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["documentation", "planfile", "managed", "priority: low", "priority-low"], "external_id": "4", "backend": "github", "integration": "github"}, "GITHUB-3": {"title": "No title", "description": "", "status": "open", "assignee": null, "labels": ["planfile", "managed", "testing", "priority: normal", "priority-normal"], "external_id": "3", "backend": "github", "integration": "github"}, "GITHUB-2": {"title": "No title", "description": "", "status": "closed", "assignee": null, "labels": ["priority: high", "priority-high", "planfile", "managed", "webhook", "sync"], "external_id": "2", "backend": "github", "integration": "github"}, "PLF-045": {"id": "PLF-045", "title": "Login button not working on mobile", "status": "in_progress", "priority": "high", "sprint": "backlog", "description": "Users report login button is unresponsive on iOS Safari", "acceptance_criteria": [], "labels": ["bug", "mobile", "ios"], "blocked_by": [], "blocks": [], "sync": {}, "history": [], "created_at": "2026-04-04T06:13:48.511147", "updated_at": "2026-04-04T06:13:48.870148"}}}}} \ No newline at end of file diff --git a/.planfile/sprints/current.yaml.fast.json b/.planfile/sprints/current.yaml.fast.json deleted file mode 100644 index 82944a3..0000000 --- a/.planfile/sprints/current.yaml.fast.json +++ /dev/null @@ -1 +0,0 @@ -{"version": 1, "yaml_mtime_ns": 1783111435670776192, "data": {"sprint": {"id": "sprint-001", "name": "Sprint 1", "status": "active", "tickets": {"PLF-002": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T14:29:16.845661", "description": "", "history": [], "id": "PLF-002", "labels": [], "priority": "normal", "source": {"context": {"line": 5, "source_file": "TODO.md"}, "timestamp": "2026-04-01T14:29:16.845653", "tool": "todo-import"}, "sprint": "current", "status": "in_progress", "sync": {}, "title": "Organize generated markdown summaries into `docs/summaries/` directory", "updated_at": "2026-04-01T14:32:32.241512"}, "PLF-003": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T14:29:16.852176", "description": "", "history": [], "id": "PLF-003", "labels": [], "priority": "normal", "source": {"context": {"line": 6, "source_file": "TODO.md"}, "timestamp": "2026-04-01T14:29:16.852166", "tool": "todo-import"}, "sprint": "current", "status": "review", "sync": {}, "title": "Run projects in `examples/*` to ensure base correctness", "updated_at": "2026-04-01T14:32:32.759874"}, "PLF-004": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T14:29:16.860492", "description": "BLOCKED: Waiting for dependencies", "history": [], "id": "PLF-004", "labels": [], "priority": "normal", "source": {"context": {"line": 7, "source_file": "TODO.md"}, "timestamp": "2026-04-01T14:29:16.860483", "tool": "todo-import"}, "sprint": "current", "status": "blocked", "sync": {}, "title": "Refactor `planfile/analysis/file_analyzer.py` (God module)", "updated_at": "2026-04-01T14:32:33.279432"}, "PLF-026": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T15:01:52.871506", "description": "This is a test description for the new ticket system", "history": [], "id": "PLF-026", "labels": ["test,feature"], "priority": "high", "source": {"context": {}, "timestamp": "2026-04-01T15:01:52.868977", "tool": "human"}, "sprint": "current", "status": "open", "sync": {}, "title": "Test ticket for new feature", "updated_at": "2026-04-01T15:01:52.871512"}, "PLF-028": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T15:06:52.056360", "description": "", "history": [], "id": "PLF-028", "labels": [], "priority": "critical", "source": {"context": {"line": 6, "source_file": "TODO_TEST.md"}, "timestamp": "2026-04-01T15:06:52.056349", "tool": "todo-import"}, "sprint": "current", "status": "open", "sync": {}, "title": "Updated high priority task", "updated_at": "2026-04-01T15:08:49.881558"}, "PLF-029": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T15:06:52.107079", "description": "", "history": [], "id": "PLF-029", "labels": [], "priority": "medium", "source": {"context": {"line": 7, "source_file": "TODO_TEST.md"}, "timestamp": "2026-04-01T15:06:52.107069", "tool": "todo-import"}, "sprint": "current", "status": "open", "sync": {}, "title": "Medium priority task - normal priority", "updated_at": "2026-04-01T15:06:52.107080"}, "PLF-030": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T15:06:52.161212", "description": "", "history": [], "id": "PLF-030", "labels": [], "priority": "low", "source": {"context": {"line": 8, "source_file": "TODO_TEST.md"}, "timestamp": "2026-04-01T15:06:52.161200", "tool": "todo-import"}, "sprint": "current", "status": "open", "sync": {}, "title": "Low priority task - can wait", "updated_at": "2026-04-01T15:06:52.161213"}, "PLF-031": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T15:06:52.215992", "description": "", "history": [], "id": "PLF-031", "labels": [], "priority": "normal", "source": {"context": {"line": 9, "source_file": "TODO_TEST.md"}, "timestamp": "2026-04-01T15:06:52.215979", "tool": "todo-import"}, "sprint": "current", "status": "open", "sync": {}, "title": "⚪ Normal priority task - default priority", "updated_at": "2026-04-01T15:06:52.215993"}, "PLF-034": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T16:27:57.497384", "description": "Testing automatic GitHub synchronization", "history": [], "id": "PLF-034", "labels": ["github-test"], "priority": "high", "source": {"context": {}, "timestamp": "2026-04-01T16:27:57.494088", "tool": "human"}, "sprint": "current", "status": "open", "sync": {}, "title": "Test GitHub sync ticket", "updated_at": "2026-04-01T16:27:57.497388"}, "PLF-035": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-01T16:33:45.916778", "description": "Testing GitHub integration flag", "history": [], "id": "PLF-035", "labels": [], "priority": "high", "source": {"context": {}, "timestamp": "2026-04-01T16:33:45.914545", "tool": "human"}, "sprint": "current", "status": "open", "sync": {}, "title": "Test ticket for GitHub", "updated_at": "2026-04-01T16:33:45.916782"}, "PLF-036": {"acceptance_criteria": [], "assignee": null, "blocked_by": [], "blocks": [], "created_at": "2026-04-01T16:37:59.891340", "description": "", "history": [], "id": "PLF-036", "integration": ["github"], "labels": ["priority-high", "planfile", "managed"], "priority": "high", "source": {"context": {}, "timestamp": "2026-04-01T16:37:59.888815", "tool": "human"}, "sprint": "current", "status": "open", "sync": {}, "title": "GitHub sync test", "updated_at": "2026-04-01T16:37:59.891344"}, "PLF-037": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:12:21.690459", "description": "Users cannot login with OAuth provider", "history": [], "id": "PLF-037", "labels": ["bug", "backend", "security"], "priority": "high", "sprint": "current", "status": "open", "sync": {}, "title": "Fix authentication bug", "updated_at": "2026-04-04T06:12:21.690467"}, "PLF-038": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:12:21.769030", "description": "", "history": [], "id": "PLF-038", "labels": [], "priority": "critical", "source": {"context": {"duration": "5m", "metric": "memory", "server": "prod-01", "threshold": "90%"}, "timestamp": "2026-04-04T06:12:21.767629", "tool": "monitoring-system"}, "sprint": "current", "status": "open", "sync": {}, "title": "Production alert: High memory usage on prod-01", "updated_at": "2026-04-04T06:12:21.769033"}, "PLF-039": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:12:36.408230", "description": "Users report login button is unresponsive on iOS Safari", "history": [], "id": "PLF-039", "labels": ["bug", "mobile", "ios"], "priority": "high", "sprint": "current", "status": "open", "sync": {}, "title": "Login button not working on mobile", "updated_at": "2026-04-04T06:12:36.408235"}, "PLF-040": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:12:36.478769", "description": "Implement system-wide dark mode toggle", "history": [], "id": "PLF-040", "labels": ["feature", "ui", "accessibility"], "priority": "medium", "sprint": "current", "status": "open", "sync": {}, "title": "Add dark mode support", "updated_at": "2026-04-04T06:12:36.478772"}, "PLF-041": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:12:36.550755", "description": "Add examples for new endpoints", "history": [], "id": "PLF-041", "labels": ["docs", "api"], "priority": "low", "sprint": "current", "status": "open", "sync": {}, "title": "Update API documentation", "updated_at": "2026-04-04T06:12:36.550758"}, "PLF-042": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "comment": "Started investigation", "created_at": "2026-04-04T06:13:21.816916", "description": "Users report login button is unresponsive on iOS Safari", "history": [], "id": "PLF-042", "labels": ["bug", "mobile", "ios"], "priority": "high", "sprint": "current", "status": "in_progress", "sync": {}, "title": "Login button not working on mobile", "updated_at": "2026-04-04T06:13:22.164739"}, "PLF-043": {"acceptance_criteria": [], "assignee": "jane.smith", "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:21.891117", "description": "Implement system-wide dark mode toggle", "history": [], "id": "PLF-043", "labels": ["feature", "ui", "accessibility", "sprint-goal"], "priority": "high", "sprint": "current", "status": "open", "sync": {}, "title": "Add dark mode support", "updated_at": "2026-04-04T06:13:22.248984"}, "PLF-044": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:21.962918", "description": "Add examples for new endpoints", "history": [], "id": "PLF-044", "labels": ["docs", "api"], "priority": "low", "sprint": "current", "status": "open", "sync": {}, "title": "Update API documentation", "updated_at": "2026-04-04T06:13:21.962922"}, "PLF-046": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:48.590809", "description": "Implement system-wide dark mode toggle", "history": [], "id": "PLF-046", "labels": ["feature", "ui", "accessibility", "sprint-goal"], "priority": "high", "sprint": "current", "status": "open", "sync": {}, "title": "Add dark mode support", "updated_at": "2026-04-04T06:13:48.945138"}, "PLF-047": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:48.671028", "description": "Add examples for new endpoints", "history": [], "id": "PLF-047", "labels": ["docs", "api"], "priority": "low", "sprint": "current", "status": "open", "sync": {}, "title": "Update API documentation", "updated_at": "2026-04-04T06:13:48.671031"}, "PLF-048": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:48.973432", "description": "Intermittent timeouts during peak hours", "history": [], "id": "PLF-048", "labels": ["bug"], "priority": "critical", "source": {"context": {}, "timestamp": "2026-04-04T06:13:48.973423", "tool": "jira-migration"}, "sprint": "current", "status": "open", "sync": {}, "title": "Database connection timeout", "updated_at": "2026-04-04T06:13:48.973433"}, "PLF-049": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:49.049017", "description": "Add fuzzy search to user directory", "history": [], "id": "PLF-049", "labels": ["feature"], "priority": "medium", "source": {"context": {}, "timestamp": "2026-04-04T06:13:49.049003", "tool": "jira-migration"}, "sprint": "current", "status": "open", "sync": {}, "title": "Implement user search", "updated_at": "2026-04-04T06:13:49.049018"}, "PLF-050": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:13:49.129208", "description": "Reduce code complexity in auth.py", "history": [], "id": "PLF-050", "labels": ["chore"], "priority": "low", "source": {"context": {}, "timestamp": "2026-04-04T06:13:49.129195", "tool": "jira-migration"}, "sprint": "current", "status": "open", "sync": {}, "title": "Refactor auth module", "updated_at": "2026-04-04T06:13:49.129209"}, "PLF-051": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:01.942430", "description": "Deployment failed: Database connection error", "history": [], "id": "PLF-051", "labels": [], "priority": "high", "source": {"context": {"environment": "production", "exception": "Failed to connect to production database", "server": "prod-01", "traceback": "Traceback (most recent call last):\n File \"/home/tom/github/semcod/planfile/examples/python-api/03_integration.py\", line 83, in example_cli_tool_integration\n raise RuntimeError(\"Failed to connect to production database\")\nRuntimeError: Failed to connect to production database\n", "version": "2.1.0"}, "timestamp": "2026-04-04T06:14:01.940519", "tool": "deploy-tool"}, "sprint": "current", "status": "open", "sync": {}, "title": "[deploy-tool] Error: Deployment failed: Database connection error", "updated_at": "2026-04-04T06:14:01.942433"}, "PLF-052": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:02.028646", "description": "Metric CPU Usage exceeded threshold", "history": [], "id": "PLF-052", "labels": [], "priority": "critical", "source": {"context": {"metric": "CPU Usage", "threshold": 90, "timestamp": "2026-04-04T08:14:02.026906", "value": 95}, "timestamp": "2026-04-04T06:14:02.027090", "tool": "system-monitor-metrics"}, "sprint": "current", "status": "open", "sync": {}, "title": "🚨 CPU Usage: 95 exceeds 90", "updated_at": "2026-04-04T06:14:02.028649"}, "PLF-053": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:02.117871", "description": "Metric Memory Usage exceeded threshold", "history": [], "id": "PLF-053", "labels": [], "priority": "critical", "source": {"context": {"metric": "Memory Usage", "threshold": 85, "timestamp": "2026-04-04T08:14:02.116702", "value": 88}, "timestamp": "2026-04-04T06:14:02.116863", "tool": "system-monitor-metrics"}, "sprint": "current", "status": "open", "sync": {}, "title": "🚨 Memory Usage: 88 exceeds 85", "updated_at": "2026-04-04T06:14:02.117873"}, "PLF-054": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:02.205423", "description": "Metric Disk Usage exceeded threshold", "history": [], "id": "PLF-054", "labels": [], "priority": "critical", "source": {"context": {"metric": "Disk Usage", "threshold": 90, "timestamp": "2026-04-04T08:14:02.204157", "value": 92}, "timestamp": "2026-04-04T06:14:02.204337", "tool": "system-monitor-metrics"}, "sprint": "current", "status": "open", "sync": {}, "title": "🚨 Disk Usage: 92 exceeds 90", "updated_at": "2026-04-04T06:14:02.205425"}, "PLF-055": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:02.292417", "description": "CI Pipeline failed: 2 tests failed", "history": [], "id": "PLF-055", "labels": [], "priority": "high", "source": {"context": {"branch": "main", "commit": "abc123", "failed_tests": ["tests/test_api.py::test_login", "tests/test_db.py::test_connection"], "total_tests": 3}, "timestamp": "2026-04-04T06:14:02.291257", "tool": "ci-pipeline"}, "sprint": "current", "status": "open", "sync": {}, "title": "[ci-pipeline] Error: CI Pipeline failed: 2 tests failed", "updated_at": "2026-04-04T06:14:02.292419"}, "PLF-056": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:14:02.382778", "description": "Function process_data raised ValueError", "history": [], "id": "PLF-056", "labels": [], "priority": "high", "source": {"context": {"args": "([],)", "exception": "Empty data provided", "function": "process_data", "kwargs": "{}"}, "timestamp": "2026-04-04T06:14:02.381716", "tool": "data-processor"}, "sprint": "current", "status": "open", "sync": {}, "title": "[data-processor] process_data failed: Empty data provided", "updated_at": "2026-04-04T06:14:02.382781"}, "PLF-057": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:22:30.894280", "description": "DB connection error", "history": [], "id": "PLF-057", "labels": ["error", "auto-generated"], "priority": "high", "source": {"context": {"db": "prod", "exception": "Database connection failed", "exception_type": "RuntimeError", "traceback": "Traceback (most recent call last):\n File \"/home/tom/github/semcod/planfile/examples/python-api/03_integration_simple.py\", line 24, in main\n raise RuntimeError(\"Database connection failed\")\nRuntimeError: Database connection failed\n"}, "timestamp": "2026-04-04T06:22:30.892272", "tool": "my-service"}, "sprint": "current", "status": "open", "sync": {}, "title": "[my-service] DB connection error", "updated_at": "2026-04-04T06:22:30.894297"}, "PLF-058": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:22:31.008845", "description": "Metric CPU exceeded threshold of 90", "history": [], "id": "PLF-058", "labels": ["alert", "metric", "auto-generated"], "priority": "critical", "source": {"context": {"metric": "CPU", "server": "prod-01", "threshold": 90, "timestamp": "2026-04-04T06:22:31.007714", "value": 95}, "timestamp": "2026-04-04T06:22:31.007736", "tool": "my-service-metrics"}, "sprint": "current", "status": "open", "sync": {}, "title": "🚨 CPU: 95 exceeds 90", "updated_at": "2026-04-04T06:22:31.008848"}, "PLF-059": {"acceptance_criteria": [], "blocked_by": [], "blocks": [], "created_at": "2026-04-04T06:22:31.121761", "description": "risky_operation failed: Something went wrong", "history": [], "id": "PLF-059", "labels": ["error", "auto-generated"], "priority": "high", "source": {"context": {"args": "()", "exception": "Something went wrong", "exception_type": "ValueError", "function": "risky_operation", "kwargs": "{}", "traceback": "Traceback (most recent call last):\n File \"/home/tom/github/semcod/planfile/planfile/extensions/__init__.py\", line 96, in wrapper\n return func(*args, **kwargs)\n File \"/home/tom/github/semcod/planfile/examples/python-api/03_integration_simple.py\", line 39, in risky_operation\n raise ValueError(\"Something went wrong\")\nValueError: Something went wrong\n"}, "timestamp": "2026-04-04T06:22:31.120689", "tool": "my-service"}, "sprint": "current", "status": "open", "sync": {}, "title": "[my-service] risky_operation failed: Something went wrong", "updated_at": "2026-04-04T06:22:31.121763"}, "PLF-062": {"id": "PLF-062", "name": "Split ticket history out of sprint YAML (append-only JSONL)", "status": "open", "priority": "high", "sprint": "current", "source": {"tool": "claude-session", "timestamp": "2026-07-03T20:22:53.791387Z", "context": {}}, "description": "current.yaml in active projects reaches ~27k lines for ~13 open tickets because full per-ticket history lives inline and every mutation rewrites the whole file (lock contention: config.yaml.lock, race risk with parallel loops). Move history to append-only JSONL (per ticket or shared); keep YAML as current-state only. Evidence: semcod/koru sprint file 2026-07-03.", "acceptance_criteria": [], "labels": ["storage", "performance"], "blocked_by": [], "blocks": [], "files": [], "sync": {}, "history": [], "created_at": "2026-07-03T20:22:53.803408Z", "updated_at": "2026-07-03T20:22:53.803413Z"}, "PLF-063": {"id": "PLF-063", "name": "JSON Schema validation for tickets", "status": "open", "priority": "normal", "sprint": "current", "source": {"tool": "claude-session", "timestamp": "2026-07-03T20:22:54.691625Z", "context": {}}, "description": "Enforce ticket shape (executor kinds, priority enum, required fields) at create/import across all clients, not only CLI-side guards. Complements the 2026-07-03 placeholder guard; would also catch malformed automation-generated tickets.", "acceptance_criteria": [], "labels": ["api", "quality"], "blocked_by": [], "blocks": [], "files": [], "sync": {}, "history": [], "created_at": "2026-07-03T20:22:54.705444Z", "updated_at": "2026-07-03T20:22:54.705449Z"}, "PLF-064": {"id": "PLF-064", "name": "Native dedupe-key on ticket create", "status": "open", "priority": "normal", "sprint": "current", "source": {"tool": "claude-session", "timestamp": "2026-07-03T20:23:29.708971Z", "context": {}}, "description": "koru-gate-capture dedupes by gate-finding:KEY markers client-side by listing and parsing all tickets. Add: ticket create --dedupe-key KEY with atomic create-or-append-note semantics keyed on an external stable key.", "acceptance_criteria": [], "labels": ["api"], "blocked_by": [], "blocks": [], "files": [], "sync": {}, "history": [], "created_at": "2026-07-03T20:23:29.722312Z", "updated_at": "2026-07-03T20:23:29.722317Z"}, "PLF-065": {"id": "PLF-065", "name": "planfile init crashes: NameError _infer_python_project_type", "status": "open", "priority": "high", "sprint": "current", "source": {"tool": "claude-session", "timestamp": "2026-07-03T20:24:30.525468Z", "context": {}}, "description": "Reproduced 2026-07-03 in semcod/regix: planfile init raises NameError: name '_infer_python_project_type' is not defined (ticket creation via auto-discover still works). Missing import/def in the init path.", "acceptance_criteria": [], "labels": ["bug"], "blocked_by": [], "blocks": [], "files": [], "sync": {}, "history": [{"timestamp": "2026-07-03T20:43:55.666005+00:00", "action": "update", "source": "planfile.store", "changes": ["outputs"]}], "created_at": "2026-07-03T20:24:30.536751Z", "updated_at": "2026-07-03T20:43:55.665977+00:00", "outputs": {"artifacts": [], "notes": ["Fixed in repo (commit above): eight imports restored in project_detector/pyproject.py + regression test tests/test_project_detector_init.py; full planfile suite green. Root cause of the confusing repro: koru/.venv/bin/planfile (published wheel without the fix) shadows the editable install on PATH — resolves itself on next publish."]}}}}}} \ No newline at end of file diff --git a/project/ticket-252/README.md b/project/ticket-252/README.md new file mode 100644 index 0000000..0401fd7 --- /dev/null +++ b/project/ticket-252/README.md @@ -0,0 +1,23 @@ +# Ticket 252: Untrack generated fastio sidecar mirrors from Git + +- **ID**: ticket-252 +- **Owner**: agent:antigravity +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-10-28 + +## Goal and scope + +Assign `.planfile/**/*.fast.json` to `governance.ownedPaths` in `.governance/manifest.json` and untrack the generated `.planfile/*.fast.json` sidecar mirrors from Git index so read-only CLI/pytest operations cannot dirty tracked files (closes #272). + +- `SESSION_EXECUTION_AUTHORIZATION`: autonomous session execution requested by user. + +## Acceptance criteria + +- [x] AC-01: Add `.planfile/**/*.fast.json` to `governance.ownedPaths` in `.governance/manifest.json` and update `.governance/standard-adoption.json`. +- [x] AC-02: Remove `.planfile/config.yaml.fast.json`, `.planfile/sprints/backlog.yaml.fast.json`, and `.planfile/sprints/current.yaml.fast.json` from the Git index while keeping `*.fast.json` ignored in `.gitignore`. + +## Tracking boundary + +This directory contains the minimal reviewed intent. Optional participant prose +and raw command logs are not required delivery output. diff --git a/project/ticket-252/intent.json b/project/ticket-252/intent.json new file mode 100644 index 0000000..ee34cfe --- /dev/null +++ b/project/ticket-252/intent.json @@ -0,0 +1,85 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-252", + "summary": "Untrack generated fastio sidecar mirrors from Git", + "workstream": "governance", + "classification": { + "kind": "BUG", + "priority": "P1", + "origin": "regression" + }, + "allowedPaths": [ + "project/ticket-252/**", + "TODO.md", + "project/TICKETS.md", + ".governance/manifest.json", + ".governance/standard-adoption.json", + ".planfile/**/*.fast.json" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null, + "delivery": { + "targetBranch": "main", + "acceptedBaseSha": "4adc9a21c3ee03fd11fa4d83ecdccd8dde701147", + "outcome": "Assign .planfile/**/*.fast.json to governance.ownedPaths in .governance/manifest.json and untrack the generated .planfile/*.fast.json sidecar mirrors from the Git index while keeping *.fast.json ignored.", + "complexity": "S", + "estimatedMinutes": 15, + "budgets": { + "maxImplementationFiles": 5, + "maxAffectedComponents": 1, + "maxPublicInterfaceChanges": 0, + "maxRuntimeDependencies": 0 + }, + "nonGoals": [ + "Do not modify runtime Python code or dependency lockfiles." + ], + "architecture": { + "status": "accepted", + "decision": "Add .planfile/**/*.fast.json to governance.ownedPaths in .governance/manifest.json, refresh .governance/standard-adoption.json manifest digest, and untrack the three .planfile/**/*.fast.json files from Git.", + "components": [ + { + "name": "governance manifest and fastio mirror index cleanup", + "paths": [ + ".governance/manifest.json", + ".governance/standard-adoption.json", + ".planfile/config.yaml.fast.json", + ".planfile/sprints/backlog.yaml.fast.json", + ".planfile/sprints/current.yaml.fast.json" + ] + } + ], + "responsibilityChanges": false, + "interfaceChanges": [], + "dataChanges": [], + "ui": { + "impact": "none", + "states": [], + "evidence": [] + }, + "rollback": "git revert of the governance fastio mirror untracking commit." + }, + "runtimeDependencies": [], + "validation": [ + { + "criterion": "AC-01", + "commands": [ + "./project/governance-check.sh --base origin/main" + ], + "evidence": ".governance/manifest.json includes .planfile/**/*.fast.json under governance.ownedPaths and .governance/standard-adoption.json digest matches." + }, + { + "criterion": "AC-02", + "commands": [ + "python3 -m pytest -q tests/test_fastio.py tests/test_fastio_cli.py", + "./project/governance-check.sh --base origin/main" + ], + "evidence": "git ls-files '*.fast.json' is empty and fastio tests pass." + } + ] + } +}