Attribute parent/child arcs: composition -> taxonomy + M7 audit#15
Merged
david-w-t merged 2 commits intodavidwt-com:mainfrom May 10, 2026
Merged
Attribute parent/child arcs: composition -> taxonomy + M7 audit#15david-w-t merged 2 commits intodavidwt-com:mainfrom
david-w-t merged 2 commits intodavidwt-com:mainfrom
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
kind=compositiontokind=taxonomy. Attribute parent/child relations are refinements of kind ("welded attachment" is-a-kind-of "attachment"), not part-whole. Category scaffold (chars 21/22) stayscomposition-- categories are organisational containers.graphdb_attr.erlwrites the new arcs askind=taxonomyand filters its child-lookup helper accordingly.graphdb_mgr:verify_caches/0already acceptskind in {composition, taxonomy}fornode.parents.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 passedNotes
pre-attr-taxonomy-squash-resetpreserves the unsquashed two-commit history before merge.🤖 Generated with Claude Code