DESIGN_READY_FOR_OPERATOR_REVIEW: Identity email enrichment + Google public-profile pivots #159
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#159
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?
Authority / state
READY_FOR_DESIGNlost-rob0t/starintel-servere99aadd3f44505bc692708aad5e34ab0c4ab0036DESIGN_READY_FOR_OPERATOR_REVIEWThis design is not executable by RAGE until explicit operator implementation approval is recorded.
Goal
Add email-centered identity enrichment without creating a Holehe service, a GHunt service, a second provider registry, or an email-specific orchestration stack.
The Identity Domain Server owns the capability. StarLang/source-acquisition owns bounded collection mechanics. The expert/entity layer owns identity correlation.
Domain surface
Use one capability family:
Conceptual request:
Do not put raw email credentials, Google cookies or session tokens into the request.
emailRefmay resolve to the normalized input under caller authorization; credential/session needs use opaque refs from the Source Acquisition design.Result contract
Each provider/sub-source returns:
Terminal aggregate:
partialremains visible and preserves every provider outcome.Platform Probe Registry extension
Do not create an email-only registry. Extend the #173 Platform Probe Registry model to support
identifierType=emailplus one required safety field:Default execution policy permits only
readOnlyprobes. All other classes fail closed unless a separately authorized policy explicitly permits the exact effect.Simple Holehe-like checks lower into closed request + classification entries. Multi-step checks needing CSRF/preflight/session extraction reference a versioned StarLang source definition from #171 rather than arbitrary callbacks.
Classification rules
foundRequires an explicit current positive condition from the provider definition.
notFoundRequires an explicit current negative condition. It cannot be inferred from network failure, timeout, parse failure, CAPTCHA, 403, 429, anti-bot response, unknown status, schema drift or missing optional fields.
unknownA response exists but cannot safely classify account existence or profile state.
blockedChallenge, policy denial, anti-enumeration gate or side-effect policy blocks execution/classification.
unavailableThe provider/sub-source cannot be contacted within policy/budget.
failedInternal execution failure after a valid definition and adapter were accepted.
Google enrichment boundary
Google enrichment is not a boolean email-registration probe. It is a richer source under the same Identity capability.
Potential typed observations are emitted independently for only evidence-supported/publicly exposed surfaces, including:
Every sub-source is independently typed. Missing Google fields or changed response structures yield
unknownor aggregatepartial, not a crash and not account absence.Credential/session boundary
StarLang-first ownership
StarLang / existing planned extensions
Reuse #171/#172 for:
No new email-specific StarLang syntax is required.
Common Lisp Identity implementation
Owns:
External process
No required Python runtime in the foundational implementation.
A GHunt-compatible process adapter is allowed only as a later separately reviewed provider adapter if a valuable Google surface cannot reasonably be implemented through the approved HTTP/browser/source ports. It remains replaceable, isolated and non-authoritative.
Execution
Persistence / health / drift
Reuse #173 registry health semantics. Health belongs to probe + version and, where relevant, credential/egress/principal context.
A provider drift event may demote a probe but cannot rewrite historical observations or mutate an in-flight run's frozen registry/source version.
Google schema drift must be observable by typed diagnostics and fixture validation rather than surfacing as an uncaught provider exception.
Entity/expert boundary
A found account/profile is an observation, not a person merge.
The expert/entity-resolution layer may later correlate observations using corroborating attributes and provenance. Identity enrichment itself does not claim two accounts belong to the same human merely because they share an email input or a provider-derived name.
Adversarial review
Rejected:
exists=falseon transport/rate-limit failure — false-negative semantics.Dependency-ordered proposed implementation slices
All remain AWAITING_OPERATOR_IMPLEMENTATION_APPROVAL.
identity.enrichEmailtyped request/result contract — mixed outcomes, partial aggregate, provenance; fake providers only.Mandatory RED-first targets
Slice 1
On untouched server/Identity code, add a valid email probe-registry fixture requiring:
identifierType=email;sideEffectClass.It must fail because current code has no normalized email Platform Probe Registry implementation.
Negative fixtures must reject unknown side-effect class, executable callback/function field, raw credential literal and missing lineage.
Slice 2
A fake enrichment run with one
found, oneunknownand oneblockedprovider must require terminalpartialand preserve all provider identities/provenance. Untouched code must fail because noidentity.enrichEmailtyped contract exists.Slice 3
A provider set larger than
maxProvidersmust prove the implementation never starts excess probes and respects per-host/global concurrency/deadline ceilings.Slice 4
A fake Google People/profile response missing nested metadata that a previous provider version expected must produce
unknown/partialwithout throwing. Raw Google credentials must be rejected in request/source fixtures.Slice 5
A fake
foundobservation must be accepted only through canonical ingest with provider/source provenance; no direct Rabbit publication and no implicit same-person merge.Acceptance
notFoundrequires explicit negative evidence;Implementation approval
PENDING / AWAITING_OPERATOR_APPROVALOnly the operator may authorize implementation.