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

40 lines
2.0 KiB
Markdown

# Knowledge platform example
An optional plugin that keeps platform connections, logical spaces and upstream
tenants separate. It uses the public principal and plugin authorization APIs and
the existing management Provider. It adds no second ingestion implementation and
no knowledge or ACL registry in core, and imports nothing host-internal.
Tests use real SQLite and real HTTP routing and mock only the upstream
transport. Report real upstream acceptance separately from synthetic coverage.
## Authorization
- **Every policy write needs the host administrator floor and the platform
write grant.**
- **A space-routed management request needs four more checks**: the management
namespace grant, explicit space membership, the resource and operation policy,
and the Provider's own authorization for the exact user, base and operation.
- **Config, defaults and resource references are not grants.** Inherited child
sets and members stay within the limits of their ancestors.
- **Do not create an administrator, accept an identity from the client, widen a
filter, substitute credentials or retry a mutation.**
- **Grants are never cached across requests.** Resolve ancestors step by step
inside one policy snapshot.
- **Space policies apply to this plugin's routes only.** The plugin claims no
global retrieval ACL, no upstream user impersonation and no multi-host
replication.
## Storage
- **Provider factories and their configuration are operator-only.** HTTP policy
never stores credentials, endpoints or factory paths.
- **Filesystem and SQLite work runs off the request loop**, with a strict
blocking-I/O test for each new path.
- **No database transaction is held across a Provider HTTP call.**
- **A SQLite failure maps to a sanitized 503.** An update is retried only after
the policy was reloaded.
- **Resource identity is qualified by provider, connection and native base.**
Presence of a policy or a capability never implies processing success or
progress.