Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions docs/specs/d1-model-already-knows-measurement/d1_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,12 +275,8 @@ def is_instruction(s):
plain = re.sub(r"\*\*|__|\*|_", "", plain).strip()
if not plain:
return False
first = re.split(r"[\s,;:]", plain, 1)[0].lower().strip(".*_-—:")
if first in IMPERATIVE_OPENERS:
return True
if MODALS.search(s):
return True
return False
first = re.split(r"[\s,;:]", plain, maxsplit=1)[0].lower().strip(".*_-—:")
return first in IMPERATIVE_OPENERS or bool(MODALS.search(s))


# ---------------------------------------------------------------- stage 4
Expand Down
2 changes: 1 addition & 1 deletion plugins/autonomy/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "autonomy",
"version": "0.22.14",
"version": "0.22.15",
"description": "Governed autonomous agent operation: role-topology, binding-seam, wiring-vs-advisor, telemetry, return-accounting, trigger-dispatch, per-work-class guardrail-matrix, standing-routine-catalog, and design-only runner-charter contracts for climbing the AI-adoption ladder, plus a guided-setup skill that discovers an adopting org's state, writes its schema-versioned binding, wires standards-pinned OTLP emission with a zero-cost file-artifact default, wires human-attested return capture at the task boundary, wires signal adapters with one governed dispatch entrypoint, binds the five-class guardrail matrix to an org's isolation substrates with an in-boundary live-validation probe before recording each fail-closed binding, and stands up standing-routine-catalog classes as scheduled temporal signal adapters behind the one governed queue with free scheduling defaults wired as reviewable changes and each routine's work-class mapping homed on the security surface.",
"author": {
"name": "Melodic Software",
Expand Down
12 changes: 12 additions & 0 deletions plugins/autonomy/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@
All notable changes to the `autonomy` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.22.15]

### Changed

- **Behavior-preserving simplification sweep, wave 11 (batch-simplify).** Setup-gate scripts,
each adversarially refutation-verified with byte-identical output and exit codes:
check-signal-envelope.mjs collapses a nested single-branch conditional into one `&&`
(three-envelope differential drive identical); resolve-prerequisites.mjs pushes findings via
spread instead of a loop (findings arrays proven bounded and plain); a dead intermediate
local removed from the fixtures test runner. Fixture suites 22/22 and slice checks 4/4
green; generated/ tree byte-unchanged.

## [0.22.14]

### Changed
Expand Down
10 changes: 4 additions & 6 deletions plugins/autonomy/skills/setup/scripts/check-signal-envelope.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -281,12 +281,10 @@ function checkEnvelope(envelope, where, { surfaces, sections, duplicates, routin
// agent-internal: serialized provenance is REQUIRED — an unverifiable
// self-stamped class would bypass admission.
const parentItem = envelope["signal.parent_item"];
if (signalClass === "agent-internal") {
if (!isNormalizedCanonicalUrl(parentItem)) {
findings.push(
`${where}: signal.parent_item ${JSON.stringify(parentItem)} must be the emitting session's admitted source item as a normalized canonical https URL (required for agent-internal)`,
);
}
if (signalClass === "agent-internal" && !isNormalizedCanonicalUrl(parentItem)) {
findings.push(
`${where}: signal.parent_item ${JSON.stringify(parentItem)} must be the emitting session's admitted source item as a normalized canonical https URL (required for agent-internal)`,
);
}

// raw_link form branches DETERMINISTICALLY on the serialized origin.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const fail = (name, detail) => {
};

function runResolver(repoDir, surface) {
const result = spawnSync(
return spawnSync(
process.execPath,
[resolver, "--repo", repoDir, "--surface", surface],
{
Expand All @@ -46,7 +46,6 @@ function runResolver(repoDir, surface) {
timeout: 30_000,
},
);
return result;
}

function parseOut(result) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,7 @@ function resolveIdentity(record, ctx) {
result: resolved.result,
provenance: resolved.provenance,
});
for (const finding of resolved.findings) findings.push(finding);
findings.push(...resolved.findings);
}

// Identity-level disable declaration.
Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-config/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "claude-config",
"version": "0.40.12",
"version": "0.40.13",
"description": "Nine configuration-health skills (plus setup) for a repo's Claude Code configuration: audit (settings.json / .mcp.json / hooks / plugins / permissions drift), audit-automation-gaps (evidence-gated verdicts on automation gaps), audit-permission-grants (allow-rule / allowed-tools grants for auto-mode durability and portability), audit-permission-state (the permission rules actually in effect \u2014 every settings scope merged with per-rule provenance, what auto mode drops on entry, config written where nothing reads it, and which managed intents are enforced versus loosenable), draft-auto-mode-rules (interview and draft a paste-ready autoMode classifier block; prints only, never writes), audit-instructions (locally-owned instruction surfaces vs current model capability \u2014 proposes removals/rewrites of instructions the model no longer needs, and detects cross-surface instruction conflicts), audit-prompting-postures (the additive lane \u2014 posture guidance the prompting guide says a component's purpose needs but the component does not carry), audit-pass (one coordinated, ordered, resumable pass over a named target \u2014 three-scope inventory, run-time-derived exclusion set, stable finding identity, suppression memory, resume, one human gate \u2014 delegating every check to the plugin that owns it), and unhobble (the empirical bare-baseline experiment: reversibly strip a repo's standing instructions, log real stumbles against the current model, re-add only what evidence earns).",
"author": {
"name": "Melodic Software",
Expand Down
12 changes: 12 additions & 0 deletions plugins/claude-config/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,18 @@
All notable changes to the `claude-config` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.40.13]

### Changed

- **Behavior-preserving simplification sweep (batch-simplify).** `audit-instructions`'s
restatement-scan.py dropped a redundant `nunit and` truthiness test (the preceding length
guard already excludes empty units) and its `main()` empty-file-list special case (the
general path is byte-identical for an empty list); `audit-permission-state`'s
automode-block-lint.test.sh dropped a duplicate `command -v bash` reassignment. All output
bytes, exit codes, and assertions unchanged; each change adversarially refutation-verified
(20k-case differential fuzz on the scanner).

## [0.40.12]

### Changed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def recoverable(unit: str, source: str) -> bool:
nsrc = normalize(source)
if len(nunit) < 24:
return False
if nunit and nunit in nsrc:
if nunit in nsrc:
return True
utoks = content_tokens(unit)
stoks = content_tokens(source)
Expand Down Expand Up @@ -309,10 +309,6 @@ def main(argv: list[str]) -> int:
help="accepted for flag-parity with instruction-scan.sh; I29 is body-scoped by construction",
)
args = parser.parse_args(argv)
if not args.files:
if args.count:
print(0)
return 0
rows: list[str] = []
for raw in args.files:
p = Path(raw)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,12 +215,11 @@ done
# spawn is the surprise the opt-in flag exists to prevent.
NOTICE_STUB="$TEST_TMPDIR/notice-stub"
mkdir -p "$NOTICE_STUB"
real_bash_n="$(command -v bash)"
printf '#!%s
printf "stub critique output.\n"
' "$real_bash_n" >"$NOTICE_STUB/claude"
' "$real_bash" >"$NOTICE_STUB/claude"
chmod +x "$NOTICE_STUB/claude"
OUT_NOTICE=$(env AUTOMODE_CONFIG_FIXTURE="$CONFIG" AUTOMODE_DEFAULTS_FIXTURE="$DEFAULTS" PATH="$NOTICE_STUB:$PATH" bash "$SCRIPT" --critique 2>&1)
OUT_NOTICE=$(env AUTOMODE_CONFIG_FIXTURE="$CONFIG" AUTOMODE_DEFAULTS_FIXTURE="$DEFAULTS" PATH="$NOTICE_STUB:$PATH" bash "$SCRIPT" --critique 2>&1)
assert_contains "the critique spawn prints a cost notice" "$OUT_NOTICE" "CRITIQUE COST NOTICE"
assert_contains "the notice says nothing has been spawned yet" "$OUT_NOTICE" "nothing has been spawned yet"

Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-ops/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "claude-ops",
"version": "0.38.12",
"version": "0.38.13",
"description": "Claude Code operations toolkit. Twelve skills: audit-skill-visibility (audit whether each installed skill is actually VISIBLE to the model, and diagnose why most of a fleet never gets used \u2014 a skill is invisible when its description is dropped by Claude Code's skill-listing context budget, which drops descriptions least-invoked-first so an unused skill loses the keywords that would let it be matched, from skills genuinely not wanted, from skills the run cannot observe at all; computes whether the listing overflows from documented settings, and withholds every cold verdict the data cannot support rather than reporting absence of data as absence of use), inventory (read-only enumeration of the complete invocable surface \u2014 every built-in CLI command with aliases and hidden/gated status, every bundled skill, and every component of every installed plugin across all marketplaces; reads the shipped binary because upstream publishes no built-in command list, and carries an integrity verdict so a drifted build reports counts as floors rather than silently short totals), audit-install-state (read-only audit of the machine-scope ~/.claude installation directory and ~/.claude.json \u2014 full inventory split into an authored surface and rolled-up bulk trees, product-managed retention vs genuinely unmanaged state, filename-scheme resolution before any process-liveness check, and deliberate/mid-experiment detection; reports, never deletes), audit-performance (read-only slowness-diagnostic capture run at the moment the machine or a session feels slow: CLI version, retention-sweep health including the silent unparsable-settings pause, a timed census walk of the install tree as a sweep-cost proxy, active-session and plugin-fleet counts, a process census, and the fan-out layer, which covers a load-labelled no-op spawn baseline, every hook that will fire bucketed per-tool-call versus per-turn with its invocation shape, the configured statusline, subagent concurrency and spawn-depth ceilings against documented defaults, whether running sessions predate the settings file they are judged by, and orphan attribution by parent liveness rather than age; read against a bundled known-performance-issues reference that also records the causes tested and cleared; separates the four documented suspects of accumulated state, version regression, component bloat, and per-spawn fan-out cost, and routes remediation out; reports, never mutates, and never executes a discovered hook or statusline command), audit-native-overlap (map native Claude Code surfaces \u2014 built-in CLI commands, bundled skills, plugin-backed built-ins, session-provided skills \u2014 against the current repo's plugin skills and agents, so a custom component never silently duplicates what Claude Code itself ships; bare invocation is a read-only overlap report carrying the extraction's integrity floors and a shared-listing-budget exposure section, verdicts are human-gated in a committed store rendered into a generated registry whose every row carries an observable recheck trigger, and only an explicit apply step bakes presence-gated native references into descriptions and Boundary sections), observability (read locally captured telemetry \u2014 OTEL store, collector, hook-event JSONL, ccusage \u2014 with trend reports and store pruning), known-issues (search known Claude product GitHub bugs, check service health, maintain a persistent tracked-issue registry), changelog (ingest Claude Code changelog entries and integrate them into the current repo), plugins (bring a machine's plugin fleet current on demand \u2014 marketplace refresh, effective-scope updates including in-repo project/local installs, new-plugin install per policy, scope-divergence detection and explicit convergence), morning-brief (read-only gh-based operator morning view \u2014 queue-label counts, merge-ready PRs, parked decisions with their RECOMMENDED lines, and loop-lane telemetry freshness), lanes (start/restart/stop/status loop lanes as named background Claude Code sessions seeded from canonical prompt files, with per-lane model/effort, a repo-pull + marketplace-refresh launch step, and a consume-restarts action \u2014 an OS-schedulable reader that relaunches stopped lanes whose telemetry carries a restart_request), and a re-runnable setup action that settles where the known-issues registry lives. Plus a family of eight advisory *-audit hooks (API errors, config changes, instruction loads, permission denials, pre-compaction, skill usage, tool failures, and unsurfaced hook failures \u2014 the last also warns the user via systemMessage, since a hook that fails to launch enforces nothing and Claude Code surfaces the failure to nobody) that emit the shared hook-telemetry envelope, and a reference sink that maps envelopes into the hook-events.jsonl the observability skill reads.",
"author": {
"name": "Melodic Software",
Expand Down
11 changes: 11 additions & 0 deletions plugins/claude-ops/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
All notable changes to the `claude-ops` plugin are documented here. Format follows
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning.

## [0.38.13]

### Changed

- **Behavior-preserving simplification sweep (batch-simplify).** `inventory`'s inventory.py
hoists the duplicated `candidate_binaries()` call into one reused snapshot and normalizes a
docstring's em dashes to the file's hyphen idiom (plus formatter-hook layout churn, AST-verified
neutral); `plugins`'s normalize-enabled-plugins.sh drops a dead `shellcheck disable=SC2064`
directive above a single-quoted trap. Emitted JSON, exit codes, and suite assertions unchanged;
refutation-verified byte-identical on smoke runs.

## [0.38.12]

### Changed
Expand Down
Loading