Pyrite Prioritized Backlog
Active items in priority order across three tracks: UI (web application features), AI (agent workflows, LLM integration), and Core (data model, storage, schema). See roadmap for milestone themes and definitions of done.
---
Prioritized Next Up
Recommended execution order. Grouped by milestone.
0.12 — Distribution (done):
| Priority | Item | Effort | Status | |----------|------|--------|--------| | 1 | pypi-publish | S | done | | 2 | mcp-submission-update | XS | done |
0.13 — Human & Agent UX Hardening:
Web UI:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | web-ui-logout-button | XS | No logout = blocked users | done | | 2 | web-ui-version-history-fix | XS | Broken feature | done | | 3 | web-ui-type-colors-consolidation | XS | Deduplicate type→color mappings | done | | 4 | web-ui-page-titles | XS | Missing browser tab titles | done | | 5 | web-ui-dead-code-cleanup | XS | Remove unused code | done | | 6 | web-ui-loading-states | S | Standardize loading indicators | done | | 7 | web-ui-accessibility-fixes | S | aria-labels, keyboard nav | done | | 8 | web-ui-mobile-responsive | S | Mobile viewport fixes | done | | 9 | web-ui-collections-save | S | Save collection views | done | | 10 | web-ui-first-run-experience | S | Empty-state onboarding | done | | 11 | web-ui-starred-entries | S | Restore starred entries feature | done | | 12 | ux-accessibility-fixes | M | Original accessibility audit items | done | | 13 | playwright-integration-tests | M | E2E test coverage | done | | 14 | web-ui-review-hardening | S | Final pre-launch UI gate | done |
Agent DX (CLI + MCP + REST): All done.
| Priority | Item | Effort | Status | |----------|------|--------|--------| | 14 | bug-mcp-kb-create-places-entries-at-kb-root-instead-of-type-directory | S | done | | 15 | bug-kb-update-mcp-tool-returns-posixpath-serialization-error | S | done | | 16 | mcp-tool-kb-batch-read-for-multi-entry-retrieval-in-one-call | S | done | | 17 | mcp-search-add-fields-parameter-for-token-efficient-results | M | done | | 18 | mcp-tool-kb-list-entries-for-lightweight-kb-index-browsing | M | done | | 19 | mcp-tool-kb-recent-for-what-changed-orientation-queries | M | done | | 20 | clarify-metadata-vs-top-level-field-mapping-in-mcp-create-update-tools | M | done | | 21 | agent-oriented-error-responses-across-cli-and-mcp | L | done |
0.14 — Auth & Rate Limiting:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | mcp-rate-limiting | S | Required for public-facing endpoints | done | | 2 | oauth-providers Phase 1 | L | GitHub OAuth — "Sign in with GitHub" | done | | 3 | per-kb-permissions | L | Per-KB ACL + ephemeral KB sandbox | done |
0.15 — Deployment & Demo (done):
| Priority | Item | Effort | Status | |----------|------|--------|--------| | 1 | container-deployment Phase 1 | M | done | | 2 | pyrite-website | M | done | | 3 | demo-site-deployment | M | done | | 4 | byok-ai-gap-analysis | M | done |
0.16 — Onboarding & Docs (launch release):
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | pypi-trusted-publisher | S | Configure OIDC trusted publisher for automated PyPI releases | manual (PyPI settings) | | 2 | container-deployment Phase 2 | S | One-click deploy buttons (Railway, Render, Fly.io) | done | | 3 | personal-kb-repo-backing | M | Export KB to GitHub repo + tiers | done | | 4 | Getting Started tutorial | S | Newcomer-friendly onboarding | done | | 5 | plugin-writing-tutorial | S | Build a plugin with Claude Code | done | | 6 | awesome-plugins-page | XS | Curated plugin listing | done | | 7 | pyrite-ci-command | S | CI/CD schema + link validation | done | | 8 | web-ui-alpha-banner | S | Alpha badge, feedback button, error "report this" links | done | | 9 | doc-openai-mcp-integration | XS | OpenAI / Codex MCP connection docs | done | | 10 | doc-gemini-mcp-integration | XS | Gemini CLI / Antigravity MCP connection docs | done |
0.17 — Cleanup & Hardening:
Bugs (close out known issues):
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | entry-id-collision-across-types | M | Silent index overwrites from title-derived ID collisions | done (explicit `id` fields added) | | 2 | priority-type-mismatch | S | DB Integer column vs string values from entry types | done (column changed to String) | | 3 | sw-adrs-date-field-empty | XS | sw adrs reading date from metadata instead of DB column | done (column-first reads) | | 4 | sw-mcp-tools-read-status-from-metadata-json-instead-of-db-column | S | sw_* MCP tools read status from metadata JSON instead of DB column | done (column-first fallback) | | 5 | schema-validate-cli-command | M | No validation gate between authoring and indexing | done (`schema validate` + pre-commit hook) |
Reliability:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 5 | api-module-level-singletons | S | Test isolation risk from module-level globals in api.py | done | | 6 | plugin-hook-atomicity | S | Hook failures can leave partial state — need transactional wrapping | done | | 7 | plugin-discovery-strict-mode | XS | Surface plugin load failures during development | done |
Developer experience:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 8 | mcp-body-truncation-docs | XS | Document body truncation + pagination for agents | done (tool schemas updated) | | 9 | embedding-service-prewarm | S | Reduce cold-start latency on first semantic search | done | | 10 | import-cycle-detection | XS | Guard against circular imports as codebase grows | done | | 11 | kb-compaction-command-and-freshness-qa-rules | S | Detect archival candidates, type-aware staleness | done |
0.18 — Architecture & Ecosystem:
Architecture (from deep-module evaluation):
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 0 | kb-service-decomposition | L | KBService is a 45-method god-class — extract GraphService, EphemeralKBService, QuotaService, ExportService | done | | 1 | schema-module-decomposition | M | schema.py mixes 4+ concerns in 1,157 lines — split into focused submodules | done | | 2 | search-service-kb-service-overlap | S | Duplicate methods between SearchService and KBService | done | | 3 | dynamic-subdirectory-paths | M | Template subdirectories (`{status}`) for auto file organization | done | | 4 | reserved-field-validation | S | Prevent kb.yaml field names from colliding with reserved Entry fields | done | | 5 | adr-0018-web-ui-kb-management-backlog | XS | Design doc for git fork-based multi-user KB management | done |
Cleanup (from 0.17 stale proposed → completed):
| Priority | Item | Effort | Status | |----------|------|--------|--------| | — | factory-open-closed | S | done (0.17) | | — | plugin-registry-deduplication | S | done (0.17) | | — | import-cycle-detection | XS | done (0.17) | | — | embedding-service-prewarm | S | done (0.17) | | — | plugin-hook-atomicity | S | done (0.17) | | — | plugin-discovery-strict-mode | XS | done (0.17) | | — | api-module-level-singletons | S | done (0.17) |
Ecosystem:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 0 | entry-protocol-mixins | L | Composable field protocols (ADR-0017), prerequisite for extension-type-protocols | done | | 1 | software-project-plugin | L | Evolves from software-kb, grabs dev team eyeballs | done (Wave 1 scope) | | 2 | investigative-journalism-plugin | XL | Proves general-purpose, different audience | done | | 3 | extension-registry | M | Public directory for sharing extensions | | | 4 | extension-type-protocols Phase 1 | L | Protocol definitions for extension types | | | 5 | obsidian-migration | M | Import from Obsidian vaults | | | 6 | pkm-capture-plugin | L | Personal knowledge management capture | |
Pre-1.0 — Extension Extraction:
| Priority | Item | Effort | Rationale | |----------|------|--------|-----------| | 1 | plugin-repo-extraction | M | Extract extensions to separate repos/PyPI. In-tree for now as living examples + test coverage. |
Post-launch — KB Quality & Lifecycle:
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | entry-lifecycle-field-and-search-filtering | S | Archive entries without deleting, filter from search | done |
Agent Workflow (ADR-0019 — Kanban for Agent Teams):
| Priority | Item | Effort | Rationale | Status | |----------|------|--------|-----------|--------| | 1 | kanban-entity-types | L | Milestone type, board config (board.yaml), review workflow | done | | 2 | standard-type-split | M | Split standard → programmatic_validation + development_convention | done | | 3 | kanban-mcp-tools | L | sw_pull_next, sw_context_for_item, sw_review_queue, sw_claim, sw_submit, sw_review, sw_log | done | | 4 | work-session-log | S | sw_log tool + WorkLogEntry for persisting session context | done | | 5 | enhance-orient-for-software-type-kbs-with-kanban-and-architecture-context | M | Orient command with kanban board and architecture overview | proposed |
Future:
| Priority | Item | Effort | Rationale | |----------|------|--------|-----------| | 1 | intent-layer | M | Guidelines, goals, rubrics for entry quality | done | | 2 | event-bus-webhooks | M | Integration story, live graph updates | | 3 | kb-orchestrator-skill | M | Multi-KB agent coordination pattern | | 4 | db-backup-restore | S | Operational tooling | done | | 5 | search-relevance-boost-by-entry-type | M | Type-aware search ranking + intent integration | | 6 | protocol-versioning-implementation | M | Runtime protocol satisfaction checking (ADR-0014) | | 7 | async-index-rebuild | M | Synchronous sync blocks CLI/API for large KBs | done |
---
Open Items
In Progress
| # | Item | Kind | Effort | Status | Notes | |---|------|------|--------|--------|-------| | 79 | coordination-task-plugin | feature | XL | in progress | Phases 1-2 done. Remaining: Phase 3 (DAG queries), Phase 4 (QA integration) |
Planned — 0.12 (done)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | 74 | pypi-publish | feature | S | 0.12 | done | | 89 | mcp-submission-update | improvement | XS | 0.12 | done | | 94 | web-ui-auth Phase 1 | feature | M | 0.12 | done |
Planned — 0.13 (Human & Agent UX Hardening) — all done
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | — | web-ui-logout-button | bug | XS | 0.13 | done | | — | web-ui-version-history-fix | bug | XS | 0.13 | done | | — | web-ui-type-colors-consolidation | improvement | XS | 0.13 | done | | — | web-ui-page-titles | improvement | XS | 0.13 | done | | — | web-ui-dead-code-cleanup | improvement | XS | 0.13 | done | | — | web-ui-loading-states | improvement | S | 0.13 | done | | — | web-ui-accessibility-fixes | improvement | S | 0.13 | done | | — | web-ui-mobile-responsive | improvement | S | 0.13 | done | | — | web-ui-collections-save | improvement | S | 0.13 | done | | — | web-ui-first-run-experience | improvement | S | 0.13 | done | | — | web-ui-starred-entries | improvement | S | 0.13 | done | | 105 | ux-accessibility-fixes | improvement | M | 0.13 | done | | — | playwright-integration-tests | feature | M | 0.13 | done | | — | web-ui-review-hardening | improvement | S | 0.13 | done | | — | bug-mcp-kb-create-places-entries-at-kb-root-instead-of-type-directory | bug | S | 0.13 | done | | — | bug-kb-update-mcp-tool-returns-posixpath-serialization-error | bug | S | 0.13 | done | | — | mcp-tool-kb-batch-read-for-multi-entry-retrieval-in-one-call | feature | S | 0.13 | done | | — | mcp-search-add-fields-parameter-for-token-efficient-results | enhancement | M | 0.13 | done | | — | mcp-tool-kb-list-entries-for-lightweight-kb-index-browsing | feature | M | 0.13 | done | | — | mcp-tool-kb-recent-for-what-changed-orientation-queries | feature | M | 0.13 | done | | — | clarify-metadata-vs-top-level-field-mapping-in-mcp-create-update-tools | improvement | M | 0.13 | done | | — | agent-oriented-error-responses-across-cli-and-mcp | enhancement | L | 0.13 | done |
Planned — 0.14 (Auth & Rate Limiting)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | 97 | mcp-rate-limiting | feature | S | 0.14 | done | | 110 | oauth-providers Phase 1 | feature | L | 0.14 | done | | 112 | per-kb-permissions | feature | L | 0.14 | done |
Planned — 0.15 (Deployment & Demo)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | 114 | container-deployment Phase 1 | feature | M | 0.15 | done | | 111 | pyrite-website | feature | M | 0.15 | done | | 85 | demo-site-deployment | feature | M | 0.15 | done | | 87 | byok-ai-gap-analysis | improvement | M | 0.15 | done |
Planned — 0.16 (Onboarding & Docs — launch release)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | — | pypi-trusted-publisher | task | S | 0.16 | manual (PyPI settings) | | 114 | container-deployment Phase 2 | feature | S | 0.16 | done | | 113 | personal-kb-repo-backing | feature | M | 0.16 | done | | — | Getting Started tutorial | feature | S | 0.16 | done | | 108 | plugin-writing-tutorial | feature | S | 0.16 | done | | 109 | awesome-plugins-page | feature | XS | 0.16 | done | | 86 | pyrite-ci-command | feature | S | 0.16 | done | | — | web-ui-alpha-banner | feature | S | 0.16 | done | | — | doc-openai-mcp-integration | docs | XS | 0.16 | done | | — | doc-gemini-mcp-integration | docs | XS | 0.16 | done |
Planned — 0.17 (Cleanup & Hardening)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | — | entry-id-collision-across-types | bug | M | 0.17 | done | | — | priority-type-mismatch | bug | S | 0.17 | done | | — | sw-adrs-date-field-empty | bug | XS | 0.17 | done | | — | schema-validate-cli-command | feature | M | 0.17 | done | | — | mcp-body-truncation-docs | improvement | XS | 0.17 | done | | — | api-module-level-singletons | improvement | S | 0.17 | done | | — | plugin-hook-atomicity | improvement | S | 0.17 | done | | — | plugin-discovery-strict-mode | improvement | XS | 0.17 | done | | — | embedding-service-prewarm | improvement | S | 0.17 | done | | — | import-cycle-detection | improvement | XS | 0.17 | done | | — | kb-compaction-command-and-freshness-qa-rules | feature | S | 0.17 | done | | — | plugin-registry-deduplication | improvement | S | 0.17 | done | | — | factory-open-closed | improvement | S | 0.17 | done | | — | kb-component-documentation-gaps | improvement | M | 0.17 | done |
Planned — 0.18 (Architecture)
| # | Item | Kind | Effort | Milestone | Status | |---|------|------|--------|-----------|--------| | — | kb-service-decomposition | improvement | L | 0.18 | done | | — | schema-module-decomposition | improvement | M | 0.18 | done | | — | search-service-kb-service-overlap | improvement | S | 0.18 | done |
Planned — 0.18 (Ecosystem)
| # | Item | Kind | Effort | Milestone | |---|------|------|--------|-----------| | 82 | software-project-plugin | feature | L | 0.18 | done | | 83 | investigative-journalism-plugin | feature | XL | 0.18 | done | | 84 | extension-registry | feature | M | 0.18 | | 88 | obsidian-migration | feature | M | 0.18 | | 90 | pkm-capture-plugin | feature | L | 0.18 | | 99 | extension-type-protocols | feature | L | 0.18 |
Planned — Pre-1.0 (Extension Extraction)
| # | Item | Kind | Effort | Milestone | |---|------|------|--------|-----------| | 107 | plugin-repo-extraction | feature | M | pre-1.0 |
Post-launch — KB Quality & Lifecycle
| # | Item | Kind | Effort | |---|------|------|--------| | — | entry-lifecycle-field-and-search-filtering | feature | S | done | | — | knowledgeclaw-pyrite-powered-agent-for-openclaw-ecosystem | feature | XL | |
Planned — Future
| # | Item | Kind | Effort | |---|------|------|--------| | 92 | intent-layer | feature | M | done | | 95 | event-bus-webhooks | feature | M | | 96 | db-backup-restore | feature | S | done | | 98 | kb-orchestrator-skill | feature | M | | — | search-relevance-boost-by-entry-type | feature | M | | — | protocol-versioning-implementation | feature | M | | — | async-index-rebuild | improvement | M | done |
Open Phases (blocked or deferred)
| # | Item | Status | Blocked by | |---|------|--------|------------| | 60 | block-refs-phase3-transclusion | proposed | #59 ✅ (ready to start) | | 64 | collections-phase4-embedding | proposed | #60 | | 73 | qa-agent-workflows Phases 3-5 | deferred | Phase 2 done, Phases 3-5 post-launch |
---
Dependencies (open items only)
``` pypi-publish (#74) [0.12] ✅ └── plugin-repo-extraction (#107) [pre-1.0] — needs #74 ✅, deferred (extensions stay in-tree for now)
awesome-plugins-page (#109) [0.16] — no blockers plugin-writing-tutorial (#108) [0.16] — no blockers
web-ui-* items [0.13] ✅ — all done └── playwright-integration-tests [0.13] ✅ — validates all UI fixes └── web-ui-review-hardening [0.13] ✅ — final gate, moved from 0.15, done
web-ui-auth (#94) [0.12] ✅ Phase 1 done ├── oauth-providers (#110) [0.14] — GitHub OAuth │ Phase 1: GitHub OAuth — needs #94 ✅ │ Phase 2: Google OAuth — needs Phase 1 │ Phase 3: Generic OIDC — post-launch ├── per-kb-permissions (#112) [0.14] — per-KB ACL + ephemeral sandboxes │ — needs #94 ✅, benefits from #110 └── personal-kb-repo-backing (#113) [0.16] — repo-backed KBs + plan tiers — needs #110 ✅ (GitHub OAuth), #112 ✅ (per-KB perms)
container-deployment (#114) [0.15] ✅ Phase 1 done Phase 1: Dockerfile + Compose ✅ Phase 2: Deploy buttons [0.16] — benefits from Phase 1 ✅
pypi-trusted-publisher [0.16] — needs pypi-publish (#74) ✅ doc-openai-mcp-integration [0.16] — no blockers doc-gemini-mcp-integration [0.16] — no blockers
pyrite-website (#111) [0.15] ✅ — pyrite.wiki live on GitHub Pages demo-site-deployment (#85) [0.15] ✅ — deploy/demo/ + deploy/selfhost/ + deploy/ink/
extension-type-protocols (#99) [0.18] Phase 1: protocol definitions — needs #92 (intent layer) Phase 2: satisfaction checking — needs Phase 1 Phase 3: registry integration — needs #84 (extension registry)
extension-registry (#84) [0.18] — needs demo site (#85)
coordination-task-plugin (#79) — Phases 1-2 ✅ Phase 3: DAG queries [future] Phase 4: QA integration [future, after #73 Phase 2]
qa-agent-workflows (#73) — Phases 1-2 ✅ Phase 3: LLM consistency checks [future] Phase 4: factual verification [future] Phase 5: continuous QA pipeline [future]
block-refs-phase3 (#60) — ready to start └── collections-phase4 (#64) — blocked by #60
kb-orchestrator-skill (#98) [future] — needs #79 Phase 2, #92 Phase 1 intent-layer (#92) [future] — phase 1 no blockers
entry-lifecycle-field-and-search-filtering [post-launch] — no blockers └── kb-compaction-command-and-freshness-qa-rules [post-launch] — needs lifecycle field └── search-relevance-boost-by-entry-type [future] — needs compaction + intent layer ```
---
Retired
Items subsumed by larger features:
| # | Item | Subsumed by | Reason | |---|------|-------------|--------| | 28 | dataview-queries | #51 Collections Phase 2 | Virtual collections with `source: query` are dataview | | 29 | database-views | #51 Collections Phase 3 | Collection view types cover table, kanban, gallery | | 43 | display-hints-for-types | #51 Collections Phase 1 | View configuration is per-collection, not just per-type |
---
Future Ideas
Lower-priority items in `future-ideas/`:
---
Bugs
| # | Item | Priority | Status | |---|------|----------|--------| | — | entry-id-collision-across-types | high | done (explicit `id` fields) | | — | schema-validate-cli-command | high | done (`schema validate` command) | | — | sw-adrs-date-field-empty | medium | done (column-first reads) | | — | sw-mcp-tools-read-status-from-metadata-json-instead-of-db-column | high | done (column-first fallback) | | — | priority-type-mismatch | medium | done (Integer → String) | | 66 | health-check-timezone-fix | — | done | | 67 | create-body-file-nested-yaml-bug | — | done |
---
Completed Waves (1-12)
All items below are done. Detail lives in the individual backlog item files in `done/`.