Repository navigation
fix(OMN-15722): raise starved guard-job timeout budgets in OCC ci.yml - #6173
Conversation
Five guard jobs carry timeout-minutes budgets below the observed latency of the self-hosted omnibase-ci runner fleet under concurrent load. When a job hits its own timeout wall GitHub records conclusion=cancelled, and CI Summary (the sole required umbrella context on onex_change_control dev) compares each needs.<job>.result against "success" fail-closed - so a guard that passed gets scored as a violation and turns the required context red. Raise the three 5-minute guards and the two 10-minute jobs to 20 minutes: - validate-prod-promotion-grants 5 -> 20 - check-platform-leads-review-tripwire 5 -> 20 - check-bot-authored-authz-guard 5 -> 20 - predicate-parity 10 -> 20 - no-noncanonical-lifecycle-classes 10 -> 20 Not a gate weakening: every guard still runs, still must reach conclusion=success, and CI Summary's fail-closed != "success" comparison is untouched. Only the wall-clock budget moved. Evidence-Ticket: OMN-15722
📝 WalkthroughWalkthroughThe pull request raises ten CI guard-job timeouts to 45 minutes. It adds an OMN-15722 contract and receipts that verify timeout values, fail-closed gating, absent top-level concurrency, and PR 6173 binding. ChangesCI guard timeout budgets
Estimated code review effort: 3 (Moderate) | ~25 minutes Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
OCC autobind did not mint a companion for this PR: no changed-file candidate could be proven RED against the merge base, and emitting a PR-existence probe instead would be non-falsifiable evidence (OMN-15247). Hand-authored evidence is required. |
…d timeout fix
The first push carried no contracts/OMN-15722.yaml, so both of the two
content-gating required contexts on this PR failed with the same single root
cause: validator_occ_merge_eligibility reported
reason=missing_contract / missing_contracts=["OMN-15722"] on
`occ-preflight / eligibility` (job 93010633789) and on `verify / verify`
step 21 "Run OCC Eligibility" (job 93010633875). Note step 7
"Resolve Evidence-Source" was SKIPPED in that same job, confirming the
in-repo Evidence-Source exemption - the missing contract was the only blocker.
Contract declares three dod_evidence items, all probed live and receipted with
real command output (no fabricated receipts):
dod-occ-guard-timeout-budgets-raised - substantive (L1): parses ci.yml and
asserts all five named guard jobs declare timeout-minutes 20.
dod-occ-guards-still-fail-closed - substantive (L1): asserts all five
guards remain in ci-summary's needs list, carry no continue-on-error, still
have their literal fail-closed `result }}" != "success"` comparison in
ci.yml, and that ci.yml still declares no top-level concurrency block.
Falsifiability proven by negative control - rewriting the predicate-parity
comparison to an equality form makes the same probe exit 1 with
unguarded=['predicate-parity'].
occ-self-bind-pr-6173 - binding stamp only (L0), companion
PR identity for receipt-gate binding.
Local verification: all three probes exit 0 / stdout "true"; the eligibility
validator now returns eligible=true reason=eligible
("OCC evidence is present, PASS, hash-bound, and PR-bound") with all three
receipt ids resolved. Full pre-commit over contract + receipts + ci.yml passes,
including Receipt Honesty Gate, Receipt Hardening Gate, Contract Substance
Floor, DoD-authoring hygiene, Canonical contract shape v1, and the
Evidence-Commit SHA Existence Gate.
Evidence-Ticket: OMN-15722
…eceipts All three OMN-15722 receipts asserted no_source_change: true. Per omnibase_core model_dod_receipt.py that field is RUNTIME_OPS-only and asserts the change produced NO repo diff and NO PR. This change has a 5-line ci.yml diff and IS PR #6173, so the assertion was materially false. These receipts carry evidence_class: None and pr_number: 6173, so the field does not apply to them at all -- removed rather than set to false. Its default is False, which is the truthful value. All three re-validate against ModelDodReceipt with no_source_change=False. Note: the model validator enforces only the RUNTIME_OPS -> True direction, not the inverse, so a non-RUNTIME_OPS receipt asserting no_source_change: true alongside a pr_number validates cleanly and no CI gate would have caught this. Model gap, flagged not fixed here.
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml`:
- Line 13: Add the missing raw-byte contract_sha256 binding to both
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml (line
13) and
drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml
(line 10). After the contract is final, regenerate both contract_sha256 and
existing contract_entry_sha256 values using
omnibase_core.validation.validator_receipt_gate.
- Around line 1-5: Rename both receipt files at
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml and
drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml
to timestamped filenames matching
drift/dod_receipts/<TICKET>/<ITEM_ID>/<run_timestamp>.yaml, preserving their
contents. Update scripts/auto_scaffold_contract.py so newly generated receipts
use timestamped filenames while remaining discoverable by
scripts/check_dod_compliance.py.
In `@drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml`:
- Line 12: Update the commit_sha field in the receipt metadata to the commit
that adds or updates this receipt in onex_change_control, replacing the current
CI-only commit hash while preserving the expected receipt-authoring commit
reference.
- Around line 1-2: Rename the receipt file from command.yaml to the
timestamp-based 2026-08-07T22:29:26Z.yaml path, preserving its contents. Update
auto_scaffold_contract.py so newly generated receipts use the timestamp-based
filename instead of command.yaml; leave compliance lookup behavior unchanged.
- Line 9: Rename the receipt file currently named command.yaml to the
timestamped canonical filename 2026-08-07T22:29:26Z.yaml, preserving its
ModelDodReceipt contents and contract_entry_sha256 value.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: a3bb60cd-55dc-4268-a272-5cf92c8d4e5a
📒 Files selected for processing (5)
.github/workflows/ci.ymlcontracts/OMN-15722.yamldrift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yamldrift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yamldrift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml
| --- | ||
| schema_version: 1.0.0 | ||
| ticket_id: OMN-15722 | ||
| evidence_item_id: dod-occ-guards-still-fail-closed | ||
| check_type: command |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
fd -a 'auto_scaffold_contract.py|check_receipt_hardening.py|validator_receipt_gate.py' . |
xargs -r rg -n -C 3 'command\.yaml|run_timestamp|dod_receipts|receipt.*path'Repository: OmniNode-ai/onex_change_control
Length of output: 50387
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- target receipts ---'
for f in \
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml \
drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml
do
if [ -f "$f" ]; then
echo "### $f"
cat -n "$f"
else
echo "MISSING: $f"
fi
done
printf '%s\n' '--- resolver and path rules ---'
rg -n -C 5 --glob '*.py' --glob '*.yaml' --glob '*.md' \
'validator_receipt_gate|command\.yaml|run_timestamp|receipt.*path|dod_receipts/.+ITEM_ID|ModelDodReceipt' \
scripts tests drift docs .github 2>/dev/null | head -n 500Repository: OmniNode-ai/onex_change_control
Length of output: 45290
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- candidate receipt-gate files ---'
fd -a -t f . | rg '(^|/)(validator_receipt_gate|.*receipt.*gate|check_dod_compliance|auto_scaffold_contract)\.(py|yaml|yml|md)$'
printf '%s\n' '--- receipt discovery implementations ---'
rg -n -C 8 --glob '*.py' \
'rglob|glob|iterdir|command\.yaml|run_timestamp.*yaml|canonical_dir|receipt.*path|receipt.*file' \
scripts src tests | rg -v 'tests/test_check_receipt_hardening.py|tests/test_auto_scaffold_contract.py' | head -n 600
printf '%s\n' '--- actual receipt filename shapes ---'
git ls-files 'drift/dod_receipts/**/*.yaml' |
awk -F/ '{print $NF}' |
sort | uniq -c | sort -k2,2Repository: OmniNode-ai/onex_change_control
Length of output: 46873
Use timestamped receipt filenames.
The required canonical path is drift/dod_receipts/<TICKET>/<ITEM_ID>/<run_timestamp>.yaml. Both receipts use command.yaml. scripts/check_dod_compliance.py scans any *.yaml file under the ticket, so command.yaml remains discoverable. Update both receipts and scripts/auto_scaffold_contract.py together.
📍 Affects 2 files
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml#L1-L5(this comment)drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml#L1-L5
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml`
around lines 1 - 5, Rename both receipt files at
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml and
drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml
to timestamped filenames matching
drift/dod_receipts/<TICKET>/<ITEM_ID>/<run_timestamp>.yaml, preserving their
contents. Update scripts/auto_scaffold_contract.py so newly generated receipts
use timestamped filenames while remaining discoverable by
scripts/check_dod_compliance.py.
Sources: Coding guidelines, Learnings
| not in src]; conc=[k for k in w if str(k)=='concurrency']; sys.exit('gate weakened missing=%s soft=%s | ||
| unguarded=%s concurrency=%s' % (missing, soft, unguarded, conc)) if (missing or soft or unguarded or | ||
| conc) else print('true')" | ||
| contract_entry_sha256: sha256:f5ffbaaee8557bc072b007b70f25805e386bf5b76fa8d23234e080d9bdae26df |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Add the required whole-contract SHA-256 binding.
Both receipts contain contract_entry_sha256, but neither contains contract_sha256 for the raw bytes of contracts/OMN-15722.yaml. Regenerate both bindings with omnibase_core.validation.validator_receipt_gate after the contract is final.
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml#L13-L13: add the raw-bytecontract_sha256.drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml#L10-L10: add the raw-bytecontract_sha256.
As per coding guidelines, bind both contract_sha256 and contract_entry_sha256 using omnibase_core.validation.validator_receipt_gate.
📍 Affects 2 files
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml#L13-L13(this comment)drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml#L10-L10
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml`
at line 13, Add the missing raw-byte contract_sha256 binding to both
drift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yaml (line
13) and
drift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yaml
(line 10). After the contract is final, regenerate both contract_sha256 and
existing contract_entry_sha256 values using
omnibase_core.validation.validator_receipt_gate.
Source: Coding guidelines
| --- | ||
| schema_version: 1.0.0 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n 'command\.yaml|run_timestamp|drift/dod_receipts' .Repository: OmniNode-ai/onex_change_control
Length of output: 50388
🏁 Script executed:
#!/bin/bash
set -euo pipefail
target='drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
printf '%s\n' '--- target file ---'
cat -n "$target"
printf '%s\n' '--- nearby receipt paths ---'
find drift/dod_receipts/OMN-15722 -maxdepth 3 -type f -print 2>/dev/null | sort
printf '%s\n' '--- relevant validators, schemas, and scaffolds ---'
rg -n -i --glob '!drift/dod_receipts/**' \
'ModelDodReceipt|dod_receipt|receipt.*(path|filename|lookup)|run_timestamp|command\.yaml' \
.github scripts src tests tools 2>/dev/null | head -n 1200
printf '%s\n' '--- guideline and schema references ---'
rg -n -i 'drift/dod_receipts/.+run_timestamp|omnibase_core\.ModelDodReceipt|DoD receipts' \
. --glob '!drift/dod_receipts/**' | head -n 500Repository: OmniNode-ai/onex_change_control
Length of output: 50387
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- compliance lookup and migration rules ---'
sed -n '260,365p' scripts/check_dod_compliance.py
sed -n '225,335p' src/onex_change_control/handlers/handler_dod_sweep.py
printf '%s\n' '--- receipt hardening path rules ---'
sed -n '950,995p' scripts/validation/check_receipt_hardening.py
sed -n '1525,1580p' scripts/validation/check_receipt_hardening.py
printf '%s\n' '--- scaffold implementation ---'
sed -n '1,35p' scripts/auto_scaffold_contract.py
sed -n '200,242p' scripts/auto_scaffold_contract.py
printf '%s\n' '--- workflow receipt discovery ---'
sed -n '710,750p' .github/workflows/call-receipt-gate.yml
sed -n '1015,1060p' .github/workflows/ci.yml
sed -n '1038,1060p' .github/workflows/ci.yml
printf '%s\n' '--- exact target references ---'
rg -n -F 'OMN-15722/occ-self-bind-pr-6173' . --glob '!drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'Repository: OmniNode-ai/onex_change_control
Length of output: 19654
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- repository receipt-location contract ---'
sed -n '1,220p' docs/RECEIPT_LOCATIONS.md 2>/dev/null || true
sed -n '1,70p' scripts/check_dod_compliance.py
sed -n '1,85p' src/onex_change_control/handlers/handler_dod_sweep.py
printf '%s\n' '--- focused behavioral verifier ---'
python3 - <<'PY'
from pathlib import Path
import re
root = Path(".")
target = root / "drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml"
text = target.read_text(encoding="utf-8")
run_timestamp = re.search(r"^run_timestamp:\s*['\"]?([^'\"]+)['\"]?\s*$", text, re.MULTILINE)
print("target_exists:", target.is_file())
print("target_filename:", target.name)
print("run_timestamp:", run_timestamp.group(1) if run_timestamp else None)
print("guideline_shape_match:",
bool(re.fullmatch(
r"drift/dod_receipts/[^/]+/[^/]+/[^/]+\.yaml",
target.as_posix(),
)) and target.name != "command.yaml")
ticket_dir = root / "drift/dod_receipts/OMN-15722"
yaml_files = sorted(p.relative_to(ticket_dir).as_posix()
for p in ticket_dir.rglob("*.yaml"))
print("canonical_directory_yaml_files:", yaml_files)
print("canonical_directory_discovery_would_find_target:",
"occ-self-bind-pr-6173/command.yaml" in yaml_files)
scaffold = (root / "scripts/auto_scaffold_contract.py").read_text(encoding="utf-8")
print("scaffold_hardcodes_command_yaml:",
'receipt_path = receipt_subdir / f"{check_type}.yaml"' in scaffold)
print("scaffold_mentions_timestamp_filename:",
"run_timestamp" in scaffold and "receipt_path" in scaffold)
compliance = (root / "scripts/check_dod_compliance.py").read_text(encoding="utf-8")
print("compliance_uses_recursive_yaml_discovery:",
"canonical_dir.rglob(\"*.yaml\")" in compliance)
print("compliance_resolves_command_yaml_literal:",
"command.yaml" in compliance)
PYRepository: OmniNode-ai/onex_change_control
Length of output: 11754
Use the timestamp-based receipt path.
Rename this file to drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/2026-08-07T22:29:26Z.yaml. The compliance lookup already scans all YAML files under the ticket directory, so no lookup change is needed. Update scripts/auto_scaffold_contract.py because it still generates command.yaml.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml` around lines
1 - 2, Rename the receipt file from command.yaml to the timestamp-based
2026-08-07T22:29:26Z.yaml path, preserving its contents. Update
auto_scaffold_contract.py so newly generated receipts use the timestamp-based
filename instead of command.yaml; leave compliance lookup behavior unchanged.
Sources: Coding guidelines, Learnings
| check_value: gh pr view 6173 --repo OmniNode-ai/onex_change_control --json number,state,headRefName --jq | ||
| 'if (.number == 6173 and .state == "OPEN" and .headRefName == "jonah/omn-15722-occ-guard-timeout-budget") | ||
| then "true" else error("unexpected OCC self-bind PR state") end' | ||
| contract_entry_sha256: sha256:5e2ac23c4b89f0be86852c89e1cb52cc108faf159d4b8802741237b66c0c55f2 |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
receipt='drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
contract='contracts/OMN-15722.yaml'
test -f "$receipt"
test -f "$contract"
rg -n -C 6 'occ-self-bind-pr-6173|contract_entry_sha256' "$receipt" "$contract"
LC_ALL=C shasum -a 256 "$contract"
rg -n 'validator_receipt_gate|check_receipt_hardening' .Repository: OmniNode-ai/onex_change_control
Length of output: 3350
🏁 Script executed:
#!/bin/bash
set -euo pipefail
receipt='drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
contract='contracts/OMN-15722.yaml'
printf '%s\n' '--- receipt ---'
cat -n "$receipt"
printf '%s\n' '--- contract entry ---'
sed -n '1,90p' "$contract"
printf '%s\n' '--- receipt gate references ---'
rg -n -C 4 'validator_receipt_gate|check_receipt_hardening|contract_entry_sha256|canonical.?json|ModelDodReceipt' . --glob '!drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
printf '%s\n' '--- hashes ---'
python3 - <<'PY'
import hashlib
from pathlib import Path
p = Path('contracts/OMN-15722.yaml')
print('raw_contract_sha256:', hashlib.sha256(p.read_bytes()).hexdigest())
PYRepository: OmniNode-ai/onex_change_control
Length of output: 50388
🏁 Script executed:
#!/bin/bash
set -euo pipefail
receipt='drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
contract='contracts/OMN-15722.yaml'
printf '%s\n' '--- target receipt ---'
cat -n "$receipt"
printf '%s\n' '--- target contract section ---'
sed -n '1,75p' "$contract"
printf '%s\n' '--- targeted gate and hash references ---'
rg -n -C 5 'validator_receipt_gate|check_receipt_hardening|contract_entry_sha256|canonical.?json|ModelDodReceipt' \
scripts tests .github contracts drift 2>/dev/null | head -n 1200
printf '%s\n' '--- candidate implementation files ---'
git ls-files | rg -i '(receipt|contract|dod|canonical)' | head -n 1200
printf '%s\n' '--- hashes ---'
python3 - <<'PY'
import hashlib
from pathlib import Path
p = Path('contracts/OMN-15722.yaml')
print('raw_contract_sha256:', hashlib.sha256(p.read_bytes()).hexdigest())
PYRepository: OmniNode-ai/onex_change_control
Length of output: 50388
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- hash implementation references ---'
rg -n -C 8 'def compute_contract_entry_sha256|compute_contract_entry_sha256\(' . --glob '*.py' --glob '*.md' --glob '*.yaml' | head -n 1000 || true
printf '%s\n' '--- hash-focused tests ---'
sed -n '45,85p' tests/test_check_receipt_hardening.py
sed -n '349,475p' tests/test_check_receipt_hardening.py
printf '%s\n' '--- dependency declarations ---'
rg -n -C 3 'omnibase-core|omnibase_core' pyproject.toml uv.lock requirements* 2>/dev/null | head -n 300 || true
printf '%s\n' '--- validator file candidates ---'
git ls-files | rg 'validator_receipt_gate|receipt_gate|check_receipt_hardening' || trueRepository: OmniNode-ai/onex_change_control
Length of output: 18999
🌐 Web query:
omnibase-core 0.46.7 validator_receipt_gate compute_contract_entry_sha256 HEADER_FIELDS
💡 Result:
In omnibase-core v0.46.7, the components you referenced relate to the framework's validation and contract management systems: validator_receipt_gate: This is a module within omnibase_core (located at src/omnibase_core/validation/validator_receipt_gate.py) [1]. It implements the "Enforcement by Receipt" mechanism, which verifies that pull requests cite Linear tickets with passing ModelDodReceipt artifacts [2]. It was previously known as receipt_gate.py [1]. compute_contract_entry_sha256: This appears to be a internal functional reference used for contract hashing. In the context of ONEX (OmniNode eXecution) architecture, SHA-256 is used as a cryptographic hash mode for contract data, often managed through dispatchers that maintain consistency across state digests and entry points [3]. While Starknet-related codebases contain similarly named hashing functions for contract classes (e.g., compute_compiled_class_hash) [4][5], within omnibase_core, such hashing logic is typically used to ensure architectural invariants and proof-of-work/receipt integrity [6][3]. HEADER_FIELDS: This refers to a configuration or constant set, such as harness.VOLATILE_HEADER_FIELDS, used to define metadata that should be ignored during parity checks or gate validation [7]. Specifically, it is used to prevent CI gates (like the dispatch-parity-gate) from failing due to non-functional metadata drift—such as version numbers or timestamps—ensuring that only significant changes in the dispatch corpus trigger a failure [7].
Citations:
- 1: OmniNode-ai/omnibase_core@f91468b
- 2: https://github.com/OmniNode-ai/omnimarket/blob/ad312f3c28a53332d8b15355321e13817c06bd95/.github/workflows/call-receipt-gate.yml
- 3: https://github.com/brianonbased-dev/HoloScript/blob/main/packages/engine/src/simulation/sha256.ts
- 4: https://github.com/starkware-libs/cairo-lang/blob/v0.13.1a0/src/starkware/starknet/core/os/contract_class/compiled_class_hash.py
- 5: https://github.com/starkware-libs/sequencer/blob/8b140e199e21e87d0480d1c0a8f34b419801c1af/crates/starknet_api/src/contract_class/compiled_class_hash.rs
- 6: https://github.com/OmniNode-ai/omnibase_core/blob/main/CHANGELOG.md
- 7: OmniNode-ai/omnibase_infra@76e57e3
🏁 Script executed:
#!/bin/bash
set -euo pipefail
url='https://raw.githubusercontent.com/OmniNode-ai/omnibase_core/v0.46.7/src/omnibase_core/validation/validator_receipt_gate.py'
curl -fsSL "$url" | sed -n '1,260p'Repository: OmniNode-ai/onex_change_control
Length of output: 12298
🏁 Script executed:
#!/bin/bash
set -euo pipefail
url='https://raw.githubusercontent.com/OmniNode-ai/omnibase_core/v0.46.7/src/omnibase_core/validation/validator_receipt_gate.py'
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
curl -fsSL "$url" > "$tmp"
rg -n -C 24 'HEADER_FIELDS|compute_contract_entry_sha256|ContractEntryNotFoundError' "$tmp" | head -n 500Repository: OmniNode-ai/onex_change_control
Length of output: 8238
🏁 Script executed:
#!/bin/bash
set -euo pipefail
python3 - <<'PY'
import hashlib
import json
from pathlib import Path
import yaml
receipt_path = Path('drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml')
contract_path = Path('contracts/OMN-15722.yaml')
receipt = yaml.safe_load(receipt_path.read_text())
contract = yaml.safe_load(contract_path.read_text())
item_id = receipt['evidence_item_id']
entry = next(
item for item in contract['dod_evidence']
if isinstance(item, dict) and item.get('id') == item_id
)
canonical = {
'header': {
'ticket_id': contract.get('ticket_id'),
'schema_version': contract.get('schema_version'),
},
'entry': entry,
}
blob = json.dumps(canonical, sort_keys=True, separators=(',', ':'), ensure_ascii=False)
expected = 'sha256:' + hashlib.sha256(blob.encode('utf-8')).hexdigest()
actual = receipt['contract_entry_sha256']
print('evidence_item_id:', item_id)
print('canonical_json:', blob)
print('expected_contract_entry_sha256:', expected)
print('receipt_contract_entry_sha256:', actual)
print('matches:', actual == expected)
PYRepository: OmniNode-ai/onex_change_control
Length of output: 286
🏁 Script executed:
#!/bin/bash
set -euo pipefail
if command -v ruby >/dev/null 2>&1; then
ruby -e 'require "yaml"; puts Psych::VERSION'
else
echo 'ruby unavailable'
fi
if command -v yq >/dev/null 2>&1; then
yq --version
else
echo 'yq unavailable'
fiRepository: OmniNode-ai/onex_change_control
Length of output: 190
🏁 Script executed:
#!/bin/bash
set -euo pipefail
ruby <<'RB'
require 'yaml'
require 'json'
require 'digest'
receipt_path = 'drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
contract_path = 'contracts/OMN-15722.yaml'
receipt = YAML.safe_load(File.read(receipt_path))
contract = YAML.safe_load(File.read(contract_path))
item_id = receipt.fetch('evidence_item_id')
entry = contract.fetch('dod_evidence').find { |item| item.is_a?(Hash) && item['id'] == item_id }
abort "entry not found: #{item_id}" unless entry
canonical = {
'header' => {
'ticket_id' => contract['ticket_id'],
'schema_version' => contract['schema_version']
},
'entry' => entry
}
sort_json = lambda do |value|
case value
when Hash
value.keys.sort.each_with_object({}) { |key, out| out[key] = sort_json.call(value[key]) }
when Array
value.map { |item| sort_json.call(item) }
else
value
end
end
blob = JSON.generate(sort_json.call(canonical))
expected = "sha256:#{Digest::SHA256.hexdigest(blob)}"
actual = receipt.fetch('contract_entry_sha256')
puts "evidence_item_id: #{item_id}"
puts "canonical_json: #{blob}"
puts "expected_contract_entry_sha256: #{expected}"
puts "receipt_contract_entry_sha256: #{actual}"
puts "matches: #{actual == expected}"
RBRepository: OmniNode-ai/onex_change_control
Length of output: 1154
🏁 Script executed:
#!/bin/bash
set -euo pipefail
ruby <<'RB'
require 'yaml'
receipt_path = 'drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml'
receipt = YAML.safe_load(File.read(receipt_path))
expected_name = "#{receipt.fetch('run_timestamp')}.yaml"
actual_name = File.basename(receipt_path)
required = %w[schema_version ticket_id evidence_item_id check_type check_value status run_timestamp commit_sha runner verifier probe_command probe_stdout]
missing = required.reject { |key| receipt.key?(key) }
puts "actual_filename: #{actual_name}"
puts "expected_filename_from_run_timestamp: #{expected_name}"
puts "filename_matches_timestamp_rule: #{actual_name == expected_name}"
puts "missing_model_dod_receipt_fields: #{missing.inspect}"
RBRepository: OmniNode-ai/onex_change_control
Length of output: 339
Store the receipt at the timestamped canonical path.
Rename command.yaml to 2026-08-07T22:29:26Z.yaml. The receipt fields use the ModelDodReceipt shape, and its contract hash matches the final contract.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml` at line 9,
Rename the receipt file currently named command.yaml to the timestamped
canonical filename 2026-08-07T22:29:26Z.yaml, preserving its ModelDodReceipt
contents and contract_entry_sha256 value.
Source: Learnings
…9m02s measured) The 20m budget left that job ~58s of headroom against its measured 19m02s runtime on PR #6173 run 31222755192 — a re-starve one contention spike away, which is the exact defect this PR exists to remove. Profile of the 19m02s (steps API, head 2df62fc): Checkout code 11m48s Run ./.github/actions/setup-uv 5m30s Validate prod-promotion-grants trust anchor 2s The work is 2 seconds; the runtime is fleet latency. Within that one run, Checkout code for the same repo/SHA ranged 74s (omninode-runner-63) to 708s (omninode-runner-21) — a ~9.6x contention spread — so the budget must cover the latency tail, not the job's work. 45m is ~2.4x the worst observation. Other four guards unchanged at 20. Contract probe updated from a flat ==20 assertion to a per-job expected-budget map so it stays falsifiable, and the contract summary corrected (it claimed all five go to 20).
The prior stamps carried run_timestamp 2026-08-07T22:29:26Z / commit_sha 2df62fc, which predated both the 45m widening and the contract edit — the receipts attested a tree that no longer existed. All three probes were re-run against the working tree at d772fb8; none of these values is carried over: dod-occ-guard-timeout-budgets-raised exit 0, stdout 'true' dod-occ-guards-still-fail-closed exit 0, stdout 'true' occ-self-bind-pr-6173 exit 0, stdout 'true' Receipt 1's probe changed with the contract: a flat 'all five == 20' assertion would now fail, so it became a per-job expected-budget map (45/20/20/20/20). Its contract_entry_sha256 is recomputed to sha256:4c1ae3b62a7def4f0ca209d9921d974c6c74a4927cb8dc5fa3d4e32a99adeec8; entries 2 and 3 are parse-identical so their hashes are unchanged. Both substantive probes re-verified falsifiable at this head by negative control — reverting 45->20 exits 1 with [('validate-prod-promotion-grants', 20, 45)], and flipping the predicate-parity comparison to == exits 1 with unguarded=['predicate-parity'].
…ummary needs members contract-shape-v1 (budget 25) was cancelled at 25m50s on this PR's own run 31222755192, cancelled step Checkout code (1358s) - the same starvation the five already-raised guards hit. Inside that one run, for the same repo and SHA, checkout ranged 6s-1358s and setup-uv 93s-571s, so the runner preamble alone has been observed above 30m and every per-job budget under that is provably insufficient. Sets 45 uniformly across all ten ci-summary needs members that declare a timeout-minutes. Also corrects the inline fleet-size comment: live gh api orgs/OmniNode-ai/actions/runners reports 64 runners labelled omnibase-ci, not 48.
The prior wording said the runner preamble had been observed above 30m; that number was a cross-job sum of the worst checkout (1358s, contract-shape-v1) and the worst setup-uv (571s, a different job), not a single observed preamble. Replaced with the two exact single-phase observations plus the worst own-work step among the ten budgeted gates (53s). No budget changes.
|
OCC autobind stood down for |
… check occ-self-bind-pr-6173 uses `gh pr view`, which lexes to bare `gh` in command position (not `gh api`) and is INADMISSIBLE (NOT_EXECUTED) under the OMN-15309 evidence_admissibility predicate. Contract Compliance Check on this PR's own run (31228584791, job 93027660648) collapsed the whole dod_evidence supersession chain to 0/3 PASS -> BLOCK, reddening the required check. Append-only fix: occ-self-bind-pr-6173-admissible supersedes it with `gh api repos/OWNER/REPO/pulls/6173/files` asserting the changed-file count (5), with printed stdout so the run is distinguishable from a probe that never executed (Receipt Hardening Gate, OMN-13060/OMN-15710). Verified ADMISSIBLE by direct execution of classify_evidence over the exact check_value, and the check itself run green (count=5) and red (count=4, exit 1) before being recorded. Nothing above the new entries in contracts/OMN-15722.yaml is edited; every prior dod_evidence item keeps its bytes and OMN-13888 per-entry hash. Local run of scripts/ci/run_contract_compliance_check.py against this head confirms PASS (1/4 PASS, 3 WARN, 0 BLOCK).
…-> 7) occ-self-bind-pr-6173-admissible asserted PR #6173's changed-file count == 5, but adding its own receipt file to the diff made the live count 6 the moment it was committed -- confirmed red on Contract Compliance Check (job 93048702548, run 31236076328): live count=6, assertion expected 5, exit 1. Appends occ-self-bind-pr-6173-admissible-v2, a self-inclusive correction: its own receipt file is the 7th changed path, so it asserts count == 7, the number that includes the file recording its own PASS.
…starvation false-fails (#6230) * fix(OMN-15765): raise check-bot-authored-authz-guard timeout to stop starvation false-fails check-bot-authored-authz-guard was firing red on 12/17 open D-cluster PRs, including 5 human-authored (occ#6172/#6175/#6176/#6182/#6188). Pulled the failing job logs for occ#6176 and occ#6182: both die inside actions/checkout@v7 (fetch-depth: 0) / the setup-uv composite with conclusion=cancelled at the job's timeout-minutes: 5 wall, never reaching the guard's own decision-logic step. CI Summary's fail-closed != success comparison then scores that cancellation as an authz REJECT. This is CI-scheduling starvation, not a matcher defect -- the identity/path matcher (evaluate() in check_bot_authored_authz_guard.py) is already unit-tested correct in both directions and is unchanged here. Corroborated by OMN-15722/PR #6173, which raised nine sibling ci-summary jobs on the same preamble-latency evidence (checkout observed up to 22m38s in one run). Raises only check-bot-authored-authz-guard's timeout-minutes 5 -> 45 (matching OMN-15722's floor) and adds a regression test (test_bot_authored_authz_guard_timeout_omn15765.py) pinning the floor, proven red-before (fails at 5) / green-after (passes at 45). OMN-15765 * evidence(OMN-15765): DoD receipts for authz-guard timeout fix Adds PASS receipts for both dod_evidence items in contracts/OMN-15765.yaml (dod-authz-guard-timeout-raised, dod-authz-guard-matcher-unchanged-both-dirs), required for occ-preflight eligibility on this PR. OMN-15765 * fix(OMN-15765): reword ci.yml comment to clear the runner-label naming gate The prior comment's wording ("contended self-hosted omnibase-ci fleet") literally embedded the two centralized runner-selector labels outside the fromJSON(vars.OMNI_TRUSTED_CI_RUNS_ON_JSON || ...) form, which trips omni-standards-compliance.yml's hard-coded-runner-label scan (CI Naming Convention). Reworded to describe the same fact without repeating the literal label strings. No behavior change. OMN-15765
…ard-timeout-budget # Conflicts: # .github/workflows/ci.yml
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.github/workflows/ci.yml (1)
20-22: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winRemove the top-level
concurrencyblock.
contracts/OMN-15722.yamlrequiresci.ymlto have no top-levelconcurrencykey. This block makesdod-occ-guards-still-fail-closedfail and invalidates its recorded PASS result. The PR objective also states that top-level concurrency remains absent.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In @.github/workflows/ci.yml around lines 20 - 22, Remove the top-level concurrency block from ci.yml, including its group and cancel-in-progress settings, so the workflow has no top-level concurrency key and preserves the required CI guard behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml`:
- Line 32: Rename the receipt at
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml#L32-L32
to
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/2026-08-08T02:58:10Z.yaml,
and rename
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/command.yaml#L19-L19
to
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/2026-08-08T05:20:00Z.yaml.
Update omnibase_core.validation.validator_receipt_gate receipt resolution to
derive the timestamped filenames from run_timestamp rather than command.yaml.
---
Outside diff comments:
In @.github/workflows/ci.yml:
- Around line 20-22: Remove the top-level concurrency block from ci.yml,
including its group and cancel-in-progress settings, so the workflow has no
top-level concurrency key and preserves the required CI guard behavior.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: faa99d21-6ebe-4bbb-b07c-c4b34f9d3565
📒 Files selected for processing (7)
.github/workflows/ci.ymlcontracts/OMN-15722.yamldrift/dod_receipts/OMN-15722/dod-occ-guard-timeout-budgets-raised/command.yamldrift/dod_receipts/OMN-15722/dod-occ-guards-still-fail-closed/command.yamldrift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/command.yamldrift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yamldrift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
- drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173/command.yaml
| echo "count=$n"; test "$n" = "5" | ||
| contract_entry_sha256: "sha256:96c8024ba4887774e9f4b2d8bd8a43dfb4e86a2aa64c053fc734c3f0920f6526" | ||
| status: PASS | ||
| run_timestamp: "2026-08-08T02:58:10Z" |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
Use the required timestamp receipt paths.
These receipts use command.yaml. The required path format is drift/dod_receipts/<TICKET>/<ITEM_ID>/<run_timestamp>.yaml.
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml#L32-L32: store this receipt under its2026-08-08T02:58:10Ztimestamp filename.drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/command.yaml#L19-L19: store this receipt under its2026-08-08T05:20:00Ztimestamp filename.
Update omnibase_core.validation.validator_receipt_gate receipt resolution in the same change if it still derives command.yaml paths. As per coding guidelines, “Store DoD receipts only at drift/dod_receipts/<TICKET>/<ITEM_ID>/<run_timestamp>.yaml.”
📍 Affects 2 files
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml#L32-L32(this comment)drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/command.yaml#L19-L19
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml`
at line 32, Rename the receipt at
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/command.yaml#L32-L32
to
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible/2026-08-08T02:58:10Z.yaml,
and rename
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/command.yaml#L19-L19
to
drift/dod_receipts/OMN-15722/occ-self-bind-pr-6173-admissible-v2/2026-08-08T05:20:00Z.yaml.
Update omnibase_core.validation.validator_receipt_gate receipt resolution to
derive the timestamped filenames from run_timestamp rather than command.yaml.
Source: Coding guidelines
…4994a03a479ac90f__v1__run31292255084-1.yaml) (#6240) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/2cea83b3d664a5a3a919d4e14994a03a479ac90f__v1__run31292255084-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31292255084-1 * evidence(OMN-15763): OCC companion for omnimarket PR #2027 (#6239) * evidence(OMN-15763): OCC companion for omnimarket PR #2027 Falsifiable deploy-gate evidence (OMN-14505 sense) for the seam registry + canonical seam-projection serialization PR: three live GitHub-content probes against the PR head commit (canonical.py's canonical_sha256, node_seam_match_compute's HandlerSeamMatch, and seams.v1.yaml's schema_version header), plus the standard self-bind check. All three probes verified locally against the PR head SHA 6bbd87de3c0173956969f5a0b159c8631e4b929e before committing. Rebuilt on origin/dev (onex_change_control's live default branch — main now accepts only promotion/hotfix PRs, discovered live via main-target-guard on the first attempt against main). Net-new-file-only. OMN-15763 * fix(OMN-15763): buffer check_value producers to avoid Rule E SIGPIPE false-RED OMN-15411 Rule E (contract corpus ratchet) caught 3 new sigpipe-fragile instances: gh api <contents> --jq .content | base64 -d | grep -q ... is a measured SIGPIPE-fragile shape (141/0/141/0/141 across 5 runs against real inputs) — grep -q exits at the first match and closes its stdin, base64 -d is killed by SIGPIPE, and dod_verify's bash -o pipefail turns that 141 into a false RED on evidence that is actually present. Rewrote all three live-content probes to the buffered-read form: body="$(<producer>)" && printf '%s' "$body" | grep -qF 'MARKER'. Verified locally: sigpipe_fragile_violation() returns None for all three (was non-None before), all three still execute correctly under bash -o pipefail -c against the live GitHub API, and validate_pr_deploy_required.has_deploy_evidence() still returns True (the buffered form still classifies as a falsifiable live-surface probe). Also re-pinned all three refs to the omnimarket PR's final head commit f1741be0163ab757738bb9ddbf7d2d67aca6aa49 (was 6bbd87de, superseded by the CodeRabbit-fix commit). OMN-15763 * evidence(OMN-15763): PASS receipts for all four dod_evidence items occ-preflight/verify hard-required receipts under drift/dod_receipts/OMN-15763/<item_id>/command.yaml for every item -- an OCC PR's in-tree contract carries its own receipts (the "in-repo trap"). All four probes run for real against the omnimarket PR #2027 head commit f1741be0163ab757738bb9ddbf7d2d67aca6aa49 and this OCC PR's own state (#6239). contract_sha256 + contract_entry_sha256 computed via omnibase_core.validation.validator_receipt_gate against the landed contract (commit 5f647f0). Verified locally end-to-end: uv run python -m omnibase_core.validation.validator_occ_merge_eligibility against this tree returns eligible=true, reason=eligible, zero missing_or_nonpass_receipts. probe_stdout required a non-empty value (ModelDodReceipt: "receipts with empty stdout are indistinguishable from probes that never ran") -- the contract's check_value stays the buffered grep -qF form (Rule E safe, quiet by design), while each receipt's own probe_command is the non-quiet grep -F variant that captures the actual matched line as real evidence. OMN-15763 * evidence(OMN-14888): OCC observation append (b8a1eb65a20f32e0e00efd473aaf7b69f3cad6f9__v1__run31058937953-1.yaml) (#6144) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/b8a1eb65a20f32e0e00efd473aaf7b69f3cad6f9__v1__run31058937953-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31058937953-1 * evidence(OMN-14888): self-bind OCC observation PR 6144 * evidence(OMN-14888): make OCC self-bind 6144 append-stable * fix(OMN-14888): repair self-bind assertion in occ-self-bind-pr-6144 Rewrite the dod_evidence check to bind PR #6144 to immutable facts (PR number, base repo, exact head ref) and accept state open OR closed+merged, so the check stays true after this PR merges instead of asserting .state == "open" forever. * fix(OMN-14888): regenerate occ-self-bind-pr-6144 receipt for repaired check_value Bind contract_entry_sha256 to the updated dod_evidence entry hash so the OCC merge-eligibility gate's per-entry binding check passes. * fix(OMN-14888): supersede occ-self-bind-pr-6134 with merged-terminal-state binding PR #6134 merged to dev (2026-08-09T03:14:53Z, ea53c31) while this PR was in flight. Its self-bind entry asserts .state == "open" forever, which now fails closed. Append-only supersession per the occ-self-bind-pr-5855-superseded / occ-self-bind-pr-6149-superseded precedent — bind to the merged-terminal state instead; the superseded entry stays verbatim for audit. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (7bd1c1a9c39823834fe4e38dabc785887ecf524c__v1__run31054912492-1.yaml) (#6132) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2021/7bd1c1a9c39823834fe4e38dabc785887ecf524c__v1__run31054912492-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31054912492-1 * evidence(OMN-14888): self-bind OCC observation PR 6132 * evidence(OMN-14888): make OCC self-bind 6132 append-stable * fix(OMN-14888): regenerate occ-self-bind-pr-6132 receipt for entry-hash match The contract entry's check_value was rewritten to accept open OR closed+merged terminal state (self-bind fix), which changed its recomputed contract_entry_sha256. Regenerated the receipt with a fresh live probe against PR #6132 and the matching entry hash so occ-preflight eligibility passes instead of failing on contract_hash_mismatch. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * fix(OMN-15722): raise starved guard-job timeout budgets in OCC ci.yml (#6173) * fix(OMN-15722): raise starved guard-job timeout budgets in OCC ci.yml Five guard jobs carry timeout-minutes budgets below the observed latency of the self-hosted omnibase-ci runner fleet under concurrent load. When a job hits its own timeout wall GitHub records conclusion=cancelled, and CI Summary (the sole required umbrella context on onex_change_control dev) compares each needs.<job>.result against "success" fail-closed - so a guard that passed gets scored as a violation and turns the required context red. Raise the three 5-minute guards and the two 10-minute jobs to 20 minutes: - validate-prod-promotion-grants 5 -> 20 - check-platform-leads-review-tripwire 5 -> 20 - check-bot-authored-authz-guard 5 -> 20 - predicate-parity 10 -> 20 - no-noncanonical-lifecycle-classes 10 -> 20 Not a gate weakening: every guard still runs, still must reach conclusion=success, and CI Summary's fail-closed != "success" comparison is untouched. Only the wall-clock budget moved. Evidence-Ticket: OMN-15722 * evidence(OMN-15722): add OCC ticket contract + PASS receipts for guard timeout fix The first push carried no contracts/OMN-15722.yaml, so both of the two content-gating required contexts on this PR failed with the same single root cause: validator_occ_merge_eligibility reported reason=missing_contract / missing_contracts=["OMN-15722"] on `occ-preflight / eligibility` (job 93010633789) and on `verify / verify` step 21 "Run OCC Eligibility" (job 93010633875). Note step 7 "Resolve Evidence-Source" was SKIPPED in that same job, confirming the in-repo Evidence-Source exemption - the missing contract was the only blocker. Contract declares three dod_evidence items, all probed live and receipted with real command output (no fabricated receipts): dod-occ-guard-timeout-budgets-raised - substantive (L1): parses ci.yml and asserts all five named guard jobs declare timeout-minutes 20. dod-occ-guards-still-fail-closed - substantive (L1): asserts all five guards remain in ci-summary's needs list, carry no continue-on-error, still have their literal fail-closed `result }}" != "success"` comparison in ci.yml, and that ci.yml still declares no top-level concurrency block. Falsifiability proven by negative control - rewriting the predicate-parity comparison to an equality form makes the same probe exit 1 with unguarded=['predicate-parity']. occ-self-bind-pr-6173 - binding stamp only (L0), companion PR identity for receipt-gate binding. Local verification: all three probes exit 0 / stdout "true"; the eligibility validator now returns eligible=true reason=eligible ("OCC evidence is present, PASS, hash-bound, and PR-bound") with all three receipt ids resolved. Full pre-commit over contract + receipts + ci.yml passes, including Receipt Honesty Gate, Receipt Hardening Gate, Contract Substance Floor, DoD-authoring hygiene, Canonical contract shape v1, and the Evidence-Commit SHA Existence Gate. Evidence-Ticket: OMN-15722 * evidence(OMN-15722): remove false no_source_change attestation from receipts All three OMN-15722 receipts asserted no_source_change: true. Per omnibase_core model_dod_receipt.py that field is RUNTIME_OPS-only and asserts the change produced NO repo diff and NO PR. This change has a 5-line ci.yml diff and IS PR #6173, so the assertion was materially false. These receipts carry evidence_class: None and pr_number: 6173, so the field does not apply to them at all -- removed rather than set to false. Its default is False, which is the truthful value. All three re-validate against ModelDodReceipt with no_source_change=False. Note: the model validator enforces only the RUNTIME_OPS -> True direction, not the inverse, so a non-RUNTIME_OPS receipt asserting no_source_change: true alongside a pr_number validates cleanly and no CI gate would have caught this. Model gap, flagged not fixed here. * fix(OMN-15722): widen validate-prod-promotion-grants budget to 45m (19m02s measured) The 20m budget left that job ~58s of headroom against its measured 19m02s runtime on PR #6173 run 31222755192 — a re-starve one contention spike away, which is the exact defect this PR exists to remove. Profile of the 19m02s (steps API, head 2df62fc): Checkout code 11m48s Run ./.github/actions/setup-uv 5m30s Validate prod-promotion-grants trust anchor 2s The work is 2 seconds; the runtime is fleet latency. Within that one run, Checkout code for the same repo/SHA ranged 74s (omninode-runner-63) to 708s (omninode-runner-21) — a ~9.6x contention spread — so the budget must cover the latency tail, not the job's work. 45m is ~2.4x the worst observation. Other four guards unchanged at 20. Contract probe updated from a flat ==20 assertion to a per-job expected-budget map so it stays falsifiable, and the contract summary corrected (it claimed all five go to 20). * evidence(OMN-15722): re-stamp all three receipts at head d772fb8 The prior stamps carried run_timestamp 2026-08-07T22:29:26Z / commit_sha 2df62fc, which predated both the 45m widening and the contract edit — the receipts attested a tree that no longer existed. All three probes were re-run against the working tree at d772fb8; none of these values is carried over: dod-occ-guard-timeout-budgets-raised exit 0, stdout 'true' dod-occ-guards-still-fail-closed exit 0, stdout 'true' occ-self-bind-pr-6173 exit 0, stdout 'true' Receipt 1's probe changed with the contract: a flat 'all five == 20' assertion would now fail, so it became a per-job expected-budget map (45/20/20/20/20). Its contract_entry_sha256 is recomputed to sha256:4c1ae3b62a7def4f0ca209d9921d974c6c74a4927cb8dc5fa3d4e32a99adeec8; entries 2 and 3 are parse-identical so their hashes are unchanged. Both substantive probes re-verified falsifiable at this head by negative control — reverting 45->20 exits 1 with [('validate-prod-promotion-grants', 20, 45)], and flipping the predicate-parity comparison to == exits 1 with unguarded=['predicate-parity']. * fix(OMN-15722): uniform 45m timeout floor across all 10 budgeted ci-summary needs members contract-shape-v1 (budget 25) was cancelled at 25m50s on this PR's own run 31222755192, cancelled step Checkout code (1358s) - the same starvation the five already-raised guards hit. Inside that one run, for the same repo and SHA, checkout ranged 6s-1358s and setup-uv 93s-571s, so the runner preamble alone has been observed above 30m and every per-job budget under that is provably insufficient. Sets 45 uniformly across all ten ci-summary needs members that declare a timeout-minutes. Also corrects the inline fleet-size comment: live gh api orgs/OmniNode-ai/actions/runners reports 64 runners labelled omnibase-ci, not 48. * evidence(OMN-15722): re-stamp all three receipts at the uniform-45m head * docs(OMN-15722): tighten the latency claim to single-phase observations The prior wording said the runner preamble had been observed above 30m; that number was a cross-job sum of the worst checkout (1358s, contract-shape-v1) and the worst setup-uv (571s, a different job), not a single observed preamble. Replaced with the two exact single-phase observations plus the worst own-work step among the ten budgeted gates (53s). No budget changes. * evidence(OMN-15722): re-stamp all three receipts at 63be7d6 * evidence(OMN-15722): admissible self-bind supersedes gh-pr-view INERT check occ-self-bind-pr-6173 uses `gh pr view`, which lexes to bare `gh` in command position (not `gh api`) and is INADMISSIBLE (NOT_EXECUTED) under the OMN-15309 evidence_admissibility predicate. Contract Compliance Check on this PR's own run (31228584791, job 93027660648) collapsed the whole dod_evidence supersession chain to 0/3 PASS -> BLOCK, reddening the required check. Append-only fix: occ-self-bind-pr-6173-admissible supersedes it with `gh api repos/OWNER/REPO/pulls/6173/files` asserting the changed-file count (5), with printed stdout so the run is distinguishable from a probe that never executed (Receipt Hardening Gate, OMN-13060/OMN-15710). Verified ADMISSIBLE by direct execution of classify_evidence over the exact check_value, and the check itself run green (count=5) and red (count=4, exit 1) before being recorded. Nothing above the new entries in contracts/OMN-15722.yaml is edited; every prior dod_evidence item keeps its bytes and OMN-13888 per-entry hash. Local run of scripts/ci/run_contract_compliance_check.py against this head confirms PASS (1/4 PASS, 3 WARN, 0 BLOCK). * evidence(OMN-15722): correct stale self-bind file-count assertion (5 -> 7) occ-self-bind-pr-6173-admissible asserted PR #6173's changed-file count == 5, but adding its own receipt file to the diff made the live count 6 the moment it was committed -- confirmed red on Contract Compliance Check (job 93048702548, run 31236076328): live count=6, assertion expected 5, exit 1. Appends occ-self-bind-pr-6173-admissible-v2, a self-inclusive correction: its own receipt file is the 7th changed path, so it asserts count == 7, the number that includes the file recording its own PASS. * evidence(OMN-15722): OCC companion for #6173 (#6174) * evidence: OCC companion pass 1 for #6173 * evidence: OCC companion self-bind for #6174 * fix(OMN-15722): format OCC autobind contract --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml) (#6149) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31061495853-1 * evidence(OMN-14888): self-bind OCC observation PR 6149 * evidence(OMN-14888): make OCC self-bind 6149 append-stable * fix(OMN-14888): repair PR #6149 self-bind to append-only-stable predicate The occ-self-bind-pr-6149 dod_evidence entry asserted .state == "open", which goes false the instant this PR merges — a self-bind that breaks append-only immutability on merge. Rebind to immutable facts (PR number, base repo, head branch) with state accepted as open OR closed+merged, keeping the check falsifiable for a wrong PR number/branch. * fix(OMN-14888): supersede stale occ-self-bind-pr-6134 open-state assertion PR #6134 merged (2026-08-09T03:14:53Z, merge commit ea53c31...) while its merged dod_evidence entry occ-self-bind-pr-6134 still asserts .state == "open" -- the same class OMN-15374's occ-self-bind-pr-5855-superseded fixed (OCC #6084 precedent). Append a net-new superseding entry bound to the merged-terminal state; the original entry stays untouched (append-only). --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15763): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2028 (#6242) * evidence(OMN-15763): author OCC companion for OmniNode-ai/omnimarket#2028 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 512b272bb26aba643093872519c8c46c142b0de2. * evidence(OMN-15763): self-bind OCC#6242 + rebind contract_sha256 * fix(OMN-15763): backfill missing dod-occ-evidence-admissibility-validator contract entry The OCC Companion Author automation emitted this receipt on PR #2028's companion (dod-occ-evidence-admissibility-validator, node_pr_lifecycle_fix_effect self-check) without adding the matching dod_evidence contract entry, tripping the receipt-hardening append-only gate. Backfills the entry (source: generated, matching the shape of the other autobind entries) and computes the real contract_entry_sha256 via compute_contract_entry_sha256 (was a "PENDING" placeholder) — verified locally against scripts/validation/check_receipt_hardening.py. OMN-15763 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml) (#6138) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2023/cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31057101391-1 * evidence(OMN-14888): self-bind OCC observation PR 6138 * evidence(OMN-14888): make OCC self-bind 6138 append-stable * fix(OMN-14888): regenerate occ-self-bind-pr-6138 receipt for self-bind fix The self-bind entry's check_value was rewritten to bind to immutable facts (PR#/head ref/base repo, state open OR closed+merged) so the assertion survives merge, matching the #6132/#6144 precedent. This changes contract_entry_sha256, so the receipt is regenerated with the recomputed hash and a fresh live probe readback. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml) (#6152) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2024/38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31062523818-1 * evidence(OMN-14888): self-bind OCC observation PR 6152 * evidence(OMN-14888): make OCC self-bind 6152 append-stable --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml) (#6164) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2025/d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31142195987-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15757, OMN-15778): OCC companion for OmniNode-ai/omninode_infra#833 (#6246) * evidence: OCC companion pass 1 for OmniNode-ai/omninode_infra#833 * evidence: OCC companion self-bind for #6246 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> * evidence(OMN-15336): bind infra PR 2676 vendor migration (#6167) * evidence(OMN-15336): bind infra PR 2676 vendor migration * evidence(OMN-15336): self-bind OCC PR 6167 * evidence(OMN-15336): refresh registry RLS heads * fix(OMN-15336): supersede market PR 2021 evidence append-only * evidence(OMN-15336): rebind infra PR 2676 current head * chore(OMN-15336): retrigger OCC gates * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2029 (#6247) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2029 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5. * evidence(OMN-15777): self-bind OCC#6247 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2030 (#6248) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2030 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 271a7abe276bc6a5663599a6e7736c8faab843f7. * evidence(OMN-15777): self-bind OCC#6248 + rebind contract_sha256 * fix(OMN-15777): revert unintended mutation of merged receipt (append-only repair) The occ-evidence-source-autobind commit for PR #2030 (57e1628) rebound drift/dod_receipts/OMN-15777/dod-occ-evidence-admissibility-validator/command.yaml in place -- but that receipt already merged as part of OCC#6247 (PR #2029's companion) and is immutable per the append-only doctrine. PR #2030 already carries its own dedicated, net-new evidence entries (dod-OmniNode-ai-omnimarket-pr-2030, dod-OmniNode-ai-omnimarket-pr-2030-ci, occ-self-bind-pr-6248) that bind it to commit 271a7abe; the shared validator receipt did not need to be re-pointed at PR #2030 to satisfy that binding. Reverts the file to its merged-on-dev content. No supersession file is needed -- this is not a correction to the receipt's claim (still true and still bound to PR #2029/commit f9cc9dcc), it is an unforced touch that should never have modified it. Implements OMN-15777 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15780): OCC Evidence-Source autobind for OmniNode-ai/omninode_infra#834 (#6250) * evidence(OMN-15780): author OCC companion for OmniNode-ai/omninode_infra#834 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 1fdeb0c9c9367d70e43ef88b128203cf567c4aed. * evidence(OMN-15780): self-bind OCC#6250 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-14888): OCC observation append (023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml) (#6155) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31063872175-1 * evidence(OMN-14888): self-bind OCC observation PR 6155 * evidence(OMN-14888): make OCC self-bind 6155 append-stable * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5__v1__run31303503673-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31303503673-1 * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/c11400fe9483b9face2601c391f0a73add5d52cf__v1__run31304580306-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31304580306-1 * fix(OMN-14888): repair occ-self-bind-pr-6155 receipt after dev-merge Conflict resolution against dev landing on PR #6155 rewrote the occ-self-bind-pr-6155 dod_evidence entry's check_value to accept the terminal closed+merged PR state (matching the occ-self-bind-pr-6134 / occ-self-bind-pr-6149 established pattern) instead of a bare .state == "open" assertion that would fail closed the moment this PR merges. That byte change moved the per-entry contract hash, so the paired receipt is regenerated here with the recomputed contract_entry_sha256 and a fresh live probe_stdout. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml) (#6237) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31291311120-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> Co-authored-by: onexbot-occ-writer[bot] <307849072+onexbot-occ-writer[bot]@users.noreply.github.com> Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: omnimarket-bot <bot@omninode.ai>
…19c8c46c142b0de2__v1__run31297664660-1.yaml) (#6243) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2028/512b272bb26aba643093872519c8c46c142b0de2__v1__run31297664660-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31297664660-1 * evidence(OMN-15722): OCC companion for #6173 (#6174) * evidence: OCC companion pass 1 for #6173 * evidence: OCC companion self-bind for #6174 * fix(OMN-15722): format OCC autobind contract --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml) (#6149) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31061495853-1 * evidence(OMN-14888): self-bind OCC observation PR 6149 * evidence(OMN-14888): make OCC self-bind 6149 append-stable * fix(OMN-14888): repair PR #6149 self-bind to append-only-stable predicate The occ-self-bind-pr-6149 dod_evidence entry asserted .state == "open", which goes false the instant this PR merges — a self-bind that breaks append-only immutability on merge. Rebind to immutable facts (PR number, base repo, head branch) with state accepted as open OR closed+merged, keeping the check falsifiable for a wrong PR number/branch. * fix(OMN-14888): supersede stale occ-self-bind-pr-6134 open-state assertion PR #6134 merged (2026-08-09T03:14:53Z, merge commit ea53c31...) while its merged dod_evidence entry occ-self-bind-pr-6134 still asserts .state == "open" -- the same class OMN-15374's occ-self-bind-pr-5855-superseded fixed (OCC #6084 precedent). Append a net-new superseding entry bound to the merged-terminal state; the original entry stays untouched (append-only). --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15763): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2028 (#6242) * evidence(OMN-15763): author OCC companion for OmniNode-ai/omnimarket#2028 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 512b272bb26aba643093872519c8c46c142b0de2. * evidence(OMN-15763): self-bind OCC#6242 + rebind contract_sha256 * fix(OMN-15763): backfill missing dod-occ-evidence-admissibility-validator contract entry The OCC Companion Author automation emitted this receipt on PR #2028's companion (dod-occ-evidence-admissibility-validator, node_pr_lifecycle_fix_effect self-check) without adding the matching dod_evidence contract entry, tripping the receipt-hardening append-only gate. Backfills the entry (source: generated, matching the shape of the other autobind entries) and computes the real contract_entry_sha256 via compute_contract_entry_sha256 (was a "PENDING" placeholder) — verified locally against scripts/validation/check_receipt_hardening.py. OMN-15763 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml) (#6138) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2023/cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31057101391-1 * evidence(OMN-14888): self-bind OCC observation PR 6138 * evidence(OMN-14888): make OCC self-bind 6138 append-stable * fix(OMN-14888): regenerate occ-self-bind-pr-6138 receipt for self-bind fix The self-bind entry's check_value was rewritten to bind to immutable facts (PR#/head ref/base repo, state open OR closed+merged) so the assertion survives merge, matching the #6132/#6144 precedent. This changes contract_entry_sha256, so the receipt is regenerated with the recomputed hash and a fresh live probe readback. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml) (#6152) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2024/38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31062523818-1 * evidence(OMN-14888): self-bind OCC observation PR 6152 * evidence(OMN-14888): make OCC self-bind 6152 append-stable --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml) (#6164) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2025/d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31142195987-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15757, OMN-15778): OCC companion for OmniNode-ai/omninode_infra#833 (#6246) * evidence: OCC companion pass 1 for OmniNode-ai/omninode_infra#833 * evidence: OCC companion self-bind for #6246 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> * evidence(OMN-15336): bind infra PR 2676 vendor migration (#6167) * evidence(OMN-15336): bind infra PR 2676 vendor migration * evidence(OMN-15336): self-bind OCC PR 6167 * evidence(OMN-15336): refresh registry RLS heads * fix(OMN-15336): supersede market PR 2021 evidence append-only * evidence(OMN-15336): rebind infra PR 2676 current head * chore(OMN-15336): retrigger OCC gates * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2029 (#6247) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2029 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5. * evidence(OMN-15777): self-bind OCC#6247 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2030 (#6248) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2030 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 271a7abe276bc6a5663599a6e7736c8faab843f7. * evidence(OMN-15777): self-bind OCC#6248 + rebind contract_sha256 * fix(OMN-15777): revert unintended mutation of merged receipt (append-only repair) The occ-evidence-source-autobind commit for PR #2030 (57e1628) rebound drift/dod_receipts/OMN-15777/dod-occ-evidence-admissibility-validator/command.yaml in place -- but that receipt already merged as part of OCC#6247 (PR #2029's companion) and is immutable per the append-only doctrine. PR #2030 already carries its own dedicated, net-new evidence entries (dod-OmniNode-ai-omnimarket-pr-2030, dod-OmniNode-ai-omnimarket-pr-2030-ci, occ-self-bind-pr-6248) that bind it to commit 271a7abe; the shared validator receipt did not need to be re-pointed at PR #2030 to satisfy that binding. Reverts the file to its merged-on-dev content. No supersession file is needed -- this is not a correction to the receipt's claim (still true and still bound to PR #2029/commit f9cc9dcc), it is an unforced touch that should never have modified it. Implements OMN-15777 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15780): OCC Evidence-Source autobind for OmniNode-ai/omninode_infra#834 (#6250) * evidence(OMN-15780): author OCC companion for OmniNode-ai/omninode_infra#834 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 1fdeb0c9c9367d70e43ef88b128203cf567c4aed. * evidence(OMN-15780): self-bind OCC#6250 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-14888): OCC observation append (023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml) (#6155) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31063872175-1 * evidence(OMN-14888): self-bind OCC observation PR 6155 * evidence(OMN-14888): make OCC self-bind 6155 append-stable * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5__v1__run31303503673-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31303503673-1 * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/c11400fe9483b9face2601c391f0a73add5d52cf__v1__run31304580306-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31304580306-1 * fix(OMN-14888): repair occ-self-bind-pr-6155 receipt after dev-merge Conflict resolution against dev landing on PR #6155 rewrote the occ-self-bind-pr-6155 dod_evidence entry's check_value to accept the terminal closed+merged PR state (matching the occ-self-bind-pr-6134 / occ-self-bind-pr-6149 established pattern) instead of a bare .state == "open" assertion that would fail closed the moment this PR merges. That byte change moved the per-entry contract hash, so the paired receipt is regenerated here with the recomputed contract_entry_sha256 and a fresh live probe_stdout. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml) (#6237) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31291311120-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (2cea83b3d664a5a3a919d4e14994a03a479ac90f__v1__run31292255084-1.yaml) (#6240) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/2cea83b3d664a5a3a919d4e14994a03a479ac90f__v1__run31292255084-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31292255084-1 * evidence(OMN-15763): OCC companion for omnimarket PR #2027 (#6239) * evidence(OMN-15763): OCC companion for omnimarket PR #2027 Falsifiable deploy-gate evidence (OMN-14505 sense) for the seam registry + canonical seam-projection serialization PR: three live GitHub-content probes against the PR head commit (canonical.py's canonical_sha256, node_seam_match_compute's HandlerSeamMatch, and seams.v1.yaml's schema_version header), plus the standard self-bind check. All three probes verified locally against the PR head SHA 6bbd87de3c0173956969f5a0b159c8631e4b929e before committing. Rebuilt on origin/dev (onex_change_control's live default branch — main now accepts only promotion/hotfix PRs, discovered live via main-target-guard on the first attempt against main). Net-new-file-only. OMN-15763 * fix(OMN-15763): buffer check_value producers to avoid Rule E SIGPIPE false-RED OMN-15411 Rule E (contract corpus ratchet) caught 3 new sigpipe-fragile instances: gh api <contents> --jq .content | base64 -d | grep -q ... is a measured SIGPIPE-fragile shape (141/0/141/0/141 across 5 runs against real inputs) — grep -q exits at the first match and closes its stdin, base64 -d is killed by SIGPIPE, and dod_verify's bash -o pipefail turns that 141 into a false RED on evidence that is actually present. Rewrote all three live-content probes to the buffered-read form: body="$(<producer>)" && printf '%s' "$body" | grep -qF 'MARKER'. Verified locally: sigpipe_fragile_violation() returns None for all three (was non-None before), all three still execute correctly under bash -o pipefail -c against the live GitHub API, and validate_pr_deploy_required.has_deploy_evidence() still returns True (the buffered form still classifies as a falsifiable live-surface probe). Also re-pinned all three refs to the omnimarket PR's final head commit f1741be0163ab757738bb9ddbf7d2d67aca6aa49 (was 6bbd87de, superseded by the CodeRabbit-fix commit). OMN-15763 * evidence(OMN-15763): PASS receipts for all four dod_evidence items occ-preflight/verify hard-required receipts under drift/dod_receipts/OMN-15763/<item_id>/command.yaml for every item -- an OCC PR's in-tree contract carries its own receipts (the "in-repo trap"). All four probes run for real against the omnimarket PR #2027 head commit f1741be0163ab757738bb9ddbf7d2d67aca6aa49 and this OCC PR's own state (#6239). contract_sha256 + contract_entry_sha256 computed via omnibase_core.validation.validator_receipt_gate against the landed contract (commit 5f647f0). Verified locally end-to-end: uv run python -m omnibase_core.validation.validator_occ_merge_eligibility against this tree returns eligible=true, reason=eligible, zero missing_or_nonpass_receipts. probe_stdout required a non-empty value (ModelDodReceipt: "receipts with empty stdout are indistinguishable from probes that never ran") -- the contract's check_value stays the buffered grep -qF form (Rule E safe, quiet by design), while each receipt's own probe_command is the non-quiet grep -F variant that captures the actual matched line as real evidence. OMN-15763 * evidence(OMN-14888): OCC observation append (b8a1eb65a20f32e0e00efd473aaf7b69f3cad6f9__v1__run31058937953-1.yaml) (#6144) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/b8a1eb65a20f32e0e00efd473aaf7b69f3cad6f9__v1__run31058937953-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31058937953-1 * evidence(OMN-14888): self-bind OCC observation PR 6144 * evidence(OMN-14888): make OCC self-bind 6144 append-stable * fix(OMN-14888): repair self-bind assertion in occ-self-bind-pr-6144 Rewrite the dod_evidence check to bind PR #6144 to immutable facts (PR number, base repo, exact head ref) and accept state open OR closed+merged, so the check stays true after this PR merges instead of asserting .state == "open" forever. * fix(OMN-14888): regenerate occ-self-bind-pr-6144 receipt for repaired check_value Bind contract_entry_sha256 to the updated dod_evidence entry hash so the OCC merge-eligibility gate's per-entry binding check passes. * fix(OMN-14888): supersede occ-self-bind-pr-6134 with merged-terminal-state binding PR #6134 merged to dev (2026-08-09T03:14:53Z, ea53c31) while this PR was in flight. Its self-bind entry asserts .state == "open" forever, which now fails closed. Append-only supersession per the occ-self-bind-pr-5855-superseded / occ-self-bind-pr-6149-superseded precedent — bind to the merged-terminal state instead; the superseded entry stays verbatim for audit. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (7bd1c1a9c39823834fe4e38dabc785887ecf524c__v1__run31054912492-1.yaml) (#6132) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2021/7bd1c1a9c39823834fe4e38dabc785887ecf524c__v1__run31054912492-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31054912492-1 * evidence(OMN-14888): self-bind OCC observation PR 6132 * evidence(OMN-14888): make OCC self-bind 6132 append-stable * fix(OMN-14888): regenerate occ-self-bind-pr-6132 receipt for entry-hash match The contract entry's check_value was rewritten to accept open OR closed+merged terminal state (self-bind fix), which changed its recomputed contract_entry_sha256. Regenerated the receipt with a fresh live probe against PR #6132 and the matching entry hash so occ-preflight eligibility passes instead of failing on contract_hash_mismatch. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * fix(OMN-15722): raise starved guard-job timeout budgets in OCC ci.yml (#6173) * fix(OMN-15722): raise starved guard-job timeout budgets in OCC ci.yml Five guard jobs carry timeout-minutes budgets below the observed latency of the self-hosted omnibase-ci runner fleet under concurrent load. When a job hits its own timeout wall GitHub records conclusion=cancelled, and CI Summary (the sole required umbrella context on onex_change_control dev) compares each needs.<job>.result against "success" fail-closed - so a guard that passed gets scored as a violation and turns the required context red. Raise the three 5-minute guards and the two 10-minute jobs to 20 minutes: - validate-prod-promotion-grants 5 -> 20 - check-platform-leads-review-tripwire 5 -> 20 - check-bot-authored-authz-guard 5 -> 20 - predicate-parity 10 -> 20 - no-noncanonical-lifecycle-classes 10 -> 20 Not a gate weakening: every guard still runs, still must reach conclusion=success, and CI Summary's fail-closed != "success" comparison is untouched. Only the wall-clock budget moved. Evidence-Ticket: OMN-15722 * evidence(OMN-15722): add OCC ticket contract + PASS receipts for guard timeout fix The first push carried no contracts/OMN-15722.yaml, so both of the two content-gating required contexts on this PR failed with the same single root cause: validator_occ_merge_eligibility reported reason=missing_contract / missing_contracts=["OMN-15722"] on `occ-preflight / eligibility` (job 93010633789) and on `verify / verify` step 21 "Run OCC Eligibility" (job 93010633875). Note step 7 "Resolve Evidence-Source" was SKIPPED in that same job, confirming the in-repo Evidence-Source exemption - the missing contract was the only blocker. Contract declares three dod_evidence items, all probed live and receipted with real command output (no fabricated receipts): dod-occ-guard-timeout-budgets-raised - substantive (L1): parses ci.yml and asserts all five named guard jobs declare timeout-minutes 20. dod-occ-guards-still-fail-closed - substantive (L1): asserts all five guards remain in ci-summary's needs list, carry no continue-on-error, still have their literal fail-closed `result }}" != "success"` comparison in ci.yml, and that ci.yml still declares no top-level concurrency block. Falsifiability proven by negative control - rewriting the predicate-parity comparison to an equality form makes the same probe exit 1 with unguarded=['predicate-parity']. occ-self-bind-pr-6173 - binding stamp only (L0), companion PR identity for receipt-gate binding. Local verification: all three probes exit 0 / stdout "true"; the eligibility validator now returns eligible=true reason=eligible ("OCC evidence is present, PASS, hash-bound, and PR-bound") with all three receipt ids resolved. Full pre-commit over contract + receipts + ci.yml passes, including Receipt Honesty Gate, Receipt Hardening Gate, Contract Substance Floor, DoD-authoring hygiene, Canonical contract shape v1, and the Evidence-Commit SHA Existence Gate. Evidence-Ticket: OMN-15722 * evidence(OMN-15722): remove false no_source_change attestation from receipts All three OMN-15722 receipts asserted no_source_change: true. Per omnibase_core model_dod_receipt.py that field is RUNTIME_OPS-only and asserts the change produced NO repo diff and NO PR. This change has a 5-line ci.yml diff and IS PR #6173, so the assertion was materially false. These receipts carry evidence_class: None and pr_number: 6173, so the field does not apply to them at all -- removed rather than set to false. Its default is False, which is the truthful value. All three re-validate against ModelDodReceipt with no_source_change=False. Note: the model validator enforces only the RUNTIME_OPS -> True direction, not the inverse, so a non-RUNTIME_OPS receipt asserting no_source_change: true alongside a pr_number validates cleanly and no CI gate would have caught this. Model gap, flagged not fixed here. * fix(OMN-15722): widen validate-prod-promotion-grants budget to 45m (19m02s measured) The 20m budget left that job ~58s of headroom against its measured 19m02s runtime on PR #6173 run 31222755192 — a re-starve one contention spike away, which is the exact defect this PR exists to remove. Profile of the 19m02s (steps API, head 2df62fc): Checkout code 11m48s Run ./.github/actions/setup-uv 5m30s Validate prod-promotion-grants trust anchor 2s The work is 2 seconds; the runtime is fleet latency. Within that one run, Checkout code for the same repo/SHA ranged 74s (omninode-runner-63) to 708s (omninode-runner-21) — a ~9.6x contention spread — so the budget must cover the latency tail, not the job's work. 45m is ~2.4x the worst observation. Other four guards unchanged at 20. Contract probe updated from a flat ==20 assertion to a per-job expected-budget map so it stays falsifiable, and the contract summary corrected (it claimed all five go to 20). * evidence(OMN-15722): re-stamp all three receipts at head d772fb8 The prior stamps carried run_timestamp 2026-08-07T22:29:26Z / commit_sha 2df62fc, which predated both the 45m widening and the contract edit — the receipts attested a tree that no longer existed. All three probes were re-run against the working tree at d772fb8; none of these values is carried over: dod-occ-guard-timeout-budgets-raised exit 0, stdout 'true' dod-occ-guards-still-fail-closed exit 0, stdout 'true' occ-self-bind-pr-6173 exit 0, stdout 'true' Receipt 1's probe changed with the contract: a flat 'all five == 20' assertion would now fail, so it became a per-job expected-budget map (45/20/20/20/20). Its contract_entry_sha256 is recomputed to sha256:4c1ae3b62a7def4f0ca209d9921d974c6c74a4927cb8dc5fa3d4e32a99adeec8; entries 2 and 3 are parse-identical so their hashes are unchanged. Both substantive probes re-verified falsifiable at this head by negative control — reverting 45->20 exits 1 with [('validate-prod-promotion-grants', 20, 45)], and flipping the predicate-parity comparison to == exits 1 with unguarded=['predicate-parity']. * fix(OMN-15722): uniform 45m timeout floor across all 10 budgeted ci-summary needs members contract-shape-v1 (budget 25) was cancelled at 25m50s on this PR's own run 31222755192, cancelled step Checkout code (1358s) - the same starvation the five already-raised guards hit. Inside that one run, for the same repo and SHA, checkout ranged 6s-1358s and setup-uv 93s-571s, so the runner preamble alone has been observed above 30m and every per-job budget under that is provably insufficient. Sets 45 uniformly across all ten ci-summary needs members that declare a timeout-minutes. Also corrects the inline fleet-size comment: live gh api orgs/OmniNode-ai/actions/runners reports 64 runners labelled omnibase-ci, not 48. * evidence(OMN-15722): re-stamp all three receipts at the uniform-45m head * docs(OMN-15722): tighten the latency claim to single-phase observations The prior wording said the runner preamble had been observed above 30m; that number was a cross-job sum of the worst checkout (1358s, contract-shape-v1) and the worst setup-uv (571s, a different job), not a single observed preamble. Replaced with the two exact single-phase observations plus the worst own-work step among the ten budgeted gates (53s). No budget changes. * evidence(OMN-15722): re-stamp all three receipts at 63be7d6 * evidence(OMN-15722): admissible self-bind supersedes gh-pr-view INERT check occ-self-bind-pr-6173 uses `gh pr view`, which lexes to bare `gh` in command position (not `gh api`) and is INADMISSIBLE (NOT_EXECUTED) under the OMN-15309 evidence_admissibility predicate. Contract Compliance Check on this PR's own run (31228584791, job 93027660648) collapsed the whole dod_evidence supersession chain to 0/3 PASS -> BLOCK, reddening the required check. Append-only fix: occ-self-bind-pr-6173-admissible supersedes it with `gh api repos/OWNER/REPO/pulls/6173/files` asserting the changed-file count (5), with printed stdout so the run is distinguishable from a probe that never executed (Receipt Hardening Gate, OMN-13060/OMN-15710). Verified ADMISSIBLE by direct execution of classify_evidence over the exact check_value, and the check itself run green (count=5) and red (count=4, exit 1) before being recorded. Nothing above the new entries in contracts/OMN-15722.yaml is edited; every prior dod_evidence item keeps its bytes and OMN-13888 per-entry hash. Local run of scripts/ci/run_contract_compliance_check.py against this head confirms PASS (1/4 PASS, 3 WARN, 0 BLOCK). * evidence(OMN-15722): correct stale self-bind file-count assertion (5 -> 7) occ-self-bind-pr-6173-admissible asserted PR #6173's changed-file count == 5, but adding its own receipt file to the diff made the live count 6 the moment it was committed -- confirmed red on Contract Compliance Check (job 93048702548, run 31236076328): live count=6, assertion expected 5, exit 1. Appends occ-self-bind-pr-6173-admissible-v2, a self-inclusive correction: its own receipt file is the 7th changed path, so it asserts count == 7, the number that includes the file recording its own PASS. * evidence(OMN-15722): OCC companion for #6173 (#6174) * evidence: OCC companion pass 1 for #6173 * evidence: OCC companion self-bind for #6174 * fix(OMN-15722): format OCC autobind contract --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml) (#6149) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/d72b0c37559ddb1bad988e5a0f0a4c6011f0eb85__v1__run31061495853-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31061495853-1 * evidence(OMN-14888): self-bind OCC observation PR 6149 * evidence(OMN-14888): make OCC self-bind 6149 append-stable * fix(OMN-14888): repair PR #6149 self-bind to append-only-stable predicate The occ-self-bind-pr-6149 dod_evidence entry asserted .state == "open", which goes false the instant this PR merges — a self-bind that breaks append-only immutability on merge. Rebind to immutable facts (PR number, base repo, head branch) with state accepted as open OR closed+merged, keeping the check falsifiable for a wrong PR number/branch. * fix(OMN-14888): supersede stale occ-self-bind-pr-6134 open-state assertion PR #6134 merged (2026-08-09T03:14:53Z, merge commit ea53c31...) while its merged dod_evidence entry occ-self-bind-pr-6134 still asserts .state == "open" -- the same class OMN-15374's occ-self-bind-pr-5855-superseded fixed (OCC #6084 precedent). Append a net-new superseding entry bound to the merged-terminal state; the original entry stays untouched (append-only). --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15763): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2028 (#6242) * evidence(OMN-15763): author OCC companion for OmniNode-ai/omnimarket#2028 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 512b272bb26aba643093872519c8c46c142b0de2. * evidence(OMN-15763): self-bind OCC#6242 + rebind contract_sha256 * fix(OMN-15763): backfill missing dod-occ-evidence-admissibility-validator contract entry The OCC Companion Author automation emitted this receipt on PR #2028's companion (dod-occ-evidence-admissibility-validator, node_pr_lifecycle_fix_effect self-check) without adding the matching dod_evidence contract entry, tripping the receipt-hardening append-only gate. Backfills the entry (source: generated, matching the shape of the other autobind entries) and computes the real contract_entry_sha256 via compute_contract_entry_sha256 (was a "PENDING" placeholder) — verified locally against scripts/validation/check_receipt_hardening.py. OMN-15763 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml) (#6138) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2023/cf77a700703ded2f8c99eacfb7695bdd767f772f__v1__run31057101391-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31057101391-1 * evidence(OMN-14888): self-bind OCC observation PR 6138 * evidence(OMN-14888): make OCC self-bind 6138 append-stable * fix(OMN-14888): regenerate occ-self-bind-pr-6138 receipt for self-bind fix The self-bind entry's check_value was rewritten to bind to immutable facts (PR#/head ref/base repo, state open OR closed+merged) so the assertion survives merge, matching the #6132/#6144 precedent. This changes contract_entry_sha256, so the receipt is regenerated with the recomputed hash and a fresh live probe readback. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml) (#6152) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2024/38d1a7242b189f4d2a4b20e5324ce8f3f13f3be8__v1__run31062523818-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31062523818-1 * evidence(OMN-14888): self-bind OCC observation PR 6152 * evidence(OMN-14888): make OCC self-bind 6152 append-stable --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml) (#6164) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2025/d0a4ff2ed7aa85267dd8b9013cf8a0782418d951__v1__run31142195987-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31142195987-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15757, OMN-15778): OCC companion for OmniNode-ai/omninode_infra#833 (#6246) * evidence: OCC companion pass 1 for OmniNode-ai/omninode_infra#833 * evidence: OCC companion self-bind for #6246 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> * evidence(OMN-15336): bind infra PR 2676 vendor migration (#6167) * evidence(OMN-15336): bind infra PR 2676 vendor migration * evidence(OMN-15336): self-bind OCC PR 6167 * evidence(OMN-15336): refresh registry RLS heads * fix(OMN-15336): supersede market PR 2021 evidence append-only * evidence(OMN-15336): rebind infra PR 2676 current head * chore(OMN-15336): retrigger OCC gates * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2029 (#6247) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2029 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5. * evidence(OMN-15777): self-bind OCC#6247 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-15777): OCC Evidence-Source autobind for OmniNode-ai/omnimarket#2030 (#6248) * evidence(OMN-15777): author OCC companion for OmniNode-ai/omnimarket#2030 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 271a7abe276bc6a5663599a6e7736c8faab843f7. * evidence(OMN-15777): self-bind OCC#6248 + rebind contract_sha256 * fix(OMN-15777): revert unintended mutation of merged receipt (append-only repair) The occ-evidence-source-autobind commit for PR #2030 (57e1628) rebound drift/dod_receipts/OMN-15777/dod-occ-evidence-admissibility-validator/command.yaml in place -- but that receipt already merged as part of OCC#6247 (PR #2029's companion) and is immutable per the append-only doctrine. PR #2030 already carries its own dedicated, net-new evidence entries (dod-OmniNode-ai-omnimarket-pr-2030, dod-OmniNode-ai-omnimarket-pr-2030-ci, occ-self-bind-pr-6248) that bind it to commit 271a7abe; the shared validator receipt did not need to be re-pointed at PR #2030 to satisfy that binding. Reverts the file to its merged-on-dev content. No supersession file is needed -- this is not a correction to the receipt's claim (still true and still bound to PR #2029/commit f9cc9dcc), it is an unforced touch that should never have modified it. Implements OMN-15777 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-15780): OCC Evidence-Source autobind for OmniNode-ai/omninode_infra#834 (#6250) * evidence(OMN-15780): author OCC companion for OmniNode-ai/omninode_infra#834 OCC companion by node_pr_lifecycle_fix_effect (OMN-13317 F1 / OMN-13990 / OMN-14285). Product PR head 1fdeb0c9c9367d70e43ef88b128203cf567c4aed. * evidence(OMN-15780): self-bind OCC#6250 + rebind contract_sha256 --------- Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-14888): OCC observation append (023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml) (#6155) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2022/023992b513456767c2ee39ad35703246bca5d83e__v1__run31063872175-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31063872175-1 * evidence(OMN-14888): self-bind OCC observation PR 6155 * evidence(OMN-14888): make OCC self-bind 6155 append-stable * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/f9cc9dcc1eddb67bb5acba9247677b1ab3f3e9f5__v1__run31303503673-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31303503673-1 * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2029/c11400fe9483b9face2601c391f0a73add5d52cf__v1__run31304580306-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31304580306-1 * fix(OMN-14888): repair occ-self-bind-pr-6155 receipt after dev-merge Conflict resolution against dev landing on PR #6155 rewrote the occ-self-bind-pr-6155 dod_evidence entry's check_value to accept the terminal closed+merged PR state (matching the occ-self-bind-pr-6134 / occ-self-bind-pr-6149 established pattern) instead of a bare .state == "open" assertion that would fail closed the moment this PR merges. That byte change moved the per-entry contract hash, so the paired receipt is regenerated here with the recomputed contract_entry_sha256 and a fresh live probe_stdout. --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> * evidence(OMN-14888): OCC observation append (6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml) (#6237) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/6bbd87de3c0173956969f5a0b159c8631e4b929e__v1__run31291311120-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31291311120-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> Co-authored-by: onexbot-occ-writer[bot] <307849072+onexbot-occ-writer[bot]@users.noreply.github.com> Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: omnimarket-bot <bot@omninode.ai> * evidence(OMN-14888): OCC observation append (f1741be0163ab757738bb9ddbf7d2d67aca6aa49__v1__run31293106241-1.yaml) (#6241) * evidence(OMN-14888): OCC observation append drift/occ_observations/OmniNode-ai__omnimarket/pr-2027/f1741be0163ab757738bb9ddbf7d2d67aca6aa49__v1__run31293106241-1.yaml * evidence(OMN-14888): OCC observation self-bind occ-observation-run31293106241-1 --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> --------- Co-authored-by: node-occ-observation-effect <occ-observation-effect@omninode.ai> Co-authored-by: onexbot-occ-writer[bot] <307849072+onexbot-occ-writer[bot]@users.noreply.github.com> Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai> Co-authored-by: Jonah Gray <jonah@omninode.ai> Co-authored-by: omnimarket-bot <bot@omninode.ai>
Root cause
A job that hits its
timeout-minuteswall is recordedconclusion=cancelled, notfailure. OCC's sole required umbrella contextCI Summaryis a fail-closedneeds:aggregator that compares each member's result against"success", so a guard that passed on its merits and simply ran past a too-small budget reddens the one required context. On this PR's run31222755192, inside that single run and for the same repo and SHA,Checkout coderanged 6s to 1358s (22m38s) andsetup-uvranged 93s to 571s (9m31s) across the jobs that reached it, while the ten budgeted gates' own steps took at most 53s. Checkout alone has been observed at 22m38s, so every dev budget (5, 10, 20, 25) sat below an already-observed single-phase latency, and a budget sized to a job's own worst total is the same defect one contention spike later. This PR therefore sets a uniform 45m floor rather than bespoke per-job numbers.What changed
timeout-minutesonly, on everyci-summaryneeds:member that declares one (ten of them; the other eighteen declare none).origin/devvalue → new value:no-noncanonical-lifecycle-classes: 10 → 45validate-prod-promotion-grants: 5 → 45check-platform-leads-review-tripwire: 5 → 45check-bot-authored-authz-guard: 5 → 45precommit-parity-gate: 10 → 45predicate-parity: 10 → 45contract-corpus-ratchets: 20 → 45yamlfmt-contamination-ratchet: 20 → 45supersession-binding-ratchet: 20 → 45contract-shape-v1: 25 → 45One inline comment on
validate-prod-promotion-grantsis rewritten to carry the rationale; it also corrects a false figure —gh api orgs/OmniNode-ai/actions/runnersreports 64 runners labelledomnibase-ci, not the 48 the old comment claimed.contract-shape-v1was added in the latest revision: it was cancelled at 25m50s on this PR's own run31222755192with the cancelled step beingCheckout code, the identical cause, and earlier revisions of this PR missed it.Self-test
pull_requestworkflows evaluate from the PR's own merge ref, so this PR's runs execute the raised budgets and demonstrate the fix on themselves.Not a gate weakening
Every job still runs and still must reach
conclusion=success; none gainedcontinue-on-error; andci-summary's job block — itsneeds:list and its fail-closed!= "success"comparisons — is byte-identical toorigin/dev(133 lines, sha25626e130ba973ebcc0e34c4193cdec09b3a60510b4d0d84d185a0cd3c2223c93a1on both sides). A larger budget changes only how long a guard may take before being killed.PRs this unblocks
#6122, #6144, #6149, #6155, #6161
Scope disclosure
The
ci.ymlchange alone was un-mergeable: run 1 at head2df62fc62failedocc-preflight / eligibilitywith reasonmissing_contractfor OMN-15722. This PR therefore also carriescontracts/OMN-15722.yamland three PASS receipts underdrift/dod_receipts/OMN-15722/. That is scope beyond the timeout bump, present out of necessity.Durable fix, out of scope here
The gates themselves are fast — at most 53s of own-work on run 31222755192; the cost is the preamble —
actions/checkoutatfetch-depth: 0plussetup-uvprovisioning. Reducing that is the durable fix; it is not attempted here and belongs in its own ticket.Evidence-Ticket: OMN-15722
Evidence-Source: OCC#6174
Summary by CodeRabbit
Improvements
Documentation