docs: plan per-repo routine prerequisite resolution — ADR 0011, five phase issues, slice pruned - #2727
Conversation
Phase 8 of the boris-routines-adoption effort, promoted to its own topic by issue 2685. Sixteen interview branches were answered with recommended answers and adversarially validated by two fresh-context agents with the authoring rationale withheld: 12 confirmed (7 with required amendments), 4 challenged and replaced (per-identity-per-surface output grain, surface-qualified signals, four-way naming disambiguation, consumer-surface composition). One call is routed to the human rather than settled: the verdict-token vocabulary. The plan files four implementation phases as issues and carries its own terminal graduate-and-prune phase; the slice is pruned before this branch merges, per the contract-slice lifecycle. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…asses Two independent fresh-context passes (adversarial + conformance, rationale withheld) returned 2 CRITICAL, 6 HIGH, 13 MEDIUM/LOW findings plus three sanity-check defects; every finding is adopted. Structural changes: a generated, drift-gated identity-and-prerequisite emission phase now bridges the leaves and the resolver (the resolver previously had no machine-readable source and would have had to parse leaf prose); a positive-verdict acceptance criterion and fixture close the hardcoded-unknown hole; the provisional contract noun moves to the catalog's own word -- "prerequisite resolution" -- after a fifth naming collision (autonomy's internal "capability" vocabulary) surfaced; path:line incumbent evidence now rides every phase; the bump gate is asserted as a pair (version differs AND parity passes) instead of the vacuously-passing single check; the claude-config MCP-enablement seam, the orphaned-fixtures gate + test-harness pair, and the signal-envelope constraint on the new binding section are all named. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Graduates the durable outcome of the routine-capability-detection spike before the slice is pruned: per-identity-per-surface grain, declared over detected with interactive-only proposing, composition of owning consumer surfaces behind presence gates, fail-closed verdicts with a provably reachable positive, the generated drift-gated emission bridging leaves and resolver, and the narrows-and-adds-no-enforcement consumer rule. The final naming ruling (verdict tokens, deferred-class marker, contract noun and artifact filename) is deliberately left human, tracked on the contract-doc issue. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs/topics/<slug>/ is contract tier -- committed on a task branch only, pruned before merge. The durable outcomes have graduated: ADR 0011 carries the prerequisite-resolution decision and its rejected alternatives, and issues #2717, #2718, #2723, #2724, #2725 carry the five implementation phases with their inlined path:line incumbent evidence, work items, and sanity checks (#2717 is filed blocked on the human naming ruling). #2726 carries the reuse-or-replace follow-up found while planning. The plan itself is pasted in this PR's body. Nothing load-bearing points at a path that does not survive the merge. This repo squash-merges and deletes head branches, so no git show <branch-sha> recovery pointer is given (#2699); if the pruned file is ever needed, the Contents-API-by-SHA form against the commit before this one applies, with the caveat that it depends on unreachable-object retention: gh api "repos/melodic-software/claude-code-plugins/contents/docs/topics/routine-capability-detection/PLAN.md?ref=<pruning-commit>^" --jq .content The durable record is the graduated artifacts, not the pointer. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b2c2eac535
ℹ️ 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".
|
Claude finished @kyle-sexton's task in 2m 28s —— View job Code review —
|
|
Claude has reviewed this PR 2 times. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
Review finding on the PR (P1): a flat "declared beats detected" rule lets a stale positive declaration keep a routine admitted after the capability disappeared -- the healthy-while-dead class the liveness-assertion Core contract exists to prevent, and the exact failure this spike's subject is supposed to close. Decision 2 is now directional and normative: a declaration may narrow or disable; a probe that ran and returned negative caps every declaration, with the contradiction emitted as a finding routed per the liveness-assertion contract's two limbs; and a probe that could not run is a distinct state from a probe that ran negative -- the declaration then stands qualified, with the unprobeable state named in provenance. The consequences section no longer claims stale declarations are possible by design in the positive direction. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 50s —— View job Code review —
|
) Closes #2717 ## Summary Lands Phase 1 of the routine-capability-detection plan (ADR 0011): the per-repo **routine prerequisite resolution** contract, using the ruled naming that unblocks the wayfind interview gate. ## Fix - **`plugins/autonomy/reference/prerequisite-resolution.md`** — contract document owning grain, candidate set, verdict vocabulary, probe classes, precedence, composition seams, consumer rules, and the five-way disambiguation note. Per-class facts stay leaf-owned (Phase 2+). - **Ruled tokens:** noun `routine prerequisite resolution`; verdicts `supported` | `conditional` | `unsupported` | `unknown`; join-row marker `deferred-class` (not a verdict). - **Hub pointers only:** one sentence in `routines.md` §Access to prerequisites; one README bullet. - **Version bump** to `0.18.0` with matching CHANGELOG entry. ## Verification ```text $ ls plugins/autonomy/reference/prerequisite-resolution.md # exit 0 $ grep -c "prerequisite-resolution" plugins/autonomy/reference/routines.md # >= 1 $ grep -ci "fail-open" plugins/autonomy/reference/prerequisite-resolution.md # >= 1 $ # manifest version differs from origin/main AND: $ bash scripts/check-changelog-parity.sh --check-bump origin/main # exit 0 $ git diff origin/main | grep -inE "(merge|acceptance)[ -]rate" # only forbidding / empty ``` ## Related - ADR 0011 - Refs #2685 / #2727 (plan) --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
Closes #2685
Summary
The per-repo routine capability detection spike, executed to the contract-slice lifecycle: the
topic slice carried an interviewed, adversarially validated PLAN for routine prerequisite
resolution — how a routine identity discovers, per repository and per scheduling surface,
whether it can actually run — then graduated its durable outcomes and pruned itself before merge.
The net diff is ADR 0011 alone.
Fix
docs/adr/0011-resolve-routine-prerequisites-per-identity-declared-over-detected.md)records the durable decisions: per-identity-per-surface grain (
v1identities only;fail-closed verdicts with first-class
unknownand a provably reachable positive); declaredbeats detected with interactive-only proposing and per-rung ownership; composition of
convention-owned consumer surfaces behind presence gates (no new prober, no cached profile,
no new config family); a generated drift-gated emission bridging the authored leaves and the
resolver; and the narrows-an-existing-enforcement-input-and-adds-none consumer rule.
path:lineincumbent evidence:feat(autonomy): prerequisite-resolution contract document — blocked on the naming ruling #2717 (contract document — filed blocked on the human naming ruling), feat(autonomy): per-identity prerequisite sections in the ten v1 routine leaves #2718 (per-identity
prerequisite sections in the ten
v1leaves), feat(autonomy): generated identity-and-prerequisite emission with drift gate #2723 (generated emission + drift gate),feat(autonomy): deterministic prerequisite resolver #2724 (deterministic resolver), feat(autonomy): prerequisite-resolution slice for the setup skill #2725 (setup slice). refactor(discovery): ecosystem-discovery.md duplicates the toolchain signal vocabulary #2726 files the reuse-or-replace
follow-up found while planning (discovery's
ecosystem-discovery.mdduplicates the toolchainsignal vocabulary).
Interview provenance: the user was unavailable and directed that nothing gate the effort. All 16
interview branches were auto-answered and validated by two fresh-context agents with rationale
withheld (12 confirmed — 7 with required amendments; 4 challenged and replaced). The finished
PLAN then took independent adversarial and conformance passes (2 CRITICAL, 6 HIGH, 13 MEDIUM/LOW,
3 sanity-check defects — all adopted; the CRITICALs produced the generated-emission phase and the
positive-verdict criterion). One call is deliberately routed to the human, not settled by agents:
the naming ruling (verdict tokens, deferred-class marker, contract noun/filename), gating #2717.
Verification
Issue #2685's two sanity checks, run against the pre-prune commit:
Prune gate, after the prune commit and after rebasing onto current
main:Lint:
markdownlint-cli2andtyposclean on both the PLAN and the ADR;check-shell-portability.sh --pathshand-run on both per #2704 (clean). The forbidden-metricsweep over the branch diff returns only forbidding lines.
Related
commit gives no branch-SHA pointer), fix(scripts): shell-portability gate never scans skill markdown, where the shell is actually executed #2704 (hand-run portability check), feat(autonomy): prerequisite-resolution contract document — blocked on the naming ruling #2717, feat(autonomy): per-identity prerequisite sections in the ten v1 routine leaves #2718, feat(autonomy): generated identity-and-prerequisite emission with drift gate #2723,
feat(autonomy): deterministic prerequisite resolver #2724, feat(autonomy): prerequisite-resolution slice for the setup skill #2725, refactor(discovery): ecosystem-discovery.md duplicates the toolchain signal vocabulary #2726
PLAN.md — full text as pruned (recover via Contents API at the pruning commit's parent)