Knowledge: folders and security — user page, developer guide, and corrections
Three things.
NEW: Knowledge-Folders-and-Security.md (user-facing)
Folders and shortcuts, the four views, multi-select, the open/restricted model
and what the list means in each, inheritance and the exceptions report, the
containers-vs-filing setting, where the rules are enforced, and the
administrator floor. Includes the warning that "I removed myself from the team
and can still see it" is not a valid test while you hold the floor.
NEW: Knowledge-Folders-and-Security-Developer-Guide.md
The choke point and why knowledgeCanRead() is built on the list clause; how the
ACL fragment is assembled and why the tree is walked in PHP rather than with a
recursive CTE; #1217 (the most restrictive state turned the guard off) with the
generalisation; polarity on the object rather than the rows. Then §4 the four
renderers with code - list and cards are ONE renderer, data-article as the
unifying handle, DOM order for ranges, the tree drawing its whole shape from one
fetch and the two bugs that came from that - and §5 drag and drop, including one
rule for the highlight rather than four copies. §6 collects the testing traps.
CORRECTED: Knowledge-Folders-and-Permissions.md
It contradicted the shipped product in three places. Marked inline rather than
rewritten, so the reasoning that turned out wrong is still on the record:
- §10 "three view modes deliberately not built" - all four exist. The estimate
was wrong: list and cards are one renderer, so it was two, not three.
- §10 properties/security panel - shipped as a modal, not a left-panel tab.
- §10 mobile action row - now built, mobile.css layer 17k.
§15 Build status rewritten: it still said "no interface, the feature is inert".
Now records what shipped and what is still outstanding - user groups have no
screen, and the audit trail is recorded but never displayed.
UPDATED: Knowledge.md
Added Folders, Permissions and Attached documents sections; test count 57 -> 88;
dropped the stale "one of the four modules" on mobile.
Every referenced file verified to exist; every internal link resolves.
Knowledge folders: record the build status and two deviations
The engine, schema and reader are built and tested; there is no interface, so
the feature is inert on a real install - with no access rows the resolver's fast
path returns an empty clause and every query is byte-identical to before.
Two places the build diverged from this page, both deliberate and both recorded
rather than left for someone to discover:
* the administrator floor is Cap::KNOWLEDGE_MANAGE, not a new knowledge.admin
* folder reachability is resolved in PHP, not with WITH RECURSIVE - the
visibility clause is a fragment appended to somebody else's WHERE, where a
WITH cannot be introduced at all, and the correlated alternative re-walks
the tree per row
The MySQL 8 finding that prompted the CTE plan still stands; it is simply not
needed here.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Knowledge: folders and permissions design page
Design agreed with Ed before any code exists. Records the governing rule
(every axis narrows, nothing widens), the finding that shapes the project
(no choke point — ~48 raw queries across ~30 files, plus six back doors
that read article bodies without opening a document), and the decisions
taken: one folder per document with shortcuts as the escape hatch,
Open/Restricted polarity so an ACL cannot contradict itself, a
containers-vs-filing install setting, four principal types with a new
user-groups table carrying expires_at, and document-level permissions in
scope with the administrator floor and empty-grant validation shipping
alongside rather than deferred.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>