Skip to content

Attribute parent/child arcs: composition -> taxonomy + M7 audit#15

Merged
david-w-t merged 2 commits intodavidwt-com:mainfrom
david-w-t:develop
May 10, 2026
Merged

Attribute parent/child arcs: composition -> taxonomy + M7 audit#15
david-w-t merged 2 commits intodavidwt-com:mainfrom
david-w-t:develop

Conversation

@david-w-t
Copy link
Copy Markdown
Contributor

Summary

  • Bootstrap.terms attribute-subtree arcs (chars 23/24) flip from kind=composition to kind=taxonomy. Attribute parent/child relations are refinements of kind ("welded attachment" is-a-kind-of "attachment"), not part-whole. Category scaffold (chars 21/22) stays composition -- categories are organisational containers.
  • graphdb_attr.erl writes the new arcs as kind=taxonomy and filters its child-lookup helper accordingly.
  • Cache invariant unaffected: graphdb_mgr:verify_caches/0 already accepts kind in {composition, taxonomy} for node.parents.
  • Bundles the M7 audit doc-only commit (b9cc869) that retroactively documents the templates work that landed during the H-task series.

Test plan

  • ./rebar3 compile -- zero warnings
  • ./rebar3 ct -- 164 tests passed
  • ./rebar3 eunit -- 64 tests passed
  • Reviewer: confirm category scaffold semantics (organisational vs. specialization) -- the change deliberately keeps composition there
  • Reviewer: confirm the no-migration choice is acceptable (dev data dirs need to be wiped before first start under the new code)

Notes

  • Tag pre-attr-taxonomy-squash-reset preserves the unsquashed two-commit history before merge.
  • This continues the M-task track. After this lands, remaining open M-items are Task 6 (graphdb_language), M6 (multilingual), and E1 (graphdb_rules) -- all kernel pre-requisites satisfied.

🤖 Generated with Claude Code

david-w-t and others added 2 commits May 9, 2026 19:44
Templates landed during the H-task series alongside the Connection-arc
and Template-AVP work but were never reflected in TASKS-MEDIUM.  Audit
the actual code/test surface (graphdb_class templates group + 7 cases,
graphdb_instance template stamping + 4 cases, graphdb_attr marker + 2
cases, graphdb_bootstrap kind_order) and rewrite M7 with full
landed-vs-deferred breakdown.  Note the architectural departure:
templates are per-class compositional children rather than under a
shared Classes/Templates subtree -- better matches §7's "named
semantic context defined on a class".  Default "default" template
auto-attached on create_class.

Updates the dependency notes on Task 6 (template-side now landed; the
remaining piece is query-side selectivity) and E1 (kernel
pre-requisites all satisfied; remains a future-feature track in scope
but is now unblocked).

ARCHITECTURE.md summary: rewrite the open-kernel-questions sentence so
it reflects that only M6 (multilingual) is open kernel-level;
template-scoped queries are Task 6's responsibility, not a kernel gap.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Attribute parent/child relations within the attribute library are
refinements of kind ("welded attachment" is-a-kind-of "attachment"),
not part-whole.  Bootstrap.terms previously wrote these arcs with
kind=composition; the original mental model in Dallas's design notes
treated them as taxonomic, and the runtime helper that resolves
specializations (e.g. find_attribute_by_name walking children) reads
more naturally with the kind atom matching that intent.

Scope:

- Bootstrap.terms: 30 arcs under chars 23/24 (every arc rooted in
  the Attributes/Names/Literals/Relationships subtree) flipped to
  kind=taxonomy.  The four category-scaffold arcs (Root -> Attributes
  / Classes / Languages / Projects, chars 21/22) stay kind=composition
  because categories are organisational containers.
- graphdb_attr.erl: 7 kind=composition writes (do_create_attribute and
  do_create_relationship_attribute_pair) plus one downward_children_by_arc
  filter flipped to taxonomy.  Comments touched up.
- Tests: graphdb_attr_SUITE asserts taxonomy kind on the new
  relationship-attribute arc; the cosmetic helper rename
  (new_attribute_writes_compositional_arcs ->
  new_attribute_writes_taxonomy_arcs) keeps the suite self-describing.
  graphdb_bootstrap_tests fixture row for Attributes -> Names flipped.
- Docs: arcs-authoritative.md and ARCHITECTURE.md cache-source tables
  updated with explanatory paragraph; the-knowledge-network.md
  attribute-types section gains the "attachment / welded attachment"
  example sentence; root and graphdb CLAUDE.md bootstrap quick-refs
  updated.

The cache invariant is unaffected: graphdb_mgr:verify_caches/0 already
reads node.parents from arcs of kind in {composition, taxonomy}, so
the flip is mechanical at the cache layer.  No migration is provided
for stale dev data dirs -- delete data/ before first start under the
new code (the test step in this commit already wipes data/).

228 tests green (164 CT + 64 EUnit).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@david-w-t david-w-t merged commit d420802 into davidwt-com:main May 10, 2026
1 check 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