Skip to content

docs: add COGSEC-HUMAN-SIM-001 guardrail and human-simulation redress lane#22284

Closed
BrianCLong wants to merge 1 commit intomainfrom
codex/subsuming-and-addressing-current-issues
Closed

docs: add COGSEC-HUMAN-SIM-001 guardrail and human-simulation redress lane#22284
BrianCLong wants to merge 1 commit intomainfrom
codex/subsuming-and-addressing-current-issues

Conversation

@BrianCLong
Copy link
Copy Markdown
Owner

Motivation

  • Close a governance gap that allowed unbounded human-targeted scraping and persona simulation by codifying a deny-by-default guardrail for human digital-twin activities.
  • Provide an operational redress path for alleged unauthorized human-simulation usage so incidents can be frozen, investigated, quarantined, and remediated.

Description

  • Add a machine-readable policy file governance/cogsec/human-simulation-guardrail.yaml defining COGSEC-HUMAN-SIM-001 with deny rules for persona_simulation and unbounded scrape, required controls (case_id, lawful_purpose, oversight), governed-exception handling, and rollback actions.
  • Extend governance/cogsec/redress_process.md with a Human Simulation Appeals (COGSEC-HUMAN-SIM-001) lane describing immediate freeze, authority verification, artifact quarantine, and remediation outcomes.
  • Include observability and audit requirements (case_id, prompt_hash, policy_version, decision_trace_id) and a 30-day governed-exception expiry to support reversible, evidence-first operations.

Testing

  • Ran ruby -e "require 'yaml'; YAML.load_file('governance/cogsec/human-simulation-guardrail.yaml')" to validate the new YAML, which succeeded.
  • Attempted Python YAML validation (import yaml) which failed in this environment due to missing PyYAML (ModuleNotFoundError), but Ruby-based validation confirms the file is syntactically valid.
  • The PR metadata includes ruby_yaml_parse as an automated validation step and was recorded in the decision package.

Codex Task

@BrianCLong BrianCLong added the codex Codex-owned implementation work label Mar 31, 2026 — with ChatGPT Codex Connector
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 31, 2026

Warning

Rate limit exceeded

@BrianCLong has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 23 minutes and 34 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 23 minutes and 34 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 51268481-ca93-4b6b-bb9f-399bad4032ab

📥 Commits

Reviewing files that changed from the base of the PR and between 12cad4a and fcc81d4.

📒 Files selected for processing (2)
  • governance/cogsec/human-simulation-guardrail.yaml
  • governance/cogsec/redress_process.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/subsuming-and-addressing-current-issues

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 and usage tips.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new governance policy for human simulation (COGSEC-HUMAN-SIM-001) and updates the redress process to handle appeals related to unauthorized persona cloning. The feedback focuses on technical improvements to the YAML policy definition, specifically suggesting more robust existence checks for case IDs, splitting concatenated activity and role strings into discrete list items for better matching, and resolving a temporal contradiction in the redress response time.

Comment on lines +42 to +44
case_id: present
lawful_purpose: present
retention_policy_id: present
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

The use of present as a value suggests a literal string match, which would cause the control to fail for any actual case ID or purpose string (e.g., 'CASE-123'). Given that line 35 uses the { missing: true } object syntax for existence checks, these should likely be updated to check for the presence of the field rather than a literal string value to ensure the guardrail functions correctly with real data.

      case_id: { missing: false }
      lawful_purpose: { missing: false }
      retention_policy_id: { missing: false }

target_type: identifiable_person
activity:
- persona_simulation
- predictive_vote_or_behavior_model
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Splitting combined activity types into separate list items ensures that the policy engine can match against individual activity tags accurately. Using a single string like predictive_vote_or_behavior_model might fail if the system logs these as distinct activities (e.g., just predictive_vote).

        - predictive_vote
        - behavior_model

- id: require_human_oversight
rule: "allow_only_if"
condition:
reviewer_role: governance_agent_or_human_dri
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

If the intention is to allow either the governance_agent or the human_dri to perform the review, it is better to define these as a list. This avoids potential string-matching issues and adheres to standard YAML policy patterns where roles are discrete entities rather than concatenated strings.

      reviewer_role:
        - governance_agent
        - human_dri


## 5. Human Simulation Appeals (COGSEC-HUMAN-SIM-001)
If a person asserts the platform built or used a behavioral/persona simulation without authority:
1. **Immediate Freeze**: Suspend the associated collection/model job within 24 hours.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

There is a contradiction between the term Immediate Freeze and the within 24 hours timeframe. For cognitive security incidents involving unauthorized human simulation, a 24-hour window may be too long for a response labeled as 'immediate'. Consider shortening this timeframe to reflect the urgency of the redress path.

Suggested change
1. **Immediate Freeze**: Suspend the associated collection/model job within 24 hours.
1. **Immediate Freeze**: Suspend the associated collection/model job immediately (e.g., within 1 hour).

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

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: fcc81d4284

ℹ️ 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 on lines +49 to +50
reviewer_role: governance_agent_or_human_dri
review_outcome: approved
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Require human-only approval for simulation decisions

require_human_oversight currently allows reviewer_role: governance_agent_or_human_dri, which means an automated agent can approve human-simulation activity. For this high-risk path, that creates a policy-compliant route without a named human decision-maker, conflicting with the repo’s human-approval governance requirements for critical decisions. Tighten this control to require explicit human approver identity.

Useful? React with 👍 / 👎.

