Files
deepseek-harness/docs/rfc/implemented/process/2026-07-10-readme-known-limitations-gate.md
T
Tianyi Cui 8590ba00a4 Merge remote-tracking branch 'origin/master' into codex/trim-ai-prose
# Conflicts:
#	docs/AGENTS.md
#	docs/config-catalog.md
#	packages/bash/bash-sandbox/src/index.ts
#	packages/bash/bash/src/session-mode.ts
#	packages/bash/tool-bash/README.md
#	packages/code-runtime/code-runtime-worker/README.md
#	packages/compact/compact/src/index.ts
#	packages/core/agent-core/README.md
#	packages/hooks/hooks-claude/src/config.ts
#	packages/hooks/hooks-claude/src/index.ts
#	packages/hooks/hooks-codex/src/config.ts
#	packages/hooks/hooks-codex/src/index.ts
#	packages/llm/llm/README.md
#	packages/session-persistence/session-persistence-jsonl/README.md
#	packages/session-persistence/session-persistence/README.md
#	packages/skill/skill-local/README.md
#	packages/support/acp-snapshot/README.md
#	packages/support/invariants/src/index.ts
#	packages/ui/acp/README.md
#	packages/ui/jsonrpc-agent/README.md
#	packages/ui/jsonrpc/README.md
#	packages/ui/permission/README.md
#	packages/ui/user-approval/README.md
#	packages/ui/user-interaction/README.md
#	packages/web/web-search-deepseek/README.md
2026-07-14 14:37:16 +08:00

2.2 KiB

RFC: A gated Known-Limitations section in every package README

Status: implemented

Problem

The documentation standard assigns limitations to package READMEs. Without a shared shape, an omitted section cannot distinguish an audited absence from forgotten documentation, and variant headings prevent a repository-wide search.

Decision

Every package manifest under packages/<group>/<pkg>/package.json has a sibling README with the canonical ## Known Limitations and Deferred Work section. Its bullets record durable consumer gaps and non-obvious maintainer constraints owned by that package; ordinary cleanup remains in its source TODO or owning RFC. The verify-package-readme-limitations gate derives the package set from manifests, rejects missing READMEs, and requires exactly one canonical h2 with at least one top-level bullet. Near-miss headings such as “Limitations,” “Deferred,” “What is NOT here,” or “Non-goals” fail.

A package with nothing to declare is listed in NO_LIMITATIONS and omits the section. Adding a limitation requires removing the entry; renames and removals fail because every entry must name a scanned package.

The gate checks presence, shape, and the allowlist. Review under the documentation and prose standards owns coverage and accuracy. The standing rule lives in packages/AGENTS.md.

Alternatives considered

  • Free-form headings — cannot be searched uniformly and still need near-miss detection.
  • Require an empty section or “None.” — boilerplate can remain after a package gains a limitation; an allowlist makes absence explicit and reviewable.
  • Impose a word ceiling — legitimate limitation counts vary, so review governs this unbudgeted README tier.

Consequences

  • New packages declare qualifying limitations or explicitly join the allowlist; missing, drifted, and empty sections fail doc-sync locally and in CI.
  • The gate adds one dependency-free TypeScript script to doc-sync.
  • Renaming the enforced heading requires changing the script and every package README together.