Skip to content

feat(policy): add executable offline robots evaluation example - #352

Merged
seonghobae merged 1 commit into
mainfrom
feat/robots-offline-example-20261008
Oct 13, 2026
Merged

seonghobae merged 1 commit into
mainfrom
feat/robots-offline-example-20261008

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Product slice and dependency

Adds a locally executable robots_offline example for #350 / PRD-CRAWL-001. It consumes the candidate robots evaluator from #351 instead of duplicating its parser or matcher. This is a four-file example/tests/documentation increment stacked on #351 at f11bdd8aa4129925440ea02680089c6872434801; #351 must integrate before this child reaches protected main. It does not close the complete crawler or browser runtime gap.

Behavior

  • Three explicit option/value pairs: local body file, crawler product token, serialized path-plus-query request target. Reject missing, duplicate and unknown options.
  • Read a cooperative regular local file, retaining at most MAX_ROBOTS_BODY_BYTES + 1 bytes so overflow remains visible to the evaluator. Preserve binary body bytes and library normalization, rule precedence and implicit /robots.txt semantics.
  • Call the actual evaluate_robots, then pass its decision into actual evaluate using a fixed example.com Observe/public-crawl fixture, no write grant, no secret and no approval.
  • Print value-free decision/basis/rule-kind/line/truncation/fixture-policy fields and network_authority=none. Allow=exit0, refusal=exit1, input/output failure=exit2. Local file errors never become an unavailable-robots allowance.
  • Test child invocations are bounded and file-captured; one build per test process uses a dedicated target. On Unix timeout, the owned same-group subprocesses receive SIGKILL before direct-child wait.

Tests and review

Initial example acceptance reached an assertion failure because the example target did not exist. An earlier borrow-check failure is preserved as a test setup error, not behavioral RED. The initial implementation passed the three-case acceptance suite; later added binary/special-file and exact-six duplicate-option controls characterize existing behavior.

Independent whole-source review identified a test-helper timeout defect: direct Cargo termination left descendants uncontrolled. Parent reproduced a finite shell descendant writing after timeout (0 passed/1 failed), then changed Unix group handling; the unchanged regression passed. Final independent whole-four-file source verdict is PASS, bound to the complete patch and all four file hashes. This is not formal GitHub approval.

Preserved failures: an original independent probe and first instrumented workload observed signalled child exits. Signal cause remains UNKNOWN; later passing tests do not establish their cause or retroactively clear those attempts.

Exact final local verification

Commit 47a7e04de8da2a6749ad4497a2e12eae60654072 has the same four source blobs as the independently reviewed packet. Clean committed-head gates passed, with before/after source hashes unchanged:

  • Rust1.97.1 fmt/check/strict all-target Clippy; warnings-fatal workspace rustdoc.
  • Complete workspace all-target tests:303 passed,0 failed,0 ignored, including5 offline-example test functions on Unix.
  • Repository Python documentation/contracts:152 passed.
  • Complete pinned-nightly instrumented workload:303 passed; unchanged library-production verifier reports functions583/583, lines4825/4825, regions5945/5945, branches716/716.

The default coverage report does not include the example file. No100% example coverage claim is made. Library coverage and actual example behavioral acceptance are separate evidence. All eight clean committed-head gate commands completed with exit0; actual receipts and source hashes were verified before the normal non-force branch publication.

Not shipped / not claimed

No fetch, cache, live crawl, DNS, browser action, scheduler, storage, persistence, deployment, signing or release. The body is user-supplied, not origin-attested or HTTP-success evidence. The fixed intent digest is synthetic; the core request does not bind the request-target to executable intent. Even fixture Allow grants no network/browser authority.

Pathname/descriptor regular-file checks are not a race-free filesystem sandbox or bounded blocking-I/O mechanism. Unix cleanup is scoped to cooperative same-group children; escaped daemons, Windows descendant cleanup and grandchild direct reap are not claimed. Signal-command failure followed by unbounded direct wait remains a non-reproduced hardening observation, not a completed universal-supervisor guarantee.

Exact-head Actions, central self-hosted auto-model AI review, separate non-author formal App approval, effective rules, normal protected integration and prerequisite #351 acceptance remain required. This PR stays Draft while those delivery gates are unmet.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0bb0f4cf-4a82-4f75-bca6-a6b766173fb4
📥 Commits

Reviewing files that changed from the base of the PR and between 9b97c54 and 47a7e04.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • README.md
  • crates/originweave-policy/examples/robots_offline.rs
  • crates/originweave-policy/tests/robots_offline.rs
 ________________________________________
< C*deR*bb*t: The uncensored bug hunter. >
 ----------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@seonghobae
seonghobae changed the base branch from feat/moa-product-slice-20261006 to main October 13, 2026 11:53
@seonghobae
seonghobae marked this pull request as ready for review October 13, 2026 11:54
@seonghobae
seonghobae merged commit 2f8fc12 into main Oct 13, 2026
2 of 6 checks passed
@seonghobae

Copy link
Copy Markdown
Contributor Author

Infrastructure-exception integration authorized by the maintainer. Main merge trees were verified against the tested source: #351 merge9b97c5438ed8f4bdc07c3842bf803658bc712279; #352 merge2f8fc121f006d60db4ddf1a03c9c610bf5d315e3. Fresh workspace all-target tests exit0 on47a7e04d; actual main tree matches exactly. Ordinary head-bound merge commands used; no protection changes or self-approval. Actions billing-lock FAILURE and Draft SKIPPED are NOT PASS. Self-hosted CI execution and literal-auto AI review with formal non-author App approval remain UNFINISHED. This integration is not a release or a claim of approved CI.

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