Files
holocron/docs/adr/0007-gitea-canonical-issue-tracker.md
Defame1297 013b913bd4 docs: correct claims the apm conversion left false
Documentation asserted things the code no longer did, which is how several of this
round's defects survived three review passes.

- `docs/spec/architecture.md` still described the pre-APM model — "each plugin has a
  `plugin.json` manifest" — when no such file exists. AGENTS.md routes agents here
  for the current structure, so it was live drift, not archive. Also cited ADR-0012
  where ADR-0003 is meant.
- AGENTS.md never said `.apm/` is the sole hand-edited source, while the generated
  mirror is byte-identical with no marker — an agent reading only AGENTS.md would
  edit the mirror and find out at pre-push. It also omitted that `apm` and `jq` are
  now required to push, unlike the `vale` bullet that exists for exactly that reason,
  and understated the pre-push gate. `apm marketplace check` hard-fails offline and
  `--offline` does not help, so the `SKIP=` escape hatch is documented rather than
  new machinery built.
- ADR-0017 carried hardcoded line numbers that drifted twice within one PR, and said
  `mcpServers` reinjection was real-syncs-only where the script's own header says
  both modes. Line numbers dropped rather than corrected.
- ADR-0015 asserted issue #90 was closed. It is open. Reworded to defer to the
  issue's own state rather than depend on someone remembering to close it.
- ADR-0014 said both audit skills pass `--config`; both SKILL.md files say pass none,
  and passing one fails with E100. The ADR was wrong.
- ADR-0007 cross-referenced an archived ADR-0011 whose number was later reused.
  Disambiguated with a note — renumbering a published ADR rewrites an immutable
  record and breaks every existing citation.
- CONTEXT.md claimed `lint-runner` is report-only via a missing `Edit` tool.
  Plugin-scope APM agents cannot express `tools:` (ADR-0016), so it is report-only by
  instruction now; ADR-0016 accepted that regression but CONTEXT.md was not updated.
- Recorded two undocumented consequences of the conversion: `displayName` dropped
  from all six compiled manifests and `owner.email` from the marketplace, and
  `mattpocock-skills` silently version-pinned and manually maintained.
- Wrote the version-bump policy issue #90 specified but never delivered. Its previous
  carrier, `marketplace-author`, was deleted in this PR, leaving the per-package rule
  documented nowhere.
- README fixes: kyberforge listed skills belonging to the `git` plugin and a deleted
  hooks path, `bin` advertised an agents directory it never had, and the docs index
  listed files that do not exist.

Refs: #90

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X7GvKuJfy2WrdBmUttV4DT
2026-08-14 01:53:26 +00:00

2.7 KiB

Gitea is the exclusive issue tracker — file-based fallback removed

Supersedes: ADR-0011 (provider-agnostic issue tracker with file-based default — archived during refactoring)

Note on the ADR-0011 number. Every "ADR-0011" on this page means the archived provider-agnostic issue tracker ADR, which no longer exists in docs/adr/ — it was removed when it was superseded, and the number 0011 was later reused for an unrelated decision, docs/adr/0011-gitea-skill-deep-modules.md (the gitea skill's split into deep modules). That file is not the ADR referenced below. The number is not renumbered here: these ADRs are a published record and renumbering would break every citation that already points at either one. The archived text is recoverable from git history.

ADR-0011 established a provider-agnostic model with docs/issues/NNNN-<slug>.md as the file-based default, switching to Gitea MCP at runtime when available. The interim model was justified because Gitea would not be configured until after Chunk 3, and the repo needed to work before then.

Gitea is now configured and in active use. The condition in ADR-0011 has been met. This ADR supersedes it.

Gitea is now the exclusive issue tracker for this repo. The file-based fallback is removed entirely:

  • docs/issues/ is deleted; all 28 local issue files are migrated to Gitea (completed → closed, open → open)
  • docs/prd/ is deleted; PRD files are migrated to Gitea as closed issues
  • Skills and workflows create and reference issues exclusively via Gitea MCP — no runtime backend detection, no file-based path

Three alternatives were rejected. Keeping the file-based fallback adds code complexity with no benefit — Gitea MCP is a hard dependency for this repo on every machine that works with it. A provider-agnostic model with Gitea as the default but file-based as a fallback is the same problem: the fallback path exists but is never exercised, which means it will rot silently. Keeping docs/issues/ as an archive alongside live Gitea issues creates a split-brain risk where two sources of truth diverge; git history already preserves the full text of migrated issues.

The file-based model also had a structural weakness: issues in docs/issues/ were invisible from the Gitea UI, making it impossible to track work, assign milestones, or filter by label without opening the repo locally. Gitea provides all of that natively.

The "Provider-agnostic issue tracker" glossary entry in CONTEXT.md is updated in the same workstream to remove the file-based phase framing. The providers/gitea/ adapter path described in ADR-0011 was never implemented — Gitea integration runs entirely via MCP, not a provider adapter.