pull_target_evidence.v1.json (2148B)
1 { 2 "schema": "radroots.pull-target-evidence.v1", 3 "owner": "radroots_sync", 4 "status": "implemented", 5 "scope": "One explicit bounded Engine::pull call with its exact target set, selector, initial cursor and deadline.", 6 "max_targets": 64, 7 "max_pages": 1000, 8 "target_order": "Stable validated request order; every requested target is represented in a newly measured receipt, including when no page returns.", 9 "summary_fields": [ 10 "target", 11 "pages_observed", 12 "incomplete_pages", 13 "missing_outcome_pages", 14 "last_incomplete" 15 ], 16 "counting": "Every returned validated page increments pages_observed for every requested target. A present non-complete typed outcome increments incomplete_pages and replaces last_incomplete. An absent outcome increments missing_outcome_pages without fabricating a transport state.", 17 "bounds": "Use the existing target-set and pull-page constants. Retain no additional messages, event bodies or per-page list. Reject an oversized serialized summary sequence before retaining its extra item; reject duplicate targets and invalid or inconsistent summary counters.", 18 "complete_evidence": "A summary reports all_pages_complete only for positive pages_observed with zero incomplete_pages and zero missing_outcome_pages. Callers must independently require appropriate pull termination and inspect the request scope; no global history is proved.", 19 "compatibility": "Keep target_outcomes as the last available outcome for each target. Add optional target_summaries. Missing or null summaries in legacy deserialization remain unknown; newly measured receipts always contain summaries. Existing source-page and transport behavior is unchanged.", 20 "source_failure": "No returned page means no new target observation. Preserve earlier summaries and the existing SourceFailed termination; never infer a target-specific failure or successful completion from a missing source response.", 21 "non_goals": [ 22 "new scheduler, clock or transport policy", 23 "global-history completeness", 24 "per-page history or unbounded diagnostics", 25 "release, Nix, device or deployment qualification" 26 ] 27 }