Defect
src/misp_import.rs::materialize_attribute historically converted MISP attributes into enforcement material when to_ids was explicitly malformed, and inherited unwrap_or(true) promoted an omitted to_ids member to affirmative IDS evidence. Follow-up primary-source review exposed two lifecycle variants: to_ids=true could still authorize an attribute MISP marked deleted, and a nested actionable attribute could survive deletion or structural ambiguity of its enclosing MISP Object because Wardnet flattened Object attributes without carrying parent lifecycle state.
Primary-source verification defines the boundary. MISP publishes to_ids as boolean, MISP-STIX uses to_ids=True for detection-ready indicator material, MISP REST can return attributes independent of that filter, and MISP separately exposes deletion state for attributes and Objects. Wardnet therefore cannot infer enforcement authorization merely because an attribute arrived, because to_ids remains affirmative after withdrawal, or because a nested attribute appears active while its producer Object is withdrawn.
Acceptance
- explicit boolean
to_ids=true remains admitted and boolean false remains skipped;
- missing, object, array and
null to_ids values fail closed and do not create ThreatIndicator/DnsblEntry rows;
- existing explicit scalar compatibility (
"1", case-insensitive "true", numeric 1) remains unless a separately reviewed contract removes it;
- attribute-level
deleted=true, deleted="1", numeric 1, and structurally unrecognized present deletion state fail closed even when to_ids is affirmative;
- enclosing Object deleted/ambiguous states cause every nested attribute to fail closed even when the child itself is actionable;
- recognized active deletion states (
false, "0", numeric 0) and omitted deletion state remain active for compatibility;
- skipped non-affirmative/withdrawn/ambiguous attributes contribute to
skipped_attributes;
- the security decision remains traceable to primary MISP contracts and the repository's accepted fail-safe-default/testing evidence;
- the exact protected-main-derived candidate obtains current repository and central security/review evidence without weakening policy.
TDD lineage and live owning lane — 2026-09-06 KST
PR #167 remains the owning repair lane. Protected/default main is now a52ccd0a24a727d9349bb32def7713882d8cad1e, and #167 is Draft/mergeable at exact 0c83cd5956f512d79c6600e823fcfa6d6f32af4e with that exact protected base.
The MISP-specific admission/lifecycle repair remains retained in the branch:
- RED
588102b972e8ccd591a2081ad12aad1c9a028370 introduced malformed structured to_ids cases before the production wildcard repair;
- RED
8f9c85491adf02c542508920c82dc231ae38033c added omitted to_ids; GREEN 966e8cc1c340d0c1d66c419a95ea1203a36aa76b changed absence to fail closed;
- RED
bdd5f5bae43421f6d306ca8cb1e77af122ccef3a added deleted/malformed attribute lifecycle cases; GREEN 33a8d542b1f71754a521bd599e0351be5cb175ef added the attribute-level lifecycle gate;
- RED
84c16a2d649833f855f31893df6787007d33c503 captured deleted/ambiguous enclosing Objects; GREEN d67d4cc6e2c73d65d7fbc6515269060d66adbdcc carries parent lifecycle state alongside nested attributes and reuses one fail-closed deletion parser.
The later shared DNSBL snapshot-ownership finding remains correctly outside MISP parser authority and is tracked separately by #172. Its causal shared-boundary repair is now implemented at 7042aa19267886e3af9c378dddd879929837877b; run 34000662730 passed the locked workspace tests, including DNSBL ownership/persistence hostile cases, plus strict workspace Clippy, and the valid review thread has been resolved. #172 remains open until the complete repair reaches protected truth, because source GREEN is not protected integration.
Exact-current execution
Current exact #167 head 0c83cd5956f512d79c6600e823fcfa6d6f32af4e remains non-passing at the merge-evidence layer. CI run 34000987921 is queued; sole rust job 101399700528 has steps=[], labels=[ubuntu-24.04], runner_id=0, and no assigned runner/group. Fuzz 34000988028 and current security/SAST/CodeQL/required-workflow lanes are also non-passing. The exact runner/materialization specimen has been handed to .github#712; no source/no-op redispatch churn or predecessor-evidence promotion is authorized.
Completion gate
Keep #168 open until the retained MISP admission/lifecycle delta reaches protected truth through #167 or a verified successor with exact-current repository/security/review/governance evidence. Keep #172 open independently until its shared DNSBL ownership repair is likewise present in protected truth. Do not close either issue merely because the source defects have causal GREEN commits. No self/model approval, routine bypass, force push, destructive rebase, gate weakening, no-op redispatch churn, or predecessor-evidence reuse.
Defect
src/misp_import.rs::materialize_attributehistorically converted MISP attributes into enforcement material whento_idswas explicitly malformed, and inheritedunwrap_or(true)promoted an omittedto_idsmember to affirmative IDS evidence. Follow-up primary-source review exposed two lifecycle variants:to_ids=truecould still authorize an attribute MISP marked deleted, and a nested actionable attribute could survive deletion or structural ambiguity of its enclosing MISP Object because Wardnet flattened Object attributes without carrying parent lifecycle state.Primary-source verification defines the boundary. MISP publishes
to_idsas boolean, MISP-STIX usesto_ids=Truefor detection-ready indicator material, MISP REST can return attributes independent of that filter, and MISP separately exposes deletion state for attributes and Objects. Wardnet therefore cannot infer enforcement authorization merely because an attribute arrived, becauseto_idsremains affirmative after withdrawal, or because a nested attribute appears active while its producer Object is withdrawn.Acceptance
to_ids=trueremains admitted and booleanfalseremains skipped;nullto_idsvalues fail closed and do not createThreatIndicator/DnsblEntryrows;"1", case-insensitive"true", numeric1) remains unless a separately reviewed contract removes it;deleted=true,deleted="1", numeric1, and structurally unrecognized present deletion state fail closed even whento_idsis affirmative;false,"0", numeric0) and omitted deletion state remain active for compatibility;skipped_attributes;TDD lineage and live owning lane — 2026-09-06 KST
PR #167 remains the owning repair lane. Protected/default
mainis nowa52ccd0a24a727d9349bb32def7713882d8cad1e, and #167 is Draft/mergeable at exact0c83cd5956f512d79c6600e823fcfa6d6f32af4ewith that exact protected base.The MISP-specific admission/lifecycle repair remains retained in the branch:
588102b972e8ccd591a2081ad12aad1c9a028370introduced malformed structuredto_idscases before the production wildcard repair;8f9c85491adf02c542508920c82dc231ae38033cadded omittedto_ids; GREEN966e8cc1c340d0c1d66c419a95ea1203a36aa76bchanged absence to fail closed;bdd5f5bae43421f6d306ca8cb1e77af122ccef3aadded deleted/malformed attribute lifecycle cases; GREEN33a8d542b1f71754a521bd599e0351be5cb175efadded the attribute-level lifecycle gate;84c16a2d649833f855f31893df6787007d33c503captured deleted/ambiguous enclosing Objects; GREENd67d4cc6e2c73d65d7fbc6515269060d66adbdcccarries parent lifecycle state alongside nested attributes and reuses one fail-closed deletion parser.The later shared DNSBL snapshot-ownership finding remains correctly outside MISP parser authority and is tracked separately by #172. Its causal shared-boundary repair is now implemented at
7042aa19267886e3af9c378dddd879929837877b; run34000662730passed the locked workspace tests, including DNSBL ownership/persistence hostile cases, plus strict workspace Clippy, and the valid review thread has been resolved. #172 remains open until the complete repair reaches protected truth, because source GREEN is not protected integration.Exact-current execution
Current exact #167 head
0c83cd5956f512d79c6600e823fcfa6d6f32af4eremains non-passing at the merge-evidence layer. CI run34000987921is queued; solerustjob101399700528hassteps=[],labels=[ubuntu-24.04],runner_id=0, and no assigned runner/group. Fuzz34000988028and current security/SAST/CodeQL/required-workflow lanes are also non-passing. The exact runner/materialization specimen has been handed to.github#712; no source/no-op redispatch churn or predecessor-evidence promotion is authorized.Completion gate
Keep #168 open until the retained MISP admission/lifecycle delta reaches protected truth through #167 or a verified successor with exact-current repository/security/review/governance evidence. Keep #172 open independently until its shared DNSBL ownership repair is likewise present in protected truth. Do not close either issue merely because the source defects have causal GREEN commits. No self/model approval, routine bypass, force push, destructive rebase, gate weakening, no-op redispatch churn, or predecessor-evidence reuse.