22namespace neograph::program {
24enum class ContractManifestLifecycle : std::uint8_t {
30NEOGRAPH_PROGRAM_API std::string_view to_string(ContractManifestLifecycle state)
noexcept;
31NEOGRAPH_PROGRAM_API ContractManifestLifecycle
32contract_manifest_lifecycle_from_string(std::string_view value);
34struct NEOGRAPH_PROGRAM_API ContractItem {
36 std::string description;
38 bool operator==(
const ContractItem&)
const =
default;
41struct NEOGRAPH_PROGRAM_API ContractAcceptance {
43 std::string description;
45 json expected = json::object();
47 bool operator==(
const ContractAcceptance&)
const =
default;
50struct NEOGRAPH_PROGRAM_API ContractRisk {
52 std::string description;
53 std::string mitigation;
56 bool operator==(
const ContractRisk&)
const =
default;
59struct NEOGRAPH_PROGRAM_API ContractTestVector {
61 json input = json::object();
62 json expected = json::object();
64 bool operator==(
const ContractTestVector&)
const =
default;
67struct NEOGRAPH_PROGRAM_API ContractRetryPolicy {
68 std::uint32_t max_attempts = 1;
69 std::uint64_t max_program_operations = 1;
70 std::uint64_t max_wall_time_ms = 1;
72 bool operator==(
const ContractRetryPolicy&)
const =
default;
77 std::uint32_t schema_version = 1;
78 std::string manifest_id;
79 std::string owner_scope;
81 std::vector<std::string> assumptions;
82 std::vector<ContractItem> requirements;
83 std::vector<std::string> non_goals;
84 std::vector<ContractAcceptance> acceptance;
85 std::vector<ContractTestVector> fixed_test_vectors;
86 std::vector<std::string> independent_oracles;
87 std::vector<ContractRisk> risk_register;
88 std::vector<std::string> permissions;
89 ContractRetryPolicy retry_policy;
96 std::string reviewer_id;
98 bool approved =
false;
109 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 1;
117 ContractManifestLifecycle lifecycle()
const noexcept;
119 const std::optional<ContractReview>& review_record()
const noexcept;
120 const std::string& content_hash()
const noexcept;
121 std::string serialize_canonical()
const;
127 std::shared_ptr<const Impl> impl_;
130enum class ContractEvidenceKind : std::uint8_t {
136NEOGRAPH_PROGRAM_API std::string_view to_string(ContractEvidenceKind kind)
noexcept;
137NEOGRAPH_PROGRAM_API ContractEvidenceKind contract_evidence_kind_from_string(std::string_view value);
139struct NEOGRAPH_PROGRAM_API ContractEvidence {
140 std::string evidence_id;
141 std::string acceptance_id;
142 ContractEvidenceKind kind = ContractEvidenceKind::WorkerReport;
143 std::string manifest_hash;
144 std::string program_version_id;
147 std::string workspace_revision;
149 std::string toolchain;
150 std::string artifact_hash;
151 bool executed =
false;
153 std::vector<std::string> diagnostics;
154 json details = json::object();
156 bool operator==(
const ContractEvidence&)
const =
default;
159struct NEOGRAPH_PROGRAM_API ContractDiagnostic {
162 bool blocking =
true;
164 bool operator==(
const ContractDiagnostic&)
const =
default;
167enum class ContractRunStatus : std::uint8_t {
176NEOGRAPH_PROGRAM_API std::string_view to_string(ContractRunStatus status)
noexcept;
177NEOGRAPH_PROGRAM_API ContractRunStatus contract_run_status_from_string(std::string_view value);
179struct NEOGRAPH_PROGRAM_API ContractVerification {
180 bool publishable =
false;
181 ContractRunStatus status = ContractRunStatus::Blocked;
182 std::vector<std::string> missing_acceptance_ids;
183 std::vector<std::string> blocking_diagnostics;
184 std::vector<std::string> failed_evidence_ids;
186 bool operator==(
const ContractVerification&)
const =
default;
196 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
199 static ContractRun parse(std::string_view stored_bytes);
202 ContractRunStatus status()
const noexcept;
203 std::uint32_t attempt()
const noexcept;
204 const std::vector<ContractEvidence>& evidence()
const noexcept;
205 const std::vector<ContractDiagnostic>& diagnostics()
const noexcept;
206 const std::optional<ContractVerification>& verification()
const noexcept;
216 void record_diagnostic(ContractDiagnostic diagnostic);
219 ContractVerification
verify(std::string_view program_version_id,
220 std::string_view run_id,
221 std::string_view workspace_revision);
233 std::shared_ptr<Impl> impl_;
NEOGRAPH_API export/import macro for shared-library builds.
Durable-boundary state machine for one implementation attempt.
void record_worker_report(std::string report, bool claims_success)
Store a worker claim without granting it verification authority.
void begin_attempt()
Start one bounded worker attempt. Only a frozen manifest may run.
void publish()
Mark the run publishable only after a successful verification.
ContractVerification verify(std::string_view program_version_id, std::string_view run_id, std::string_view workspace_revision)
Evaluate all required gates against one exact Program run lineage.
std::string serialize_canonical() const
Canonical checkpoint/recovery representation.
void record_evidence(ContractEvidence evidence)
Record independently observed evidence bound to this manifest.
Thin C++ RAII wrapper around yyjson with nlohmann-compatible API.
Mutable planner proposal accepted by ContractManifest::propose().
Immutable manifest review recorded before a proposal can be frozen.