---
type: reference
title: "Planka backlog routing is not discoverable by agents — needs project-level pointers and evals"
summary: "Observed failure (2026-07-10): an agent asked to file cc-os work items defaulted to Forgejo/tea because cc-os's own docs still name Forgejo as the tracker and nothing in any project routes agents to the Planka board — the Planka-vs-Forgejo routing rule, doc-hygiene ownership of CLAUDE.md budgets, and the eval work needed to close the gap."
tags:
  - type/reference
  - tool/planka
  - project/cc-os
  - domain/task-management
scope: global
date: 2026-07-10
last_updated: 2026-07-10
related:
  - "[[vault-backlog-pilot-plan]]"
  - "[[planka-v2-api-gotchas]]"
  - "[[claude-md-budget-linter-plugin-concept]]"
  - "[[claude-code-hook-lifecycle-injection-capability]]"
---

# Planka backlog routing is not discoverable by agents

## The observed failure (2026-07-10)

Asked to file four cc-os work items as "issues," the agent proposed **Forgejo via `tea`** —
not the Planka board. The user had to redirect. Root causes, all verified:

1. **cc-os's own `docs/issue-workflow.md` still says** "Issues live on Forgejo … use `tea`"
   — it predates the Planka pilot and was never updated.
2. **No project-level pointer exists anywhere** (cc-os CLAUDE.md, umbrella CLAUDE.md,
   injected context) telling agents the Planka board is the work tracker. The routing rule
   lives only in [[vault-backlog-pilot-plan]] — vault knowledge an agent only finds if it
   thinks to query the vault about task management.
3. **The documented routing rule itself is ambiguous in practice:** the pilot plan says
   "Forgejo = code/arch/deployment work inside a repo; Planka = everything else," yet the
   user routed repo code work (plugin refactors) to the cc-os Planka board. The de facto
   rule appears to be *Planka = the work tracker; Forgejo issues = execution artifacts when
   a coding session wants them* — but this has never been stated crisply anywhere.

## What filing on Planka actually takes (verified working)

- Creds: `ssh ovh-vps "cat ~/services/planka/bot-credentials.env"` → `PLANKA_BASE_URL`,
  `PLANKA_USERNAME`, `PLANKA_PASSWORD`.
- CLI: `cd ~/dev/ruby-gems/planka && bundle exec ruby exe/backlog add --quick "title"
  --board cc-os --list Backlog --priority p1` (`backlog` is not on PATH; gem not installed).
- `add --quick` takes no description — patch it in afterward via
  `client.cards.update(id, description: md)`.

## Action needed (user-stated, 2026-07-10)

**Run evals on the Planka board integration to ensure all projects know how and when to use
it.** Concretely: given a session in any project where the user asks to "file issues" /
"track this work," does the agent (a) route to the correct Planka board, (b) apply the
Planka-vs-Forgejo rule correctly, (c) find credentials and the CLI without user help? Until
project-level pointers (likely the planned `os-backlog` plugin + per-project CLAUDE.md
lines) exist and evals pass, agents will keep defaulting to whatever tracker a repo's stale
docs name.

Also stale and needing update once the rule is settled: `~/dev/cc-os/docs/issue-workflow.md`.

## Related routing decisions made the same session

- **CLAUDE.md budget management belongs to os-doc-hygiene**, not to the context-injection
  plugin: the [[claude-md-budget-linter-plugin-concept]] should be built as part of the
  os-doc-hygiene plugin. Managing CLAUDE.md is that plugin's responsibility.
- **Injected session-context prompts count toward the effective CLAUDE.md instruction
  budget** — doc-hygiene runs should at minimum note the injected-prompt total alongside
  CLAUDE.md length (the os-context composer enforces its own injection cap; doc-hygiene
  owns the whole-budget view).
