cjm-context-graph-primitives
The dep-light data-primitives library for the cjm context-graph ecosystem — the shared data nouns that workflow cores, graph-storage adapters, provenance bundles, and the graph-aware composition layer all speak: structured resource locators with canonical URI rendering, content-hash-primary SourceRef provenance references, atomic typed content slices, GraphNode/GraphEdge/GraphContext containers, and the structured typed query expression executed by graph-storage adapters. Data nouns vs storage verbs: everything that consumes or produces graph data depends on this library; only persistence depends on a graph-storage adapter. Capabilities never construct SourceRef — the composition layer does.
Modules
cjm_context_graph_primitives.__init__cjm_context_graph_primitives.graph— The graph data nouns - GraphNode / GraphEdge / GraphContext. Moved here from cjm-graph-plugin-system per the data-nouns-vs-storage-verbs split (pass-2 Thread 2): every consumer of graph DATA (workflow cores, bundles, the CR-18 graph-aware layer, the storage adapter itself) depends on this library; only persistence depends on the storage adapter. GraphContext satisfies the substrate's FileBackedDTO protocol (to_temp_file) for zero-copy worker transfer. All three nouns are wire-registered (stage 4): graph-storage adapter methods return them typed across the worker boundary.cjm_context_graph_primitives.journal— The write-journal core: append-only JSONL ops — the durable, replayable source of truth.cjm_context_graph_primitives.locators— Structured resource locators - the typed sum type addressing WHERE referenced content lives (CR-19). A locator renders a canonical URI string for the things strings are good at (grep, logs, cache keys, display) while keeping typed field access primary; unknown kinds round-trip losslessly for forward compatibility.cjm_context_graph_primitives.provenance— SourceRef - the cross-cutting provenance reference (CR-19). Identity = content_hash (PRIMARY); location = locator; region = optional atomic typed slice. verify() is hash-based regardless of whether the locator still resolves - the structural fix for dangling row-id provenance (cache-hit rows; ledgers E13/D3).cjm_context_graph_primitives.query— The structured typed query expression (pass-2 Thread 5) - DATA nouns describing graph reads. Execution lives in graph-storage adapters (stage 4 translates expressions per-backend); this library only defines, validates, and (de)serializes them. Typed expressions are the primary, portable surface - no storage-schema leak (the raw-SQL nodes/edges + json_extract coupling of ledger C2/C3), and scale-shaped (server-side filter/page/count answering D13). RawQuery is the explicitly-marked, backend-coupled escape hatch: recurring raw patterns EXPOSE missing typed-expression capabilities.cjm_context_graph_primitives.slices— Atomic typed content slices - WHAT REGION of the located resource a reference consumes. The slice KIND selects the content facet on multi-facet nodes (TimeSlice -> audio, CharSlice -> text), which dissolves the chunk-local-vs-source-coordinate ambiguity without a frame field (pass-2 Thread 2).cjm_context_graph_primitives.timings— THE INSTRUMENT's collector: phase spans and the storage door's accumulator for ONE run.
API
cjm_context_graph_primitives.graph
GraphContextclass — Container for graph read results (a subgraph).GraphEdgeclass — A relationship between two nodes. Composition is ALWAYS edges — grouping,GraphNodeclass — An entity in a context graph.
cjm_context_graph_primitives.journal
append_opfunction — Append one op record — the envelope-agnostic coreappend_writewraps.append_writefunction — Append one write op (skipping an exact (verb,args) duplicate).compress_cold_segmentsfunction — Compress every PLAIN cold segment of a family (the live tail is never touched).compress_segmentfunction — Store one cold segment xz-compressed, proven lossless before the plain copy goes.current_sessionfunction — The session key stamped on journal appends (provenance, not replay input).journal_segmentsfunction — The journal's SEGMENT FAMILY: rotated cold segments + the live tail.maybe_rotatefunction — Rotate the live tail once it reaches the budget (the POST-append check).op_clockfunction — Open one op's clock window: reuse an open one (replay, or an enclosing write unit),op_clockedfunction — Decorator form ofop_clockfor a write entry point (sync or async): every db writeop_nowfunction — The op clock's current value: every write-path time reads THIS, nevertime.time().read_journalfunction — Read every journaled write op across the SEGMENT FAMILY (one JSON object perread_segmentfunction — Read one journal segment's text, plain or xz-compressed.rotate_journalfunction — Close the live tail into the next immutable cold segment (explicit rotation).write_segmentfunction — Write one segment atomically, in its own encoding (plain or xz-compressed).
cjm_context_graph_primitives.locators
FileRefclass — Locator for a filesystem artifact (e.g. a consumed run manifest).GraphNodeRefclass — Locator for a node in a context graph.UnknownLocatorclass — Lossless carrier for a locator kind this library version does not know.locator_from_dictfunction — Reconstruct a locator from its wire dict.
cjm_context_graph_primitives.provenance
SourceRefclass — A provenance reference to (a region of) a resource.
cjm_context_graph_primitives.query
EdgeQueryclass — Typed edge read: filter / order / page / project / count.EdgeQueryResultclass — Typed result of anEdgeQuery— exactly one field is populated,NodeQueryclass — Typed node read: filter / traverse / order / page / project / count.NodeQueryResultclass — Typed result of aNodeQuery— exactly one field is populated,OrderByclass — Result ordering by one property (server-side; C2/C3 ORDER BY index).PropertyPredicateclass — One property comparison; a query'swherelist combines predicates with AND.RawQueryclass — The explicitly-marked, backend-coupled escape hatch.RawQueryResultclass — Typed result of aRawQuery— tabular, backend-shaped (the columns areRelationPredicateclass — Match nodes that have an edge ofrelation_type(one-hop, typed traversal —SourcePredicateclass — Match nodes whosesourcescontain a reference matching by content hashquery_from_dictfunction — Reconstruct a query expression from its tagged wire dict.result_from_dictfunction — Reconstruct a query result from its tagged wire dict.
cjm_context_graph_primitives.slices
CharSliceclass — Character-range slice into a text facet.FrameSliceclass — Frame-range slice into a video facet.FullContentclass — Whole-facet reference (no range) — selects a content facet without slicing.LineSliceclass — Line-range slice into code or structured text.PageSliceclass — Page slice into a paginated document facet (PDF, EPUB).TimeSliceclass — Temporal slice into an audio/video facet, in seconds.UnknownSliceclass — Lossless carrier for a slice kind this library version does not know.parse_slicefunction — Parse a canonical slice string into a typed slice.slice_from_dictfunction — Reconstruct a typed slice from its wire dict.
cjm_context_graph_primitives.timings
Runclass — One measured run: its identity, the phase table, the storage table, the series.begin_runfunction — Arm a run for the current context; every span and storage call below lands in it.current_phasefunction — The span path a measurement would land under now.end_runfunction — Disarm a run begun withbegin_run(its tables stay readable forevent).process_startedfunction — When this process started, to ~10 ms: its age (uptime less its start tick, both fromrecord_seriesfunction — Fold one positioned cost into its bin (the armed run's series; a no-op when none is):record_storagefunction — Fold one storage call into the armed run (a no-op when none is): by method, and -- whenspanfunction — Measure one phase of the armed run (a no-op yielding a scratch dict when none is).timedfunction — Decorator form ofspanfor a function (sync or async): each call is one phase.timings_pathfunction — The timings ledger beside a db (dev-graph.db->dev-graph.timings.jsonl).
Dependencies
Depends on: cjm-substrate
Used by: cjm-capability-graph-sqlite, cjm-context-graph-layer, cjm-context-graph-projection, cjm-dev-graph-schema, cjm-graph-storage-adapter-interface, cjm-graph-workbench-qt, cjm-markdown-decompose-core, cjm-notebook-decompose-core, cjm-python-decompose-core, cjm-session-scratchpad-qt, cjm-substrate-qt-kit, cjm-transcript-correction-core, cjm-transcript-decomp-core, cjm-transcript-graph-schema, cjm-transcription-core, cjm-workflow-hub-qt
Metadata
Release files for cjm-context-graph-primitives 0.0.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cjm_context_graph_primitives-0.0.19.tar.gz | 42.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cjm_context_graph_primitives-0.0.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.0 kB
Release files / cjm_context_graph_primitives-0.0.19.tar.gz
| Download URL | cjm_context_graph_primitives-0.0.19.tar.gz |
|---|---|
| Size | 42.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8a77909a5cacd34fec1ced6e6a25d7180a1621aa2f94e9ef54177c72adfd1a38
|
|
BLAKE2b-256 checksum How to use checksums |
4fa61714199f6a1cfc8335618f4a00871dcf800da50a60478432dbe02e503c6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / cjm_context_graph_primitives-0.0.19-py3-none-any.whl
| Download URL | cjm_context_graph_primitives-0.0.19-py3-none-any.whl |
|---|---|
| Size | 36.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
efca2747d455bddf027cd0eb75c9215361228d80f78fb80fe5826f571474a95c
|
|
BLAKE2b-256 checksum How to use checksums |
f8021bc29effd8d33ca2639c86e73ff3c87a1bfeb5c781d9c823a10fd64130ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|