Changelog¶
Unreleased¶
Proposed in #36, #37 and #39. Spec changes are additive: every new field is optional and existing documents validate unchanged.
Added (reference tools and spec)¶
smf.py: only SMF documents are read. A YAML or JSON file with no SMF document in it (a CI workflow, a tool's configuration, a data contract in another standard) is skipped and counted in the summary line, and folders whose name starts with a dot are not walked. A file that cannot be parsed is an error only when it has a top-levelsmf:line. A document that names an SMFkindand omitssmf:is still an error. SMF documents can now sit at the root of a repository or beside the data contracts they are built on. (#36)smf.py validateandtest:--format jsonprints one JSON object with the errors, warnings and counts. (#36)reference/README.md: "Where the files live", with a recommended layout. (#36)metric-contract.schema.json: optionalplain_words,inclusions,not_certified_for,change_noteandsign_off {by, date}, so every row of the one-page Metric Contract has a field.concept.schema.json: optionalplain_words,change_noteandsign_off, for the Definition Contract. The spec says "Maintained by" isOwnership.steward. (#37)- Gross margin example: Service Gross Margin now carries its plain-words line, what it includes, what it is not approved for and its effective date, taken from
docs/metric-contract.md. (#37) binding.schema.json: optionalid. A duplicate is an error. (#39)-
smf.py validate: a claim'sexecution.bindingmust name a build record in the set, byBindingid or as<platform>:<ref>. No match is a warning, and an error in strict mode; a match that belongs to a different Metric Contract than the claim's is an error. Both examples validate unchanged. (#39) -
reference/spec/README.md: a crosswalk of everyMetricContractfield against Apache Ossie, dbt MetricFlow, ODCS and ODPS; a non-normative field mapping for a dbt MetricFlow metric (dbt 1.12 YAML spec) with a linking convention (config.meta.smfpointing at the contract; aBindingwithplatform: dbtpointing back); and how an ODPS data product points at a Metric Contract withauthoritativeDefinitions. "Relationships across standards" gains the dbt and ODPS rows. No schema changes. - Gross margin example: Product Gross Margin is now written out in each standard it touches (a dbt metric, an Apache Ossie model, two ODCS data contracts and an ODPS data product), with an Ossie
Bindingand anexpression_snapshoton the dbtBinding. The files in other standards are illustrative and are skipped by the CLI.
Changed (reference tools)¶
smf.py validate: a missing path and an empty folder now end with the same summary line as any other failure.
Added¶
docs/metamodel.md: a model of the models. The four columns (data, meaning, analytics and AI, decision), a diagram of how data contracts, SMF documents, implementations and decisions connect, a table of every connection with the standard that records it, and the two ways to read it (audit trail of a decision; operating picture).docs/gaps.md: the gap catalogue. Thirty-odd named "connection that should exist and does not" cases, each with how it shows up, the practice that owns closing it, and a weight. Stated uses: work list, observed maturity reading, tool rendering rules, AI governance evidence.reference/spec/README.md"Relationships across standards": the field that records each connection in the metamodel, including the two recorded from the other end in ODCS (authoritativeDefinitions) and Apache Ossie (custom_extensions) and the OpenLineage run reference.docs/contracts-in-context.md: "Working with data products (ODPS)", and a note that a semantic layer metric can point back at its Metric Contract.docs/metric-contract.md,docs/works-with.md,docs/metamodel.mdanddocs/gaps.mdnow treat ODPS data products separately from ODCS data contracts.- Roadmap: the maturity model is now described as derived from closed gaps; a metamodel workbench (reads other standards' files, writes only SMF documents and patches, keeps no catalog of its own) is listed under Later.
v0.5.0 (2026-10-08): Apache Ossie alignment and a contributor backlog¶
Minor bump because the spec gains two optional Binding fields. Existing documents validate unchanged. v0.4.8 and v0.4.9 were merged without tags; this release includes them.
Added¶
- Contributor backlog: fourteen scoped issues, each one deliverable, under the labels
example,crosswalk,interop,prior-artandboundary-case;CONTRIBUTING.md"Where to start" points at them. docs/contracts-in-context.md: "Working with interchange formats (Apache Ossie)", the Ossie counterpart to the ODCS section: what each side carries, two-way linking, theai_contextoverlap, and what Ossie leaves out by design.reference/spec/README.md: non-normative field mapping between an Ossie metric andMetricContract, a linking convention (Ossiecustom_extensionswithvendor_name: SMFpointing at the contract; an SMFBindingwithplatform: ossiepointing back), and the spec source.docs/research/landscape.mdandbibliography.md: findings sourced from the Ossie core spec (0.2.0.dev0, draft).- Northwind example: an
untestedOssie binding for Net Revenue, with anexpression_snapshot. binding.schema.json: optionalimplementation.derived_from(the implementation a converter generated this one from) andexpression_snapshot(the executable logic, or its SHA-256, as it was when conformance was last assessed). Both additive; existing bindings validate unchanged.platformnow documents recommended values.- Spec open question and roadmap: ask Apache Ossie for a native pointer to a governing definition, as ODCS has.
Changed¶
docs/works-with.md: the Ossie row now says how the two link, matching the ODCS row.
v0.4.9 (2026-10-04): Code of conduct contact¶
Changed¶
CODE_OF_CONDUCT.md: concerns are reported through GitHub private reporting, replacing the placeholder contact.
v0.4.8 (2026-10-04): Review fixes¶
Fixed (reference tools and spec)¶
smf.py validate: a secondResolutionRulefor the same term, or twoTermdocuments for the same term and context that map to different concepts, is now an error. The resolver returnsCONFLICTinstead of picking one by file order.smf.py validate: references must point at the right kind of document (a metric field must name a Metric Contract, and so on).owner_refis now checked. Schema-invalid documents and YAML syntax errors are reported instead of crashing the validator.smf.py resolve: aliases are tried preferred-term first, never in file order, and rules for deprecated terms are skipped. A replacement that is itself superseded is followed to the current concept. A YAML boolean in awhenclause now matches--context key=true.smf.py testandresolvestop with an error on a missing or empty path or on invalid documents.smf.py test --results: an id that matches noTestCaseis an error, each result must be a validResolutionResult, andmust_applyis now checked against the result'sconstraints.exclusions. The two sample results files are now full results.smf.py import-csv: a concept's definition and owner are now taken from the term's default row when that row names no concept. The shipped template round-trips.smf.pyloads.jsondocuments in folders, as the spec says it may.resolution-rule.schema.json: adefaultwithstate: NEEDS_CLARIFICATIONnow requiresoptions, ascontextualclauses already did.requirements.txt: addedrfc3339-validatorsodate-timevalues are checked;validatewarns if it is missing.check-links.py: skips code spans, and checks links with titles, reference-style links, HTMLhrefand repeated-heading anchors.site/build.py: nested lists keep their levels. The home page no longer shows an edit link that 404s.
Changed¶
- The context key in the starter answer table and both reference examples is now
business_area, notdomain, to match the vocabulary. Context keys are free-form; the spec now says so. - Gross margin example: an
audience: externalcontext, answer rule and check resolve external reporting to the consolidated view, as the example page already said. The gross margin check count is now 7 passed, 0 failed, 1 skipped. docs/metric-contract.md: the Service Gross Margin example now matches its machine form (excludes, approved for).docs/semantic-authority.md: status is v0.4, seven objects, the seven roles from the vocabulary, the conflict outcomes from the practices page, and plain language in place of identifier blocks..github/workflows/validate.ymlnow also runs the link check andmkdocs build --strict, and runs the checks on Python 3.9 and 3.12, matching the "Python 3.9+" claim insmf.py.CONTRIBUTING.md, the pull request template,AGENTS.mdandCLAUDE.mdlist the same checks.GOVERNANCE.md: the spec version field issmf:, and the spec is inreference/spec/.
Added¶
templates/answer-table.md: a plain-language answer table template.resolution-table.csvstays as the file technical teams load into tools.- Spec: rules for one answer rule per term, right-kind references, text matching of context values, and how
testchecks results. - README repository map,
LICENSING.mdandNOTICEcoversite/,mkdocs.ymlandprompts/;prompts/bootstrap-repo.mdis linked fromCONTRIBUTING.md.
v0.4.7 (2026-09-29): Website¶
Added¶
- A browsable website built with MkDocs Material and published to GitHub Pages:
mkdocs.yml,site/(home page, styles, build script, requirements) and.github/workflows/pages.yml. .github/ISSUE_TEMPLATE/config.yml: a "Questions and ideas → Discussions" link on the new-issue page.site/build.pyassembles the website source so every relative link that works on GitHub also works on the site, and adjusts GitHub-style lists so they render the same.
Changed¶
reference/tools/check-links.py: skipssite/and the website build folders.docs/roles-and-artifacts.mdandreference/README.md: two folder links now point to a page (or to GitHub) so they work on the website.- Home page browser-tab title no longer repeats the site name.
v0.4.6 (2026-09-29): Wrap-up¶
Changed¶
docs/semantic-authority.md: the sample API block moved toreference/examples/semantic-authority-examples.md("Sample API shape (optional)"), replaced by one plain sentence and a link.docs/roadmap.md: v0.4 through v0.4.5 summarized as one "Done" line; "this version" wording removed.CLAUDE.md: shortened. It defers toAGENTS.md, lists the local check commands and states the branch-and-pull-request workflow.
Added¶
reference/tools/check-links.py: checks that relative Markdown links and heading anchors resolve.
v0.4.5 (2026-09-29): Plain language¶
Changed¶
docs/semantic-authority.md: the ten YAML examples moved toreference/examples/semantic-authority-examples.mdand replaced with plain-language sentences and links. "Domain" replaced with "business area" where it was SMF's own term ("domain layer" is now "business-area layer"). The five technical state names replaced with the plain answers from the vocabulary.docs/ai-governance-evidence.md: schema names replaced with plain terms (ownership records, conflict records, context definitions, checks, claim traces).docs/research-agenda.md: "domain/context" reworded to "business area or context".- Every non-normative page now carries the same
**Type:** Non-normativeline under its title, on its own line. AGENTS.md: added an exception under "Audience first" allowingdocs/research/anddocs/patterns/to name fields and schema identifiers when quoting a source or describing a technical pattern, provided they are labeled non-normative.
Added¶
reference/examples/semantic-authority-examples.md: illustrative YAML for each Semantic Authority object, with headings that match the practice page.
v0.4.4 (2026-09-29): Consistency fixes¶
Changed¶
- Enterprise default now applies only in the contexts an answer rule names (for example board and external reporting). It is not a fallback for company-wide questions; when context doesn't match a rule, ask. Wording aligned in vocabulary, practices, Semantic Authority, the Definition Contract template and the examples.
- Consolidated Gross Margin is recorded as broader than Product and Service. It is computed from totals, may define cost differently, and is reconciled by the Controller. None of the three is comparable with another as a margin. Updated in the gross margin example and its Metric Contracts.
- Perspective is reframed as applied prior art, not an SMF invention. "What SMF adds" in
works-with.mdnow credits DDD, SBVR, Business Semantics Management and Egeria and links to the landscape research. The Apache Ossie row inmetric-contract.mdcorrected to match the research. - ODCS technical detail (linking example and field names) moved from
docs/toreference/spec/README.md. Framework pages now describe it in plain language. - "Proof" replaced with "evidence" in the framework's core question. "Domain" replaced with "business area" where it was SMF's own term.
- Non-normative type labels added to the gross margin example, research agenda and bibliography. Duplicate status line removed from the landscape research.
- Framework overview no longer says every practice has three size forms; a few, like Interchange, are usually only needed at larger scale.
Added¶
- Vocabulary entries for the seven roles, Build record and Change note.
- Optional
broader_thanfield on the Perspective schema, checked as a reference by the validator, and set on the consolidated perspective in the gross margin example. not_comparable_withon the consolidated Metric Contract in the gross margin example.
v0.4.3 (2026-09-29)¶
- Repository moved to github.com/Semantic-Management/framework; links added to README and CONTRIBUTING.
- CI job renamed to
checks.
v0.4.2 (2026-09-28): Licensing¶
Added¶
LICENSE(Apache-2.0, forreference/),LICENSE-docs(CC BY 4.0, for the framework, docs and templates),NOTICE, andLICENSING.mdexplaining which applies where.- SPDX identifiers on reference code, schemas and examples.
Removed¶
LICENSE-TODO.md.
v0.4.1 (2026-09-28): Contracts in context¶
Added¶
docs/contracts-in-context.md: how SMF contracts sit alongside data contracts (ODCS) and metric catalogs; "one place computes, one place agrees"; ODCSauthoritativeDefinitionslinking example.- Semantic Contract as the umbrella term; Definition Contract for business terms that aren't numbers, with a one-page template.
additivityandbuilt_onfields on Metric Contracts (template and reference schema).
Changed¶
- Metric Contract template reorganized around commonly used field names (expression, grain, filters, time semantics, allowed dimensions, additivity, owner, certification, version), plus SMF's additions (perspective, approved uses, comparability).
v0.4 (2026-09-28): Semantic Management, business-first¶
Changed¶
- Name returned to Semantic Management Framework (SMF), positioned as the missing discipline for business meaning alongside ITSM, DAMA, TOGAF, COBIT, MDM, model risk management and AI governance.
- README and framework docs rewritten for business and analytics leaders.
- Headline principle: Two things can be true, with Context selects the perspective; when it can't, ask.
- Flagship example changed from revenue to gross margin (product, service and consolidated perspectives).
- Practices rewritten in plain language with small / mid-size / enterprise forms.
- Resolution states presented as the five answers: use it, use the replacement, ask, flag the conflict, not governed.
- All technical material moved to
reference/(spec, schemas, examples, CLI renamedsmf.py; envelope fieldsmf:).
Added¶
docs/discipline.md(peer disciplines and hand-offs),docs/vocabulary.md(term, concept, perspective, context, Metric Contract),docs/lifecycle.md,docs/metric-contract.md,docs/roles-and-artifacts.md,docs/getting-started.md,docs/works-with.md,docs/examples/gross-margin.md.- Perspective as a core term and a reference document kind;
perspectiveandcomparabilityon Metric Contracts. - One-page Metric Contract template.
- Machine-readable gross margin example with checks; alias support in the reference resolver.
Removed¶
- "Open Semantic Contracts" naming and contract-first framing (v0.3).
core.md,terminology.md,quickstart.md,builds-on.md(replaced by vocabulary, getting-started and works-with).
v0.3¶
- Open project files; machine-readable spec and CLI; LF AI & Data research.
v0.2¶
- Practices made independently adoptable; five resolution states; classification rules assigned to meaning.
v0.1¶
- Initial starter.