Skip to content

receipt(OMN-13046): bind docs-dirty-alert dod_evidence to omniclaude PR #1814 - #3248

Merged
jonahgabriel merged 4 commits into
devfrom
jonah/omn-13046-occ-docs-dirty-alert
Jun 28, 2026
Merged

jonahgabriel merged 4 commits into
devfrom
jonah/omn-13046-occ-docs-dirty-alert

Conversation

@jonahgabriel

@jonahgabriel jonahgabriel commented Jun 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

OCC receipt for OMN-13046. Binds dod_evidence to omniclaude PR #1814.

DoD evidence

  • dod-tests-pass: 14 unit tests in tests/skills/test_docs_dirty_alert.py pass (count threshold, age threshold, clean state, friction YAML schema)
  • dod-skill-and-node-exist: skill at plugins/onex/skills/docs_dirty_alert/_lib/check.py, node at src/omniclaude/nodes/node_skill_docs_dirty_alert_orchestrator/contract.yaml
  • dod-cron-wired: docs-dirty-alert CronCreate entry at */30 * * * * in scripts/setup-session-crons.sh
  • dod-quality-gate: ruff format + ruff check + mypy --strict all pass on new files

Closes C-5 retro item: 518-dirty-entry state in omni_home docs now surfaces within 30 min via CronCreate-scheduled alert, not days.

Summary by CodeRabbit

  • New Features
    • Added a new alerting contract for monitoring “dirty” documentation files, including threshold- and age-based checks and scheduled execution.
  • Tests
    • Recorded successful validation for the alerting workflow, including tests, wiring checks, and quality checks.
  • Chores
    • Added verification receipts and supporting records for the new contract and its required evidence.

@coderabbitai

coderabbitai Bot commented Jun 28, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jonahgabriel, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 47 minutes and 24 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9675786c-b207-4360-b2bf-bc521accaf23

📥 Commits

Reviewing files that changed from the base of the PR and between a9e971d and bdaa8f8.

📒 Files selected for processing (6)
  • contracts/OMN-13046.yaml
  • drift/dod_receipts/OMN-13046/dod-cron-wired/command.yaml
  • drift/dod_receipts/OMN-13046/dod-occ-self/command.yaml
  • drift/dod_receipts/OMN-13046/dod-quality-gate/command.yaml
  • drift/dod_receipts/OMN-13046/dod-skill-and-node-exist/command.yaml
  • drift/dod_receipts/OMN-13046/dod-tests-pass/command.yaml
📝 Walkthrough

Walkthrough

Adds the OMN-13046 contract YAML defining a docs dirty-canonical sweep alerting skill/orchestrator, along with five DoD receipt files under drift/dod_receipts/OMN-13046/ recording PASS results for tests, skill/node existence, cron wiring, quality gate, and self-check.

Changes

OMN-13046 Contract and DoD Receipts

Layer / File(s) Summary
OMN-13046 contract definition
contracts/OMN-13046.yaml
Full contract specifying the docs dirty-alert behavior (count ≥50 or age >4h thresholds), evidence requirements, emergency bypass (disabled), and DoD evidence entries for all verification steps.
DoD PASS receipts
drift/dod_receipts/OMN-13046/dod-tests-pass/command.yaml, drift/dod_receipts/OMN-13046/dod-skill-and-node-exist/command.yaml, drift/dod_receipts/OMN-13046/dod-cron-wired/command.yaml, drift/dod_receipts/OMN-13046/dod-quality-gate/command.yaml, drift/dod_receipts/OMN-13046/dod-occ-self/command.yaml
Five command receipts recording PASS status for pytest (14 tests), skill/node file existence, cron grep wiring, ruff quality gate, and contract self-check, each with contract SHA256, commit/branch/PR metadata, and exit code 0.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

A rabbit hopped through docs so deep,
Found dirty files that lost their sleep.
With alerts and crons set just so right,
No untracked file escapes the night!
🐇✨ All receipts say PASS — what a sight!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: binding OMN-13046 docs-dirty-alert evidence to omniclaude PR #1814.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jonah/omn-13046-occ-docs-dirty-alert

Comment @coderabbitai help to get the list of available commands.

