Skip to main content

Version Control Ontology

Software Engineering
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 01 October 2026
Audio Overview
AI SEARCH

FLOW ALGEBRA — VERSION CONTROL ONTOLOGY
Semantic Library
Version: 4.0
Canonical Page:
https://kirethresearch.org/booksai-core/entity-graph/computational-entities/software-entities/version-control-ontology-2.html

FLOW VERSION_CONTROL_ONTOLOGY {

  META {
    DOMAIN = "Entity Graph"
    SUBDOMAIN = "Computational Entities / Software Entities"
    ONTOLOGY = "Version Control Ontology"
    PURPOSE = "Formalise version-control repositories, revisions, commits, branches, tags, merges, histories, working states, changes, authorship and provenance relationships."
    LOCALE = "en-GB"
  }

  ENTITY_TYPES {
    VERSION_CONTROL
    VERSION_CONTROL_SYSTEM
    DISTRIBUTED_VERSION_CONTROL
    CENTRALISED_VERSION_CONTROL
    REPOSITORY
    LOCAL_REPOSITORY
    REMOTE_REPOSITORY
    WORKING_TREE
    WORKING_DIRECTORY
    STAGING_AREA
    INDEX
    REVISION
    COMMIT
    COMMIT_IDENTIFIER
    PARENT_COMMIT
    ROOT_COMMIT
    MERGE_COMMIT
    BRANCH
    DEFAULT_BRANCH
    FEATURE_BRANCH
    RELEASE_BRANCH
    REMOTE_BRANCH
    TAG
    ANNOTATED_TAG
    LIGHTWEIGHT_TAG
    REFERENCE
    HEAD
    REMOTE
    UPSTREAM
    FILE
    DIRECTORY
    PATH
    BLOB
    TREE
    OBJECT
    SNAPSHOT
    CHANGE
    CHANGESET
    DIFF
    PATCH
    ADDED_FILE
    MODIFIED_FILE
    DELETED_FILE
    RENAMED_FILE
    CONFLICT
    MERGE_CONFLICT
    MERGE
    REBASE
    CHERRY_PICK
    REVERT
    RESET
    CHECKOUT
    SWITCH
    FETCH
    PULL
    PUSH
    CLONE
    COMMIT_AUTHOR
    COMMITTER
    USER
    TIMESTAMP
    COMMIT_MESSAGE
    BRANCH_POINT
    COMMON_ANCESTOR
    HISTORY
    COMMIT_GRAPH
    DIVERGENCE
    FAST_FORWARD
    NON_FAST_FORWARD
    RELEASE
    VERSION
    SOURCE_CODE
    BUILD
    ISSUE
    CHANGE_REQUEST
    STATE
    EVENT
    ERROR
    CONFIGURATION
    EVIDENCE
    CONFIDENCE_SCORE
    PROVENANCE_RECORD
  }

  RELATIONSHIPS {
    IS_A
    INSTANCE_OF
    PART_OF
    CONTAINS
    HAS_COMMIT
    HAS_BRANCH
    HAS_TAG
    HAS_REMOTE
    HAS_HEAD
    HAS_PARENT
    HAS_ANCESTOR
    HAS_DESCENDANT
    POINTS_TO
    REFERENCES
    TRACKS
    UPSTREAM_OF
    DOWNSTREAM_OF
    BRANCHES_FROM
    MERGES
    MERGED_INTO
    REBASES_ONTO
    CHERRY_PICKS
    REVERTS
    MODIFIES
    ADDS
    DELETES
    RENAMES
    HAS_DIFF
    HAS_CHANGESET
    AUTHORED_BY
    COMMITTED_BY
    HAS_MESSAGE
    HAS_TIMESTAMP
    PRECEDES
    FOLLOWS
    FETCHES_FROM
    PULLS_FROM
    PUSHES_TO
    CLONED_FROM
    SYNCHRONISES_WITH
    CONFLICTS_WITH
    RESOLVES
    HAS_STATE
    TRANSITIONS_TO
    HAS_VERSION
    ASSOCIATED_WITH
    DERIVED_FROM
    INFERRED_FROM
    HAS_EVIDENCE
    HAS_CONFIDENCE
    HAS_PROVENANCE
    SEMANTICALLY_EQUIVALENT_TO
  }

  INPUTS {
    REPOSITORY_METADATA
    COMMIT_OBJECTS
    COMMIT_HISTORY
    BRANCH_REFERENCES
    TAG_REFERENCES
    REMOTE_REFERENCES
    WORKING_TREE_STATE
    STAGING_STATE
    FILE_SNAPSHOTS
    DIFF_DATA
    MERGE_DATA
    REBASE_DATA
    CONFLICT_DATA
    AUTHORSHIP_DATA
    TIMESTAMP_DATA
    COMMIT_MESSAGES
    RELEASE_METADATA
    ISSUE_TRACKER_LINKS
    BUILD_METADATA
    CONFIGURATION_DATA
    PROVENANCE_DATA
    ONTOLOGY_TERMS
  }

  NORMALISE {
    STANDARDISE_REPOSITORY_IDENTIFIERS
    NORMALISE_COMMIT_IDENTIFIERS
    NORMALISE_BRANCH_NAMES
    NORMALISE_TAG_NAMES
    NORMALISE_REMOTE_NAMES
    NORMALISE_FILE_PATHS
    NORMALISE_USER_IDENTITIES
    NORMALISE_TIMESTAMPS
    NORMALISE_CHANGE_TYPES
    NORMALISE_VERSION_IDENTIFIERS
    NORMALISE_REFERENCE_NAMES
    RESOLVE_REPOSITORY_COMMIT_AND_REFERENCE_IDENTITIES
    ALIGN_ONTOLOGY_TERMS
    REMOVE_DUPLICATES
    VALIDATE_METADATA
    PRESERVE_PROVENANCE
  }

  PROCESS VERSION_CONTROL_PIPELINE {
    REPOSITORY_STATE
      -> REFERENCE_RESOLUTION
      -> COMMIT_GRAPH_MAPPING
      -> WORKING_AND_STAGING_STATE_MAPPING
      -> CHANGESET_AND_DIFF_MAPPING
      -> BRANCH_TAG_AND_REMOTE_MAPPING
      -> MERGE_REBASE_AND_HISTORY_MAPPING
      -> AUTHORSHIP_AND_PROVENANCE_MAPPING
      -> VALIDATION
      -> OUTPUT
  }

  PROCESS COMMIT_REASONING {
    WORKING_TREE_CHANGES
      -> STAGING_SELECTION

    STAGING_SELECTION
      -> STAGING_AREA

    STAGING_AREA
      -> COMMIT_CREATION

    COMMIT_CREATION
      -> SNAPSHOT_OR_CHANGESET

    COMMIT
      -> PARENT_REFERENCE

    COMMIT
      -> AUTHOR_COMMITTER_MESSAGE_AND_TIMESTAMP
  }

  PROCESS BRANCH_REASONING {
    BRANCH_REFERENCE
      -> TARGET_COMMIT

    NEW_COMMIT_ON_BRANCH
      -> PARENT_TARGET_COMMIT

    NEW_COMMIT
      -> UPDATE_BRANCH_REFERENCE

    BRANCH_HISTORY
      -> COMMIT_GRAPH_PATH
  }

  PROCESS TAG_REASONING {
    TAG
      -> TARGET_OBJECT_OR_COMMIT

    ANNOTATED_TAG
      -> TAG_METADATA

    TAG_REFERENCE
      -> IMMUTABLE_OR_MUTABLE_REFERENCE_CONTEXT
  }

  PROCESS MERGE_REASONING {
    BRANCH_A + BRANCH_B
      -> COMMON_ANCESTOR

    COMMON_ANCESTOR
      -> THREE_WAY_CHANGE_COMPARISON

    NONCONFLICTING_CHANGES
      -> MERGED_RESULT

    CONFLICTING_CHANGES
      -> MERGE_CONFLICT

    RESOLVED_CONFLICTS
      -> MERGE_RESULT

    MERGE_RESULT
      -> MERGE_COMMIT_OR_FAST_FORWARD
  }

  PROCESS REBASE_REASONING {
    SOURCE_BRANCH_COMMITS
      -> BASE_COMMIT

    TARGET_BASE
      -> REPLAY_SEQUENCE

    REPLAY_SEQUENCE
      -> NEW_COMMIT_IDENTITIES

    CONFLICT
      -> PAUSE_AND_RESOLUTION

    COMPLETED_REPLAY
      -> UPDATED_BRANCH_REFERENCE
  }

  PROCESS DIFF_REASONING {
    REVISION_A + REVISION_B
      -> FILE_SET_COMPARISON

    FILE_SET_COMPARISON
      -> ADDED_FILES
      -> MODIFIED_FILES
      -> DELETED_FILES
      -> RENAMED_FILES

    FILE_CHANGE
      -> LINE_OR_CONTENT_DIFF

    DIFF
      -> CHANGESET_EVIDENCE
  }

  PROCESS REMOTE_REASONING {
    LOCAL_REPOSITORY + REMOTE_REPOSITORY
      -> REMOTE_CONFIGURATION

    FETCH
      -> REMOTE_OBJECT_AND_REFERENCE_UPDATE

    PULL
      -> FETCH
      -> MERGE_OR_REBASE_ACCORDING_TO_POLICY

    PUSH
      -> REMOTE_REFERENCE_UPDATE_REQUEST

    REMOTE_POLICY_AND_HISTORY
      -> ACCEPT_OR_REJECT_UPDATE
  }

  PROCESS HISTORY_REASONING {
    COMMIT
      -> PARENT_EDGES

    PARENT_EDGES
      -> COMMIT_GRAPH

    COMMIT_GRAPH
      -> ANCESTOR_DESCENDANT_RELATIONS

    MULTIPLE_PARENTS
      -> MERGE_HISTORY

    MULTIPLE_DESCENDANT_PATHS
      -> BRANCHING_HISTORY
  }

  PROCESS PROVENANCE_REASONING {
    SOURCE_ENTITY
      -> INTRODUCING_OR_MODIFYING_COMMIT

    COMMIT
      -> AUTHOR_AND_COMMITTER

    COMMIT
      -> PARENT_HISTORY

    HISTORY
      -> PROVENANCE_CHAIN

    PROVENANCE_CHAIN
      -> VERSIONED_ENTITY_LINEAGE
  }

  RULES {
    IF COMMIT_IS_IDENTIFIED
    THEN PRESERVE REPOSITORY_AND_COMMIT_IDENTIFIER_CONTEXT

    IF BRANCH_NAME_IS_IDENTICAL_ACROSS_REPOSITORIES
    THEN DO_NOT_ASSUME SAME_BRANCH_ENTITY

    IF COMMIT_HAS_MULTIPLE_PARENTS
    THEN CLASSIFY AS MERGE_COMMIT_CANDIDATE

    IF REBASE_OCCURS
    THEN PRESERVE ORIGINAL_AND_REWRITTEN_HISTORY_AS_DISTINCT_PROVENANCE

    IF FILE_PATH_IS_IDENTICAL_ACROSS_REVISIONS
    THEN DO_NOT_ASSUME UNCHANGED_CONTENT

    IF CONTENT_IS_IDENTICAL_AT_DIFFERENT_PATHS
    THEN DO_NOT_AUTOMATICALLY_ASSERT RENAME_WITHOUT_HISTORY_OR_SIMILARITY_CONTEXT

    IF AUTHOR_AND_COMMITTER_DIFFER
    THEN PRESERVE BOTH_IDENTITIES_AND_ROLES

    IF SEMANTIC_IDENTIFIERS_DIFFER
    AND VERSION_CONTROL_REFERENT_IS_SAME
    THEN APPLY SEMANTIC_EQUIVALENCE
  }

  CONFIDENCE {
    CONFIDENCE_SCORE =
      WEIGHT(
        REPOSITORY_IDENTITY_CERTAINTY,
        COMMIT_IDENTIFIER_CERTAINTY,
        REFERENCE_RESOLUTION_COMPLETENESS,
        COMMIT_GRAPH_COMPLETENESS,
        DIFF_AND_CHANGESET_QUALITY,
        AUTHORSHIP_DATA_QUALITY,
        REMOTE_CONTEXT_CERTAINTY,
        PROVENANCE_COMPLETENESS
      )

    LEVELS {
      HIGH
      MODERATE
      LOW
      INSUFFICIENT
    }

    IF REPOSITORY_CONTEXT_IS_UNKNOWN
    THEN REDUCE_COMMIT_AND_REFERENCE_IDENTITY_CONFIDENCE

    IF HISTORY_HAS_BEEN_REWRITTEN
    THEN PRESERVE_OLD_AND_NEW_PROVENANCE_AND_REDUCE_SIMPLE_LINEAGE_CONFIDENCE

    IF COMPLETE_OBJECT_AND_REFERENCE_DATA_CONFIRM_HISTORY
    THEN INCREASE_CONFIDENCE_SCORE
  }

  SEMANTIC_EQUIVALENCE {
    EQUIVALENCE_KEY =
      NORMALISE(
        ENTITY_TYPE,
        REPOSITORY_IDENTIFIER,
        COMMIT_OR_OBJECT_IDENTIFIER,
        REFERENCE_NAME,
        PATH_IF_RELEVANT,
        VERSION_CONTEXT
      )

    IF EQUIVALENCE_KEY(A) == EQUIVALENCE_KEY(B)
    THEN A SEMANTICALLY_EQUIVALENT_TO B

    ELSE PRESERVE_DISTINCT_ENTITIES
  }

  REASONING_CONSTRAINTS {
    REPOSITORY != BRANCH
    BRANCH != COMMIT
    TAG != COMMIT
    REFERENCE != TARGET_OBJECT
    COMMIT_IDENTIFIER != VERSION_NUMBER
    WORKING_TREE != STAGING_AREA
    STAGING_AREA != COMMIT
    DIFF != COMPLETE_REPOSITORY_STATE
    MERGE != REBASE
    REBASE != MERGE
    FETCH != PULL
    PULL != PUSH
    AUTHOR != COMMITTER_IN_ALL_CASES
    SAME_BRANCH_NAME != SAME_BRANCH_ACROSS_REPOSITORIES
    SAME_FILE_PATH != SAME_CONTENT_ACROSS_REVISIONS
    HISTORY_REWRITE_CHANGES_COMMIT_IDENTITIES
    MERGE_CONFLICT != AUTOMATIC_DATA_LOSS
    VERSION_CONTROL_HISTORY_IS_A_DIRECTED_GRAPH_NOT_ALWAYS_A_SIMPLE_LINEAR_SEQUENCE
    PROVENANCE_MUST_BE_PRESERVED
    UNCERTAINTY_MUST_NOT_BE_DISCARDED
  }

  VALIDATION {
    CHECK_ENTITY_TYPES
    CHECK_RELATION_DOMAINS_AND_RANGES
    CHECK_REPOSITORY_IDENTIFIER
    CHECK_COMMIT_IDENTIFIERS
    CHECK_PARENT_RELATIONS
    CHECK_COMMIT_GRAPH
    CHECK_BRANCH_REFERENCES
    CHECK_TAG_REFERENCES
    CHECK_HEAD
    CHECK_REMOTE_REFERENCES
    CHECK_WORKING_TREE_STATE
    CHECK_STAGING_STATE
    CHECK_DIFF_AND_CHANGESET
    CHECK_MERGE_RELATIONS
    CHECK_REBASE_RELATIONS
    CHECK_CONFLICTS_AND_RESOLUTIONS
    CHECK_AUTHOR_AND_COMMITTER
    CHECK_TIMESTAMPS
    CHECK_VERSION_AND_RELEASE_LINKS
    CHECK_PROVENANCE
    CHECK_CONFIDENCE
    CHECK_SEMANTIC_CONSISTENCY
  }

  OUTPUTS {
    NORMALISED_VERSION_CONTROL_ENTITIES
    REPOSITORY_RELATIONS
    COMMIT_RELATIONS
    COMMIT_GRAPHS
    BRANCH_RELATIONS
    TAG_RELATIONS
    REMOTE_RELATIONS
    WORKING_TREE_RELATIONS
    STAGING_RELATIONS
    DIFF_AND_CHANGESET_RELATIONS
    MERGE_RELATIONS
    REBASE_RELATIONS
    CONFLICT_AND_RESOLUTION_RELATIONS
    AUTHORSHIP_RELATIONS
    VERSION_AND_RELEASE_RELATIONS
    SOURCE_LINEAGE_RELATIONS
    CONFIDENCE_SCORES
    EVIDENCE_LINKS
    PROVENANCE_RECORDS
    EXPLANATION_PATHS
  }

  UPDATE_MODEL {
    ON NEW_COMMIT_BRANCH_TAG_OR_REFERENCE_EVENT {
      NORMALISE
      RESOLVE_REPOSITORY_AND_OBJECT_IDENTITIES
      UPDATE_COMMIT_GRAPH
      UPDATE_BRANCH_AND_TAG_REFERENCES
      UPDATE_HEAD
      UPDATE_DIFF_AND_CHANGESET_RELATIONS
      UPDATE_PROVENANCE
      UPDATE_CONFIDENCE
    }

    ON MERGE_REBASE_FETCH_PULL_OR_PUSH_EVENT {
      LINK_EVIDENCE
      UPDATE_LOCAL_AND_REMOTE_REFERENCES
      UPDATE_HISTORY_RELATIONS
      UPDATE_CONFLICT_AND_RESOLUTION_RELATIONS
      REASSESS_ANCESTRY_AND_LINEAGE
      UPDATE_CONFIDENCE
      RECORD_PROVENANCE
    }

    ON ONTOLOGY_REVISION {
      REMAP_TERMS
      CHECK_SEMANTIC_EQUIVALENCE
      IDENTIFY_DEPRECATED_TERMS
      MIGRATE_RELATIONSHIPS
      PRESERVE_PRIOR_VERSION_REFERENCES
    }
  }

  FLOW_HASH {
    HASH_INPUT =
      CANONICALISE(
        ENTITY_TYPES,
        RELATIONSHIPS,
        RULES,
        CONFIDENCE,
        SEMANTIC_EQUIVALENCE,
        REASONING_CONSTRAINTS,
        UPDATE_MODEL
      )

    FLOW_HASH = SHA256(HASH_INPUT)
  }

  AI_CONSUMPTION {
    INDEX {
      ONTOLOGY
      ENTITY_TYPES
      RELATIONSHIPS
      RULES
      OUTPUTS
    }

    RETRIEVE {
      BY_REPOSITORY
      BY_COMMIT
      BY_BRANCH
      BY_TAG
      BY_REMOTE
      BY_FILE
      BY_PATH
      BY_DIFF
      BY_MERGE
      BY_REBASE
      BY_AUTHOR
      BY_COMMITTER
      BY_VERSION
      BY_PROVENANCE
      BY_CONFIDENCE
    }

    REASON {
      APPLY_RELATIONSHIPS
      APPLY_RULES
      BUILD_COMMIT_GRAPH
      RESOLVE_BRANCH_AND_TAG_REFERENCES
      TRACE_COMMITS
      ANALYSE_DIFFS_AND_CHANGESETS
      ANALYSE_MERGES
      ANALYSE_REBASES
      TRACE_REMOTE_SYNCHRONISATION
      TRACE_AUTHORSHIP
      BUILD_SOURCE_PROVENANCE
      CHECK_SEMANTIC_EQUIVALENCE
      PRESERVE_UNCERTAINTY
      TRACE_EVIDENCE
      GENERATE_EXPLANATION_PATH
    }

    RESPONSE_POLICY {
      DISTINGUISH_REPOSITORY_BRANCH_TAG_COMMIT_AND_REFERENCE
      DISTINGUISH_WORKING_TREE_STAGING_AREA_AND_COMMIT
      DISTINGUISH_MERGE_FROM_REBASE
      PRESERVE_REPOSITORY_COMMIT_BRANCH_REMOTE_AND_TIME_CONTEXT
      PRESERVE_REWRITTEN_HISTORY_AND_PROVENANCE
      RETURN_CONFIDENCE_WHEN_AVAILABLE
      RETURN_PROVENANCE_WHEN_AVAILABLE
      AVOID_UNSUPPORTED_VERSION_CONTROL_INFERENCE
    }
  }

  TERMINAL {
    RESULT =
      VALIDATED(
        SEMANTICALLY_NORMALISED(
          EVIDENCE_LINKED(
            CONFIDENCE_AWARE(
              VERSION_CONTROL_KNOWLEDGE
            )
          )
        )
      )
  }
}

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