Skip to main content

lean_ctx/core/
contracts.rs

1use std::collections::BTreeMap;
2
3// Machine-verified contract versions.
4pub const MCP_MANIFEST_SCHEMA_VERSION: u32 = 1;
5pub const CONTEXT_PROOF_V1_SCHEMA_VERSION: u32 = 1;
6pub const CONTEXT_IR_V1_SCHEMA_VERSION: u32 = 1;
7pub const INTENT_ROUTE_V1_SCHEMA_VERSION: u32 = 1;
8pub const DEGRADATION_POLICY_V1_SCHEMA_VERSION: u32 = 1;
9pub const WORKFLOW_EVIDENCE_LEDGER_V1_SCHEMA_VERSION: u32 = 1;
10pub const AUTONOMY_DRIVERS_V1_SCHEMA_VERSION: u32 = 1;
11pub const TOKENIZER_TRANSLATION_DRIVER_V1_SCHEMA_VERSION: u32 = 1;
12pub const ATTENTION_LAYOUT_DRIVER_V1_SCHEMA_VERSION: u32 = 1;
13pub const VERIFICATION_OBSERVABILITY_V1_SCHEMA_VERSION: u32 = 1;
14pub const HANDOFF_LEDGER_V1_SCHEMA_VERSION: u32 = 1;
15pub const HANDOFF_TRANSFER_BUNDLE_V1_SCHEMA_VERSION: u32 = 1;
16pub const CCP_SESSION_BUNDLE_V1_SCHEMA_VERSION: u32 = 1;
17pub const KNOWLEDGE_POLICY_V1_SCHEMA_VERSION: u32 = 1;
18pub const GRAPH_REPRODUCIBILITY_V1_SCHEMA_VERSION: u32 = 1;
19pub const A2A_SNAPSHOT_V1_SCHEMA_VERSION: u32 = 1;
20pub const MEMORY_BOUNDARY_V1_SCHEMA_VERSION: u32 = 1;
21pub const GOTCHAS_REMINDERS_V1_SCHEMA_VERSION: u32 = 1;
22pub const PROVIDER_FRAMEWORK_V1_SCHEMA_VERSION: u32 = 1;
23pub const CONTEXT_PACKAGE_V1_SCHEMA_VERSION: u32 = 1;
24
25pub const PACKAGE_EXTENSION: &str = "ctxpkg";
26pub const LEGACY_PACKAGE_EXTENSION: &str = "lctxpkg";
27pub const MAX_PACKAGE_FILE_BYTES: u64 = 10 * 1024 * 1024; // 10 MB
28
29pub fn is_package_file(path: &std::path::Path) -> bool {
30    path.extension()
31        .and_then(|e| e.to_str())
32        .is_some_and(|ext| ext == PACKAGE_EXTENSION || ext == LEGACY_PACKAGE_EXTENSION)
33}
34
35pub fn default_package_filename(name: &str, version: &str) -> String {
36    format!("{name}-{version}.{PACKAGE_EXTENSION}")
37}
38
39// Documentation-level contracts (do not have a schema field in payloads).
40pub const HTTP_MCP_CONTRACT_VERSION: u32 = 1;
41pub const TEAM_SERVER_CONTRACT_VERSION: u32 = 1;
42
43pub fn versions_kv() -> BTreeMap<&'static str, u32> {
44    BTreeMap::from([
45        (
46            "leanctx.contract.mcp_manifest.schema_version",
47            MCP_MANIFEST_SCHEMA_VERSION,
48        ),
49        (
50            "leanctx.contract.context_proof_v1.schema_version",
51            CONTEXT_PROOF_V1_SCHEMA_VERSION,
52        ),
53        (
54            "leanctx.contract.context_ir_v1.schema_version",
55            CONTEXT_IR_V1_SCHEMA_VERSION,
56        ),
57        (
58            "leanctx.contract.intent_route_v1.schema_version",
59            INTENT_ROUTE_V1_SCHEMA_VERSION,
60        ),
61        (
62            "leanctx.contract.degradation_policy_v1.schema_version",
63            DEGRADATION_POLICY_V1_SCHEMA_VERSION,
64        ),
65        (
66            "leanctx.contract.workflow_evidence_ledger_v1.schema_version",
67            WORKFLOW_EVIDENCE_LEDGER_V1_SCHEMA_VERSION,
68        ),
69        (
70            "leanctx.contract.autonomy_drivers_v1.schema_version",
71            AUTONOMY_DRIVERS_V1_SCHEMA_VERSION,
72        ),
73        (
74            "leanctx.contract.tokenizer_translation_driver_v1.schema_version",
75            TOKENIZER_TRANSLATION_DRIVER_V1_SCHEMA_VERSION,
76        ),
77        (
78            "leanctx.contract.attention_layout_driver_v1.schema_version",
79            ATTENTION_LAYOUT_DRIVER_V1_SCHEMA_VERSION,
80        ),
81        (
82            "leanctx.contract.verification_observability_v1.schema_version",
83            VERIFICATION_OBSERVABILITY_V1_SCHEMA_VERSION,
84        ),
85        (
86            "leanctx.contract.handoff_ledger_v1.schema_version",
87            HANDOFF_LEDGER_V1_SCHEMA_VERSION,
88        ),
89        (
90            "leanctx.contract.handoff_transfer_bundle_v1.schema_version",
91            HANDOFF_TRANSFER_BUNDLE_V1_SCHEMA_VERSION,
92        ),
93        (
94            "leanctx.contract.ccp_session_bundle_v1.schema_version",
95            CCP_SESSION_BUNDLE_V1_SCHEMA_VERSION,
96        ),
97        (
98            "leanctx.contract.knowledge_policy_v1.schema_version",
99            KNOWLEDGE_POLICY_V1_SCHEMA_VERSION,
100        ),
101        (
102            "leanctx.contract.graph_reproducibility_v1.schema_version",
103            GRAPH_REPRODUCIBILITY_V1_SCHEMA_VERSION,
104        ),
105        (
106            "leanctx.contract.a2a_snapshot_v1.schema_version",
107            A2A_SNAPSHOT_V1_SCHEMA_VERSION,
108        ),
109        (
110            "leanctx.contract.memory_boundary_v1.schema_version",
111            MEMORY_BOUNDARY_V1_SCHEMA_VERSION,
112        ),
113        (
114            "leanctx.contract.gotchas_reminders_v1.schema_version",
115            GOTCHAS_REMINDERS_V1_SCHEMA_VERSION,
116        ),
117        (
118            "leanctx.contract.provider_framework_v1.schema_version",
119            PROVIDER_FRAMEWORK_V1_SCHEMA_VERSION,
120        ),
121        (
122            "leanctx.contract.context_package_v1.schema_version",
123            CONTEXT_PACKAGE_V1_SCHEMA_VERSION,
124        ),
125        (
126            "leanctx.contract.http_mcp.contract_version",
127            HTTP_MCP_CONTRACT_VERSION,
128        ),
129        (
130            "leanctx.contract.team_server.contract_version",
131            TEAM_SERVER_CONTRACT_VERSION,
132        ),
133    ])
134}