Comment on lines +34 to +35
evidence_budget:
missing: true
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 Deny unbounded scrapes when budget is present but invalid

The no_unbounded_public_record_scrape rule only denies when evidence_budget is missing, so a scrape with a present-but-unbounded budget can still pass despite the rule’s stated intent. In practice this allows effectively unlimited human-targeted collection as long as the field exists. Add an explicit boundedness check (for example max scope/limit constraints) instead of only a presence check.

Useful? React with 👍 / 👎.

Comment on lines +4 to +5
policy_id: COGSEC-HUMAN-SIM-001
status: active
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 Enforce the new active guardrail in CI policy checks

This policy is declared active, but the cogsec gate script (ci/scripts/cogsec_rights_gate.py) only requires the older four governance files and does not reference this new guardrail, so CI will not fail if it is removed or bypassed. That leaves COGSEC-HUMAN-SIM-001 as a non-enforced artifact rather than a guaranteed control. Add it to required policy checks or a runtime loader assertion.

Useful? React with 👍 / 👎.

@github-actions github-actions bot enabled auto-merge (squash) March 31, 2026 08:46
BrianCLong added a commit that referenced this pull request Mar 31, 2026
## Summary

Rebuilds the golden-main merge train from a clean `main` base and
converges the currently mergeable PR set into one replacement branch.

This branch absorbs:
- #22296
- #22279
- #22281
- #22282
- #22283
- #22284
- #22285
- #22295
- #22297
- #22286
- #22291
- #22280
- #22277
- unique non-conflicting surfaces from #22241
- the admissibility/CACert/failure-demo runtime lane from #22314

This branch supersedes:
- #22298 as the contaminated/conflicting convergence branch
- #22277 as a standalone merge vehicle
- #22241 as the broad mixed-purpose convergence vehicle once remaining
review is complete
- #22314 as the standalone admissibility lane now folded into the golden
path

This branch intentionally excludes:
- #22292 because it targets `merge-surge/staging`, not `main`

## Conflict policy used while absorbing #22241

When merging `#22241` on top of the cleaned train, the following files
conflicted and were resolved in favor of the current train versions so
the newer focused CI/governance repairs remain authoritative:
- `.github/ci/required-checks.json`
- `.github/workflows/drift-sentinel.yml`
- `.github/workflows/pr-gate.yml`
- `docs/ci/REQUIRED_CHECKS_POLICY.yml`
- `pnpm-lock.yaml`
- `scripts/ci/check_branch_protection_drift.mjs`
- `scripts/ci/validate_workflows.mjs`

All other `#22241` changes merged on top of the train.

## Mapping Change Summary

This convergence branch updates workflow, schema, and governance
contracts that control merge eligibility, admissibility evidence, and
deterministic trust artifacts.

## Diff

- Added admissibility/evidence/CACert surfaces including
`packages/evidence/schemas/decision_trace.schema.json`
- Tightened golden-lane workflow policy and drift handling in
`.github/workflows/_policy-enforcer.yml`,
`.github/workflows/execution-graph-reconciliation.yml`,
`.github/workflows/post-ga-hardening-enforcement.yml`,
`.github/workflows/merge-surge.yml`,
`.github/workflows/control-plane-drift.yml`
- Realigned governance state in `governance/pilot-ci-policy.json` and
`governance/branch-protection.json`
- Repaired deterministic reconciliation verification in
`scripts/ci/verify_execution_graph_reconciliation.mjs` and
`scripts/ci/drift-sentinel.mjs`

## Justification

The repo needed one mergeable replacement lane that restores
deterministic governance checks, folds the admissibility implementation
into the golden path, and suppresses broken optional PR workflows that
were blocking convergence without being canonical required checks.

## Impact

- Canonical pilot checks remain `pr-gate / gate` and `drift-sentinel /
enforce`
- Merge-train branches no longer fail ordinary small-PR enforcement
gates by construction
- Optional broken workflows are narrowed to their owned surfaces so they
stop contaminating this convergence lane and the immediate post-merge
main push
- Execution-graph reconciliation now accepts the repo’s canonical
snake_case trust bundle fields

## Rollback Plan

Revert commit `ce32b96c0f` from
`merge-train/golden-main-20260331-final`, then rerun the prior
golden-lane checks and restore the previous PR body.

## Backfill Plan

After the lane is green, backfill the same workflow scoping and
governance-contract repairs into any surviving PRs that still touch
`.github/workflows/**` or governance surfaces, then close superseded PRs
against `#22309`.

## Validation Evidence

Local validation completed:
- `node scripts/ci/drift-sentinel.mjs`
- `ruby -e 'require "yaml"; ... YAML.load_file(...)'` over all edited
workflow files
- `jq . governance/pilot-ci-policy.json`
- `jq . governance/branch-protection.json`
- merge-marker scan over all edited files returned clean

## Notes

- Live GitHub PR checks on the open PR set are being converged through
this single branch instead of salvaging each broken lane independently.
- I did not run the full local verification matrix in this session; this
PR is intended to give the repo one clean convergence lane for CI and
human review.
- After this PR lands, the absorbed PRs should be closed as superseded.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Bot <bot@summit.ai>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gemini CLI <gemini-cli@google.com>
@BrianCLong
Copy link
Copy Markdown
Owner Author

Superseded by #22309, which is now merged into main.

@BrianCLong BrianCLong closed this Mar 31, 2026
auto-merge was automatically disabled March 31, 2026 20:10

Pull request was closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge codex Codex-owned implementation work risk:low

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant