Skip to content

fix: align CI, schema, metadata, and docs with the four-layer rename - #6

Merged
ramphias merged 2 commits into
masterfrom
claude/unruffled-solomon-88622f
May 1, 2026
Merged

fix: align CI, schema, metadata, and docs with the four-layer rename#6
ramphias merged 2 commits into
masterfrom
claude/unruffled-solomon-88622f

Conversation

@ramphias

@ramphias ramphias commented May 1, 2026

Copy link
Copy Markdown
Owner

Summary

The l1-core / l2-extensions / l3-enterprise rename left CI globs, fallback discovery paths, version compatibility declarations, and documentation counts pointing at the old layout. This PR closes 12 distinct consistency findings and tightens the L2/L3 schema so the same drift cannot silently recur.

  • Blocker fix: CI workflow now watches the actual directory layout — previously every ontology change bypassed validation.
  • Schema hardening: compatible_core_version, description_en, and a layer-name pattern are now required in schema/extension_schema.json. Future extensions cannot be merged with these fields missing.
  • Documentation reconciled: L1 class count corrected from 28 to 24 (6 abstract + 18 concrete) across all docs; G-01 governance rule clarified to count abstract+concrete combined.
  • Versioning model documented: new docs-site/architecture/versioning.md explains why the repo version (2.4.0) and L1 ontology content version (2.1.0) intentionally diverge.

What changed

