Adopt canonical star:// resource identity (STAR-SERVER-041 Phase A/D): CL URI library, gserver authority, conformance fixtures #1
Loading…
Add table
Add a link
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?
Verification result
starintel-server does not support
star://URIs today. Verified at8fb297d146e7332fae7e38170b5b49d49530ac53(2026-08-29):grep -rn "star://" source/ docs/ schema/→ zero matchesstar-uri/service-uri/ StarRouter / resource-kind / authority concepts anywhere in source or docsquriHTTP dependency (source/starintel-gserver.asd:92)source/target-dispatch.lisp:65-67); external actors are addressed purely by RabbitMQ routing key (source/actors.lisp:209-216)docs/actors.org:89-100); there is no capability/identity registry for remote actorsMeanwhile the rest of the ecosystem has already moved:
roam/design/star-server/STAR-SERVER-041-*.orgPhase A–Eservice-uri.lispstar://domain:address:actor-namestar-actor-protocol/src/service-uri.lisp:55,63star://bbpd.../actor/<name>(merged this week, PR nsaspy/star-bbpd#1)bbp/star_uri.py, startup manifest eventThe server is now the lagging side of its own approved protocol.
Problem
_ids, HTTP paths). STAR-RESEARCH-041 requires transport-neutral identity:star://<authority>/<resource-kind>/<resource-path>./document/... /target/... /dataset/... /relation/... /job/... /service/... /actor/...namespaces and advertises implemented prefixes. Nothing in the server registers or advertises one.parse_legacy_star_uriequivalents + explicit migration targets).subfinder@star://bbpd.smoke.actor/actor/subfinderobserved on the wire in E2E smoke), but the server that routes its targets cannot represent, validate, or echo them.Approved basis (do not re-litigate)
document actor service target dataset relation job); legacy tuple is compatibility input only; migration requires explicit targets.Scope (this repo)
star-uri) with RFC 3986 parsing, STAR v1 profile validation/canonicalization, immutable URI value, resource-kind/path helpers;star://domain:address:actor-nameparser confined to a compatibility module; explicit migration API requiring a canonical target;domainslot, legacy compat parse, explicit migration validation).COUCHDB_DATABASEconventions);source/target-dispatch.lisp:181-192), and the MCP service URIs — as additional fields, not schema-breaking changes;documents.target.dispatch.<actor>remains the delivery key; STAR URI is identity metadata (STAR-RESEARCH-041: "identity and durable work transport are separate concerns").actors.<actor>.new.targetcompat key keep working unchanged.Non-scope
_idconventions;Acceptance criteria
rabbit.lisp:67-75byte-for-byte behavior);documents.target.dispatch.<actor>+actors.<actor>.new.targetbehavior unchanged;References
source/target-dispatch.lisp:65-98,181-192,source/actors.lisp:209-216,source/actor-systems/event-actor.lisp:24-131,source/starintel-gserver.asd:92Implementation prompt (copy into the agent loop / implementation slot)
Mission. Implement STAR-SERVER-041 Phase A (Common Lisp half) and Phase D (starintel-gserver authority) in
starintel-labs/starintel-server. Do not re-research the URI protocol: STAR-RESEARCH-041 and STAR-SERVER-041 are approved and normative. Phase C (StarLang) and Phase E (FediWatch) are out of scope.Ground rules.
docs/testing.mdbefore writing tests: canonical entries are(asdf:test-system :starintel-gserver-tests)vianix run .#star-unit-tests(hermetic, FiveAM) and:starintel-gserver-integration-testsvianix run .#star-integration-tests(needs CouchDB+RabbitMQ). A suite that discovers or executes zero tests FAILS.star://domain:address:actor-namefrom new code; grep-gate it.Slice 1 — Phase A fixtures (TDD).
Create
t/star-uri-test.lisp+ fixture data files shared with star-lang's harness layout. Cover: RFC 3986 parse/serialize round-trips; lowercase authority normalization; percent-encoding normalization (unreserved → unreserved, hex uppercase); rejection of userinfo, ports, dot segments, query, fragment, malformed escapes, empty/missing resource kind; path case preservation; one- and multi-segment actor paths with NO fixeddomainslot; legacy tuple parse via compat API only; explicit migration-target validation (reject non-canonical targets).Slice 2 — Phase A library.
New ASDF system/package
star-uri(add tosource/starintel-gserver.asd). API: parse (error taxonomy: malformed vs noncanonical), canonical serialize, accessorsauthority/resource-kind/resource-path(nodomain/address/actor-nameaccessors), immutable value,resource-kindregistry restricted todocument actor service target dataset relation job, and a separate compatibility module withparse-legacy-star-uri+migrate-legacy-star-uri (uri target)requiring a canonical target URI. Reusequrifor RFC parsing where it fits; do not fork URI grammar.Slice 3 — Phase D authority configuration.
Settings:
STAR_AUTHORITYenv + settings default (illustrativegserver.starintel.actor; never hardcode as "the" production name), validated through the new library at startup; startup log/config surface prints the authority.Slice 4 — Phase D identity wiring (additive only).
source/target-dispatch.lisp:181-192) gainstar-urimetadata alongside existing fields;star://<authority>/document/<_id>-style resource URIs as additional response fields;documents.target.dispatch.<actor>andactors.<actor>.new.targetkeys, strict v0.9 ingest (rabbit.lisp:67-75), and CouchDB_idconventions byte-for-byte unchanged. STAR URI is identity metadata; RabbitMQ remains the durable transport (STAR-RESEARCH-041).Slice 5 — Conformance + interop gates.
nix run .#star-unit-tests;nix run .#star-integration-tests;modernize/starintel-runtime-adapter: BBPD startup manifest URIs parse under the server's library and the server validates its own emitted URIs;source/outside the compat module;Definition of done. All slices merged behind green gates;
completein the PR description maps each acceptance criterion of issue #1 to a test name; no approval-table bypass in auto-research (this implements the already-approved research; no new research artifact is needed — cross-reference STAR-SERVER-041 Phase A/D instead).Interop contact points. star-bbpd:
bbp/star_uri.py(canonical v1 rules), startup manifest event; server:source/target-dispatch.lisp,docs/actors.org,docs/messaging.org(update these docs in the same slices that change behavior).