NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
fork.h
Go to the documentation of this file.
1
5#pragma once
6
11
12#include <cstdint>
13#include <memory>
14#include <optional>
15#include <stdexcept>
16#include <string>
17#include <string_view>
18#include <vector>
19
20namespace neograph::program {
21
24 std::string source_run_id;
25 std::string source_checkpoint_id;
26
27 bool operator==(const ExactProgramCheckpointReference&) const = default;
28};
29
30enum class ForkCompatibilityField : std::uint8_t {
31 OwnerScope,
32 SourceRun,
33 SourceCheckpoint,
34 TargetVersion,
35 CoreName,
36 CoreGeneration,
37 CheckpointSchema,
38 Channel,
39 Reducer,
40 Continuation,
41};
42
43NEOGRAPH_PROGRAM_API std::string_view to_string(ForkCompatibilityField field) noexcept;
44NEOGRAPH_PROGRAM_API ForkCompatibilityField
45fork_compatibility_field_from_string(std::string_view value);
46
49 ForkCompatibilityField field = ForkCompatibilityField::Continuation;
50 std::string subject;
51 json source;
52 json target;
53
54 bool operator==(const ForkCompatibilityWitness&) const = default;
55};
56
57enum class ForkCompatibilityStatus : std::uint8_t { Compatible, Rejected };
58
59NEOGRAPH_PROGRAM_API std::string_view to_string(ForkCompatibilityStatus status) noexcept;
60NEOGRAPH_PROGRAM_API ForkCompatibilityStatus
61fork_compatibility_status_from_string(std::string_view value);
62
71 std::string owner_scope;
72 std::string source_owner_scope;
73 std::string target_owner_scope;
74
75 ExactProgramCheckpointReference requested_source;
76 std::string stored_source_run_id;
77 std::string source_program_version_id;
78 std::string target_program_version_id;
79 std::string resolved_target_program_version_id;
80
81 CoreCheckpointIdentity published_checkpoint;
82 graph::Checkpoint loaded_checkpoint;
83
84 CorePlanIdentity source_core_plan;
85 CorePlanIdentity target_core_plan;
86 SealedCoreDefinition source_core_definition;
87 SealedCoreDefinition target_core_definition;
88 ProgramContinuation source_continuation;
89};
90
91struct ForkCompatibilityReceiptData {
92 std::string owner_scope;
93 std::string source_run_id;
94 std::string source_program_version_id;
95 std::string source_checkpoint_id;
96 std::string target_program_version_id;
97 ForkCompatibilityStatus status = ForkCompatibilityStatus::Rejected;
98 std::vector<ForkCompatibilityWitness> witnesses;
99};
100
103 std::optional<std::string> target_pending_id;
104 std::string resume_value_identity;
105
106 bool operator==(const ForkInitialResumeBinding&) const = default;
107};
108
110class NEOGRAPH_PROGRAM_API ForkCompatibilityReceipt {
111
112public:
113 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
114
115 explicit ForkCompatibilityReceipt(ForkCompatibilityReceiptData data);
116 static ForkCompatibilityReceipt parse(std::string_view stored_bytes);
117
118 const std::string& id() const noexcept;
119 const std::string& owner_scope() const noexcept;
120 const std::string& source_run_id() const noexcept;
121 const std::string& source_program_version_id() const noexcept;
122 const std::string& source_checkpoint_id() const noexcept;
123 const std::string& target_program_version_id() const noexcept;
124 ForkCompatibilityStatus status() const noexcept;
125 const std::vector<ForkCompatibilityWitness>& witnesses() const noexcept;
126 std::uint32_t storage_schema_version() const noexcept;
127 const std::optional<ForkInitialResumeBinding>& initial_resume_binding() const noexcept;
128 bool compatible() const noexcept;
129 ForkCompatibilityReceipt with_initial_resume_binding(
130 std::optional<std::string> target_pending_id, const json& resume_value) const;
131 bool matches_initial_resume(std::string_view target_pending_id, const json& resume_value) const;
132 std::string serialize_canonical() const;
133
134private:
135 struct Impl;
136 explicit ForkCompatibilityReceipt(std::shared_ptr<const Impl> impl);
137 std::shared_ptr<const Impl> impl_;
138};
139
141class NEOGRAPH_PROGRAM_API ProgramForkCompatibilityError final
142 : public std::runtime_error {
143public:
145
146 const ForkCompatibilityReceipt& receipt() const noexcept;
147
148private:
150};
151
153NEOGRAPH_PROGRAM_API ForkCompatibilityReceipt
155
156} // namespace neograph::program
Immutable, content-addressed Program compilation artifacts.
Checkpoint system for graph execution state persistence and time-travel.
Canonical immutable compatibility receipt stored with target-run lineage.
Definition fork.h:110
Typed pre-start rejection carrying the complete immutable witness receipt.
Definition fork.h:142
NEOGRAPH_PROGRAM_API ForkCompatibilityReceipt check_exact_fork_compatibility(ExactForkCompatibilityFacts facts)
Pure, fail-closed compatibility check.
Atomic, content-addressed Program continuation journal.
Immutable outcome of one Program run attempt.
Serialized snapshot of graph execution state at a single super-step.
Definition checkpoint.h:173
Fully resolved facts for the PR7 single-call_core fork check.
Definition fork.h:70
Machine-readable reason that one exact fork fact is incompatible.
Definition fork.h:48
Immutable identity of the value applied at the target's initial fork boundary.
Definition fork.h:102