[P1-06] Replace dead matcher/URL extractor with bounded typed document transforms #134
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/starintel-server#134
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?
ARDR reconciliation — 2026-08-29
Canonical research/design now own this issue:
lost-rob0t/starintel-auto-research/roam/research/star-server/STAR-RESEARCH-051-document-pattern-ingress-url-extraction.org—READY_FOR_DESIGN.lost-rob0t/starintel-auto-research/roam/design/star-server/STAR-SERVER-050-document-pattern-ingress-url-extraction.org—DESIGN_READY_FOR_OPERATOR_REVIEW.lost-rob0t/starintel-auto-research#200.Current-source findings
Current
masterloadssource/actor-systems/matcher-actor.lisp, andstart-url-extractorregisters a pattern in globalstar:*document-patterns*, but current source has no document-ingress component that consumes canonical incoming documents and iterates that registry. The registered matcher is therefore operationally dead.The legacy path also:
match-fncallbacks in mutable global process state;content/biofields;documents.new.*through the global producer agent;Current server persistence already has mutation IDs and durable outbox/event mechanics, and the server dependency closure already contains
quri. Do not add another process merely to parse URI candidates.Design decision
Replace the legacy global matcher registry as authority with one StarLang-first typed document-transform boundary linked through the #43 RuntimePlan.
The transform executor never publishes authoritative document events directly.
Transform definitions
Transform definitions are immutable/versioned and may reference closed StarLang semantics or trusted installed adapter IDs. They may not contain arbitrary Lisp callbacks, shell commands, raw actor refs, Rabbit routing keys, credentials, or live database/broker objects.
Dataset/actor manifests may select or narrow compatible transforms, but cannot widen StarLang-declared input/output types or capabilities.
Runtime identity and bounds
URL transform v1
The first vertical is
extract.http-url.v1:http:///https://starts;Extraction proves only that the source text contained the URI candidate. It does not establish reachability, ownership, identity, or corroboration.
Dependencies
Research/design can proceed now; production realization is dependency-ordered:
Do not recreate local substitutes for those pending seams.
Proposed implementation slices — ALL PENDING OPERATOR APPROVAL
Slice 1 — pure transform contract + URL fixture corpus
No actor/network/database/Rabbit effects.
Mandatory RED-first target:
Untouched server must fail because no typed pure transform contract/normalizer exists. Calling the legacy regex does not count as GREEN.
Sibling REDs: malformed percent escapes, punctuation, balanced parentheses, explicit ports, IPv6 literals, Unicode/IDNA policy, duplicate normalized candidates, oversized input, max-candidate/max-output truncation, and schemes outside HTTP(S).
Slice 2 — fake canonical-ingest executor
Slice 3 — RuntimePlan binding
After #43 realization, reject invalid dtype/output/capability bindings before actor/thread/network realization.
Slice 4 — first real canonical-ingest vertical
After #40/#41 and the relevant #47 idempotency seam, persist URL/relation through the validated mutation/outbox path.
Slice 5 — lifecycle/component-handle integration
After #42/#37 realization, restart gives a new generation and a stale handle cannot invoke the replacement.
Slice 6 — legacy retirement
After equivalence/restart evidence, remove/delegate
*document-patterns*, raw callback/subscription authority, and direct URL extractor publication. Never run legacy direct-publish and new canonical-ingest extraction simultaneously for the same flow.Acceptance criteria
documents.new.*publication;Implementation authorization
PENDING / AWAITING_OPERATOR_IMPLEMENTATION_APPROVALP1 priority,
READY_FOR_DESIGN, completed design/adversarial review, issue state, publication, or machine output do not authorize RAGE implementation.Operator direction update for
STAR-RESEARCH-051:starintel-servermust not replace*document-patterns*with another Lisp callback/regex registry or a second matcher DSL;StarLang embedding readiness is now tracked by https://github.com/lost-rob0t/star-lang/issues/53.
Current determination: StarLang is not yet ready as a stable production embedding boundary. Final
starlang-runtimehas real runtime/actor APIs, but the complete compiler/load/document public path is still prototype-owned and StarLang #6/#47/#52 remain open. Do not work around this by fossilizing prototype packages in the server; finish the final embedding boundary in StarLang first.Canonical research update commit:
github.com/lost-rob0t/starintel-auto-research@a90b8ee619