Help us shape the future of Go! Take the 2026 Go Developer Survey

schema

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 13, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Overview

Package schema owns the record serialization layer and its schema-versioned message definitions used by the graph store.

Index

Constants

View Source
const SchemaVersion uint32 = 1

SchemaVersion is the current on-disk schema version stamped into every Meta record (D-02).

Additive-only discipline (D-02a): within a single SchemaVersion, fields on Node, Edge, File, and Meta are NEVER renumbered or reused. Retiring a field means adding its number to a `reserved` clause in graph.proto, not deleting or repurposing it. SchemaVersion itself is bumped ONLY when a genuinely breaking layout change is unavoidable — a well-formed additive change (a new field, a newly reserved range) never requires a bump.

Variables

View Source
var File_internal_schema_graph_proto protoreflect.FileDescriptor

Functions

func IsCurrentSchemaVersion

func IsCurrentSchemaVersion(m *Meta) bool

IsCurrentSchemaVersion reports whether m carries the schema version this build of codegraph-go was compiled against. A record with an older version is expected to still decode (protobuf's forward/backward compatibility, ARCH-01) but callers that need to gate on version drift can use this helper rather than comparing SchemaVersion inline.

Types

type Edge

type Edge struct {
	Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"`
	Kind   string `protobuf:"bytes,3,opt,name=kind,proto3" json:"kind,omitempty"`
	// Optional call-site coordinates. Per RESEARCH Pitfall 2 / Open Question
	// 3: the Pebble edge KEY (`e/<src>/<kind>/<dst>`, D-03) intentionally
	// omits line/col today, so two call sites between the same (source,
	// kind, target) collapse to one stored edge. That key-identity decision
	// is deferred to Phase 2 extractor design — this record must still be
	// able to CARRY line/col so a future key-shape change (or an
	// annotation/audit trail) doesn't lose the data that's available at
	// extraction time.
	Line int32 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
	Col  int32 `protobuf:"varint,5,opt,name=col,proto3" json:"col,omitempty"`
	// provenance records how this edge was derived. Phase 2 writes only
	// ground-truth values ("ast" or empty) per D-03a; "heuristic" provenance
	// (fuzzy/inferred edges) is Phase 5's addition, not written here.
	Provenance string `protobuf:"bytes,6,opt,name=provenance,proto3" json:"provenance,omitempty"`
	// metadata is an open extension bag for edge-kind-specific extractor
	// annotations that do not warrant their own field yet. Additive Go-parity
	// field (D-03).
	Metadata map[string]string `` /* 143-byte string literal not displayed */
	// contains filtered or unexported fields
}

Edge is a directed relationship between two Node ids (calls, imports, implements, etc.).

func (*Edge) Descriptor deprecated

func (*Edge) Descriptor() ([]byte, []int)

Deprecated: Use Edge.ProtoReflect.Descriptor instead.

func (*Edge) GetCol

func (x *Edge) GetCol() int32

func (*Edge) GetKind

func (x *Edge) GetKind() string

func (*Edge) GetLine

func (x *Edge) GetLine() int32

func (*Edge) GetMetadata

func (x *Edge) GetMetadata() map[string]string

func (*Edge) GetProvenance

func (x *Edge) GetProvenance() string

func (*Edge) GetSource

func (x *Edge) GetSource() string

func (*Edge) GetTarget

func (x *Edge) GetTarget() string

func (*Edge) ProtoMessage

func (*Edge) ProtoMessage()

func (*Edge) ProtoReflect

func (x *Edge) ProtoReflect() protoreflect.Message

func (*Edge) Reset

func (x *Edge) Reset()

func (*Edge) String

func (x *Edge) String() string

type File

type File struct {
	Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	// content_hash MUST be a collision-resistant hash (SHA-256 — see
	// Security Domain V6 in 01-RESEARCH.md), never a weak hash like MD5.
	// The hash computation itself lands with the Phase 2 indexer; this
	// field only defines its storage shape.
	ContentHash string `protobuf:"bytes,2,opt,name=content_hash,json=contentHash,proto3" json:"content_hash,omitempty"`
	Language    string `protobuf:"bytes,3,opt,name=language,proto3" json:"language,omitempty"`
	NodeCount   int64  `protobuf:"varint,4,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
	EdgeCount   int64  `protobuf:"varint,5,opt,name=edge_count,json=edgeCount,proto3" json:"edge_count,omitempty"`
	// errors records per-file extraction failures (e.g. oversized or
	// unparseable source) so one bad file does not abort the whole index run
	// (RESEARCH Assumptions Log A2, Pitfall 4). Additive extension of D-03's
	// File record.
	Errors []string `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"`
	// mtime_unix_ns is the file's on-disk modification time (nanoseconds
	// since epoch) as observed by the writer. Additive Phase-4 field
	// (D-01a); written by both `index` and `sync` so the incremental sync
	// engine's stat pre-filter can cheaply shortlist changed files before
	// paying for a content_hash recompute.
	MtimeUnixNs int64 `protobuf:"varint,7,opt,name=mtime_unix_ns,json=mtimeUnixNs,proto3" json:"mtime_unix_ns,omitempty"`
	// size_bytes is the file's on-disk size in bytes as observed by the
	// writer. Additive Phase-4 field (D-01a); written by both `index` and
	// `sync` alongside mtime_unix_ns for the same stat pre-filter.
	SizeBytes int64 `protobuf:"varint,8,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
	// contains filtered or unexported fields
}

File is a per-source-file record: identity, content hash, and aggregate counts for the symbols/edges attributed to it.

func (*File) Descriptor deprecated

func (*File) Descriptor() ([]byte, []int)

Deprecated: Use File.ProtoReflect.Descriptor instead.

func (*File) GetContentHash

func (x *File) GetContentHash() string

func (*File) GetEdgeCount

func (x *File) GetEdgeCount() int64

func (*File) GetErrors

func (x *File) GetErrors() []string

func (*File) GetLanguage

func (x *File) GetLanguage() string

func (*File) GetMtimeUnixNs

func (x *File) GetMtimeUnixNs() int64

func (*File) GetNodeCount

func (x *File) GetNodeCount() int64

func (*File) GetPath

func (x *File) GetPath() string

func (*File) GetSizeBytes

func (x *File) GetSizeBytes() int64

func (*File) ProtoMessage

func (*File) ProtoMessage()

func (*File) ProtoReflect

func (x *File) ProtoReflect() protoreflect.Message

func (*File) Reset

func (x *File) Reset()

func (*File) String

func (x *File) String() string

type Meta

type Meta struct {
	SchemaVersion  uint32 `protobuf:"varint,1,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"`
	NodeCount      int64  `protobuf:"varint,2,opt,name=node_count,json=nodeCount,proto3" json:"node_count,omitempty"`
	EdgeCount      int64  `protobuf:"varint,3,opt,name=edge_count,json=edgeCount,proto3" json:"edge_count,omitempty"`
	LastSyncUnixMs int64  `protobuf:"varint,4,opt,name=last_sync_unix_ms,json=lastSyncUnixMs,proto3" json:"last_sync_unix_ms,omitempty"`
	Healthy        bool   `protobuf:"varint,5,opt,name=healthy,proto3" json:"healthy,omitempty"`
	HealthMessage  string `protobuf:"bytes,6,opt,name=health_message,json=healthMessage,proto3" json:"health_message,omitempty"`
	// has_file_index reports whether this graph's on-disk store has been
	// populated with the Phase-4 `x/` file-owned secondary index (D-02).
	// Additive Phase-4 field (D-02b); false means a pre-Phase-4 graph that
	// lacks the index, signaling `sync` to perform a one-time full
	// re-index backfill before switching to incremental updates.
	HasFileIndex bool `protobuf:"varint,7,opt,name=has_file_index,json=hasFileIndex,proto3" json:"has_file_index,omitempty"`
	// contains filtered or unexported fields
}

Meta is the single versioned record (stored under the `meta/` key prefix, D-03) that stamps the on-disk schema version plus aggregate counts and index health. schema_version is bumped ONLY for a genuinely breaking layout change — additive field changes never require a bump (D-02a).

func NewMeta

func NewMeta() *Meta

NewMeta returns a Meta record stamped with the current SchemaVersion. Callers should use this instead of constructing a Meta literal directly, so a SchemaVersion bump only needs to change in one place.

func (*Meta) Descriptor deprecated

func (*Meta) Descriptor() ([]byte, []int)

Deprecated: Use Meta.ProtoReflect.Descriptor instead.

func (*Meta) GetEdgeCount

func (x *Meta) GetEdgeCount() int64

func (*Meta) GetHasFileIndex

func (x *Meta) GetHasFileIndex() bool

func (*Meta) GetHealthMessage

func (x *Meta) GetHealthMessage() string

func (*Meta) GetHealthy

func (x *Meta) GetHealthy() bool

func (*Meta) GetLastSyncUnixMs

func (x *Meta) GetLastSyncUnixMs() int64

func (*Meta) GetNodeCount

func (x *Meta) GetNodeCount() int64

func (*Meta) GetSchemaVersion

func (x *Meta) GetSchemaVersion() uint32

func (*Meta) ProtoMessage

func (*Meta) ProtoMessage()

func (*Meta) ProtoReflect

func (x *Meta) ProtoReflect() protoreflect.Message

func (*Meta) Reset

func (x *Meta) Reset()

func (*Meta) String

func (x *Meta) String() string

type Node

type Node struct {
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Kind          string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"`
	Name          string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	QualifiedName string `protobuf:"bytes,4,opt,name=qualified_name,json=qualifiedName,proto3" json:"qualified_name,omitempty"`
	FilePath      string `protobuf:"bytes,5,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"`
	Language      string `protobuf:"bytes,6,opt,name=language,proto3" json:"language,omitempty"`
	StartLine     int32  `protobuf:"varint,7,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"`
	EndLine       int32  `protobuf:"varint,8,opt,name=end_line,json=endLine,proto3" json:"end_line,omitempty"`
	StartCol      int32  `protobuf:"varint,9,opt,name=start_col,json=startCol,proto3" json:"start_col,omitempty"`
	EndCol        int32  `protobuf:"varint,10,opt,name=end_col,json=endCol,proto3" json:"end_col,omitempty"`
	// signature is the extractor-rendered parameter/return signature string
	// (e.g. "func(a int, b string) error"). Additive Go-parity field (D-03);
	// written by the Phase 2 goextract symbol pass.
	Signature string `protobuf:"bytes,11,opt,name=signature,proto3" json:"signature,omitempty"`
	// docstring is the leading comment/doc block attached to the symbol, as
	// captured verbatim by the extractor. Additive Go-parity field (D-03);
	// written by the Phase 2 goextract symbol pass.
	Docstring string `protobuf:"bytes,12,opt,name=docstring,proto3" json:"docstring,omitempty"`
	// visibility is the language-level access modifier ("public", "private",
	// "package", etc.) as classified by the extractor. Additive Go-parity
	// field (D-03); written by the Phase 2 goextract symbol pass.
	Visibility string `protobuf:"bytes,13,opt,name=visibility,proto3" json:"visibility,omitempty"`
	// is_exported reports whether the symbol crosses the package/module
	// boundary (Go: identifier starts uppercase). Additive Go-parity field
	// (D-03); written by the Phase 2 goextract symbol pass.
	IsExported bool `protobuf:"varint,14,opt,name=is_exported,json=isExported,proto3" json:"is_exported,omitempty"`
	// return_type is the extractor-rendered return type string, when the
	// symbol kind has one (function/method). Additive Go-parity field
	// (D-03); written by the Phase 2 goextract symbol pass.
	ReturnType string `protobuf:"bytes,15,opt,name=return_type,json=returnType,proto3" json:"return_type,omitempty"`
	// contains filtered or unexported fields
}

Node is a single symbol record (function, type, method, etc.) extracted from a source file.

NOTE: field names/types are designed against the TS `.codegraph/` DDL captured in Plan 01-04. If 01-04 has not landed by the time this is read, reconcile these fields against the captured DDL once it is available — additively only, per D-02a.

func (*Node) Descriptor deprecated

func (*Node) Descriptor() ([]byte, []int)

Deprecated: Use Node.ProtoReflect.Descriptor instead.

func (*Node) GetDocstring

func (x *Node) GetDocstring() string

func (*Node) GetEndCol

func (x *Node) GetEndCol() int32

func (*Node) GetEndLine

func (x *Node) GetEndLine() int32

func (*Node) GetFilePath

func (x *Node) GetFilePath() string

func (*Node) GetId

func (x *Node) GetId() string

func (*Node) GetIsExported

func (x *Node) GetIsExported() bool

func (*Node) GetKind

func (x *Node) GetKind() string

func (*Node) GetLanguage

func (x *Node) GetLanguage() string

func (*Node) GetName

func (x *Node) GetName() string

func (*Node) GetQualifiedName

func (x *Node) GetQualifiedName() string

func (*Node) GetReturnType

func (x *Node) GetReturnType() string

func (*Node) GetSignature

func (x *Node) GetSignature() string

func (*Node) GetStartCol

func (x *Node) GetStartCol() int32

func (*Node) GetStartLine

func (x *Node) GetStartLine() int32

func (*Node) GetVisibility

func (x *Node) GetVisibility() string

func (*Node) ProtoMessage

func (*Node) ProtoMessage()

func (*Node) ProtoReflect

func (x *Node) ProtoReflect() protoreflect.Message

func (*Node) Reset

func (x *Node) Reset()

func (*Node) String

func (x *Node) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL