SUBTASK #63: Identification Manager (2.2.4) and plugging it into the scan
Maintainers usually reply within 1 day
@PavlockBlaine03 is already working on this.
Since Oct 30, 2026.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Read the referenced leaves #64–#68, Evaluate Flag #39, and the scan save path in Scan Manager #48 / SH-4 #40; inspect match_oui.py and the existing stores. Implement and test identify in backend/services/scan/identification_manager.py, then add the scan integration and checkpoint script described in the issue. Done means repeated scans are idempotent, retired signatures stop contributing, user-entered names survive rescans, and the checkpoint shows each device's identification fields.
Written by the indexing model from the issue text.
Description
What to do
Build the Identification Manager (2.2.4), which runs the four leaves in order for one device: match OUI and signatures, resolve conflicts, calculate the score, assign the level, then evaluate the flag (SH-4.1). Then plug it into the scan in place of M2's provisional "OUI match = partial" rule, so each saved device gets its type, vendor, score, level and flag from its evidence.
Background
- System design section 4: the Scan Manager runs discovery (2.2.2), evidence collection (2.2.3), identification (2.2.4) and recording (2.2.5). 2.2.4 gets the reference rules from the manager and calls no sibling.
- Spec 7.1: the score comes from all the evidence stored for the device. Spec 7.3: the flag follows the level, trust and whether the device is new.
- The leaves are #64 to #68, and SH-4.1 is
evaluate_flag(#39). - Data access is ready:
find_reference_rules(3.2.1, active records only),ScanStore.evidence_forandadd_evidence(no duplicates on rescans), andDeviceStore.store, all with an optionalunitfor one transaction (#15, #16). - Rules are in #63.
Steps
-
identification_manager.py:-
IdentificationResultrecord: theIdentification(#68),flagged, andnew_evidence(the evidence to save for this scan) -
identify(host, collected, stored_evidence, rules, trusted, is_new_device) -> IdentificationResult, pure:- OUI:
match_ouiusing a lookup built fromrules(this replaces theload_oui_lookupTODO inmatch_oui.py) - Signatures:
match_signatures(collected, rules.signatures). With no collectors yet (M6),collectedis empty in real scans. - Stored evidence: turned back into matches using
rules.signaturesbysignature_id. Evidence whose signature is now retired stays stored but isn't counted (it can't produce new matches, DI-06). - New and stored evidence combined without duplicates (same type, value and signature), then
resolve_conflicts→calculate_score→assign_level→evaluate_flag
- OUI:
-
- Plug it into the scan's save path (Scan Manager #48 / SH-4 #40), for each host, in one unit of work:
- Find the device by MAC and load its stored evidence (none for a new device)
- Call
identifywith the reference rules loaded once per scan - SH-4 saves the device with the type, vendor, score and flag; then 2.2.5.2 saves the observation and the new evidence
- A scan sets
device_nameandmodelonly when they're empty, so a name a user typed is never replaced - Remove the provisional "OUI match = partial" rule and its comments
- Unit tests for
identify, with hand-made rules and evidence:- OUI only: partially identified, score 20, flagged
- OUI plus a strong signature match: identified, not flagged
- Stored evidence counts with new evidence; the same evidence in both counts once
- Stored evidence of a retired signature isn't counted
- A trusted, already-known device stays unflagged; the same device under a new MAC is flagged
- Integration tests against the test database:
- Scanning the same hosts twice leaves every score, type and flag unchanged, and adds no evidence
- Retiring a signature, then scanning again: the device no longer gets that type
- A user's device name survives a rescan
- Checkpoint script,
python -m backend.services.scan.check_identification: after a scan of the test database, print each device's MAC, vendor, type, score, level and flag
Where
backend/services/scan/identification_manager.py- The scan's save path (Scan Manager #48 / SH-4 #40) and
match_oui.py(small changes) tests/services/scan/test_identification_manager.py, and an integration test next to the Scan Manager's
Done when
- The checkpoint script, run after a real scan, shows every device with a type, vendor, score, level and flag
- All of #63's "Done when" items pass
- All unit tests pass without a database or network
Depends on
- #64 to #68 (the evidence record and the four leaves) and Evaluate Flag SH-4.1 (#39)
- Save Device Record SH-4 (#40), Record Observations and Evidence (#41) and Scan Manager (#48)
- Dominant language
- Python
- Stars
- 1
- Forks
- 1
- Avg merge
- 9h 31m
- Merged PRs (30d)
- 36
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Bearkat-Professionals/Software-Engineering-Project
-
SUBTASK #86: Password hashing (BB-5)Possibly taken @Edgeless6 claimed this 2 days ago. Openbackend Low Priority subtask
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Bearkat-Professionals/Software-Engineering-Project#87 · 1 assignee ·
Maintainers usually reply within 1 day
-
Enhancement: Regression tests for Validate Input crash fixes (SH-1)Possibly taken @yoshi301 claimed this 1 day ago. Openbackend Low Priority
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
Bearkat-Professionals/Software-Engineering-Project#59 · 1 assignee ·
Maintainers usually reply within 1 day
-
SUBTASK #86: Manage user accounts (admin)Possibly taken @Edgeless6 claimed this 2 days ago. Openbackend Low Priority subtask
Difficulty 4/5 Over a week Newbie friendliness 20/100
Bearkat-Professionals/Software-Engineering-Project#92 · 1 assignee ·
Maintainers usually reply within 1 day
-
SUBTASK #86: Login screen and signed-in layoutPossibly taken @Solo-Her0 claimed this 2 days ago. Openfrontend Low Priority subtask
Difficulty 4/5 3-5 days Newbie friendliness 28/100
Bearkat-Professionals/Software-Engineering-Project#91 · 1 assignee ·
Maintainers usually reply within 1 day
-
SUBTASK #86: Sessions and route protection in the Application Controller (2.0)Possibly taken @javi120467 claimed this 2 days ago. Openbackend Low Priority security subtask
Difficulty 4/5 3-5 days Newbie friendliness 22/100
Bearkat-Professionals/Software-Engineering-Project#90 · 1 assignee ·
Maintainers usually reply within 1 day
All issues in Bearkat-Professionals/Software-Engineering-Project
Similar issues
-
curriculum documentation quality
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
githubnext/gh-aw-workshop#5367 ·
Maintainers usually reply within 3 days
-
Create Noise Latents ignores randomize_seed and produces the same noise every runPossibly taken @griptapeops claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
griptape-ai/griptape-nodes-library-diffusers#127 ·
Maintainers usually reply within 1 day
-
Jenkins capacity report: metrics history is lost when archiving a month failsPossibly taken @RaphaelFakhri claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
adoptium/infrastructure#4568 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
huggingface/deep-rl-class#723 ·
-
premises-missing
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
WingedGuardian/GENesis-AGI#3928 ·
Maintainers usually reply within 1 day