Skip to content

Search facts: make a run findable in the orchestrator's Runs search - #12

Open
makseq wants to merge 1 commit into
mainfrom
feat/search-facts
Open

Search facts: make a run findable in the orchestrator's Runs search#12
makseq wants to merge 1 commit into
mainfrom
feat/search-facts

Conversation

@makseq

@makseq makseq commented Aug 28, 2026

Copy link
Copy Markdown
Member

Search facts — make a run findable in the orchestrator's Runs search

Companion to HumanSignal/orchestrator PR "feat(external): search facts for external nodes". An external node may now put an optional facts list into result.json[{"key": "task", "value": "282139672"}, {"key": "input", "value": "tasks.json"}] — and the orchestrator records each entry in its search-facts table when it collects the run, so the run is found by task:282139672, input:tasks.json, or a bare id.

  • node.py: records one input fact per input it copied (the envelope's own name), applies the orchestrator's rules at write time (claim(): key grammar, value ≤512 chars, no control characters or lone surrogates, cap 10,000; skips are counted in summary.facts_not_claimed), writes the report on the failure path before the marker (the marker stays strictly last; a refused report upload is retried and never falsely inventoried — RESULT_UPLOADED), and does not attempt it on the cancel path (a stopping node that abandons in-flight connections cannot open a new one; one plain line says so).
  • Conformance harness: validate_result shape-checks facts non-fatally (facts are never load-bearing): the orchestrator's rules, mirrored constant for constant, reported as recommendations.
  • Docs: PROTOCOL.md (the facts key, the flat meta rule, when the orchestrator reads it — at marker acceptance, any outcome, under the 1 MiB ceiling), AUTHORING.md ("Make the run findable" + checklist), OPERATIONS.md limits, README + capability matrix, conformance README, CONFORMANCE-BASELINE counts.

Reviewed in the same loop as the orchestrator PR (plan: GPT-5.6-Sol + Grok + DeepSeek; implementation: three rounds with Codex + adversarial self-review; exit pass clean).

🤖 Generated with Claude Code

https://claude.ai/code/session_01AuqWuKD5dik1RMBRkcpbAj

An external node may now put an optional `facts` list into result.json —
[{"key": "task", "value": "282139672"}, {"key": "input", "value": "tasks.json"}] —
and the orchestrator records each entry in its search-facts table when it
collects the run (at marker acceptance, on any outcome, under the 1 MiB
ceiling), so the run is found by task:…, input:…, or a bare id.

node.py: one `input` fact per copied input (the envelope's own name); the
orchestrator's rules applied at write time (claim(): key grammar, value ≤512
chars, no control characters or lone surrogates, cap 10,000; skips counted in
summary.facts_not_claimed); the report written on the failure path before the
marker (marker strictly last; a refused upload is retried and never falsely
inventoried — RESULT_UPLOADED); not attempted on the cancel path (a stopping
node that abandons in-flight connections cannot open a new one — one plain
line says so).

Conformance harness: validate_result shape-checks `facts` NON-fatally (facts
are never load-bearing): the orchestrator's rules mirrored constant for
constant — key ^[a-z][a-z0-9_]{0,63}\Z, value str|int non-bool ≤512 free of
control characters and lone surrogates, meta absent or a flat object (≤32 keys
of 1–64 chars, scalar values) — reported as recommendations.

Docs: PROTOCOL.md (the facts key, the flat meta rule, when it is read),
AUTHORING.md ("Make the run findable" + checklist), OPERATIONS.md limits,
README + capability matrix, conformance README, CONFORMANCE-BASELINE counts.

Companion of HumanSignal/orchestrator "feat(external): search facts for
external nodes".

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AuqWuKD5dik1RMBRkcpbAj
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant