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
Download Code
Copy to Clipboard