ouroboros/scripts
Ouroboros 2365bd2b7c feat(process-facts): typed exit/signal facts for the five remaining surfaces
Owner batch #13 item 10 = B: the five surfaces that still lacked typed
process exit/signal facts land in 7.0 (ADOPTION row DEFER-TYPED-PROC-5 is
done). The regex harvest stays retired (batch #7 item 1 = A); nothing here
reads prose, and where the platform gives no fact none is synthesized.

The thread-local channel becomes PUBLISHER-scoped instead of tool-name-scoped:
_PROCESS_META_TOOLS (two names, unable to list a dynamic ext_* surface) is
retired and the loop clears the slot before EVERY dispatch, which is a stronger
no-contamination contract than the name gate it replaces. The fact family gains
three members that exist exactly where an exit code does not: timed_out,
killed_by_host and pre_exec_failure (the platform's exception class).

Producers stamp at the point the truth is known:
- extension child (_run_child): clean/abnormal exit with its POSIX signal,
  deadline kill, output-cap kill;
- skill_exec (_run_skill_subprocess): the real negative code its
  "returncode or 0" return flattens, the deadline and output-cap kills, and
  the spawn OSError;
- skill_preflight (_run_check): the synthesized -9/-1 are RETIRED for
  returncode=None plus the typed reason (they read downstream as real POSIX
  signal deaths, on Windows too, where a host kill produces none);
- verify_and_record: the check's exit/signal or its timeout kill, with the
  receipt now copying that one publication instead of deriving duration and
  signal a second time;
- run_command: timeout and pre-exec failures.

Windows kills are carried honestly rather than faked: killed_by_host beside
whatever TerminateProcess left in exit_code, never a fabricated signal name.
Windows-executed proof pending the matrix.

One projection carries the family into the UI live-log card, the tools.jsonl
row and the durable trace. ouroboros/contracts/ is untouched; the typed meta
shape grew additively in tools/process_facts.py only.

Co-authored-by: Ouroboros <311266734+ouroboros-agent@users.noreply.github.com>
2026-09-03 07:50:24 +00:00
..
bench_delegated_snapshot.py release 6.100.0: delegated runs execute in private snapshots — capture, disposition, and GC carry one honest truth (sprint phase C) 2026-08-12 17:54:10 +03:00
betterleaks_platform_smoke.py feat: add secret-safe skill publishing 2026-08-21 03:46:17 +03:00
build_appimage.sh fix(packaging): harden AppImage runtime lifecycle 2026-08-11 04:21:16 +03:00
build_linux_packages.sh fix(release): bind the systemd unit to package proof 2026-08-13 01:19:14 +03:00
build_repo_bundle.py fix: harden cross-platform release packaging 2026-08-11 17:18:31 +03:00
carrier_rebase_helper.py v7next F2.4: return the D34 carrier engine and re-split the update planner 2026-08-31 10:38:34 +00:00
check_domains.py v7next F5 CPL-1: production domain manifest + gate (directions, cycles, literal-copy ban) 2026-09-01 10:37:37 +00:00
claudexor_platform_smoke.py fix(ci): restore cross-platform release gates 2026-08-30 08:44:29 +03:00
cleanup_test_pollution.py v5.15.0-rc.8: quality dx closed-loop skills wave on top of rc.7 2026-05-11 03:32:41 +03:00
contributor_review_evidence.py v7next F2.3b: review-organ semantics - D31 trusted-base port, advisory re-derive on the native-episode form, scope-budget re-derive after PR #383 2026-08-31 12:00:59 +00:00
domain_graph.py v7next F5 CPL-1: production domain manifest + gate (directions, cycles, literal-copy ban) 2026-09-01 10:37:37 +00:00
download_node_standalone.ps1 rc(reliability): close subagent crash/ghost/spinner classes; provider-agnostic review; bundled node 2026-05-29 22:48:13 +03:00
download_node_standalone.sh rc(reliability): close subagent crash/ghost/spinner classes; provider-agnostic review; bundled node 2026-05-29 22:48:13 +03:00
download_python_standalone.ps1 fix(deps): complete uv migration contracts 2026-08-11 06:34:54 +03:00
download_python_standalone.sh build(deps): manage Python dependencies with uv 2026-08-11 05:28:21 +03:00
download_ripgrep_standalone.ps1 fix(ci): release-lane smoke paths and ripgrep pin parsing 2026-08-05 00:13:49 +03:00
download_ripgrep_standalone.sh feat(code-intelligence): add query_code and clearer evolution settings 2026-06-09 07:46:59 +03:00
fetch_claudexor_runtime.py Managed Claudexor runtime delivery: exact pin, single Connect, staged updates 2026-08-06 15:15:09 +03:00
pyi_rth_pythonnet.py chore(build): import build artifacts from main + adapt spec for Phase 5 skills 2026-04-22 14:31:53 +03:00
rc_audit.py close-out: the RC auditor names the successor of a retired key, and six prose leftovers of the close-out lenses 2026-09-02 17:05:02 +00:00
regenerate_inventories.py v7next F5 CPL-2: gen/verify inventories (frozen contracts, data layout, facades) 2026-09-01 10:37:37 +00:00
regenerate_size_ratchet.py Move size-gate enforcement to official CI; local surfaces warn 2026-08-21 04:46:25 +00:00
release_proof.py feat: add secret-safe skill publishing 2026-08-21 03:46:17 +03:00
run_external_review.py merge: absorb upstream drift b9f7597f..8d13373b into v7next (F6 rolling sync) 2026-09-01 11:12:47 +00:00
run_plan_review.py plan review becomes a domain-neutral spec gate 2026-08-17 11:37:32 +00:00
smoke_linux_packages.sh feat: add secret-safe skill publishing 2026-08-21 03:46:17 +03:00
v7next_adoption.py feat(process-facts): typed exit/signal facts for the five remaining surfaces 2026-09-03 07:50:24 +00:00
v7next_domain_report.py report: the domain quotient generator writes one final newline, and the 2026-09-02 15:35:51 +00:00
v7next_transplant.py tools: prove f-string module-handle transplants 2026-09-01 23:38:29 +00:00
validate_scope_receipt.py Contributor review: agentic checklist path, honest script-lane budget shape (#395) 2026-08-31 15:51:01 +00:00