Repository navigation
cybedtools 0.3.1
Fixes
-
CCSSF attribution no longer claims permission. The Canadian Centre for Cyber Security's reply asked that its material be referenced when used; it did not grant permission. Every remaining "used with permission" wording for CCSSF (
creditText,license, ingestion comments,docs/ingestion-summary.md,docs/framework-invariants.yml, and the framework's provenance manifest) now reads "Copyright Government of Canada. Referenced as the Canadian Centre for Cyber Security asked." No other framework's attribution changed, and the assembled graph is byte-identical for all ten other frameworks; only the two CCSSFcreditText/licensetriples differ. -
Organizing units and statements no longer share one identifier space. A node's IRI was its framework prefix plus its framework-local id, which is safe only when a framework numbers its units and its statements separately. Two frameworks do not. DCWF draws work-role codes and task/KSA numbers from one numeric range, so 33 of its 74 work roles were fused with a statement node and two roles (801 and 632) were their own element. Cyber.org K-12 names a grade-band x sub-concept cell after its axes and names the standards inside it the same way, so 109 of its 116 cells were fused with their only standard and every one of those
cybed:hasElementlinks pointed at itself. Present since v0.1.0. No published count was affected: fusing a unit with a statement loses nothing, which is why it went unnoticed for three minor versions, and it is a modelling error all the same. Unit IRIs in those two frameworks now carry a discriminator declared asunit_iri_prefixindocs/framework-invariants.yml, so DCWF work role 462 isdcwf:role-462and a Cyber.org cell iscyberorg:cell-K-2.SEC.AUTH; each keeps its printed code as aschema:identifierliteral. Statement IRIs do not move, and neither do the other nine frameworks' IRIs, which come out byte-identical. Anyone holding DCWF or Cyber.org K-12 unit IRIs taken from a locally built graph must rebuild. No graph file has ever been published, so nothing downstream of a release is affected. A new build stage,scripts/026-verify-graph.R, now fails the build on any IRI typed bothcybed:OrganizingUnitandcybed:RoleElementand on any self-referentialcybed:hasElementtriple, with no per-framework exemption;scripts/030-export-release.Rre-runs the same check before it writes. The same stage also enforces thegraph_invariantsblock ofdocs/framework-invariants.yml, which declared the assembled graph's per-framework and combined counts but which nothing had ever read.
Licensing
- New dataset
framework_licensesand accessorcybed_license(): one row for the package's own code and one per framework, with what each source's own document says, the attribution wording a steward prescribed where there is one, the public-redistribution class, the terms URL, and the date the terms were last read. It is the single owner of licence facts. framework_summary$licenseis now derived fromframework_licenses$license_short, so the label and the detail cannot disagree. Nine labels change. SFIA read "SFIA Use Policy"; SFIA requires a licence for all use and its terms cover structure as well as text. NICE read as public domain alone; NIST also grants a worldwide royalty-free right that includes derivative works. ECSF read "ENISA re-use notice"; the report PDF is CC BY 4.0 and the ingested data files carry no notice. DigComp read "EU open re-use"; its imprint page states CC BY 4.0. CCSSF no longer says "used with permission"; the Centre asked that its material be referenced when used. Every other column offramework_summaryis unchanged for all eleven frameworks.docs/framework-invariants.ymlnow marks DigComp 2.2, ECSF, Cyber.org K-12 and CSTA asfull_with_attribution. They were unmarked, which read as unrestricted.
Documentation
- New article
ai-assistants: the rules an AI assistant needs to write cybedtools code that runs.AGENTS.mdandcontext7.jsongain theelement_text()androle_element_bindings()caveats. - The README links each framework to its steward's page and notes that the documentation is indexed in Context7 and published as
llms.txt. - The invariants key
total_elements_strictis renamedtotal_elements_with_subpoints. It counted parents plus sub-points, which is not what "strict" means inframework_summary.