Skip to content

RHEL-LAB-001: establish governed local research foundation - #1

Merged
EmergentMonk merged 3 commits into
mainfrom
feat/rhel-lab-001-foundation
Nov 12, 2026
Merged

EmergentMonk merged 3 commits into
mainfrom
feat/rhel-lab-001-foundation

Conversation

@EmergentMonk

@EmergentMonk EmergentMonk commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Summary

Establishes the first auditable RHEL-LAB research foundation without performing or claiming any live RHEL security test.

  • Adds AGENTS.md with explicit authorization/containment gates, non-destructive engineering defaults, truthful evidence standards, owner-reviewed PR policy, and confidential vulnerability handling.
  • Expands README and adds SECURITY.md, setup checklist, protocol, and phased roadmap.
  • Adds Python-standard-library SHA-256 inventory/sealing/verification utility, 10 unit tests, and narrowly scoped CI.
  • Keeps Apache-2.0 LICENSE unchanged.
  • No VMs, vendor systems, cloud targets, privileged commands, exploit payloads, or fuzzers are exercised by this PR.

Verification

  • Not locally executed through the GitHub connector. CI is configured to run Python compilation and unit tests on the PR; review the check results before merging.
  • Commit: 71795a9
  • Base: main @ 301ce48

Owner-review gates

  1. Confirm AGENTS.md accurately captures the intended research and approval boundaries.
  2. Verify CI is green and inspect the evidence-tool tests.
  3. Approve and merge manually; no automatic merge is requested.

Follow-up

RHEL-LAB-002 will cover a specifically authorized local RHEL guest, actual isolation verification, baseline environment receipts and snapshots. This PR does not treat the developer subscription or Rex's reply as unrestricted testing authorization.

Summary by Sourcery

Establish the auditable RHEL-LAB repository foundation for safe, authorized, and reproducible local research without conducting live RHEL security testing.

New Features:

  • Add a deterministic, dependency-free SHA-256 evidence inventory, sealing, and verification utility.
  • Establish documented authorization, containment, provenance, disclosure, and phased research procedures for controlled RHEL lab work.

Enhancements:

  • Expand the repository README with research boundaries, usage guidance, repository structure, and project status.
  • Add a lab setup checklist and research roadmap covering authorized guest preparation, reliability campaigns, and responsible disclosure.

CI:

  • Add GitHub Actions checks for Python compilation and standard-library unit tests without VM or security testing.

Documentation:

  • Add contributor and agent safety guidance, a security policy, lab setup checklist, research protocol, and research roadmap.

Tests:

  • Add comprehensive unit coverage for deterministic manifests, mutation detection, unsafe file rejection, output protection, and error propagation.

Chores:

  • Add repository ignore rules and retain the existing Apache-2.0 license.

@sourcery-ai

sourcery-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown

Sorry @EmergentMonk, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 3 hours and 26 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@sourcery-ai

sourcery-ai Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

Reviewer's Guide

API

Review the evidence utility’s command-line interface and its seal/verify behavior as the user-facing contract.

  • scripts/evidence.py L90-112

Implementation

Review the evidence inventory, path-safety checks, and manifest operations that implement the utility’s contract.

  • scripts/evidence.py L1-89

Configuration

Review the source-check workflow and repository ignore rules that govern CI and local artifacts.

  • .github/workflows/ci.yml L1-27
  • .gitignore L1-29

Documentation

Review the repository-wide authorization, containment, engineering, evidence, and disclosure policy alongside the research and security guidance.

  • AGENTS.md L1-46
  • SECURITY.md L1-16
  • docs/LAB_SETUP.md L1-32
  • docs/RESEARCH_PROTOCOL.md L1-34
  • docs/ROADMAP.md L1-32

Review the README’s project status, boundaries, tooling instructions, and roadmap summary against the detailed policies.

  • README.md L1-60

Tests

Review the standard-library tests that check deterministic inventories, manifest protections, mutations, and traversal failures.

  • tests/test_evidence.py L1-136

Other changes

Files not grouped.

  • scripts/__init__.py L1

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T06:39:14.988583Z 94b992e Manual request
🔒 Security Review ✅ Completed 2026-11-12T06:36:36.661512Z 71795a9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 71795a9f3b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/evidence.py Outdated
"""List relative regular files in stable order; reject symlinks and special files."""
root = _root(input_dir)
files = []
for path in sorted(root.rglob("*"), key=lambda p: p.relative_to(root).as_posix()):

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Fail sealing and verification on directory traversal errors

When an evidence subdirectory cannot be enumerated, Path.rglob() suppresses the scan error and silently omits its contents. Consequently, seal() can successfully write an incomplete manifest, and verify() can subsequently accept changes inside that same unreadable subtree. On Python 3.14, simulating a PermissionError from os.scandir() reproduced both outcomes, including successful verification after modifying the omitted log. Use traversal that propagates directory-enumeration errors so inaccessible evidence causes failure rather than a misleading PASS. This also violates the repository's prohibition on silently ignored errors.

AGENTS.md reference: AGENTS.md:L24-L24

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Addressed in commits 8091769693863624b040d363e459c5354e7e328c and 94b992e71d56d17cc8cbdb6be761cd1da6c803a7. Replaced Path.rglob() with explicit os.scandir() directory traversal that propagates enumeration failures; maintains deterministic manifest ordering and symlink/special-file rejection. Added regression tests for unreadable subtree on seal/verify, unreadable root, and symlinked directory. GitHub Actions Source checks run #2 (43169421973) completed successfully: Python compilation and unit tests passed. No RHEL VM/security testing was executed.

@EmergentMonk

Copy link
Copy Markdown
Member Author

@codex security review
@codex Please Review this exact SHA 94b992e against the existing contract. Report only actionable correctness defects, with a minimal reproduction, expected versus actual behavior, and affected lines. State whether each reproduction was executed or statically inferred. Don’t repeat fixed findings without a new failing case. Keep architectural suggestions separate and non-blocking.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 94b992e71d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@EmergentMonk
EmergentMonk merged commit 21d6c83 into main Nov 12, 2026
2 checks passed
@EmergentMonk
EmergentMonk deleted the feat/rhel-lab-001-foundation branch November 12, 2026 06:44
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