Skip to content

Commit c94be90

Browse files
committed
Merge remote-tracking branch 'origin/main' into claude/architecture-improvements-hqfc0i
Two changelogs and their manifests conflicted again: main minor-bumped claude-config to 0.42.0 and claude-ops to 0.48.0, past the patch numbers this branch had taken in the previous merge. Main's entries keep the numbers they released under and this branch's entries move to 0.42.1 and 0.48.1, above them in the newest-first order, with each manifest bumped to match. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011SQkHipoF2M8rTtnkbFKKP
2 parents 601d96d + 5cba274 commit c94be90

53 files changed

Lines changed: 1753 additions & 174 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/NATIVE-SURFACES.md

Lines changed: 79 additions & 28 deletions
Large diffs are not rendered by default.

docs/PLUGIN-PHILOSOPHY.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1090,9 +1090,21 @@ name is not the same underlying value across models):
10901090
preference, not a task-by-task decision
10911091
([choosing a model and effort level](https://claude.com/blog/claude-model-and-effort-level-in-claude-code)).
10921092
- **No lane pins `max` without eval evidence** — upstream warns it adds significant cost for
1093-
relatively small quality gains and can lead to overthinking. A pin above `high` (e.g. `xhigh`)
1093+
relatively small quality gains and can lead to overthinking. Deliberation helps only while
1094+
there is still evidence to find; past that point extra effort buys cost and latency and can
1095+
degrade the answer ([cut spend without losing quality](https://platform.claude.com/docs/en/about-claude/models/optimizing-for-cost-and-intelligence#cut-spend-without-losing-quality),
1096+
verified 2026-09-09). A pin above `high` (e.g. `xhigh`)
10941097
is a deliberate per-lane choice grounded in the target model's own recommended-levels guidance,
1095-
never a reflex.
1098+
never a reflex. The miscalibration cuts the other way too: a lane set too low stops before it
1099+
has enough evidence, makes fewer tool calls, and skips the checks it would run unprompted, so
1100+
the answer looks finished while resting on partial information (same page, same verification).
1101+
- **Sweep model and effort together before raising either.** A stronger model at low effort can
1102+
beat a weaker or older model at high effort on both cost and quality, so a lane outgrowing its
1103+
level tests the newer model at lower effort before pinning the old one higher, on its own
1104+
evals. Cross-model economics and the flat-curve reading live in the fable-5 pack's
1105+
model-adaptation chapter for the newer model
1106+
(`plugins/playbooks/reference/model-adaptation/fable-5-1.md`, "Cross-model effort economics");
1107+
current prices resolve through the `claude-api` skill at decision time.
10961108
- **Effort is the first lever in either direction; steering prose is the second.** Upstream states
10971109
the order plainly — set the effort level matching the lane's workload, then "add prompt guidance
10981110
only if Claude's triggering still doesn't match your needs at that level" — and gives the

docs/conventions/native-references/CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,33 @@ major change; additive guidance is minor; clarification is a patch. The doc ship
66
unnumbered, which this file reads as **1.0**; the entry below is the first recorded change and lands
77
the changelog the README said would arrive with it.
88

9+
## 1.1.0 — 2026-09-11
10+
11+
Additive: no required part of the description phrase moves and the canonical gate token is
12+
unchanged. One enforceability row is added, and the meaning of a store row with no baked line is
13+
split by surface.
14+
15+
- **The Boundary section lands with the store row.** A non-`defer`, extraction-evidence row is
16+
written together with its `## Boundary` section in the component body, in the same change. The
17+
section is invocation-loaded, so it spends no listing budget and moves no routing; nothing the
18+
description-phrase gate protects against applies to it. Routing and mutation gate go in the body;
19+
the four-part records go in a reference file inside the same skill, linked from the section.
20+
- **"Pending-sweep" is now phrase-only.** A row without a description phrase remains legal pending
21+
state. A row without its Boundary section is a problem the overlap self-check fails on (exit 1),
22+
so no row can be added silently unbaked. The new enforceability row is Deterministic and
23+
blocking: the tiers doc gives that tier no advisory grade, and the consumer gate's exit-3 pass
24+
is reserved for conditions this repository cannot fix by editing its own files.
25+
- **The section must name the row's surface.** `baked.boundary_section` plus a bare `## Boundary`
26+
heading is not parity: a component may carry a section written for a surface with no row, and a
27+
component that overlaps several surfaces carries one section owing each of them a mention. The
28+
heading naming the surface is the preferred shape; a generic heading passes when the section
29+
text names the surface. Either way the name appears as a code span, so a native name that is
30+
also an ordinary English word is not satisfied by prose that happens to use the word.
31+
- **Boundary-only baking may batch across plugins.** The one-plugin-per-unit sweep rule keeps its
32+
reason (routing and budget) and therefore keeps its scope: description phrases.
33+
- Adopters table gains `/claude-config:audit-instructions`, `/evals:methodology`, and
34+
`/playbooks:fable-5`, each carrying a Boundary section for the bundled `claude-api` skill.
35+
936
## 1.0.1 — 2026-08-28
1037

1138
Clarification patch: no required part of the description phrase moves, the canonical gate token is

docs/conventions/native-references/README.md

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -122,34 +122,53 @@ the source level.
122122

123123
## The Boundary section
124124

125-
Where a description clause is too small for the real distinction, the component's **body** carries a
126-
fuller section, modeled on the `review` plugin's organic pattern
127-
(`/review:quality-gate` and `/review:fanout` each carry one):
125+
The Boundary section is the surface a verdict lands on. **A store row whose verdict is not `defer`
126+
and whose observation is extraction-evidence lands together with its `## Boundary` section in the
127+
component's body, in the same change.** A verdict that lives only in the store changes nothing the
128+
model reads: the registry is a maintainer surface and shipped plugins never carry it, so until the
129+
body says how the two surfaces relate, the overlap the row records is still silent at runtime.
130+
The section costs nothing the description phrase costs. Bodies load only on invocation, so a
131+
Boundary section spends no shared listing budget and changes no routing; the gate the phrase
132+
earns (below) has no reason to hold the section back.
133+
134+
The section carries the conclusion: the surfaces by provenance class, the routing split, and the
135+
mutation gate. The four-part records behind it (the basis each upstream specific rests on, its
136+
as-of date, its recheck trigger, the extraction or docs evidence) live in a **reference file inside
137+
the same skill**, linked from the section with a same-plugin relative path, so the body stays short
138+
and the detail stays reachable. Modeled on the `review` plugin's organic pattern (`/review:quality-gate`
139+
and `/review:fanout` each carry one):
128140

129141
```markdown
130-
## Boundary — <the native surfaces this skill overlaps>
142+
## Boundary, the bundled `<name>` skill
131143

132144
<One sentence naming the surfaces and why they are conflated.>
133145

134-
- **<name> (<provenance class>)** — what it does, what it mutates, how it is invoked.
135-
- **<name> (<provenance class>)** — same.
146+
- **`<name>` (<provenance class>)** — what it does, what it mutates, how it is invoked.
147+
- **`<name>` (<provenance class>)** — same.
136148

137149
**Routing:** <when to prefer each>.
138150

139151
**Mutation gate:** <which invocations mutate, and the explicit opt-in they require>.
140152
```
141153

142-
Five properties the section keeps:
143-
144-
1. **Surfaces named by provenance class**, exactly as in the description phrase.
145-
2. **A mutation gate per surface that mutates.** Naming an overlap without naming what it writes
154+
Six properties the section keeps:
155+
156+
1. **Every overlapped surface named in the section, as a code span.** `## Boundary` on its own is
157+
a heading any prose satisfies, and several components carry one for a surface this convention
158+
has no verdict on. The heading naming the surface is the preferred shape and is what the
159+
template above shows; a generic `## Boundary` heading is still accepted when the section text
160+
names the surface, which is how one section covers a component that overlaps several. Either
161+
way the name is a code span, so a surface whose name is also an ordinary English word (`run`,
162+
`design`) is never satisfied by a sentence that happens to use the word.
163+
2. **Surfaces named by provenance class**, exactly as in the description phrase.
164+
3. **A mutation gate per surface that mutates.** Naming an overlap without naming what it writes
146165
invites an unrequested mutation.
147-
3. **One owning description, pointers elsewhere.** Where two components in the *same plugin* both
166+
4. **One owning description, pointers elsewhere.** Where two components in the *same plugin* both
148167
overlap the surface, one carries the description and the other points at it with a same-plugin
149168
relative link and adds only what is specific to itself. Cross-plugin pointers are forbidden.
150-
4. **Presence-gated language throughout** — the body inherits the description's gate; it never
169+
5. **Presence-gated language throughout** — the body inherits the description's gate; it never
151170
promotes a surface to available because the body is longer.
152-
5. **Upstream specifics carry their basis and date**, per
171+
6. **Upstream specifics carry their basis and date**, per
153172
[`upstream-drift`](../upstream-drift/README.md).
154173

155174
## Self-containment — shipped plugins never cite the registry
@@ -160,9 +179,13 @@ broken reference at install time, and the reader would be routed to a file that
160179

161180
So: baked text repeats what it needs and cites nothing outside its own plugin. The registry is a
162181
maintainer surface — it records the verdict, the evidence, and the trigger that would change them;
163-
the component carries the conclusion. This is the same direction the parity check enforces
164-
mechanically: every baked line traces back to a store row, while a store row without a baked line
165-
is legal pending-sweep state.
182+
the component carries the conclusion. The parity check enforces the forward direction
183+
mechanically: every baked line traces back to a store row, and a claimed Boundary section must name
184+
that row's surface rather than merely carry the heading. In the other direction the two baked
185+
surfaces differ. A row without its Boundary section is a defect the self-check fails on, because
186+
the section costs nothing and can always land in the change that adds the row; a row without a
187+
description phrase is legal pending state, because the phrase is the budget-priced,
188+
routing-affecting half and earns its separate gate.
166189

167190
## Enforceability
168191

@@ -171,6 +194,7 @@ Classified per `melodic-software/standards` `conventions/engineering/enforceabil
171194
| Judgment | Tier |
172195
|---|---|
173196
| A baked native reference traces to a store row | **Deterministic** — built, as the overlap self-check's store↔baked-line parity pass |
197+
| Every non-`defer` extraction-evidence row has its Boundary section (`baked.boundary_section` true, and a `## Boundary` section in the component naming that row's surface as a code span) | **Deterministic**: built, in the same self-check, as a blocking problem (exit 1). The tier carries no advisory grade: advisory belongs to detect-then-judge, where a tool narrows a set a human then rules on, and nothing here needs a ruling. A consumer gate passes a degraded run because degraded reports what this repository cannot fix by editing its own files; a missing section is fixable in the change that adds the row |
174198
| Every store row carries a recheck trigger and a class-tagged observation record | **Deterministic** — built, in the same self-check |
175199
| The phrase uses the presence gate rather than an availability assertion | **Detect-then-judge** — the `resolves in your session` token is greppable, but deciding whether a *different* sentence asserts availability is a judgment about meaning. Candidate check named, not built: flag a component description naming a bundled or built-in surface with no gate token. Build trigger: a second assertion-shaped native reference reaches `main` after this doc |
176200
| The routing split is the right one | **Reasoning-only** — it is the verdict, and verdicts are human-gated by design |
@@ -181,9 +205,20 @@ Classified per `melodic-software/standards` `conventions/engineering/enforceabil
181205
|---|---|
182206
| `/claude-ops:audit-install-state` | Description phrase + `## Boundary` section for the bundled `doctor` skill (verdict `complementary`) |
183207
| `/review:quality-gate`, `/review:fanout` | The organic Boundary pattern this doc generalizes; adopts the phrasing rules on next touch |
184-
185-
Fleet-wide application is a reserved, separately gated sweep: one plugin per unit — apply, verify,
186-
PR, close — never a single fleet-wide edit.
208+
| `/claude-config:audit-instructions` | `## Boundary` section for the bundled `claude-api` skill's `prompt-audit` subcommand (verdict `complementary`, composite posture), four-part detail in the skill's own reference file; no description phrase |
209+
| `/evals:methodology` | `## Boundary` section for the bundled `claude-api` skill's `hillclimb` and `build-eval` subcommands (verdict `complementary`); detail in the skill's eval-design reference |
210+
| `/playbooks:fable-5` | `## Boundary` section for the bundled `claude-api` skill as the live-facts and cost-audit surface its chapters defer to (verdict `complementary`); detail in the pack's prompt-caching reference chapter |
211+
| `/review:code-review`, `/review:security-review` | `## Boundary` sections for the bundled `code-review` skill and the native `security-review` command (verdict `complementary`, CI lane versus session pass); four-part detail in each skill's `reference/` file; no description phrase |
212+
| `/code-tidying:tidy`, `/code-tidying:batch-simplify` | `## Boundary` sections for the bundled `simplify` skill (verdict `complementary`, diff-anchored versus lane- and sweep-anchored); detail in each skill's reference or context file; no description phrase |
213+
| `/testing:run-e2e` | `## Boundary` section for the bundled `run` skill (verdict `complementary`, a look versus evidenced verification); detail in the skill's context file; no description phrase |
214+
| `/claude-ops:audit-performance`, `/claude-ops:audit-skill-visibility` | `## Boundary` sections for the bundled `doctor` skill (and `/skill-doctor` for the second), verdict `complementary`; the second also carries the description phrase; detail in each skill's `reference/` file |
215+
| `/visualization:visualize`, `/prototype:explore-directions` | `## Boundary` sections for the bundled `design` skill (verdict `complementary`, user-run canvas versus throwaway page or mockup); detail in the catalog spoke and the skill's `reference/` file; no description phrase |
216+
217+
Applying **description phrases** fleet-wide is a reserved, separately gated sweep: one plugin per
218+
unit — apply, verify, PR, close — never a single fleet-wide edit, because each phrase moves routing
219+
and spends shared budget. **Boundary sections** are not routing-affecting and spend no budget, so
220+
Boundary-only baking may land across several plugins in one change; the unit rule does not apply
221+
to it.
187222

188223
## Versioning
189224

0 commit comments

Comments
 (0)