Skip to content

Fix relationship semantics and validate catalogue consistency - #537

Merged
adulau merged 1 commit into
mainfrom
codex/relationship-catalogue-validation
Oct 9, 2026
Merged

adulau merged 1 commit into
mainfrom
codex/relationship-catalogue-validation

Conversation

@adulau

@adulau adulau commented Oct 9, 2026

Copy link
Copy Markdown
Member

The relationship catalogue describes initiated-by in the forward direction and treats a download origin as the inverse of a downloader. Its text-based checker also accepts duplicate names and inverse links that do not point back. This change clarifies source/target roles and makes CI reject those catalogue errors.

  • Bump the catalogue from version 55 to 56, preserving its UUID and all 320 existing identifiers. Add is-allied-with, precedes, and ambivalent-of alongside their legacy spellings.
  • Correct authorship/initiation directions, clarify download/delivery/observation/location roles, expand 11 placeholder descriptions, and fix prose errors.
  • Remove the incorrect downloaded ↔ downloaded-from and downloads ↔ downloads-from inverse metadata. A process downloading a file and a file downloaded from a URL involve three distinct endpoints.
  • Add reciprocal metadata for parent-of ↔ child-of, XFN Child ↔ Parent, and does-not-target ↔ is-not-targeted-by.
  • Replace grep-based validation with a JSON-aware checker for unique names, nonempty definitions, name whitespace, known inverse targets and reciprocity. Preserve the exact historical padded name as an explicit exception and retain XFN capitalization.
  • Pin the schema to Draft 7 with nonempty string/list constraints, add 22 regression tests to validate_all.sh, and document relationship usage and compatibility.

The commit includes the MISP-LEA.org project request attribution.

Compatibility: existing relationship names and format tags are retained, including STIX's published derived-from direction. Removing the four download opposite fields changes inverse metadata used by consumers; it does not rewrite stored references. The new guidance explains the endpoint distinction and legacy-name mapping. Producer-dependent payment, registration and injection roles, plus optional domain vocabulary additions, are documented for follow-up.

Validation: ./validate_all.sh passed on a clean temporary copy with Python 3.12, validating 435 object templates, 323 relationships and all 22 regression tests. Confirmed that the catalogue UUID and every original identifier are preserved; git diff --check passed.

…tency

This change comes from a MISP-LEA.org project request.

Clarify source and target roles, remove download-origin inverse assertions,
and complete existing parent/child and negative-target inverse pairs.
Retain all legacy identifiers and add three corrected spellings in version 56.

Replace the text-based opposite checker with structured JSON validation,
pin the relationship schema to Draft 7, and run 22 regression tests in CI.
Document standard-specific directions, legacy spellings and compatibility.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T08:29:23.809241Z fe8b08e PR opened
🔒 Security Review ✅ Completed 2026-10-09T08:29:43.878738Z fe8b08e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@adulau
adulau merged commit bd5d18d into main Oct 9, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant