ConceptSet.java

/*
 * Copyright © 2026 IKE Network (support@ike.network)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package network.ike.foundation.ike.terms;

import dev.ikm.tinkar.entity.builder.ActiveStamp;
import dev.ikm.tinkar.entity.builder.KnowledgeSet;

/**
 * The concept section of the IkeFoundation ledger: the module concept, the set root, and
 * the set's content concepts. Sections name what, never when — delivery phasing
 * lives in issues, not source.
 */
final class ConceptSet {

    private ConceptSet() {
    }

    /**
     * Composes this section's declarations into the session.
     *
     * @param set the knowledge set (the session)
     */
    static void compose(KnowledgeSet set) {
        // Curator identity resolved: author is Ike.IKE_COMMUNITY, minted below —
        // a derived-identity reference (T5 of the birth FQN), so citing it here,
        // before its own set.concept(...) call runs, is exactly as safe as the
        // forward reference to Ike.MODULE on the same line (IKE-Network/ike-issues#872).
        ActiveStamp inception = Ike.INCEPTION;

        // Both anchor into the base taxonomy so a KB that loads base + this set
        // navigates to it from the root — no orphan forest.
        set.concept("IkeFoundation module (IkeFoundation)").at(inception)
                .synonym("IkeFoundation module")
                .definition("The module scoping every stamp of the IkeFoundation content"
                        + " set; the export dimension for this knowledge.")
                .isA(IkeTerm.MODULE);

        set.concept("IkeFoundation root (IkeFoundation)").at(inception)
                .synonym("IkeFoundation root")
                .definition("Root concept of the Ike starter set.")
                .isA(IkeTerm.MODEL_CONCEPT);

        // Community authorship: the IKE Network itself, attributed as author for
        // content synthesized by tooling on the Network's behalf (the
        // identity-exact starter-set ingest, #872) rather than by an individual
        // editor or an ingested upstream source. No dedicated "Author" taxonomy
        // root exists in TinkarTerm — USER is the only real anchor, and it's
        // exactly what this set's own stamps used as a placeholder before this.
        set.concept("IKE Community (IkeFoundation)").at(inception)
                .synonym("IKE Community")
                .definition("Community authorship: the IKE Network itself, attributed"
                        + " as author for content synthesized by tooling on the"
                        + " Network's behalf (e.g. the identity-exact starter-set"
                        + " ingest, IKE-Network/ike-issues#872) rather than by an"
                        + " individual editor or an ingested upstream source.")
                .isA(IkeTerm.USER);

        // The ingested foundation (the full starter-set ingest, #872) composes
        // in Foundation.FoundationSet, wired from IkeSource. The IKE carriers
        // section (new (IKE)-tagged content) lands separately when the wave-2
        // coordination concludes.
    }
}