Skip to content

Harden review completion and commit guidance - #1

Merged
DheerG merged 98 commits into
mainfrom
agent/prospective-commit-guidance
Aug 8, 2026
Merged

DheerG merged 98 commits into
mainfrom
agent/prospective-commit-guidance

Conversation

@DheerG

@DheerG DheerG commented Aug 6, 2026

Copy link
Copy Markdown
Owner

What changed

  • Preserve the user's native Codex model and reasoning configuration by default while retaining an explicit isolation option.
  • Accept uncontradicted native Codex clean verdicts without weakening other providers' sentinel contract.
  • Count oscillation only after changed-snapshot repair attempts and keep one CLI invocation to one round.
  • Replace retrospective commit-history hygiene with a prospective message check.
  • Provide a lossless default commit narrative with repository-policy overrides and a product-domain exception.
  • Keep existing commit-message quality outside functional findings and clean-delivery gates.

Why

The previous delivery-time hygiene path could turn legacy message quality into pressure to amend or rewrite history. Proposed messages also lacked a consistent structure for preserving failure scenarios, resulting behavior, rationale, and verification.

The new contract improves future commits while treating all existing history as immutable input.

Impact

Agents receive one portable default when a repository has no explicit standard, defer to repository guidance where it exists, and validate only messages that have not yet been committed. Reviewers can use commit bodies as untrusted context but cannot report their quality as a functional defect.

Validation

  • npm run validate
  • claude plugin validate --strict plugins/codex-review-loop
  • claude plugin validate --strict .claude-plugin/marketplace.json
  • git diff --check

An independent clean review is still pending before this draft is marked ready and merged.

DheerG added 30 commits August 6, 2026 08:20
Failure:
The loop isolated native provider settings and rejected explicit native clean verdicts. It also
counted unchanged responses toward oscillation and graded existing commit messages at delivery.
These behaviors could reduce review depth, reject valid results, stop too early, or encourage
history rewrites.

Change:
Inherit native provider configuration by default and validate provider-specific clean output. Count
oscillation only across changed snapshots, and make each invocation exactly one round. Replace the
retrospective hygiene gate with prospective, policy-aware commit narrative validation. Treat
existing messages as immutable context and keep their quality outside functional defect detection.

Rationale:
Completion should certify product behavior on an exact snapshot. Commit guidance should improve new
history without making legacy messages a delivery condition or creating pressure to rewrite them.

Verification:
- npm run validate
- claude plugin validate --strict plugins/codex-review-loop
- claude plugin validate --strict .claude-plugin/marketplace.json
- git diff --check
Failure:
Product-domain term exceptions disabled every attribution pattern. This allowed process narration
to pass.
Native clean parsing also missed contradictory defect, finding, issue, and counted-bug statements.

Change:
Separate waivable product-name matches from permanent workflow-attribution guards. Expand
contradictory qualification detection across the complete defect vocabulary and singular, plural,
and numeric counts.
Retain a positive clean case for explicit statements that no issues remain.

Rationale:
Exceptions should admit legitimate product identifiers without weakening history safeguards. A clean
verdict must remain conservative whenever the provider's remaining prose names an unresolved defect.

Verification:
- npm run validate
- claude plugin validate --strict plugins/codex-review-loop
- claude plugin validate --strict .claude-plugin/marketplace.json
- git diff --check
Failure:
Free-form clean parsing could certify additional defect prose. A repository-policy flag also
disabled defaults for fields the repository did not override. Product-term handling confused
legitimate domain nouns with attribution and missed defects found during an external review.

Change:
Require a clean verdict to be the sole non-empty output line. Make repository overrides identify the
subject, body, or both so defaults remain active elsewhere. Separate broad product-name matching
from permanent attribution grammar. Cover related narrative forms with positive and negative tests.

Rationale:
Structural clean output removes semantic guesswork. Field-level policy composition and grammar-based
attribution checks preserve repository authority without weakening the product-history safeguards.

Verification:
- npm run validate
- claude plugin validate --strict plugins/codex-review-loop
- claude plugin validate --strict .claude-plugin/marketplace.json
- git diff --check
Failure:
Legacy clean state could bypass tightened verdict parsing, while broad policy handling
and incomplete verb grammar weakened prospective commit-message safeguards.

Change:
Version review state, invalidate legacy clean results, narrow native clean phrases,
and apply explicit field-level user or repository policy overrides.

Verification:
npm run validate
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Multiline subjects and unrecognized workflow nouns could bypass safeguards when an
explicit policy overrode the default commit-message format.

Change:
Require single-line subjects and recognize workflow suggestions, requests,
recommendations, instructions, and guidance in both subjects and bodies.

Verification:
npm run validate
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Inherited sandbox settings could permit reviewer writes, capped legacy runs could be
stranded, and attribution grammar both rejected RFC guidance and missed causal prose.

Change:
Force the native review sandbox to read-only, grant one legacy migration round, and
require review context while blocking causal reviewer attribution.

Verification:
npm run validate
codex exec --sandbox read-only review --help
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Always-on grammar rejected legitimate product timing while reviewer-first subjects
could still describe the production process instead of the shipped behavior.

Change:
Make operational review timing product-term-aware and classify reviewer-first action
verbs as permanent workflow attribution across the complete proposed message.

Verification:
npm run validate
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Inherited lifecycle hooks could produce side effects, while provider actions were
classified too broadly and provider-review actions were not classified broadly enough.

Change:
Disable hooks through the supported Codex feature override and distinguish waivable
provider product actions from permanent review-workflow attribution.

Verification:
npm run validate
codex exec --sandbox read-only --disable hooks review --help
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Configured external tools could mutate state, mixed native verdicts affected review
tracking, and capped legacy migration lacked the required invalid-response retry slot.

Change:
Disable apps, subagents, and discovered MCP servers without forwarding secrets, reject
mixed native clean text, and reserve two capped migration rounds.

Verification:
npm run validate
codex mcp list --json with generated disabled definitions
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Disabled MCP definitions could expose transport data, isolated runs still inspected user
configuration, and edge cases remained in migration, attribution, and verdict parsing.

Change:
Use constant inert MCP transports, bypass isolated discovery, preserve two retry slots,
and reject reverse attribution plus labeled contradictory clean text.

Verification:
npm run validate
codex mcp list --json with inert disabled definitions
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Prototype-sensitive server names could evade isolation, and Markdown-formatted clean
labels could coexist with structured findings without invalidating the response.

Change:
Build MCP overrides with a null-prototype map and normalize common list, Markdown, and
labeled verdict wrappers before contradiction checks.

Verification:
npm run validate
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Isolated runs could miss trusted project MCP servers, and the independent v2 subagent
feature remained enabled under inherited configuration.

Change:
Inventory effective project tools when possible, fail closed on ambiguous fallback
isolation, and disable both supported multi-agent feature variants.

Verification:
npm run validate
codex exec review help with both multi-agent flags disabled
claude plugin validate --strict plugins/codex-review-loop
claude plugin validate --strict .claude-plugin/marketplace.json
Failure:
Managed configuration could restore write-capable Codex features, live MCP enumeration could contact
configured endpoints, and unsupported feature names broke older CLI releases.

Change:
Statically discover ordinary MCP server names, reject managed definitions, verify effective feature
disables, and emit only flags exposed by the installed CLI.

Rationale:
Keep the provider adapter read-only without requiring a minimum Codex version.

Verification:
- npm run validate
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Inactive legacy profiles produced transport-less MCP overrides, Windows skipped machine-managed
configuration, formatted clean verdicts were rejected, and product frequency language was
misclassified.

Change:
Limit legacy MCP discovery to selected profiles on compatible CLIs, resolve Windows policy from
ProgramData, normalize one-line verdict labels, and separate quantification from causal attribution.

Verification:
- npm run validate
- codex features list with every adapter feature disabled
- codex mcp list with statically derived disabled definitions
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Legacy notification commands could run outside the sandbox, and multiline inline MCP tables were
rejected before the provider started.

Change:
Clear ordinary notification settings, fail closed on managed commands, accumulate container values
during static TOML parsing, and document restrictive cloud MCP requirements.

Rationale:
Keep external command ownership with the host while preserving supported Codex configuration forms.

Verification:
- npm run validate
- codex features list with notification and feature disables
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Doctor could report Codex ready when managed MCP or notification policy would make provider startup
reject the same installation.

Change:
Reuse the complete Codex isolation preflight in diagnostics and expose the rejection reason
alongside the provider availability result.

Verification:
- npm run validate
- codex-review-loop doctor --json
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Managed sandbox and feature settings could restore write-capable reviewer paths, legacy profile
selection was resolved per file, and diagnostics could inspect the wrong target.

Change:
Reject managed write-capable permissions and reviewer features, resolve legacy profile selection
across the configuration stack, disable legacy subagent aliases, and honor diagnostic cwd.

Verification:
- npm run validate
- codex features list with current and legacy reviewer features disabled
- codex-review-loop doctor --cwd <target> --json
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Inline profile tables could bypass provider isolation, symbolic comparison bases could move after
commits, and legitimate product frequency wording was rejected.

Change:
Expand nested inline profiles before safety checks, store comparison bases as immutable commits,
and distinguish per-review product frequency from causal attribution.

Verification:
- npm run validate
- node --test --test-name-pattern="Codex MCP discovery|commit-message rules|start pins"
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Untrusted project MCP configuration could generate invalid disable overrides, and older symbolic
bases could move past repaired changes.

Change:
Mirror Codex project trust before inventorying project configuration, migrate older run bases to
historical commit objects, and fail closed when the original boundary cannot be recovered.

Verification:
- npm run validate
- active-run status migration from origin/main to its historical commit
- node --test --test-name-pattern="Codex MCP discovery|start pins|legacy clean state"
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Unmigratable legacy state blocked every command, including explicit stop, and generic AI or
reviewer attribution could pass the prospective message policy.

Change:
Allow non-clean finish to archive unmigrated state with its recovery error, and extend invariant
body checks and attribution-trailer coverage.

Verification:
- npm run validate
- node --test --test-name-pattern="commit-message rules|check-commit-message|stopped finish"
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
A stale reflog could pin a boundary too late, abbreviated object IDs could block migration, and
doctor from a repository subdirectory could inspect the wrong configuration root.

Change:
Require reflog coverage of the stored start time, accept unique object-ID prefixes as immutable,
and canonicalize doctor targets through the Git top level.

Verification:
- npm run validate
- node --test --test-name-pattern="doctor reports|legacy base migration|start pins|stopped finish"
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Prompt-affecting configuration could bias clean verdicts, unsafe config files could block
preflight, and legacy scope, attribution, and verification edge cases could become lossy.

Change:
Pass only model and reasoning preferences into a user-config-free, rules-free, untrusted-project
Codex run; bound remaining config reads; and preserve exact commands and immutable legacy bases.

Rationale:
CLI overrides retain review depth without importing prompt-affecting user or project layers.

Verification:
- npm run validate
- codex features list -c 'projects={"/Users/dheer/code/personal/codex-review-loop"={"trust_level"="untrusted"}}' --disable hooks --disable apps --disable plugins --disable multi_agent --disable multi_agent_v2
- codex exec --sandbox read-only --ignore-user-config --ignore-rules -c 'projects={"/Users/dheer/code/personal/codex-review-loop"={"trust_level"="untrusted"}}' review --help
- codex-review-loop doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Multiline managed strings could evade isolation, strikethrough could become a clean verdict, and
repository-specific verification commands could be rejected as long prose.

Change:
Decode supported triple-quoted strings and fail closed otherwise, retain strikethrough markers,
and preserve every Verification list entry as exact evidence.

Verification:
- npm run validate
- node --test --test-name-pattern="Codex accepts explicit|Codex MCP discovery|check-commit-message"
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
Automated approval settings could escape the read-only boundary, while ordinary request and
feedback product language could be rejected as workflow attribution.

Change:
Force approvals to never, disable approval guardians, fail closed on system or managed approval
automation, and require explicit reviewer or AI context for workflow nouns.

Verification:
- npm run validate
- codex --ask-for-approval never exec --sandbox read-only --ignore-user-config --ignore-rules --disable guardian_approval --disable guardianv2 review --help
- codex-review-loop doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
- plugin-creator validate_plugin.py
- skill-creator quick_validate.py
- claude plugin validate --strict plugins/codex-review-loop
Failure:
- A managed unprefixed read-only permission profile could inherit workspace writes.
- Commit checks missed OpenCode attribution.
- Exact verification continuations and product test names were treated as prose.
- This prevented lossless evidence.

Change:
- Accept only the built-in :read-only default-permission profile.
- Recognize OpenCode attribution consistently.
- Treat Verification commands and indented continuations as opaque evidence for prose checks.

Verification:
- node --test --test-name-pattern="Codex MCP discovery|check-commit-message validates" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
Failure:
- Legacy Codex exposed codex_hooks separately, so lifecycle execution could remain enabled.
- Native review ignored review_model in favor of the general model preference.
- Verification bullets and unfamiliar trailer labels could hide AI attribution.

Change:
- Disable and verify both current and legacy hook feature names.
- Prefer review_model to model.
- Continue isolating every other user setting.
- Keep command arguments opaque.
- Reject workflow-shaped bullets and provider-valued trailers.

Verification:
- node --test --test-name-pattern="Codex preserves allowlisted|Codex MCP discovery|Codex feature probing adapts|Codex feature probing keeps|check-commit-message validates" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- node plugins/codex-review-loop/skills/review-until-clean/scripts/review-loop.mjs doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
Failure:
- Legacy migration could replace an unknown historical base with the startup HEAD.
- A later branch switch could therefore change committed scope.

Change:
- Remove the current-branch fallback.
- Accept immutable objects and stored-HEAD-relative revisions.
- Accept moving refs only with provable reflog history.

Verification:
- node --test --test-name-pattern="legacy base migration" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
Failure:
- Older CLIs could expose plugin_hooks without disabling lifecycle execution.
- Stored HEAD-relative bases could resolve against a later checkout.
- This occurred before initialHead reconstruction.
- Narrative Verification bullets could carry mid-line provider attribution.
- They were still treated as command evidence.

Change:
- Disable and verify plugin_hooks alongside both existing hook aliases.
- Resolve stored HEAD-relative expressions from initialHead before reading current HEAD.
- Require attribution-bearing bullets to contain explicit shell syntax.
- Only then treat those bullets as evidence.

Verification:
- node --test --test-name-pattern="Codex preserves allowlisted|Codex feature probing adapts|Codex feature probing keeps|check-commit-message validates|legacy base migration" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- node plugins/codex-review-loop/skills/review-until-clean/scripts/review-loop.mjs doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
Failure:
- Enterprise requirements could reject forced safety settings after Codex was considered ready.
- Model catalogs and declaration-order profile handling could alter prompt content or review depth.
- Passive narration and unmarked indented lines could bypass attribution safeguards.
- Subject trailers could bypass them too.

Change:
- Parse bounded system and macOS MDM requirements before provider selection.
- Require compatibility with read-only execution and never approval.
- Require user approval ownership and safe features.
- Reject model catalogs and overlay selected legacy profiles after base preferences.
- Detect passive narration and require real shell continuation markers.
- Scan attribution trailers in subject and body.

Verification:
- node --test --test-name-pattern="Codex MCP discovery|check-commit-message validates" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- node plugins/codex-review-loop/skills/review-until-clean/scripts/review-loop.mjs doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
Failure:
- Multiline TOML records retained only their opening delimiter and rejected safe configuration.
- Cross-layer legacy profile selection did not reach user model preferences.
- Prose Verification bullets could masquerade as commands and hide attribution.

Change:
- Accumulate complete triple-quoted TOML values before recording them.
- Share the effective legacy profile selector across safety and preference parsing.
- Require explicit paths, recognized commands, or shell syntax for opaque Verification evidence.
- Keep review-status narration in the permanent attribution grammar.

Verification:
- node --test --test-name-pattern="Codex MCP discovery|check-commit-message validates" test/review-loop.test.mjs
- npm run validate
- python3 /Users/dheer/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py plugins/codex-review-loop
- python3 /Users/dheer/.codex/skills/.system/skill-creator/scripts/quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- node plugins/codex-review-loop/skills/review-until-clean/scripts/review-loop.mjs doctor --cwd /Users/dheer/code/personal/codex-review-loop --json
DheerG added 27 commits August 7, 2026 12:44
Failure:
Synchronous probes could outlive their deadline, latent OpenAI endpoints could
activate after legacy profile isolation, and command-shaped evidence obscured
workflow prose and incomplete verification sections.

Change:
Use unignorable timeout termination, track dormant OpenAI transport settings,
scan shell evidence end to end, recognize arbitrary plain headings, and match
generic AI trailer identities without case sensitivity.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
An ordered heading after a placeholder Verification section could leave evidence
collection active and count a later command outside the declared section.

Change:
Recognize numbered Markdown-style headings as section boundaries and cover the
exact ordered-heading bypass alongside other unknown heading forms.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Formatted and blockquoted headings after a placeholder Verification section
could leave evidence collection active and count commands from a later section.

Change:
Normalize blockquote, list, ordered, and emphasis heading syntax before deciding
whether verification evidence has crossed a section boundary.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Profile isolation could reject identical root transports, while wrapped ATX
headings, colon-ended commands, and closing code delimiters distorted the
declared verification scope.

Change:
Compare effective transport values, recognize normalized ATX headings, give
exact commands precedence over generic headings, and unwrap complete code spans
before detecting shell continuation markers.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Timed preflights could orphan native descendants, SIGHUP could retain copied
credentials, equivalent legacy transports were rejected, and verification
parsing mishandled shell prompts and attributed option continuations.

Change:
Supervise Codex process groups, clean retained homes on terminal hangup, honor
equivalent isolated transport state, preserve syntax-qualified product tests,
and reject explicit attribution in continued options.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Windows could terminate the probe wrapper before it killed native descendants,
equivalent TOML transport syntax compared unequal, and Setext subsections could
lend commands to a placeholder Verification section.

Change:
Enforce a one-shot deadline inside the Codex supervisor, compare decoded TOML
transport structures, and treat Setext underlines as evidence boundaries.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Structured clean verdicts could hide contradictory extra fields, inherited
model verbosity could reduce review detail, and product waivers could admit
causal workflow narration.

Change:
Require the exact structured verdict schema, reject model-output verbosity as a
prompt hazard, and classify causal reviewer-to-implementation prose.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Equivalent modern and same-profile transports could be rejected, while command
evidence either lost legitimate product selectors or hid workflow attribution.

Change:
Compare every excluded user transport with retained effective state, neutralize
only explicit product test selectors, and apply non-waivable attribution checks
before evidence filtering.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Legacy preflight ignored effective profile overrides, and verification evidence
could hide attribution in environment assignments or direct-use wording.

Change:
Resolve the retained legacy profile before scanning configuration, inspect full
commands before stripping assignments, and reject direct-use authorship forms.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Cloud preferences could override native higher-precedence layers, local hazards
were checked too early, and generic selector masking misclassified commands.

Change:
Apply native configuration ordering, defer hazards until cloud policy is merged,
and recognize product selectors only for their actual test runners and aliases.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Managed runtime paths could escape isolation, forwarded test selectors lost exact
evidence, and direct fix attribution or generic review-fix subjects could pass.

Change:
Pin Codex database and log paths, parse selectors after script forwarding, and
make direct fix attribution and review-fix subjects non-waivable.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Strict explanation phrases rejected valid structured verdicts, managed runtime
paths escaped isolation, and package or attribution variants bypassed policy.

Change:
Trust the native structured verdict, reject managed state paths, tokenize package
test prefixes, and cover reason-based causality plus authorship synonyms.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Local managed state paths were rejected only after provider probes, wrapped test
runners lost selectors, and overlapping commands could share one round number.

Change:
Reject managed runtime paths before any Codex process, unwrap Python launchers,
and serialize complete review commands with a recoverable Git-owned lock.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Forced provider exits could leave descendants running, and launcher flags could
hide the underlying test runner from exact verification evidence.

Change:
Run providers in isolated process groups, terminate full trees on forced exits,
and consume launcher options before resolving test executables.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Host cancellation could orphan detached provider descendants, hard-link locking
excluded valid filesystems, and commit evidence parsing rejected valid product
commands while missing attribution variants.

Change:
Relay host signals after killing provider trees, acquire locks with exclusive
creation, mask custom product-test selectors, and expand causal and trailer
attribution recognition.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Command-valued launchers and operator-led continuations lost exact test evidence,
while causal AI provenance could be hidden by product-term masking.

Change:
Inspect causal provenance before masking, parse nested npx command values, and
recognize operator-led continued shell syntax as verification evidence.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Command masking could hide causal provenance, escaped nested commands lost their
selector boundaries, and allowlists dropped valid continued shell evidence.

Change:
Separate selector redaction from product-term masking, decode shell-significant
nested escapes, and preserve nonempty continuations after attribution checks.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Split shell attribution could bypass checks, unsafe ordinary permission defaults
could conflict with the enforced sandbox, and npm run-script evidence lost its
product selector.

Change:
Normalize continued commands before attribution checks, reject non-read-only
default permissions, and recognize npm run-script test forwarding.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Dangling shell continuations could count as exact verification, while npm exec
wrappers hid legitimate product-test selectors from evidence parsing.

Change:
Discard pending continuation evidence at boundaries and end of input, unwrap npm
exec runners, and inspect command-valued npm exec aliases recursively.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Parallel stale recovery could delete a replacement lock, continued commands could
lose attribution context, valid Cargo selectors were rejected, and common
request and trailer forms escaped attribution checks.

Change:
Claim stale recovery exclusively and recheck lock contents, prioritize continued
command context, mask Cargo selectors, and recognize possessive and spaced AI
identities.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Interrupted stale recovery could leave a permanent claim, generic headings could
truncate exact continuations, and npm exec options could hide the real runner.

Change:
Use unique stale-keyed recovery claims with PID ownership, prioritize active
continuations, and consume value-taking npm exec options before runner parsing.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Concurrent stale claimants could all abort, quoted placeholders could satisfy
verification, and npm options before exec could hide the product-test runner.

Change:
Order recovery claims with a monotonic key, reject placeholders before shell
parsing, and resolve npm options before inspecting exec commands and selectors.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Stale replacement was not atomic, lifecycle commands could race provider preflight,
and prefixed package-manager launchers could hide exact product-test selectors.

Change:
Transfer stale locks through atomic rename and captured recovery, serialize all
state mutations, and resolve value options before package and Python launchers.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Conventional types collided with attribution trailers, and cleanup errors could
swallow host interrupts before provider trees terminated.

Change:
Use strict identities for action-style subject trailers while retaining broad
body checks, and isolate retained-home cleanup failures during signal dispatch.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Copied invalid preferences bypassed readiness, finite selector recognition
rejected exact commands, incomplete shell constructs counted as evidence, and
current provider identities evaded attribution checks.

Change:
Replay effective preferences through preflight, mask generic test-selector
options, reject open shell syntax, and expand provider identity recognition.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Qualified review subjects and consultation-based authorship bypassed attribution
checks, while decorated product provenance was rejected despite justification.

Change:
Recognize qualified review phrases and consulted providers, and align product
provenance identities with the general attribution identity grammar.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
Failure:
Private OAuth copies could lose rotated refresh state, blocking preflights could
outlive host signals, and decorated AI trailer identities escaped detection.

Change:
Fail closed for rotating file credentials, run native preflights through
signal-aware process control, and inspect generic AI suffixes and decorations.

Verification:
- npm run validate
- validate_plugin.py plugins/codex-review-loop
- quick_validate.py plugins/codex-review-loop/skills/review-until-clean
- claude plugin validate --strict plugins/codex-review-loop
- review-loop.mjs doctor --provider codex --repo .
@DheerG
DheerG marked this pull request as ready for review August 8, 2026 03:35
@DheerG
DheerG merged commit 2e931f1 into main Aug 8, 2026
2 checks passed
@DheerG
DheerG deleted the agent/prospective-commit-guidance branch August 8, 2026 03:36
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