19namespace neograph::program {
21class ProgramRunRecord;
25 std::string invocation_id;
32struct ProgramRuntimeStateTransferReceiptData {
33 std::string owner_scope;
34 std::string lineage_id;
35 std::string source_generation_id;
36 std::string source_lineage_head_id;
37 std::string source_run_id;
38 std::string source_run_record_id;
39 std::string source_journal_head;
40 std::uint64_t target_generation = 0;
41 std::string target_run_id;
42 std::string target_initial_run_record_id;
43 std::string target_initial_journal_head;
44 std::vector<std::string> source_context_epoch_ids;
45 std::optional<std::string> target_context_epoch_id;
46 std::vector<ProgramRuntimeStateTransferHookReference> hook_references;
52 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 1;
57 const std::string& owner_scope()
const noexcept;
58 const std::string& lineage_id()
const noexcept;
59 const std::string& source_generation_id()
const noexcept;
60 const std::string& source_lineage_head_id()
const noexcept;
61 const std::string& source_run_id()
const noexcept;
62 const std::string& source_run_record_id()
const noexcept;
63 const std::string& source_journal_head()
const noexcept;
64 std::uint64_t target_generation()
const noexcept;
65 const std::string& target_run_id()
const noexcept;
66 const std::string& target_initial_run_record_id()
const noexcept;
67 const std::string& target_initial_journal_head()
const noexcept;
68 const std::vector<std::string>& source_context_epoch_ids()
const noexcept;
69 const std::optional<std::string>& target_context_epoch_id()
const noexcept;
70 const std::vector<ProgramRuntimeStateTransferHookReference>& hook_references()
const noexcept;
71 const std::string& id()
const noexcept;
72 std::string serialize_canonical()
const;
77 std::shared_ptr<const Impl> impl_;
82 std::string_view root_run_id);
84struct ProgramRunGenerationData {
85 std::string owner_scope;
86 std::string lineage_id;
87 std::uint64_t generation = 0;
89 std::string program_version_id;
90 std::string bundle_id;
91 std::string initial_run_record_id;
92 std::string initial_journal_head;
93 std::optional<std::string> predecessor_generation_id;
94 std::int64_t created_at_ms = 0;
95 std::uint32_t child_depth = 0;
96 std::optional<ProgramReplacementReceipt> replacement_receipt;
97 std::optional<ProgramGraphMigrationReceipt> graph_migration_receipt;
98 std::optional<ProgramRuntimeStateTransferReceipt> runtime_state_transfer_receipt;
104 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 4;
109 const std::string& owner_scope()
const noexcept;
110 const std::string& lineage_id()
const noexcept;
111 std::uint64_t generation()
const noexcept;
112 const std::string& run_id()
const noexcept;
113 const std::string& program_version_id()
const noexcept;
114 const std::string& bundle_id()
const noexcept;
115 const std::string& initial_run_record_id()
const noexcept;
116 const std::string& initial_journal_head()
const noexcept;
117 const std::optional<std::string>& predecessor_generation_id()
const noexcept;
118 std::int64_t created_at_ms()
const noexcept;
119 std::uint32_t child_depth()
const noexcept;
120 std::optional<ProgramReplacementReceipt> replacement_receipt()
const;
121 std::optional<ProgramGraphMigrationReceipt> graph_migration_receipt()
const;
122 std::optional<ProgramRuntimeStateTransferReceipt> runtime_state_transfer_receipt()
const;
123 const std::string& id()
const noexcept;
124 std::string serialize_canonical()
const;
129 std::shared_ptr<const Impl> impl_;
132struct ProgramRunLineageData {
133 std::string owner_scope;
134 std::string lineage_id;
135 std::string root_run_id;
136 std::uint64_t active_generation = 0;
137 std::string active_generation_id;
138 std::string active_run_record_id;
139 std::string active_journal_head;
140 RunBudget remaining_budget;
141 RunBudget inflight_reservation;
142 std::optional<std::string> predecessor_head_id;
143 std::int64_t created_at_ms = 0;
144 std::int64_t updated_at_ms = 0;
146 RunBudget committed_descendant_budget;
152 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 1;
157 const std::string& owner_scope()
const noexcept;
158 const std::string& lineage_id()
const noexcept;
159 const std::string& root_run_id()
const noexcept;
160 std::uint64_t active_generation()
const noexcept;
161 const std::string& active_generation_id()
const noexcept;
162 const std::string& active_run_record_id()
const noexcept;
163 const std::string& active_journal_head()
const noexcept;
164 RunBudget remaining_budget()
const noexcept;
165 RunBudget inflight_reservation()
const noexcept;
166 const std::optional<std::string>& predecessor_head_id()
const noexcept;
167 std::int64_t created_at_ms()
const noexcept;
168 std::int64_t updated_at_ms()
const noexcept;
169 RunBudget committed_descendant_budget()
const noexcept;
170 const std::string& id()
const noexcept;
171 std::string serialize_canonical()
const;
176 std::shared_ptr<const Impl> impl_;
196 const std::optional<ProgramRunGeneration>& successor = std::nullopt)
noexcept;
NEOGRAPH_API export/import macro for shared-library builds.
Immutable identity of one admitted topology generation in a run lineage.
Immutable content-addressed head of one stable run lineage.
Deep-owned, content-addressed run snapshot used for reconnect and CAS publication.
Immutable content-addressed runtime-state evidence for a successor generation.
Immutable source capsules for prepared GraphEngine migration.
NEOGRAPH_PROGRAM_API bool does_program_run_generation_bind(const ProgramRunGeneration &generation, const ProgramRunLineage &lineage, const ProgramRunRecord &run) noexcept
Validates the active generation's immutable binding to a run snapshot.
NEOGRAPH_PROGRAM_API std::string program_run_lineage_id(std::string_view owner_scope, std::string_view root_run_id)
Derives the stable owner-scoped lineage identity for a root run.
NEOGRAPH_PROGRAM_API bool is_valid_program_run_lineage_transition(const ProgramRunLineage &previous, const ProgramRunLineage &next, const std::optional< ProgramRunGeneration > &successor=std::nullopt) noexcept
Validates a same-generation head update or an exact successor transition.
NEOGRAPH_PROGRAM_API bool is_valid_program_run_lineage_initial(const ProgramRunLineage &lineage, const ProgramRunGeneration &generation) noexcept
Validates the first durable head of a lineage against generation one.
Exact durable handoff receipts for Program generation replacement.
Immutable outcome of one Program run attempt.
Exact durable hook head retained across a runtime-state transfer.