ARDR research: Identity email-account existence and Google public-profile enrichment #160
Labels
No labels
bug
design
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/starintel-auto-research#160
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?
StarIntel problem solved
Advance concrete research seed #161 into canonical ARDR research for the StarIntel Identity Domain Server.
Owning future implementation surface:
lost-rob0t/starintel-server.Related Identity design: #173 (Platform Probe Registry / account enumeration).
Shared acquisition/orchestration designs: #171 and #172.
Current
starintel-server/masterinspected ate99aadd3f44505bc692708aad5e34ab0c4ab0036.ARDR state
READY_FOR_DESIGNImplementation approval remains operator-only.
Candidate/ranking decision
This is an unlabelled, dependency-ready Identity capability research gap. Higher-priority StarIntel candidates discovered in this cycle were either already research/design complete (#176/#177, #178/#179), explicitly blocked/deferred, or implementation proposals awaiting operator approval. #161 can be researched now without changing product code and reuses existing StarLang/Identity design instead of creating a new subsystem.
Current StarIntel implementation check
Current
starintel-server/masterhas no Holehe/GHunt/email-enrichment implementation found by repository search. Existing user-hunt work is already being replaced by the Identity Domain Server design in #173; therefore email enumeration must extend that domain and its Platform Probe Registry rather than revive or duplicateuser-hunt.Evidence: Holehe reusable semantics
Current Holehe modules are per-site async probes that commonly use signup/registration availability endpoints, site-specific request templates, status/body predicates, and output fields such as site/domain, method, rate-limit state and existence.
Representative current modules also expose an important defect for StarIntel to avoid: transport/block/rate-limit paths often emit
rateLimit=truetogether withexists=false. That representation can collapse uncertainty into a false negative if a caller only consumesexists.Some probes are multi-step (fetch page/token, then submit an availability request), so the reusable StarIntel unit is not a Python callback. It is either:
Evidence: GHunt reusable semantics
Current GHunt email enrichment composes several Google-facing lookups: Google person/profile data, Play Games profile, Maps/review-derived information, and public Google Calendar data, then emits structured JSON.
Recent upstream failures in 2026 show why StarIntel must treat this as a drift-prone provider rather than authoritative identity truth:
metadata.containercaused crashes in released versions;Therefore missing or changed upstream fields are
unknown/partialevidence, nevernotFoundand never a process crash.GHunt also has credential/session requirements around Google access. StarIntel must never embed Google cookies/tokens/master-token material in StarLang definitions, fixtures, provenance or ordinary messages.
Research decision
Keep one Identity Domain Server. Add email as an identifier type and separate two capability families inside that domain:
1. Email account-existence probes
Use the same normalized Platform Probe Registry from #173, generalized for
identifierType=email.A probe records:
http,dom,browser, etc.);2. Google public-profile enrichment
Treat Google enrichment as a richer provider/source capability under Identity, not as a generic boolean email-existence probe.
It may emit typed observations for evidence-supported public/profile surfaces such as:
Each sub-source can independently be
found | notFound | unknown | blocked | unavailable | failed; the aggregate may bepartial.StarLang-first classification
Already designed/reusable
StarLang/library work
No new email-specific language syntax is justified.
Email probes should be represented by the existing planned closed source/probe definitions. If a provider needs a bounded preflight/token/request sequence, express it through #171 rather than arbitrary host callbacks.
Common Lisp
Identity normalization, policy, registry validation, provider selection, evidence classification and canonical ingest belong in the Common Lisp server/domain implementation beneath StarLang contracts.
External process boundary
Do not make GHunt a required production dependency in the foundational slice. Its undocumented/brittle Google surfaces and credential flow do not justify Python-first architecture.
If later evidence shows a specific valuable Google surface cannot reasonably be implemented through documented/public HTTP/source capabilities, a separately reviewed isolated GHunt-compatible adapter may be used behind the typed capability port. It must receive only scoped opaque credential/session refs and return normalized observations. That is a last-resort provider adapter, not the Identity control plane.
Required outcome model
Per-provider/source result:
Terminal aggregate:
Rules:
notFoundrequires an explicit, current negative condition defined by the provider probe;notFound;Side-effect / privacy policy
Email-enumeration techniques can use signup/reset/account-recovery surfaces. StarIntel must classify probe side effects explicitly.
Default policy:
Provenance
Every accepted observation preserves at least:
Adversarial findings
Rejected:
Mandatory RED-first targets for eventual implementation
identifierType=emailprobe schema/normalizer exists.unavailable/blocked/unknown, notnotFound.identity.enrichEmailcontract fixture must represent mixed provider outcomes and terminalpartialwith provenance.unknown/partialrather than crash ornotFound.foundobservation must go through canonical ingest and remain an observation, not an automatic same-person merge.Decision
Evidence is sufficient to proceed directly to design. No unresolved architecture question requires human research validation.
Implementation approval:
PENDING / AWAITING_OPERATOR_APPROVAL.