Repository navigation
docs(OMN-16606): migrate omnibase_core documentation to the knowledge base and flip the doc gate to strict - #1644
Merged
Conversation
… base and flip the doc gate to strict Wave-4 of the org-wide documentation consolidation (epic OMN-16602). This repo carried 199 markdown files outside the kb-doc-gate allowed set on dev; it now carries zero, and .kb-doc-gate.yaml is mode: strict so it stays that way. Disposition of all 199: - 113 -> public knowledge base (knowledge-base#70): 40 architecture records, 53 guides, 20 reference pages -- platform architecture, the node-building and mixin-development tutorial series, node templates, conventions, and the generated api/ surface. - 37 -> internal knowledge base (knowledge-base-internal#91): per-repo architecture handshakes, the in-flight mixin/handler/protocol migration guides, repo tooling and CI-operations docs, and the eight validator generation-provenance records. - 47 deleted: 23 pointer stubs left by earlier waves (a stub is not a removal), 4 dated audit/evidence records, 5 .onex_state working artifacts, 6 section index READMEs, docs/INDEX.md, a self-declared HISTORICAL deprecation note, an explicitly-not-implemented CI proposal, and near-empty directory notes. - 2 moved: CONTRIBUTING.md and CODE_OF_CONDUCT.md to .github/, where GitHub also reads them and where the gate's allowed set covers them. References fixed in the same change: - README.md gains a Documentation section naming the knowledge base as the single home; its entrypoint links resolve there. - CLAUDE.md's doc map and inline "See" links repointed; the migration-guide row names the internal KB rather than linking it (that repo is private). - .github/CONTRIBUTING.md, SECURITY.md and CHANGELOG.md links repointed -- onex-validate-links passes (9 files, 53 links, 0 broken). - .github/CODEOWNERS, .github/workflows/ci.yml (including the line echoed into the job summary), .pre-commit-config.yaml, .importlinter, mypy.ini, architecture-handshakes/check-policy-gate.sh and architecture-handshakes/validator-requirements-baseline.yaml repointed. - The eight generated validators' docstrings cite the provenance record in the knowledge base instead of a GENERATION_PROVENANCE.md that no longer ships beside them. - .secrets.baseline pruned of 7 entries for files that no longer exist. Three local gates were narrowed rather than bypassed, each because the deletion exposed a matcher that was too broad: - validate-no-empty-directories: a directory that groups sub-collections and holds no direct files is not incomplete refactoring. docs/assets, docs/evidence and the two demo corpus trees were only non-violating because a signpost README sat in them. Excluded by name alongside the existing "src" and "drift" entries, which exist for exactly this reason. - no-untracked-todos and check-stub-implementations: the todo-marker validator's own source names TODO/FIXME/HACK as its subject and already carries this repo's file-level escape hatch (onex-allow-file-todo-marker, OMN-13480), which neither hook reads. Both hooks now skip that one package. This change is the first to touch those files since the hooks were added, which is why the conflict surfaces here. - yamlfmt no longer rewrites .kb-doc-gate.yaml: the gate reads it with a deliberately stdlib-only parser accepting a restricted YAML subset, and this repo's yamlfmt sets include_document_start, whose "---" is outside that subset. Hardening the gate's parser upstream in omniclaude is the durable fix and is a follow-up; every other repo flipping to strict will hit this. Packaged source changed, so the release-identity gate (OMN-13411) requires a version move: 0.47.2 -> 0.47.3, with a CHANGELOG entry. No public API change. Deliberately out of scope: prose "See docs/..." mentions inside Python docstrings across src/, tests/ and scripts/. Repointing them would touch ~155 source files for no functional gain and would balloon the review and CI surface of a documentation migration. Nothing validates those strings; tracked as a follow-up on OMN-16606.
…ontract The doc-scrub repointed one dead link inside the core-infra-boundary job in .github/workflows/ci.yml: the GITHUB_STEP_SUMMARY echo that named docs/decisions/ADR-005-core-infra-dependency-boundary.md now names the knowledge-base architecture page instead. That file is deleted by this branch, so the old line was a link to nothing. AUDITED_GUARD_JOB_EXECUTION_CONTRACTS is a SHA-256 over the canonical JSON of each complete audited guard job, and the module states the update procedure: audit the readable workflow diff first, then re-pin. The readable diff for core-infra-boundary is exactly that one echo line. runs-on, if, continue-on-error, permissions, needs, strategy, container, timeout-minutes and the executed validation command are all unchanged, so the guard's execution surface is untouched and the digest bump records a documentation repoint, not a weakened gate. 403fa52e3d6f4b8954bc692c6ec40d133278cc00cc34807fa7552732866275ad -> a6fa1e4ffb7740fc365e526a88e488cccf2d1f08474c6e6b2f2cbe8bdb95f85d Found by the governed pre-push full-suite escalation for 4e116501 on lab host h101 (4h48m, 8 failed / 44640 passed). Five of those eight were this one digest, reported once directly and four more times through the parametrized cases that share the helper; tests/unit/validation/test_ci_workflow_shape.py is now 77/77. Ticket: OMN-16606
jonahgabriel
pushed a commit
to OmniNode-ai/onex_change_control
that referenced
this pull request
Sep 4, 2026
…#8186) * evidence: OCC companion pass 1 for OmniNode-ai/omnibase_core#1644 * evidence: OCC companion self-bind for #8186 --------- Co-authored-by: node-occ-companion-effect <occ-companion-effect@omninode.ai>
…k two gates the scrub exposed Three CI reds on #1644, all diagnosed from the job logs rather than waited out. Two were real defects; the third was a stale ordering artifact that needed no code. 1. `Check architecture handshake` — FAIL, exit 2, "Source handshake not found in omnibase_core: architecture-handshakes/repos/omnibase_core.md". The scrub deleted `architecture-handshakes/repos/*.md` as prose. They are not prose. `architecture-handshakes/check-handshake.sh` reads `source_sha256:` out of a repo's installed `.claude/architecture-handshake.md` and compares it to the sha256 of the matching file under `repos/`; a missing source is exit 2. Verified on this branch, not asserted: `.claude/architecture-handshake.md` carries `source_sha256: 3553cfd0922697c12358831f9ad7a2f0c032794772de0c2e88185b547c7fa52a` and `shasum -a 256 architecture-handshakes/repos/omnibase_core.md` returns exactly that. omnibase_core IS the fleet source of truth for these (its own `check-handshake.yml` says so), and omnibase_infra / omnibase_spi / omniclaude / omnimemory each check this repo out and run the same script against these paths — they survive today only because they pin an old core SHA, so the deletion would break each of them at its next repin. That is ruling (2) of the 2026-09-01 OMN-16602 comment verbatim: markdown a program loads as executable configuration stays. The 8 contracts are restored and `.kb-doc-gate.yaml` gains the one glob covering them, with the sha256 binding recorded in the config comment. The 301-line `architecture-handshakes/README.md` that accompanied them IS prose and stays deleted; `check-policy-gate.sh` was already repointed off it. 2. `Contract Compliance Check` — FAIL, exit 1, and it takes the required `CI Summary` down with it (a GATE_JOBS entry, "default-deny sweep failures: Contract Compliance Check"). Its "Classify dependency-bot workflow-only PR" step ran `gh pr diff <n> --name-only`. That verb fetches the whole unified diff and only then filters to names, so GitHub answered `HTTP 406: Sorry, the diff exceeded the maximum number of lines (20000)` / `PullRequest.diff too_large`. Nothing about this PR's CONTENT failed — its SIZE did, and the same red would land on any large PR in this repo. Replaced with the files API, which returns names without the diff body and paginates. Proven live on this very PR: the old verb still returns HTTP 406, `gh api repos/OmniNode-ai/omnibase_core/pulls/1644/files --paginate --jq '.[].filename'` returns all 230 filenames. The API caps at 3000 files, and truncation can only shrink the list — `workflow_only` requires ALL entries under `.github/workflows/` with `bool(files)` guarding empty — so a truncated or empty response leaves `exempt=false` and the full compliance check runs. Fail-closed in both directions. `tests/unit/validation/test_ci_workflow_shape.py` is 77/77 after the edit. 3. The kb-doc-gate pins had drifted, and adding (1)'s config entry exposed it. `.pre-commit-config.yaml` pinned omniclaude 82a3394c; the required `kb-doc-gate / kb-doc-gate` check resolves its validator at 3e6d14da. Those two parsers disagree on the config schema itself — 82a3394c reads `exemptions:` and exits 2 on `allowed:`, 3e6d14da reads `allowed:` and rejects `exemptions:` — so ANY per-repo entry is a guaranteed local-vs-CI disagreement, and their default sets differ besides (82a3394c allows `**/tests/**`, `**/rules/**`, `**/hooks/**` wholesale; 3e6d14da narrows to three `tests/**` subtrees). The strict end-state this PR establishes is defined by the stricter, CI-resolved one, so the local pin is advanced to match it. One line in each file, in one PR, per the gate's own doctrine. Not fixed here because there was nothing to fix: the 25 `occ-preflight / eligibility` reds, plus `Canonical Inference Gate`, `receipt-honesty` and `call-reject-skip-token / occ-preflight / eligibility`, are one defect and it is an ordering artifact. occ-preflight ran at 11:11:58Z and reported "PR body is missing required 'Evidence-Source:' line"; the occ-autobind bot stamped `Evidence-Source: OCC#8186` into the body seconds later. The three others self-report "occ-preflight result was failure; refusing to run <name>". The body carries the line now; this push re-runs them. Ticket: OMN-16606.
jonahgabriel
added a commit
that referenced
this pull request
Sep 5, 2026
…n the changelog (#1651) The v0.47.3 section listed only the documentation migration (#1644). Sixteen commits have landed on dev since the v0.47.2 tag, including the store-resolved credential carrier (#1648) that the omnibase_infra half of OMN-17556 pins 0.47.3 to resolve. Tagging the section as it stood would ship a wheel whose changelog does not describe it. No version change: pyproject already declares 0.47.3. Co-authored-by: jonahgabriel <jonah.neugass@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OMN-16606 — omnibase_core is README-only; the doc gate is now
strictWave 4 of the org-wide documentation consolidation (epic OMN-16602). This repo carries 199 markdown files outside the kb-doc-gate allowed set on
dev; after this PR it carries zero, and.kb-doc-gate.yamlismode: strictso it stays that way.The migrated content is already live in the knowledge bases — both KB PRs merged before this one, per the companions-merge-first rule:
knowledge-basec90fcdceknowledge-base-internal7cf4abb6So this PR deletes originals whose content is already published, not content that would be lost.
Disposition of all 199
api/surface. Public routing was applied only to self-hoster documentation carrying no internal topology, credentials, customer, or people content..onex_state/working artifacts, 6 section index READMEs,docs/INDEX.md, a self-declared HISTORICAL deprecation note, an explicitly-not-implemented CI proposal, and near-empty directory notes.CONTRIBUTING.mdandCODE_OF_CONDUCT.mdto.github/, where GitHub also reads them and where the gate's allowed set covers them.References fixed in the same change
README.mdgains a Documentation section naming the knowledge base as the single home (16 KB links).CLAUDE.md's doc map and inline links repointed..github/CONTRIBUTING.md,SECURITY.mdandCHANGELOG.mdlinks repointed —onex-validate-linkspasses (9 files, 53 links, 0 broken)..github/CODEOWNERS,.github/workflows/ci.yml,.pre-commit-config.yaml,.importlinter,mypy.ini,architecture-handshakes/check-policy-gate.shandarchitecture-handshakes/validator-requirements-baseline.yamlrepointed. The eight generated validators' docstrings cite the provenance record in the knowledge base..secrets.baselinepruned of the 7 entries whose files no longer exist.Three local gates narrowed, none bypassed
Each because the deletion exposed a matcher that was too broad, and each is documented in the commit body:
validate-no-empty-directories: a directory that groups sub-collections and holds no direct files is not incomplete refactoring.docs/assets,docs/evidenceand the two demo corpus trees were only non-violating because a signpost README sat in them. Excluded by name alongside the existingsrcanddriftentries, which exist for exactly this reason.no-untracked-todosandcheck-stub-implementations: the todo-marker validator's own source names TODO/FIXME/HACK as its subject and already carries this repo's file-level escape hatch (onex-allow-file-todo-marker, OMN-13480), which neither hook reads. Both hooks now skip that one package.yamlfmtno longer rewrites.kb-doc-gate.yaml: the gate reads it with a deliberately stdlib-only parser accepting a restricted YAML subset.No bypass flags of any kind were used: no
--no-verify, noPREPUSH_FULL_SUITE, noENABLE_SMART_TESTS=off, noPREPUSH_ALLOW_*, nocore.hooksPath, no pre-push override grant, no skip tokens, and no edit to the pre-push host table or any timeout budget.Second commit: the guard-job contract re-pin
tests/unit/validation/test_ci_workflow_shape.pypins a SHA-256 over the canonical JSON of every audited guard job. The doc repoint above changed oneGITHUB_STEP_SUMMARYecho insidecore-infra-boundary— it nameddocs/decisions/ADR-005-core-infra-dependency-boundary.md, a file this branch deletes, so the old line linked to nothing. The second commit re-pins that digest403fa52e->a6fa1e4fafter auditing the readable workflow diff, which is the procedure the module itself prescribes.runs-on,if,continue-on-error,permissions,needs,strategy,container,timeout-minutesand the executed validation command are all unchanged, so the digest records a documentation repoint, not a weakened gate. That module is 77 passed in 19.72s on the rebased head.Rebase onto current
dev, and what that fixedThis branch was cut at
d07d6c46and is rebased ontod191ffb2, which now carries three pre-push fixes that did not exist when it was first pushed:tests/scripts/test_prepush_hook_host_identity_guard.pyasserted an IDENTITY refusal and got a CAPACITY refusal on every lab host except this Mac. The first governed escalation for this branch's earlier head (h101, 4h48m04s) returned 8 failed / 44,640 passed / 59 skipped; three of those eight were exactly that test, in a file this branch does not touch. That class of false RED is gone fromdev.-n4,--timeout=60and--reruns=2across the dispatch seam. Previouslytests/pytest.inishadowed thepyprojectaddopts on argvtests/, so every off-box core escalation silently lost the reruns, and one of the three failures above died on the test's own 180s subprocess budget under a single-threaded run.h101/h105moved from one slot to two and thehcloudrow was added, so a core lane no longer serialises on one slot per host.One rebase conflict, in
.secrets.baseline, resolved by content rather than by side:devhad added threeHex High Entropy Stringentries fordocs/evidence/prepush-hcloud/hcloud-host-identity.receipt.json(a file this branch keeps — the scrub targets prose, not JSON evidence), while this branch had removed the whole surrounding docs block. Keeping the branch side wholesale would have dropped a live file's entries and madedetect-secrets-hookreport them as NEW. The resolution keeps that one block and drops the six for deleted files. Verified mechanically: every remaining baseline key resolves to a file ingit ls-files(0 stale), and the key delta againstorigin/devis exactly{docs/demo/BETA_DEMO_GUIDE.md, docs/guides/CONTRACT_PATCHING_GUIDE.md, docs/guides/PROTOCOL_UUID_MIGRATION.md, docs/guides/replay/REPLAY_SAFETY_INTEGRATION.md, docs/patterns/CONFIGURATION_MANAGEMENT.md, examples/contracts/SECURITY.md, scripts/validation/README.md}removed, nothing added.Third commit (
056550d3): what the scrub broke, and what it exposedThree CI reds on the first push, all diagnosed from job logs, none waited out.
Two were real defects the deletion caused or uncovered; one needed no code.
Check architecture handshake— a genuine over-deletion, now reverted.Exit 2,
Source handshake not found in omnibase_core: architecture-handshakes/repos/omnibase_core.md.architecture-handshakes/repos/*.mdare not prose:check-handshake.shreadssource_sha256:out of a repo's installed.claude/architecture-handshake.mdand compares it to the sha256 of the matching file under
repos/. Verified onthis branch rather than asserted —
.claude/architecture-handshake.mdcarriessource_sha256: 3553cfd0922697c12358831f9ad7a2f0c032794772de0c2e88185b547c7fa52aand
shasum -a 256 architecture-handshakes/repos/omnibase_core.mdreturnsexactly that digest;
bash architecture-handshakes/check-handshake.sh .nowreturns
OK: Handshake for 'omnibase_core' is current, rc=0. omnibase_core ISthe fleet source of truth for these, and omnibase_infra / omnibase_spi /
omniclaude / omnimemory each check this repo out and run the same script
against these paths — they survive today only because they pin an old core SHA,
so the deletion would have broken each at its next repin. That is ruling (2) of
the 2026-09-01 OMN-16602 comment verbatim: markdown a program loads as
executable configuration stays. The 8 contracts are restored and
.kb-doc-gate.yamlgains the one glob covering them, with the sha256 bindingrecorded in the config comment. The 301-line
architecture-handshakes/README.mdthat accompanied them IS prose and stays deleted.
Contract Compliance Check— a pre-existing CI defect this PR's sizeexposed, fixed. Exit 1, and it takes the required
CI Summarydown with it(
default-deny sweep failures: Contract Compliance Check). Its "Classifydependency-bot workflow-only PR" step ran
gh pr diff <n> --name-only, whichfetches the whole unified diff before filtering to names, so GitHub answered
HTTP 406: Sorry, the diff exceeded the maximum number of lines (20000)/PullRequest.diff too_large. Nothing about this PR's content failed — its sizedid, and the same red lands on any large PR in this repo. Replaced with the
files API, proven live on this very PR: the old verb still returns HTTP 406,
gh api repos/OmniNode-ai/omnibase_core/pulls/1644/files --paginate --jq '.[].filename'returns all 230 filenames. The API caps at 3000 files;truncation can only shrink the list,
workflow_onlyrequires ALL entries under.github/workflows/andbool(files)guards empty, so a truncated or emptyresponse leaves
exempt=falseand the full compliance check runs — fail-closedin both directions.
test_ci_workflow_shape.pyis 77/77 after the edit.The kb-doc-gate pins had drifted, and adding the config entry above exposed
it.
.pre-commit-config.yamlpinned omniclaude82a3394c; the requiredkb-doc-gate / kb-doc-gatecheck resolves its validator at3e6d14da. Thosetwo parsers disagree on the config schema itself —
82a3394creadsexemptions:and exits 2 onallowed:;3e6d14dareadsallowed:andrejects
exemptions:— so ANY per-repo entry is a guaranteed local-vs-CIdisagreement. Their default sets differ besides:
82a3394callows**/tests/**,**/rules/**,**/hooks/**,**/CONTRIBUTING.mdand**/CODE_OF_CONDUCT.mdanywhere, which3e6d14danarrows to the threetests/**/{fixtures,data,golden}/**subtrees and root-anchored.github/placement. The strict end state this PR establishes is defined by the stricter,
CI-resolved validator, so the local pin is advanced to match it — one line in
each file, in one PR, per the gate's own doctrine.
No code needed for the third red. The 25
occ-preflight / eligibilityfailures, plus
Canonical Inference Gate,receipt-honestyandcall-reject-skip-token / occ-preflight / eligibility, were one defect and anordering artifact: occ-preflight ran at 11:11:58Z reporting "PR body is missing
required 'Evidence-Source:' line", and the occ-autobind bot stamped
Evidence-Source: OCC#8186into the body seconds later. The other threeself-report
occ-preflight result was failure; refusing to run <name>. All fourare green on the current head.
Governed pre-push: three attempts, one red, and it was the machine not the code
Attempt 1 (head
d839c27c), h105 slot 1, ratio 0.179:44683 passed, 59 skipped, 3 xpassed in 5698.79s (1:34:58),REMOTE_WRAPPER_EXIT=0.Attempt 2 (head
056550d3) found no fit lab slot at pick time and ran theescalation LOCALLY on the 24-core h200 while peer lanes held load1 at 42–86.
It went RED:
8 failed, 44711 passed, 53 skipped, 3 xpassed in 15141.01s (4:12:21). All 8 are wall-clock assertions in files this branch does nottouch — six
test_parity_replay.py::test_exit_reasons_are_distinguished[...]subprocess cases hitting
Failed: Timeout (>60.0s) from pytest-timeout,test_registry_hook_performance.py::test_execution_scales_linearly("500/100 ratio 22.3 suggests non-linear scaling"), and
test_antipattern_checker.py::test_runs_in_under_five_seconds("Checker took5.8s (limit: 5s)"). Proven artifacts, not defects: those three files re-run in
isolation at load1 43 give
46 passed in 57.80s, rc=0. No override was minted,no host table or timeout budget was edited, and the RED was not argued past —
the push simply waited for lab capacity.
Attempt 3 (same head
056550d3), pushed into a measured window (h105 one slotfree at load1 1.78/10, h101 both free at 2.20/12) and placed on h105 slot 1,
ratio 0.173, mode authorizing. Probe trail:
h200=busy(heavy_pids=11) h201=busy(lock=1 held=2) h101=fit(0.238) h101.2=fit(0.238) h105=fit(0.173) h105.2=busy(...) hcloud=slot-unknown. Result44683 passed, 59 skipped, 3 xpassed, 151 warnings in 5759.89s (1:35:59),REMOTE_WRAPPER_EXIT=0, run dir/Users/Shared/onex-prepush/runs/omnibase_core-056550d34091-12620, suite logsha256
5ac19a11a1b8ba8db8aad838e148b492ce7a4ec86e4890e25f110da16504e311.Identical pass/skip/xpass counts to attempt 1 on a different head — which is
itself the evidence that attempt 2's eight reds carried no information about
this change.
dod_evidence
python3 omniclaude/scripts/kb_doc_gate.py --mode strict --repo-root .->kb-doc-gate: OK (strict mode, 9 tracked markdown file(s) inspected), exit 0. The 9 survivors are all allowed-set:README.md,CLAUDE.md,.claude/architecture-handshake.md,CHANGELOG.md,SECURITY.md,.github/{CONTRIBUTING,CODE_OF_CONDUCT,PULL_REQUEST_TEMPLATE}.md,tests/fixtures/README.md.d191ffb2today, not read off a prior report: the same validator run against the canonicaldevclone reportskb-doc-gate: FAILED (strict mode) — 199 violation(s), exit 1.git ls-tree -r --name-only origin/dev | grep -cE '\.(md|rst|adoc)$'-> 206; on this branchgit ls-files | grep -cE '\.(md|rst|adoc)$'-> 9.kb-doc-gate / kb-doc-gatecheck runs on this PR in strict mode (the file's ownmode:wins over the caller's input), so a green check here is live proof the end state holds, not an assertion about it.git show HEAD:README.md | grep -ciE 'knowledge-base|knowledge base|kb\.omninode'-> 16 (origin/dev: 0).gh pr view, with the merge commits in the table above, before this PR was opened.uv run ruff format src/ tests/->6335 files left unchanged;uv run ruff check --fix src/ tests/->All checks passed!;uv run mypy src/omnibase_core(CI's exact command,.github/workflows/ci.ymllint job) ->Success: no issues found in 4289 source files;pre-commit run --all-filesgreen;tests/unit/validation/test_ci_workflow_shape.py77/77.scripts/hooks/prepush_smart_tests.shescalated to the fail-closed full suite (selection: is_full_suite=True reason=shared_module paths=[ tests/ ]) and placed it on h105 (omnibook), slot 1, ratio 0.179, mode authorizing. Probe trail on the record:h200=busy(queue=0 heavy_pids=7 lock=1 held=1 slot=1) h201=fit(0.223,authorizing) h101=busy(...) h101.2=busy(...) h105=fit(0.179,authorizing) h105.2=busy(...) hcloud=slot-unknown. Result44683 passed, 59 skipped, 3 xpassed, 151 warnings in 5698.79s (1:34:58),REMOTE_WRAPPER_EXIT=0, run dir/Users/Shared/onex-prepush/runs/omnibase_core-d839c27cb88a-83571, suite log sha2567c34fecf36e88d872dfd8976fd988b56e28e78e317394f364cba2e98bcb82a20. The verdict is host-side and bound tohead_sha+argv_shaper OMN-16688.argv.txton that host readstests/ -n4 --dist=loadgroup --timeout=60 --timeout-method=signal— the OMN-17603 policy this branch is rebased onto, live. No narrowing was hand-typed and no escalation was bypassed.Ticket: OMN-16606. Epic: OMN-16602. Gate build: OMN-16589. Gate rollout to this repo: OMN-17172 (#1639, which put
kb-doc-gate / kb-doc-gateintodevbranch protection indiffmode — this PR flips the repo's own config tostrict).Evidence-Ticket: OMN-16606
Evidence-Source: OCC#8186