client: show "elsewhere" owners and owner verification #342
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The client side of "elsewhere" owners and verified domains (RELEASE.md 7.1, 7.6, 7.13): when
torb addor a resolution asks the public registry for a package of an owner that publishes elsewhere, the user should read "acmepublishes at ; bind it withregistry "acme", url: ..." instead of "no such package", andtorb addshould print the owner, its verification and its age for a package it has never seen (7.6, Typosquatting row). Follows #19.What exists today (main
787f63f)<registry>/index/<owner>/<name>.trb; a 404 is "the registry does not have it" (7.13).compiler/src/package/registry.trbfetches and caches index files, pins keys, checks every record's signature (7.14);torb addprints deprecation notices from the index it read (compiler/src/package/audit.trb,docs/tooling/torb-add.md).owner.trbis never fetched or read.torb owner listshows members only.Source
Design record point
7.1 "Elsewhere" row and 7.6 (dependency confusion; typosquatting: "
torb addprinting the owner, its verification and its age for a package it has never seen").Design (decided by the loop, see the comment of 2026-10-12)
index/config.trb, the client fetchesindex/<owner>/owner.trb, verifies its signature with the keys it trusts (7.14), and if it haselsewhere:fails with that message. No owner file (404) or a registry without keys: the usual "not found". A bad signature is a refusal, never trusted. The URL is only printed, never bound or fetched automatically; when its host is under the owner's verifieddomain:the line adds "(verified domain acme.com)", otherwise nothing is claimed.torb add <owner/name>for a package not yet in the lock prints one line after success:owner acme (organisation, 3 years old, verified domain acme.com); a person owner prints(person, ...); unverified prints no domain. Read from the same signed file; absent file prints nothing.--offlineuses the cached copy.torb owner listalso prints kind,elsewhereanddomainfrom the API'sOwnerView.<cache>/index/<registry>/like index files.Acceptance criteria
compiler/tests/tools/registry/tests/client.test.trb: against the registry's files over HTTP,torb addof a package of an elsewhere owner fails with the message naming the URL and theregistry "acme", url:line; a tampered or unsignedowner.trbis a refusal; noowner.trbleaves the old "not found" texttorb addprints the owner line (kind, age in years or days, verified domain when present) and a second one for a package already locked does not;--offlineworks from the cachetorb owner listshows kind, elsewhere and domaindocs/tooling/torb-add.md,torb-owner.md, RELEASE.md 7.13 "as built" and generatedskills/in step;sh tools/gates.sh agreen in forge CISeed impact
No: TorbScript in
compiler/src/package, no new native, no driver flag.Size
One PR, two Conventional Commits: (1)
feat(compiler): owner file fetch and the elsewhere message; (2)feat(compiler): owner line oftorb add,torb owner list, docs. Worker: sonnet/medium is enough only for docs; implement with opus/high (compiler/src).Dependencies
Needs #19 (record format, reader, signature). Prints a domain only if #341 has landed; works without it. Definition of ready is met; the label
readyfollows when #19 has landed.[loop:torbscript] refine: split from #19 (see the decision comment there). Definition of ready met in content (state of main, design record point, testable criteria, seed impact: no, size); depends on #19, so the label
readyfollows when it has landed, next: waiting (depends on #19)[loop:torbscript] refine: dependency #19 landed (PR #347), label
readyset, next: implement[loop:torbscript] claim implement by session:loop-torbscript-20261013 until 2026-10-13T04:03Z
[loop:torbscript] implement: the worker ended on a session limit after opening PR #354 (head
4de33d0d); all required forge CI jobs are green and the merge gate's review is requested, next: waiting (merge gate review of PR #354)[loop:torbscript] claim fix by session:loop-torbscript-20261013 until 2026-10-13T13:04Z