@jonahgabriel
jonahgabriel force-pushed the jonah/omn-13046-occ-docs-dirty-alert branch from e10b347 to a9e971d Compare June 28, 2026 10:09

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 (3)
drift/dod_receipts/OMN-13046/dod-skill-and-node-exist/command.yaml (1)

51-59: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Align the description with the probe.

Line 52-54 says SKILL.md is part of the evidence, but Lines 57-59 never check it. Either add that file to the command or remove it from the receipt text so the proof matches the claim.

🤖 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-13046/dod-skill-and-node-exist/command.yaml` around
lines 51 - 59, The receipt description currently claims SKILL.md is part of the
evidence, but the probe in the command does not verify it. Update the command in
the relevant receipt so the checked files and the receipt text match by either
adding SKILL.md to the probe or removing it from the description; use the
command definition that builds the evidence set and ensure the claim aligns with
what the probe actually tests.
drift/dod_receipts/OMN-13046/dod-quality-gate/command.yaml (1)

69-76: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Run the full quality gate you describe.

Line 71 says ruff format, ruff check, and mypy --strict all passed, but Lines 74-76 only run ruff check. Expand the probe to cover formatting and typing, or trim the description to the single gate actually verified.

🤖 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-13046/dod-quality-gate/command.yaml` around lines 69 -
76, The quality gate description and the actual probe are inconsistent: the
summary claims formatting and typing checks passed, but the probe only runs ruff
check. Update the command in the quality gate workflow to include the full set
of verified checks (ruff format, ruff check, and mypy --strict), or else shorten
the description so it only mentions the single check actually executed. Use the
existing quality gate command block in command.yaml to keep the description and
probe aligned.
drift/dod_receipts/OMN-13046/dod-cron-wired/command.yaml (1)

61-68: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Assert the 30-minute schedule, not just the name.

Line 62-64 claims the CronCreate entry runs every 30 minutes, but Lines 67-68 only check that docs-dirty-alert appears anywhere in scripts/setup-session-crons.sh. Tighten the probe to include the */30 * * * * schedule fragment.

🤖 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-13046/dod-cron-wired/command.yaml` around lines 61 -
68, The cron assertion is too loose because it only checks that docs-dirty-alert
exists in scripts/setup-session-crons.sh instead of verifying the intended
schedule. Update the probe in the CronCreate check to match both the entry name
and the 30-minute schedule fragment, using the setup-session-crons.sh definition
so it explicitly asserts */30 * * * * for docs-dirty-alert.
🤖 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-13046/dod-occ-self/command.yaml`:
- Around line 4-6: The receipt’s probe in the command check only validates a
local contract file and does not prove the claimed OCC PR `#3248` binding. Update
the probe used by this receipt to a PR-binding lookup via the GitHub CLI (for
example in the command definition for dod-occ-self), and make sure the
associated actual_output matches the PR lookup result rather than file contents.

---

Outside diff comments:
In `@drift/dod_receipts/OMN-13046/dod-cron-wired/command.yaml`:
- Around line 61-68: The cron assertion is too loose because it only checks that
docs-dirty-alert exists in scripts/setup-session-crons.sh instead of verifying
the intended schedule. Update the probe in the CronCreate check to match both
the entry name and the 30-minute schedule fragment, using the
setup-session-crons.sh definition so it explicitly asserts */30 * * * * for
docs-dirty-alert.

In `@drift/dod_receipts/OMN-13046/dod-quality-gate/command.yaml`:
- Around line 69-76: The quality gate description and the actual probe are
inconsistent: the summary claims formatting and typing checks passed, but the
probe only runs ruff check. Update the command in the quality gate workflow to
include the full set of verified checks (ruff format, ruff check, and mypy
--strict), or else shorten the description so it only mentions the single check
actually executed. Use the existing quality gate command block in command.yaml
to keep the description and probe aligned.

In `@drift/dod_receipts/OMN-13046/dod-skill-and-node-exist/command.yaml`:
- Around line 51-59: The receipt description currently claims SKILL.md is part
of the evidence, but the probe in the command does not verify it. Update the
command in the relevant receipt so the checked files and the receipt text match
by either adding SKILL.md to the probe or removing it from the description; use
the command definition that builds the evidence set and ensure the claim aligns
with what the probe actually tests.
🪄 Autofix (Beta)

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: ab58974c-92d8-4a02-a62b-063c6d859377

