13 KiB
.ctxpkg v2 Specification
Version: 2.0.0 Status: Draft Date: 2026-05-22
1. Overview
.ctxpkg v2 is an open, graph-native package format for portable AI-agent context. It extends .ctxpkg v1 with a knowledge graph core, typed relationships, activation energy (Phi scoring), Hebbian edge weights, temporal decay, and composability through graph-merge operations.
Key claims:
.ctxpkg is to AI context what npm packages are to code: portable, versioned, composable, and installable..ctxpkg is complementary to MCP (runtime), A2A (communication), and KCP (discovery).
2. File Format
A .ctxpkg file is a JSON bundle (with optional zstd compression in future versions):
{
"manifest": { ... },
"content": { ... }
}
In the future, .ctxpkg files MAY transition to ZIP-based archives:
my-package.ctxpkg (ZIP)
├── ctxpkg.json # Manifest
├── graph.json # Knowledge Graph
├── blobs/ # Content-addressable large objects
│ ├── sha256-abc123...
│ └── sha256-def456...
└── rebuild.json # Optional: Rebuild instructions
3. Manifest (ctxpkg.json)
3.1 Required Fields
| Field | Type | Description |
|---|---|---|
schema_version |
u32 |
2 for v2 packages |
name |
string |
Package name, allows @scope/name format |
version |
string |
SemVer version string |
description |
string |
Human-readable description |
created_at |
datetime |
ISO 8601 creation timestamp |
layers |
string[] |
Legacy v1 layer names for backward compat |
integrity |
object |
SHA-256 hashes and byte size |
provenance |
object |
Tool name, version, project hash |
3.2 v2-Specific Fields
| Field | Type | Description |
|---|---|---|
conformance_level |
u32 |
1, 2, or 3 |
kind |
string? |
What the package delivers: context (default), skills, addon, grammar — see §3.4 |
scope |
string? |
Namespace prefix (e.g., @company) |
graph_summary |
object? |
Node/edge counts, types, activation mean |
marketplace |
object? |
Categories, badges, license |
3.3 Example
{
"schema_version": 2,
"conformance_level": 2,
"name": "@company/auth-service-context",
"version": "1.3.0",
"description": "Complete context for the auth service",
"scope": "@company",
"graph_summary": {
"node_count": 342,
"edge_count": 891,
"node_types": ["fact", "gotcha", "decision", "code_symbol"],
"activation_mean": 0.67,
"freshness": "2026-05-20T00:00:00Z"
},
"dependencies": {
"@company/base-architecture": "^2.0",
"@verified/jwt-patterns": "^1.0"
},
"optional_dependencies": {
"@verified/security-review": "^1.0"
},
"conflicts": ["@outdated/legacy-auth"],
"provenance": {
"tool": "lean-ctx",
"tool_version": "3.7.0",
"project_hash": "abc123..."
},
"integrity": {
"sha256": "...",
"content_hash": "..."
},
"signature": {
"algorithm": "ed25519",
"public_key": "...",
"value": "..."
},
"compatibility": {
"min_lean_ctx_version": "3.7.0",
"agents": ["lean-ctx>=3.7", "cursor", "claude-code"],
"v1_fallback": true
},
"marketplace": {
"categories": ["security", "authentication"],
"badges": ["verified", "enterprise"],
"license": "proprietary"
}
}
3.4 Package kinds (unified distribution)
Since spec revision 2.1 (2026-07), a package declares what it delivers via
the optional kind field. This unifies the distribution of agent knowledge and
agent capabilities under one format, one registry and one trust chain (design:
docs/specs/unified-distribution-v1.md):
kind |
Payload | Notes |
|---|---|---|
context |
knowledge/graph/session/patterns/gotchas layers | The default. Behavior of all pre-existing packages, unchanged. |
skills |
markdown/script documents as verified content blobs | Content only — no execution semantics in lean-ctx. |
addon |
embedded addon manifest + per-platform binary artifact references | Installs through the addon trust chain (capabilities, sandbox, binhash, revocation). |
grammar |
embedded grammar manifest (signed tree-sitter dylib references) | In-process loading ⇒ mandatory hash + signature. |
Rules:
kinddefaults tocontextand writers MUST omit the field for that default — every pre-kindpackage stays byte-identical.- Non-
contextkinds REQUIREschema_version: 2; validators reject a v1 manifest carrying a non-defaultkind. - Readers MUST tolerate unknown
kindvalues by refusing installation with a clear "newer lean-ctx required" error (never by misinterpreting the payload).
4. Knowledge Graph (context_graph)
The knowledge graph is the core of a v2 package. It is stored in the content.context_graph field.
4.1 Format
{
"format": "ctxpkg-graph-v2",
"nodes": [...],
"edges": [...]
}
4.2 Node Schema
| Field | Type | Required | Description |
|---|---|---|---|
id |
string |
yes | Unique node identifier within this package |
type |
string |
yes | Node type (see taxonomy below) |
content |
string |
yes | Node content / value |
activation |
f64 |
no | Activation energy (Phi), default 1.0 |
category |
string? |
no | Classification category |
source |
string? |
no | Source session or origin |
created_at |
datetime? |
no | Creation timestamp |
decay_half_life_days |
u32? |
no | Temporal decay half-life in days |
blob_ref |
string? |
no | Reference to content-addressable blob |
file_path |
string? |
no | Associated source file |
line_start |
usize? |
no | Start line in source file |
line_end |
usize? |
no | End line in source file |
confidence |
f32? |
no | Confidence score (0.0-1.0) |
supersedes |
string? |
no | ID of node this supersedes |
4.3 Node Type Taxonomy (extensible)
| Category | Types |
|---|---|
| Semantic | fact, pattern, insight, convention |
| Memory | gotcha, decision, finding, episode |
| Structure | code_symbol, code_file, code_module, code_function, code_class |
| Session | session, task, evidence, procedure |
| Governance | policy, overlay, profile, slo |
| Event | bus_event, handoff, tool_call |
| Custom | Any string (vendor-extensible) |
4.4 Edge Schema
| Field | Type | Required | Description |
|---|---|---|---|
from |
string |
yes | Source node ID |
to |
string |
yes | Target node ID |
type |
string |
yes | Edge type (see taxonomy below) |
weight |
f64 |
no | Edge weight, default 1.0 |
coactivations |
u32 |
no | Hebbian co-activation counter |
metadata |
string? |
no | Additional metadata |
4.5 Edge Type Taxonomy (extensible)
| Category | Types |
|---|---|
| Semantic | supports, contradicts, supersedes, elaborates |
| Causal | decided_by, caused_by, followed_by, tested_by |
| Structural | imports, calls, exports, contains, related_to, depends_on |
| Hebbian | co_activated (with weight + coactivations) |
| Dependency | depends_on, extends, conflicts_with |
5. Conformance Levels
Three levels enable progressive adoption:
Level 1: Basic
Any tool can implement this in a single day.
- JSON manifest + flat
nodesarray (onlyid,type,content) - No edges required
- Install = merge nodes as facts into agent context
- Target tools: Cursor, Claude Code, Copilot, Windsurf
Level 2: Graph
Requires graph-merge logic.
- Typed nodes + typed edges
- Dependency resolution (SemVer)
- Graph-merge composition with conflict detection
- Target tools: lean-ctx, advanced MCP servers
Level 3: Cognitive
Full lean-ctx cognitive state transfer.
- Activation energy (Phi scoring) on every node
- Hebbian edge weights + co-activation counters
- Temporal decay (nodes/edges age)
- Rebuild protocol for index reconstruction
- Overlay portability
- Target tools: lean-ctx (reference implementation)
6. Composition (Graph-Merge)
When installing multiple packages, contexts are composed using the Sheaf Gluing algorithm:
- Union: All non-conflicting nodes (ID-based)
- Edge Merge: Shared edges → weight averaging via
f64::midpoint - Conflict Detection: Nodes with
contradictsedges → warning - Activation Propagation: New edges from dependencies increase activation of connected nodes
- Supersedes Resolution: If Package A node X
supersedesY, node Y is deactivated (activation = 0.0)
This is the Sheaf Gluing Operation: local sections (packages) glue to a global section (merged context) when compatibility conditions are met.
7. Scopes and Namespaces
@verified/ -- Verified by ctxpkg.com
@official/ -- Framework maintainers (React, Next.js, etc.)
@community/ -- Community-contributed
@<org>/ -- Private organization namespaces
@local/ -- Local/development packages
Package names follow the pattern @scope/name (e.g., @company/auth-service). Names without @ are treated as unscoped.
8. Multi-Scale Support
| Scale | Example | Typical Size |
|---|---|---|
| Micro | @verified/react-hooks-gotchas |
~10 nodes, ~5 KB |
| Topic | @verified/security-review-playbook |
~100 nodes, ~50 KB |
| Project | @company/my-saas-project |
~1000 nodes, ~500 KB |
| System | @company/platform-architecture |
~5000 nodes, ~2 MB |
| Organization | @company/full-engineering-context |
~50000 nodes, ~20 MB |
9. Backward Compatibility with v1
v1 packages are interpreted as a graph without edges and with uniform activation:
| v1 Source | v2 Graph Mapping |
|---|---|
knowledge.facts[] |
Nodes of type fact (activation: 1.0) |
knowledge.patterns[] |
Nodes of type pattern (activation: 1.0) |
graph.nodes/edges |
Nodes/edges with type mapping |
session |
Node of type session with blob_ref |
gotchas[] |
Nodes of type gotcha (activation: 1.0) |
The manifest field compatibility.v1_fallback: true signals that this v2 package can be read as v1 (edges and activation are ignored).
10. Integrity
content_hash = SHA256(content_json_bytes)
sha256 = SHA256("{name}:{version}:{content_hash}")
The integrity algorithm is identical to v1. The content_json includes the context_graph field for v2 packages.
11. Signing
Ed25519 signatures. The signing message is:
SHA256("ctxpkg-sign-v1:{name}:{version}:{integrity.sha256}")
12. CLI Interface
# Level 1: Basics (Knowledge + Gotchas + Session)
lean-ctx pack create --name my-pkg --level 1
# Level 2: + Graph + Relations + Dependencies
lean-ctx pack create --name my-pkg --level 2
# Level 3: Complete Cognitive State
lean-ctx pack create --name my-pkg --level 3
# Scoped packages
lean-ctx pack create --name auth-service --level 2 --scope @company
# Install
lean-ctx pack install @verified/react-patterns
lean-ctx pack install ./colleague-project.ctxpkg
# Info (shows v2 graph summary)
lean-ctx pack info my-pkg
# Publish (coming soon)
lean-ctx pack publish --registry https://registry.ctxpkg.com
13. Scientific Foundations
The .ctxpkg v2 format is informed by research across multiple disciplines:
| Discipline | Key Insight | Design Impact |
|---|---|---|
| Neuroscience (HeLa-Mem, Kairos, Synapse) | Episodic-semantic dual graph with Hebbian learning | Typed nodes (fact/decision/episode), co-activation edge weights |
| Physics (Thermodynamic Transformers) | Softmax as free energy minimum | Activation energy (Phi) = node importance |
| Information Theory (COMI, γ-Covering) | Marginal information gain | Edge weights encode relevance minus redundancy |
| Swarm Behavior (SwarmSys, SBP) | Pheromone traces with temporal decay | decay_half_life_days on nodes |
| Psychology (Extended Mind, Situated Cognition) | Knowledge inseparable from relational context | Graph preserves relational structure |
| Category Theory (Sheaf Theory) | Local-to-global semantic gluing | Package composition via sheaf-gluing algorithm |
14. Ecosystem Positioning
.ctxpkg complements existing AI agent standards:
- MCP = how agents connect to tools (runtime, synchronous)
- A2A = how agents communicate with each other (tasks, events)
- KCP = how knowledge is structured for discovery (metadata)
- .ctxpkg = how context is packaged, shared, and composed (packaging, offline, composable)
Appendix A: Differences from v1
| Aspect | v1 | v2 |
|---|---|---|
| Data model | 5 static layers | Graph-native with typed nodes/edges |
| Composition | No merge semantics | Graph-merge with conflict detection |
| Dynamic state | None | Activation energy, Hebbian weights, temporal decay |
| Naming | Flat names | Scoped @org/name |
| Adoption path | All-or-nothing | 3 conformance levels |
| Marketplace | None | Categories, badges, license |