Skip to content

feat(autonomy): prerequisite-resolution slice for the setup skill (#2725) - #2813

Merged
kyle-sexton merged 2 commits into
mainfrom
cursor/2725-prereq-setup-14fb
Aug 16, 2026
Merged

feat(autonomy): prerequisite-resolution slice for the setup skill (#2725)#2813
kyle-sexton merged 2 commits into
mainfrom
cursor/2725-prereq-setup-14fb

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Closes #2725

Summary

Re-lands the autonomy setup-skill prerequisite-resolution slice (0.22.0) on main after #2809. Replaces #2804, which was auto-closed when its stack base was deleted on squash-merge.

Related

cursoragent and others added 2 commits August 16, 2026 01:22
)

Closes #2725

Phase 5 of the routine-capability-detection plan (ADR 0011): extend the
setup skill with check/apply for per-identity prerequisite resolution,
narrowing-only enablement, and additive binding declarations.

Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@claude

claude Bot commented Aug 16, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 50s —— View job


Security review (/review:security-review)

  • Gather context (diff, changed files, repo guidelines)
  • Run /review:security-review skill criteria
  • Post findings

Skip gate: PR is open and the diff has a security-relevant surface (two new
Node scripts that read/write JSON under .claude/autonomy/), so I did a full pass
rather than skipping.

Scope reviewed: the two new scripts and their write path —
apply-prerequisite-resolution.mjs
and
check-prerequisite-resolution.mjs,
plus the accompanying test/fixtures, docs, and version bump.

Findings: none.

Notes from the pass (no action needed, just what I checked):

  • Both scripts invoke child processes via spawnSync(process.execPath, [...]) with
    argument arrays (no shell: true), so surface ids and repo paths sourced from
    binding.json content cannot reach a shell for command injection —
    check-prerequisite-resolution.mjs#L77-L90.
  • writeRatified (the only write path, gated behind --ratify) extracts only
    schema_version / surface_refs / declarations from the untrusted proposal
    object rather than spreading it wholesale, so there's no prototype-pollution or
    arbitrary-key injection route into binding.json
    apply-prerequisite-resolution.mjs#L185-L233.
  • The resolver (resolve-prerequisites.mjs, pre-existing/unchanged) only reads
    surface / identity / need off declaration entries, so extra keys smuggled
    into a declarations[] proposal aren't consumed as authority elsewhere.
  • The slice never writes admission / isolation / executor_class or flips
    routines.enabled; writeRatified additionally refuses to write if those
    security-binding keys are already present on the loaded binding.
  • No shell scripts, workflow files, or dependency manifests changed in this PR —
    supply-chain/Actions surface is unaffected.
  • Fixtures and eval additions are static, non-executable JSON/Markdown with no
    secrets.

This is internal CLI tooling operating on a locally-supplied --repo path, not
attacker-facing network input, which further limits the trust-boundary blast
radius even if a bug existed here.

@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: 358f9ce93a

ℹ️ 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".

@github-actions

Copy link
Copy Markdown

Last security-reviewed head: 358f9ce93a46f09a7dd8e519abc1ac4710d38e4f. On the next push, the relevance gate compares only the commits since this SHA; delete this comment to force a full re-review.

@kyle-sexton
kyle-sexton merged commit 4dd1a18 into main Aug 16, 2026
44 checks passed
@kyle-sexton
kyle-sexton deleted the cursor/2725-prereq-setup-14fb branch August 16, 2026 01:29
@claude

claude Bot commented Aug 16, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 29s —— View job


Review status

  • Gather context (PR metadata, diff, CLAUDE.md)
  • Apply /review:code-review skip gate
  • Finalize

Result: skipped (skip gate)

Per the pre-fetched context, PR #2813 is MERGED (closed). /review:code-review's skip gate stops before deep review when "PR is closed or not open," so no code review was performed and no inline comments were posted.

If a review is still wanted, it should be requested against an open PR (or by re-triggering once/if this PR is reopened).

@github-actions

Copy link
Copy Markdown

Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count.

kyle-sexton added a commit that referenced this pull request Aug 16, 2026
…gger (#2822)

## Summary

Reconciles the #2717 naming ruling with the already-shipped
prerequisite-resolution chain. The ruling was posted 2026-08-16T01:54Z —
about three hours **after** PR #2772 merged the contract document
(2026-08-15T22:47Z) and after the downstream phases (#2783, #2809,
#2813) had shipped a working vocabulary. Its premise ("the contract
document may be authored against these") was stale when written, so the
reconciliation decision re-derived the outcome:

- **Verdict tokens ratified as shipped.** `supported` / `conditional` /
`unsupported` / `unknown` clears every constraint that binds — no
security-binding reading, no barred health word, no collision with the
five named incumbents. The ruling's `met` family was a precision
preference, not a defect cure; migrating ~60 sites across four merged
PRs, including machine-emitted resolver tokens, buys no correctness.
**No token changes.**
- **The deferred marker gains its mandatory trigger: `deferred-class` →
`deferred(<trigger>)`.** This half of the ruling names a genuine defect
— a bare marker records that resolution is postponed while discarding
the condition under which the deferral is revisited, the half that makes
it auditable. The trigger is the `join:` row's own catalog Status
trigger. 6 sites, 4 files: the contract document, the README bullet, ADR
0011 (a dated appended amendment — the original decision text is
byte-identical, and the released CHANGELOG entries stay untouched as
historical record), and a new 0.22.1 changelog entry with the version
bump.

A reader who finds the ruling comment and the shipped vocabulary
disagreeing now finds the reconciliation on the record in ADR 0011's
amendment.

## Test plan

- `scripts/check-changelog-parity.sh --check-bump origin/main` exits 0;
`plugin.json` bumped 0.22.0 → 0.22.1 with a matching `## [0.22.1]` entry
- `markdownlint-cli2` and `typos` clean over all five changed files
- `scripts/validate-plugins.sh` passes; `generate-catalog.mjs` /
`generate-cheatsheet.mjs` report no drift
- Repo-wide `git grep deferred-class` at the head commit hits only
historical released changelog text and ADR 0011's original pre-amendment
lines
- Independently verified by a fresh-context auditor reading blobs at the
pushed SHA with authoring rationale withheld: all nine checks PASS (its
one finding — a changelog sentence misattributing the ratification to
the ruling — is fixed in the head commit)

## Related

Closes #2717

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.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.

feat(autonomy): prerequisite-resolution slice for the setup skill

2 participants