Core OCSF changes go through pull requests to ocsf/ocsf-schema. Each pull request needs three approvals, a Signed-off-by line on every commit (Developer Certificate of Origin), and a numbered entry in the Unreleased section of its CHANGELOG.md. Its CI validates the metaschema, compiles, checks backward compatibility against the last stable release, and runs an advisory reviewer on descriptions.
Reserve the name and UID so nobody else takes them.
extensions.md with caption Fraud, name fraud, the next unused vendor UID (the registry counts down from 998; 983 was the next free value when this was written, so check again), a one-line note, and this repository’s URL.New Extension registration for Fraud under Unreleased in CHANGELOG.md.schema/fraud/extension.json and the uid values in examples/ (class and type UIDs are derived from it).Before proposing core changes, start a thread in OCSF Discussions and raise it in the OCSF Slack. Link the viewer and this repository, and ask the open questions in design.md: involved_parties as a core mechanism, and whether fraud frameworks belong in attacks or a separate attribute.
Split the work so each pull request can be reviewed on its own:
monetary_amount, financial_account, payment_instrument, counterparty, financial_transaction, approval, and their dictionary attributes.fraud and fraud_signals, plus applying them to findings, Authentication, and User Management.fraud_attacks, involved_parties, fraud_loss, loss_event_classification, regulatory_classifications.When moving from extension to core:
schema/fraud/ into the matching core folders and drop the fraud/ prefixes.events/findings/*.json, events/iam/*.json, objects/finding_info.json) with edits to the core files themselves.category × 1000 + uid.references and <code> examples. tools/lint_descriptions.py checks this.tools/check.sh passes here against core mainSigned-off-by: Your Name <email> (git commit -s)Unreleased, with the pull request link