CI / tooling

  • .github/workflows/ontology-validate.yml: globs updated to l1-core/**, l2-extensions/**, l3-enterprise/**, schema/**. Removed merge step for non-existent private_enterprise/deloitte-china-consulting/.
  • scripts/validate_l3.py: fallback discover_files() uses new directory names.
  • mkdocs.yml site_dir: site; deploy-docs.yml no longer needs the _mkdocs_sitesite copy step.

Schema (schema/extension_schema.json)

  • compatible_core_version and description_en added to required.
  • layer pattern: ^L2_[a-z][a-z0-9_]*_extension$ or ^L3_[a-z][a-z0-9_]+$.
  • compatible_extension_version semver pattern added (used by L3).

Metadata fixes

File Change
l2-extensions/consulting/... 1.1.0 → 1.1.1, compat 2.0.0 → 2.1.0
l2-extensions/luxury-goods/... 2.0.0 → 2.0.1, compat 2.0.0 → 2.1.0
l2-extensions/fnb/... layer renamed L2_fnb_industry → L2_fnb_industry_extension, version 1.0.1 → 1.0.2, added compatible_core_version: 2.1.0 and description_en
l3-enterprise/acme-tech-solutions/... extends no longer uses _v2/_v1 suffixes (matches actual layer IDs); version 1.0.0 → 1.0.1, compat 2.0.0 → 2.1.0
L2 and L3 _template/ files gained the now-required fields so newly cloned extensions pass schema validation

Documentation

  • docs-site/glossary/l1-classes.md and docs-site/glossary/index.md: 2824 classes.
  • CHANGELOG.md, RELEASE_NOTES.md, docs-site/changelog.md: "4 abstract domains + 20 concrete" → "6 abstract + 18 concrete" (matches reality).
  • CONTRIBUTING.md: G-01 clarified to count abstract+concrete; G-05 ratio updated to 13/24.
  • docs-site/glossary/index.md G-01 row notes "abstract + concrete combined" and shows current 24/25.
  • l3-enterprise/acme-tech-solutions/README.md: inheritance chain shows real L1 (24/13) and L2 (54/45) sizes.
  • New docs-site/architecture/versioning.md (added to nav) explains repo version vs L1 ontology content version.

Reviewer notes

  • The schema is now stricter — if anyone has uncommitted L2/L3 work locally, they will need to add compatible_core_version and description_en.
  • L3 acme extends previously relied on a fuzzy prefix match in validate_l3.py:118 to reconcile the _v2/_v1 suffixes against the bare layer IDs in L1/L2. Now it matches exactly — same merge result, no fuzzy fallback needed.
  • mkdocs.yml site_dir change: _mkdocs_site/ is still ignored by .gitignore, so no untracked artifacts will appear after this merges.

Test plan

  • python scripts/validate_governance.py → 15/15 PASS (24 classes, 13 relations, 18 axioms)
  • python scripts/validate_l3.py --all → 7 L2 + 1 L3, 0 errors, 0 warnings on every file
  • python scripts/merge_layers.py l3-enterprise/acme-tech-solutions/... → 104 classes merged across L1+L2+L3
  • CI green on this PR (Ontology Validation workflow now triggers; previously dormant)
  • mkdocs build --strict (will be exercised by deploy-docs.yml on merge)

🤖 Generated with Claude Code

The l1-core / l2-extensions / l3-enterprise rename left CI globs,
fallback discovery paths, version compatibility declarations, and
docs counts pointing at the old layout. This PR closes those gaps
and tightens the L2/L3 schema so the same drift cannot recur.

CI / tooling
- ontology-validate.yml watches l1-core/, l2-extensions/, l3-enterprise/,
  schema/ instead of the obsolete core/, extensions/, enterprise/,
  private_enterprise/. Drops the merge step for non-existent
  deloitte-china-consulting and points the acme merge at l3-enterprise/.
- validate_l3.py fallback discover_files uses the new directory names.
- mkdocs.yml site_dir is "site" so deploy-docs.yml no longer needs an
  intermediate _mkdocs_site copy step.

Schema hardening (schema/extension_schema.json)
- compatible_core_version and description_en are now required.
- layer pattern enforces L2_*_extension or L3_* shape.
- compatible_extension_version pattern added for L3.

L2 / L3 metadata
- consulting v1.1.1 and luxury-goods v2.0.1 declare compatible_core_version 2.1.0.
- fnb extension renamed L2_fnb_industry -> L2_fnb_industry_extension,
  bumped to 1.0.2, and gained compatible_core_version + description_en.
- acme L3 extends now references the bare layer IDs (no _v2/_v1 suffixes),
  bumped to 1.0.1, compatible_core_version raised to 2.1.0.
- L2 and L3 templates updated so new extensions inherit the required fields.

Documentation
- L1 class count corrected from 28 to 24 (6 abstract + 18 concrete) in
  glossary/l1-classes.md and glossary/index.md.
- CHANGELOG, RELEASE_NOTES, docs-site/changelog updated to "6 abstract +
  18 concrete" instead of the inaccurate "4 abstract domains + 20 concrete".
- CONTRIBUTING G-01 / G-05 entries reflect the real 13 relations / 24 classes
  ratio and clarify that G-01 caps abstract+concrete combined.
- glossary/index.md G-01 row clarifies the cap unit and current usage 24/25.
- Acme L3 README inheritance chain shows the real L1 (24/13) and L2 (54/45) sizes.
- New docs-site/architecture/versioning.md explains why the repo version
  (2.4.0) and the L1 ontology content version (2.1.0) intentionally diverge.

Verified locally
- validate_governance.py: 15/15 PASS (24 classes, 13 relations, 18 axioms).
- validate_l3.py --all: 7 L2 + 1 L3 = 0 errors, 0 warnings.
- merge_layers.py on acme L3: 104 classes merged across L1+L2+L3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@netlify

netlify Bot commented May 1, 2026

Copy link
Copy Markdown

Deploy Preview for ontologystudio canceled.

Name Link
🔨 Latest commit fd1911d
🔍 Latest deploy log https://app.netlify.com/projects/ontologystudio/deploys/69f44337b8bb10000761637a

PR #6 was opened against an older master. While in review, master gained
20 commits implementing Phase 0-4 of the parallel security/quality plan,
which subsumed most of PR #6's CI and schema work but missed some
consistency findings unique to PR #6.

This merge keeps the strictly better master versions and preserves the
PR #6 fixes that master did not address.

Conflict resolution
- ontology-validate.yml: take master (adds schema-validate job,
  check_docs_sync, health_report, run-documented-commands).
- validate_l3.py: take master (adds extends-cycle detection, keeps
  private_enterprise/ in fallback for downstream private deployments).
- deploy-docs.yml: take master's per-ref concurrency and PR-only build,
  drop the `_mkdocs_site -> site` copy step (mkdocs now writes to site/
  directly via mkdocs.yml site_dir).
- schema/extension_schema.json: keep PR #6's stricter `layer` pattern
  (anyOf L2_*_extension / L3_*) — master's `^L[23]_` would have allowed
  the original L2_fnb_industry name we just fixed. Keep master's
  abstract / owner additions to class items.
- l2-extensions/fnb/...json: keep PR #6's bilingual description; drop
  the empty sample_instances: [] (it failed the schema's minItems: 5).
- docs-site/glossary/{l1-classes,index}.md: keep PR #6's
  "(6 abstract + 18 concrete)" breakdown.

Preserved from PR #6 (master did not have these)
- L3 acme extends references the bare layer IDs (no _v2/_v1 suffixes).
- L3 acme compatible_core_version raised 2.0.0 -> 2.1.0; version 1.0.0 -> 1.0.1.
- CHANGELOG / RELEASE_NOTES / docs-site/changelog: "4 abstract domains +
  20 concrete" -> "6 abstract: 4 domain roots + Party + Resource;
  18 concrete leaves".
- L3 acme README inheritance chain shows the real L1 (24/13) and L2 (54/45) sizes.
- CONTRIBUTING G-05 ratio updated to 13/24 ≈ 0.54.
- New docs-site/architecture/versioning.md (added to nav) explains why
  the repo version (2.4.0) and L1 ontology content version (2.1.0) diverge.

Verified locally
- validate_governance.py: 15/15 PASS.
- validate_l3.py --all: 7 L2 + 1 L3, 0 errors / 0 warnings.
- validate_schema.py: 9 OK / 2 SKIP / 0 FAIL.
- check_docs_sync.py: PASS (22 bindings, no drift).
- merge_layers.py on acme: 104 classes across L1+L2+L3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ramphias
ramphias merged commit 8811b78 into master May 1, 2026
14 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