24 std::chrono::milliseconds busy_timeout);
31 [[nodiscard]] std::optional<SourceIdentity> source(std::string_view source_id)
const override;
34 [[nodiscard]] std::optional<ResearchTask>
35 task(std::string_view owner_scope, std::string_view task_id)
const override;
37 [[nodiscard]] std::vector<ResearchTask>
38 tasks(std::string_view owner_scope,
bool include_terminal)
const override;
40 [[nodiscard]] std::optional<ResearchTaskLease>
43 std::uint64_t now_unix_ms)
override;
44 [[nodiscard]] std::vector<std::string>
45 expire_leases(std::string_view owner_scope, std::uint64_t now_unix_ms)
override;
46 [[nodiscard]] EvidencePublishResult
48 std::uint64_t now_unix_ms)
override;
50 [[nodiscard]] std::vector<EvidenceArtifact>
51 artifacts_for_claim(std::string_view owner_scope, std::string_view claim_id)
const override;
52 [[nodiscard]] SourceLifecycle source_lifecycle(std::string_view owner_scope,
53 std::string_view source_id,
54 std::uint64_t now_unix_ms)
const override;
55 [[nodiscard]]
ClaimResolution resolve_claim(std::string_view owner_scope,
56 std::string_view claim_id)
const override;
60 std::shared_ptr<Impl> impl_;
EvidencePublishResult publish(const ResearchTaskLease &lease, EvidenceArtifact artifact, std::uint64_t now_unix_ms) override
Atomically commits evidence and terminally publishes the claimed task.