This commit is contained in:
j3d1 2026-08-27 20:41:19 +02:00
parent 2bb6624d50
commit 7276750c66
15 changed files with 552 additions and 169 deletions

View file

@ -33,16 +33,6 @@ inconsistencies are listed, not every correct usage that was checked and cleared
## Handle / User handle
- ~~`backend/authentication/models.py` (`class KnownIdentity`...), `signature_auth.py`
(`author_identity`...), `frontend/src/identity.js` (`serializeIdentityRecord`...)~~ — no longer a
finding: the glossary now has an explicit **Identity** entry (handle + keypair, held together as
the unit a backend trusts), and this is exactly what these already name. No renaming needed here;
if anything, these are the parts of the codebase the new Identity entry should point to as
reference implementations.
- `backend/toolshed/serializers.py:49-57` (`FriendSerializer`) — API field is literally named
`"username"` but its value is a full handle (`username + '@' + domain`). Already
self-acknowledged in a comment at `frontend/src/store.js:404`. **Highest-value single fix**
it's a live API contract, not just an internal name.
- `frontend/src/store.js` — several action params destructured as `{username}` that actually carry
a full handle: `lookupServer` (313), `getFriendServers` (359), `fetchFriendProfile` (401-405),
`login` (276-282).
@ -66,23 +56,6 @@ it; Actor and Targeted sharing are unimplemented with no competing name anywhere
"neighbor" vocabulary — refers to unreachable backend *domains* during discovery, not to
friendship, despite reading like a synonym at a glance.
## Group / Group handle / Membership list
- `backend/backend/settings.py:36``django.contrib.auth` ships a built-in `Group` model, shown
as "Groups" in the Django admin. Not unregistered anywhere. Will collide by name with the
proposed actor-type Group once that's implemented — worth a decision now (unregister the
built-in admin Group, or otherwise disambiguate) before the real feature lands.
- `issues.md` (issue #3, "Group Concept", ~lines 62-156) — a standalone proposal that conflicts
with the already-settled `docs/design-in-progress/groups.md` design on three points at once:
- `Group.public_key`/`private_key` fields (contradicts "does a group need its own keypair? No").
- `GroupMembership` backed by a signed `membership_certificate` rather than a plain membership
list (contradicts the glossary's Membership list entry).
- Bare `Group.handle` strings with no `#` prefix, e.g. `"makerspace-nord"`, and a
`GroupInvitationIncoming.group_handle` field/API surface (`POST /api/groups/` etc., ~lines
65-66, 117-121, 150-156) that never uses the `#groupname@domain` shape.
This is a design-conflict issue, not a wording tweak — `issues.md` should be reconciled with (or
explicitly marked superseded by) `groups.md` before anyone implements from it.
## Keypair / Private key / Public key
- Wire-format drift on the one field that actually crosses the network: `befriender_key` is used
@ -100,8 +73,10 @@ it; Actor and Targeted sharing are unimplemented with no competing name anywhere
- `backend/configure.py:130` ("Identifier set {} already imported, skipping") and the model
`ImportedIdentifierSets` (`backend/hostadmin/models.py:13-19`) — call an imported origin dataset
an "identifier set".
- `issues.md:206-210` — Instance Admin TODO list: "identifier-sets" for **Origin** and bare
"identifiers" for **Classification handle**, both alternate terms not matching glossary names.
- `issues.md:200-202` — Instance Admin TODO list: "identifier-sets" for **Origin** (matches
`ImportedIdentifierSets`/`configure.py`: one identifier set per `shared_data/*.json` file, named
`git:<file>`, i.e. exactly an Origin) and bare "identifiers" for **Classifier** (not Classification
handle — a classification handle is the `origin#type:name` pointer, not the entity it names).
## Alias
@ -118,13 +93,6 @@ it; Actor and Targeted sharing are unimplemented with no competing name anywhere
column-auto-mapping heuristic treats `"type"` as a synonym for Category:
`lowerColumn.includes('category') || lowerColumn.includes('type')`.
## Item Handle
- `frontend/src/views/Search.vue:30,52,110` — a field literally named `handle` is computed here
(`e.owner==this.user ? e.id : "shared/"+e.owner+"/"+e.id`), but it's a router-path fragment, not
an Item Handle: no domain-qualified `user@domain.tld:id` shape, and `e.owner` is a bare username.
Whoever implements the real Item Handle later is likely to collide with this existing variable.
## Item Label
- `frontend/src/components/workflow/workflows/FotoFirstBulkImportWorkflow.vue:567-572,822` and