COMPAT.md asserts platform behaviour that nothing verifies, and the claims are duplicated into shipped strings #543
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#544 Epic: madtea's external contracts are asserted, not verified
sixfold-space/madtea
Reference
sixfold-space/madtea#543
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
docs/COMPAT.mdis a hand-written table of Gitea-versus-Forgejo behaviour: 105 lines, 56 table rows, four explicit "Gitea-only" claims. Nothing checks that any of it is true.It actively misleads readers, including agents, because its assertions are presented as settled fact and are wired into surfaces that carry authority.
The claims are not confined to the doc
internal/mcp/tools_actions.go:197embeds the assertion directly in the tool description:That string is also generated into
internal/mcp/help_generated.go:2352. So the doc's hand-maintained claim is what an agent reads when deciding whether an operation is possible, and it points back at the doc as its authority. Deleting the file alone would not remove the claim; it would only remove the pointer.Nothing verifies it
The only test touching the file is
internal/docs/compat_deps_test.go, and it caps table row length to stop the Notes column ballooning. It is a formatting guard. No test compares any claim in COMPAT.md against a live platform or against the vendored specs.So every row is an assertion someone made once, ageing silently.
Evidence that it drifts
/repos/{owner}/{repo}/actions/runs/{run}/attempts/{attempt}/jobs, which is in the exact family COMPAT.md calls "Gitea-only". The claim is in the right direction, but the supporting data is out of date and the boundary has moved.Ask
Retire the hand-maintained form. A compatibility claim should be derived from something checkable, or it should not be stated.
The design question worth deciding, rather than one I should pick:
*gitea.ErrUnsupportedOnForgejoand degrades gracefully where a plain equivalent exists.Either way the shipped strings in
internal/mcp/tools_actions.gohave to move with it. Under ADR 0023 they are self-contained, so they cannot quietly rely on a file that no longer exists or no longer says what they claim.Acceptance
Related: #538 (vendored specs unvalidated against live installs), #504 (field-shape divergence COMPAT.md misses), #542 (the live-forge check that would catch this class has never run).