Repository navigation
chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane - #12792
Open
kyle-sexton wants to merge 5 commits into
Open
chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane#12792kyle-sexton wants to merge 5 commits into
kyle-sexton wants to merge 5 commits into
Conversation
…reference to every view lane Make lib/rendered-view.md the one canonical rendered-view procedure and sync it into planning, architecture, discovery and debugging, keeping each copy's path. The canonical holds the union of the four copies: a lane-neutral procedure, a resolver path for lanes the shared resolver registers (planning) beside the cascade-read path the others still follow, and one section per lane for its record, build command, reply ids and data shape. Register view-settings, view-registry, config-cascade, yaml-subset and state-key copies for architecture, discovery, debugging, adhd, education, prototype, codebase-health, overengineering and ai-briefing. harness-ops and work-items already carry them. No skill or eval changes. Closes #12667 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojdnckzkRQMdQRVNbt
…ered-view reference Debugging's copy sits under skills/debug/reference/, where a file read with the Read tool gets no variable substitution and check-spoke-plugin-root.sh rejects the plugin-root token. Every command now names <plugin-root>, defined once at the top as the start of the path the calling skill gave for the file. Refs: #12667 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojdnckzkRQMdQRVNbt
…migrate Register in lib/view-registry.mjs the lanes Phase 9 moves onto the resolver, so those slices change only their own skills: architecture, discovery:blindspot, debugging:debug, education:teach and illustrate, work-items:morning-brief and triage, adhd:clarify, codebase-health:audit, overengineering:audit, prototype:explore-directions and pressure-test, and ai-briefing:generate. None is hostedCapable. The shipped default is `file` where the skill's text resolves unset to a local file today, and null where the skill's own content rule decides. No skill calls the resolver for these lanes yet, and lib/rendered-view.md is unchanged. A CLI test resolves each new lane with no scope set and checks the report line against that default. Refs: #12667 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VcupojdnckzkRQMdQRVNbt
kyle-sexton
marked this pull request as ready for review
November 3, 2026 09:08
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #12667
Summary
Slice S8 of epic #12646 (plan Phase 8): one canonical rendered-view reference for the four view lanes that had their own copy, and the shared medium resolver modules in every remaining view-lane plugin. No skill or eval changes; migrating each lane onto the resolver is the per-plugin slices #12668-#12741.
Fix
One rendered-view reference.
lib/rendered-view.mdis the canonical, synced byscripts/sync-shared-copies.shinto the existing paths:plugins/planning/reference/,plugins/architecture/reference/,plugins/discovery/reference/andplugins/debugging/skills/debug/reference/. What was merged from the four copies:medium, build, deliver, read the reply as data) holding the union of the shared rules: the record stays authoritative, nothing reads a view back as a finding, the session's text is attacker-controllable so the page is a template plus escaped data,nodemissing, and architecture's non-zero-exit rule, generalised.lib/view-registry.mjsregisters (planningtoday), and therendered-viewscascade read (defaultfile) for architecture, discovery and debugging. The resolver rejects an unregistered lane (view-settings.mjs resolve --lane architectureexits 2), and those lanes' evals still assert the cascade read, so they keep it until their slice.--fromand "What the page shows", blindspot's "writes noEXPLORE.md" and "never an instruction to widen the scan", debugging's secret redaction, "only the lines that show the failure" and "a challenge to weigh".<plugin-root>, defined once at the top. The debugging copy sits in a skill spoke, wherescripts/check-spoke-plugin-root.shrejects the plugin-root variable token (Read does no substitution), and planning's relativeartifact-protocol.mdlink would break in the architecture and debugging copies, so it is now a plain path.Resolver modules in every view lane.
view-settings.mjs,view-registry.mjs,config-cascade.mjs,yaml-subset.mjsandstate-key.sh(whichview-settings.mjsruns) are registered for architecture, discovery, debugging, adhd, education, prototype, codebase-health, overengineering and ai-briefing. Discovery and education already carriedyaml-subset.mjs; harness-ops and work-items already carried all of them and are unchanged.Every view lane registered.
lib/view-registry.mjsregisters the lanes the per-plugin slices migrate, so those slices edit only their own skills:architecture,discovery:blindspot,debugging:debug,education:illustrate,work-items:morning-briefandwork-items:triageshipfile(each skill resolves unset to a local file today);adhd:clarify,codebase-health:audit,overengineering:audit,education:teach,prototype:explore-directions,prototype:pressure-testandai-briefing:generateship null (the skill's own content rule decides). None is hostedCapable. A lane is used only once its skill calls the resolver;lib/rendered-view.mdstep 3 and every skill are unchanged. A CLI test resolves each new lane with no scope set.scripts/cross-plugin-source-registry.txtregisters the newreference/rendered-view.mdcluster. Each touched plugin has a patch changelog fragment.Verification
scripts/sync-shared-copies.sh --check: All 642 registered copies match their canonical sources.scripts/sync-shared-copies.sh --check-bump origin/main: 6 canonical source(s) or their copies changed vs origin/main; every carrying plugin bumped its version.node -e "import('<abs>/plugins/<p>/lib/view-settings.mjs')"exits 0 for each of architecture, discovery, debugging, adhd, education, prototype, codebase-health, overengineering, ai-briefing.node plugins/adhd/lib/view-settings.mjs resolve --lane planning --option ""printsview: file (plugin default), exit 0 (the copiedstate-key.shruns).scripts/plan-test-lanes.sh --base origin/main: exit 0.scripts/check-cross-plugin-source-drift.sh --checkandscripts/check-spoke-plugin-root.sh --check: clean; the pre-pushcheck-affectedpassed.Related
lib/rendered-view.mdand re-syncs.🤖 Generated with Claude Code
https://claude.ai/code/session_01VcupojdnckzkRQMdQRVNbt
session: html-plan