📥 Commits

Reviewing files that changed from the base of the PR and between 2f29ead and a9e971d.

📒 Files selected for processing (6)
  • contracts/OMN-13046.yaml
  • drift/dod_receipts/OMN-13046/dod-cron-wired/command.yaml
  • drift/dod_receipts/OMN-13046/dod-occ-self/command.yaml
  • drift/dod_receipts/OMN-13046/dod-quality-gate/command.yaml
  • drift/dod_receipts/OMN-13046/dod-skill-and-node-exist/command.yaml
  • drift/dod_receipts/OMN-13046/dod-tests-pass/command.yaml

Comment thread drift/dod_receipts/OMN-13046/dod-occ-self/command.yaml Outdated
@jonahgabriel
jonahgabriel added this pull request to the merge queue Jun 28, 2026
Merged via the queue into dev with commit 5c8a897 Jun 28, 2026
38 checks passed
@jonahgabriel
jonahgabriel deleted the jonah/omn-13046-occ-docs-dirty-alert branch June 28, 2026 10:34
andywu42 pushed a commit to andywu42/omniclaude that referenced this pull request Jul 16, 2026
…untracked docs files (OmniNode-ai#1814)

## Summary

Implements **C-5** retro action item (PROCESS_FAILURE_RETRO.md §3.C):
alert when untracked \`docs/{handoffs,evidence,plans,deep-dives}\` files
in \`omni_home\` exceed a count threshold or any file is older than 4
hours. Before this, 518 dirty-entry states went undetected for days.

-
\`src/omniclaude/nodes/node_skill_docs_dirty_alert_orchestrator/check.py\`
— scan logic using \`git status --porcelain\`; writes friction YAML to
\`\$ONEX_STATE_DIR/friction/\` on alert (exit 0=clean, 1=alert)
- \`plugins/onex/skills/docs_dirty_alert/SKILL.md\` — skill description
and invocation docs
- \`src/omniclaude/nodes/node_skill_docs_dirty_alert_orchestrator/\` —
thin orchestrator node + \`contract.yaml\` with event-bus topics
- \`tests/skills/test_docs_dirty_alert.py\` — 14 unit tests covering
count threshold, age threshold, clean state, and friction YAML schema
(all pass)
- \`scripts/setup-session-crons.sh\` — \`docs-dirty-alert\` cron added
(every 30 min) to session bootstrap; closes C-5 gap
- \`contracts/OMN-13046.yaml\` — OCC contract with \`dod_evidence\`

## Evidence-Source

OCC Receipt PR:
OmniNode-ai/onex_change_control#3248

DoD evidence:
- 14 unit tests pass: \`uv run pytest
tests/skills/test_docs_dirty_alert.py -v\` → 14 passed
- Skill exists at
\`src/omniclaude/nodes/node_skill_docs_dirty_alert_orchestrator/check.py\`
- Node exists at
\`src/omniclaude/nodes/node_skill_docs_dirty_alert_orchestrator/contract.yaml\`
- CronCreate entry in \`scripts/setup-session-crons.sh\`
(\`docs-dirty-alert\`, \`*/30 * * * *\`)
- \`ruff check\` and \`mypy --strict\` pass on all new files
- Pre-existing test failures (5 total) confirmed pre-existing on
\`origin/main\`; no regressions introduced

## Test plan

- [ ] CI: \`Quality Gate\`, \`Tests Gate\`, \`Security Gate\` all green
- [ ] \`uv run pytest tests/skills/test_docs_dirty_alert.py -v\` → 14
passed
- [ ] Manual: \`OMNI_HOME=... ONEX_STATE_DIR=... uv run python -m
omniclaude.nodes.node_skill_docs_dirty_alert_orchestrator.check\` exits
0 on clean repo, 1 when docs threshold exceeded

Evidence-Source: OCC#3261
Evidence-Ticket: OMN-13046
Implementation-Head: 0622285c1cbf2f5f3040ad38ce490e75fdab3a79
OCC-Receipt-PR:
OmniNode-ai/onex_change_control#3248

---------

Co-authored-by: jonahgabriel <jonahgabriel@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant