Persons should trigger recursive sub-investigation branches #7
Labels
No labels
agentic-osint
audit
blocked:commit-ready-failed
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-lint
blocked:gate-plan
blocked:gate-research
blocked:needs-decision
blocked:needs-human
blocked:no-changes
blocked:preflight
blocked:verify-failed
bug
chore
deferred
enhancement
feature-request
in-progress
lint-baseline
lint-cleanup
needs-decompose
needs-triage
performance
quickfix
security/medium
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/osint-hub#7
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?
Problem
Finding a person doesn't trigger further investigation.
Requirements
When a person is found, the system should recursively investigate:
This creates recursive sub-investigation loops.
Resolution
Root cause:
_extract_entities_from_result()inpipeline/patterns.pyonly regex-matched flattened content text for domains/emails/IPs/URLs. It ignored theextracted_entitiesfield that modules likeemployee_scraperalready populated with LLM-extracted person data, and also missed structured person lists (employees,persons,people) and organization fields (organization,company) in module result content.The infrastructure was already in place:
_process_branch→_extract_entities_from_result→_queue_entity_branchentity_module_map.pyhad a full PERSON playbook with 12+ modules (google_dorks, linkedin, social_profile_finder, twitter, github, instagram, reddit, hibp, etc.)EvidenceResultalready had anextracted_entitiesfield used by employee_scraper_queue_entity_branchprevented infinite loopsFix: Added a structured extraction pass to
_extract_entities_from_result()that:extracted_entitiesfield (pre-parsed by modules like employee_scraper)employees,persons,people,staff,members)organization/companyfields as org entitiesname+companyfieldsNow when
employee_scraperfinds "John Doe — CEO", the name gets queued as a person entity, which triggers the PERSON playbook — running google_dorks, linkedin, social_profile_finder, twitter, github, etc. against that person.Commit:
f801e18(push pending — Forgejo git hooks temporarily resource-starved).Coverage of issue requirements: