Xinmin Zeng 2a97ec3e58
docs: turn README into an index and move reference detail to docs/guide (#8113)
* docs: turn README into an index and move reference detail to docs/guide

The README had grown to 393 KB because every change appended its notes there. The text moves verbatim into 18 topic guides under docs/guide/; only headings are re-leveled and relative links re-pointed. The README keeps the introduction, a quick start and a guide index. Contributor test notes move to CONTRIBUTING.md.

* docs: send user docs to topic guides and budget the root README

The rule 'update README.md for user-facing changes' is what grew the README. Guidance now points to docs/guide/, and check_agent_guidance.py fails when the root README exceeds 16 KiB (AG003).

* chore: remove unreferenced screenshots and finished plan notes

pr-build/ holds two PR screenshots (3 MB) from #1986. plans/ holds the plan for the merged #4049. docs/SKILL_NAME_CONFLICT_FIX.md is a February change note. Nothing references them.

* docs: route always-loaded AGENTS.md files to scoped guides

* docs(agents): cut scoped guides to scope, verify, traps, decisions

Each AGENTS.md keeps four kinds of content: the scope of the directory, the
verification commands, traps a local test run does not show, and decisions the
code cannot state. Values, field lists, function inventories, test names, issue
numbers and history are deleted, because the code, the tests and git state them.

Search and fetch providers share one community guide. Four guides with no
remaining content are removed. The size check now allows 6 KiB per file (hard
limit 8 KiB) and 24 KiB per chain (hard limit 32 KiB).

* style: format frontend guide table and guidance test imports

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-11-11 13:26:17 +08:00

2.0 KiB

WeKnora read-only example

Provider code stays in this separately packaged extension. It registers through registry.knowledge_provider and the public deerflow.knowledge contracts. Core owns scope admission, formatting, budgets and citation evidence. Version references, configuration and the authorization model are in README.md.

cd backend && python -m pytest tests -q -k "weknora"

Live tests need explicit opt-in and an instance that is already indexed. Do not fabricate a live result.

Scope and authorization

  • A missing binding, an invalid selection, an empty allowlist or an upstream failure never becomes an unrestricted search.
  • Search goes through the KB-bound endpoint. The global search endpoint rejects document targets for a KB-restricted key and unions base and document targets. Do not broaden credentials to work around that. Verify that each result belongs to the requested base.
  • access_mode: users needs exact user IDs. authenticated mode needs a non-empty host authenticated user that equals the user ID. Do not infer a login from a default or storage ID or from serialized context.
  • Shared retrieval grants no management permission.
  • Dataset IDs derive from endpoint, tenant and native base, not from credentials or labels.
  • A malformed total or detail shape is a provider error. Permission errors are for resource identity, membership and searchability failures.

Wiki search and document checks

  • Wiki search covers published pages only. Check the Wiki capability and the base of each returned page, and reject document filters before HTTP. The Wiki page-link graph is not a source of entity relations.
  • Only a successful empty page is retried with keywords, in the same authorized base. Provider, auth and schema errors are not retried, and a non-empty phrase result stays as it is.
  • Validate selected documents before the search, and after it validate only the hits that are returned. Drain sibling tasks on an error or a cancellation.