@event4u/agent-config 8.11.0 → 8.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +49 -279
- package/README.md +2 -2
- package/dist/agent-src/contexts/execution/roadmap-ci-steps-mechanics.md +117 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +106 -94
- package/dist/agent-src/rules/architecture.md +6 -51
- package/dist/agent-src/rules/code-comment-discipline.md +10 -94
- package/dist/agent-src/rules/decision-revisit-gate.md +9 -77
- package/dist/agent-src/rules/improve-before-implement.md +7 -66
- package/dist/agent-src/rules/no-roadmap-references.md +13 -77
- package/dist/agent-src/rules/persona-governance.md +5 -47
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +6 -32
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +21 -104
- package/dist/agent-src/rules/untrusted-input-defense.md +3 -75
- package/dist/agent-src/skills/agent-docs-writing/SKILL.md +83 -0
- package/dist/agent-src/skills/decision-review/SKILL.md +86 -0
- package/dist/agent-src/skills/module-detect-on-the-fly/SKILL.md +58 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/contexts/knowledge-card.md +12 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +14 -14
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/mcp/registry-manifest.json +1 -1
- package/dist/router.json +1 -1
- package/docs/CLAIMS.md +30 -2
- package/docs/architecture.md +1 -1
- package/docs/archive/CHANGELOG-pre-8.12.0.md +304 -0
- package/docs/benchmark.md +39 -0
- package/docs/contracts/ai-council-config.md +9 -4
- package/docs/contracts/persona-schema.md +49 -0
- package/docs/contracts/provider-lifecycle.md +29 -4
- package/docs/decisions/ADR-120-council-chairman-mode.md +70 -0
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +90 -0
- package/docs/decisions/INDEX.md +2 -0
- package/docs/design/council-vs-solo-baseline.md +92 -0
- package/docs/design/utilization-window-criteria.md +51 -0
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +68 -0
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
- package/docs/guidelines/agent-infra/untrusted-input-spotlighting.md +80 -3
- package/docs/guidelines/code-clarity.md +86 -1
- package/docs/maintainers/branch-protection.md +87 -0
- package/docs/maintainers/system-map.md +85 -0
- package/docs/proof.md +14 -3
- package/package.json +1 -1
- package/src/config/agent-settings.template.yml +9 -0
- package/src/scripts/_cli/cmd_doctor.ts +95 -0
- package/src/scripts/_lib/knowledge_global.ts +44 -0
- package/src/scripts/_lib/knowledge_global_promote.ts +150 -0
- package/src/scripts/ai_council/orchestrator.ts +188 -1
- package/src/scripts/bench_persona_placebo.ts +308 -0
- package/src/scripts/bench_quality_rerun.ts +357 -0
- package/src/scripts/build_proof.ts +9 -0
- package/src/scripts/check_artefact_count_messaging.ts +56 -0
- package/src/scripts/check_knowledge_cards.ts +33 -4
- package/src/scripts/check_portability.ts +1 -0
- package/src/scripts/complexity_report.ts +776 -0
- package/src/scripts/consumer_matrix.ts +251 -12
- package/src/scripts/council_cli.ts +56 -1
- package/src/scripts/explain_run.ts +593 -0
- package/src/scripts/knowledge_global_cli.ts +234 -45
- package/src/scripts/rule_backlinks.ts +0 -0
|
@@ -270,6 +270,89 @@ mv agents/tmp/<filename> agents/tmp.old/<filename>
|
|
|
270
270
|
|
|
271
271
|
See `docs/contracts/agents-layout.md § User Inbox Workflow`.
|
|
272
272
|
|
|
273
|
+
## Transient-reference discipline — mechanics (migrated from the `no-roadmap-references` rule)
|
|
274
|
+
|
|
275
|
+
Body of [`no-roadmap-references`](../../rules/no-roadmap-references.md)
|
|
276
|
+
(per P4 of `road-to-kernel-and-router.md`). The Iron Law — never link a
|
|
277
|
+
specific `agents/roadmaps/` or `agents/runtime/council/` file from a stable
|
|
278
|
+
artifact — stays in the rule; the pattern catalog lives here.
|
|
279
|
+
|
|
280
|
+
### Forbidden patterns
|
|
281
|
+
|
|
282
|
+
These paths must not appear inside a stable artifact:
|
|
283
|
+
|
|
284
|
+
- `agents/roadmaps/<file>.md`, `agents/roadmaps/archive/<file>.md`,
|
|
285
|
+
`agents/roadmaps/skipped/<file>.md`
|
|
286
|
+
- `agents/runtime/council/questions/<file>.md`,
|
|
287
|
+
`agents/runtime/council/responses/<file>.json`,
|
|
288
|
+
`agents/runtime/council/sessions/<file>.json` or `<timestamp>/...`
|
|
289
|
+
|
|
290
|
+
Stable artifact = any file under `src/{rules,skills,domains}/`,
|
|
291
|
+
`src/agent-src/{contexts,templates,personas}/`, `agents/settings/contexts/`,
|
|
292
|
+
`docs/guidelines/`, `docs/contracts/`, `docs/architecture.md`,
|
|
293
|
+
`docs/customization.md`, `docs/getting-started.md`, `docs/catalog.md`,
|
|
294
|
+
`AGENTS.md`, `README.md`, `copilot-instructions.md`.
|
|
295
|
+
|
|
296
|
+
CI enforcement: `scripts/check_no_roadmap_refs.ts` (roadmap layer)
|
|
297
|
+
and `scripts/check_council_references.ts` (council layer) — both
|
|
298
|
+
fail the build on any new violation.
|
|
299
|
+
|
|
300
|
+
### Allowed patterns
|
|
301
|
+
|
|
302
|
+
- `agents/roadmaps/` and `agents/runtime/council/` subdirs as **directory**
|
|
303
|
+
mentions (talking about the layer, not a specific file)
|
|
304
|
+
- Roadmap → roadmap references (siblings within the transient layer)
|
|
305
|
+
- The `ai-council` skill and `/council:*` commands documenting the
|
|
306
|
+
output path schema
|
|
307
|
+
- Inline council convergence summary — e.g. *"Council
|
|
308
|
+
(claude-sonnet-4-5 + gpt-4o, 2026-05-06) converged on …"* with
|
|
309
|
+
date + members, no filepath
|
|
310
|
+
- Council sessions, `agents/runtime/.agent-chat-history`, commit messages, PR
|
|
311
|
+
descriptions — transient by construction, not part of the package
|
|
312
|
+
surface
|
|
313
|
+
|
|
314
|
+
### Structural carve-outs (immutable inputs / decision provenance)
|
|
315
|
+
|
|
316
|
+
Two source/target shapes are exempt from the council-link ban
|
|
317
|
+
because the target is **immutable input** or **decision provenance**,
|
|
318
|
+
not transient drafting state. The linter implements these directly
|
|
319
|
+
(`STRUCTURAL_CARVEOUTS` in `scripts/check_council_references.ts`);
|
|
320
|
+
they do **not** need an inline `<!-- council-ref-allowed: ... -->`
|
|
321
|
+
pragma.
|
|
322
|
+
|
|
323
|
+
| Source | Target | Why |
|
|
324
|
+
| --- | --- | --- |
|
|
325
|
+
| `agents/settings/contexts/evaluation-*.md` | `agents/runtime/council/questions/<question>.md` | Question file is a frozen function-parameter / spend-gate input, not documentation. |
|
|
326
|
+
| `docs/contracts/*.md` | `agents/runtime/council/sessions/<ts>/synthesis.md` | Synthesis is the audit-trail receipt; contract inlines the decision body itself. |
|
|
327
|
+
|
|
328
|
+
Driven by the 2026-05-14 P3.4 council round (claude-sonnet-4-5 +
|
|
329
|
+
gpt-4o, converged on rule refactor over escape-hatch overuse). Any
|
|
330
|
+
other source/target combination still needs an inline pragma or
|
|
331
|
+
inline-summary rewrite.
|
|
332
|
+
|
|
333
|
+
### What to do instead
|
|
334
|
+
|
|
335
|
+
When a stable artifact needs to cite a transient finding:
|
|
336
|
+
|
|
337
|
+
1. Identify the durable conclusion — decision, contract, lesson,
|
|
338
|
+
mechanic.
|
|
339
|
+
2. Promote it to a context file under `agents/settings/contexts/` (ADR,
|
|
340
|
+
mechanics doc, locked decision). The roadmap or council session
|
|
341
|
+
can then point at the context, not the other way around.
|
|
342
|
+
3. Reference the context from the stable artifact.
|
|
343
|
+
4. For council convergences specifically: inline a convergence-summary
|
|
344
|
+
block (members, date, cost if relevant — see
|
|
345
|
+
[`ai-council`](../ai-council/SKILL.md) § Output format) instead of
|
|
346
|
+
linking the session JSON.
|
|
347
|
+
|
|
348
|
+
Failure modes:
|
|
349
|
+
|
|
350
|
+
- *"I'll just link to the roadmap, it's evidence."* The roadmap
|
|
351
|
+
gets archived, then deleted, then the link rots. **Promote first,
|
|
352
|
+
link second.**
|
|
353
|
+
- *"I'll just link to the session JSON, it's evidence."* The session
|
|
354
|
+
is gone in 7 days. **Inline first, link never.**
|
|
355
|
+
|
|
273
356
|
## Do NOT
|
|
274
357
|
|
|
275
358
|
- Do NOT create docs unless there's a real need (new module, significant change).
|
|
@@ -173,8 +173,94 @@ strengthening evidence.
|
|
|
173
173
|
`skipped` (stale — age > `review_after_days`), surface them to
|
|
174
174
|
the user; do not silently use stale entries as if they were current.
|
|
175
175
|
|
|
176
|
+
## Decision-revisit gate — mechanics (migrated from the `decision-revisit-gate` rule)
|
|
177
|
+
|
|
178
|
+
Body of [`decision-revisit-gate`](../../rules/decision-revisit-gate.md)
|
|
179
|
+
(per P4 of `road-to-kernel-and-router.md`). The Iron Law — benefit blocked
|
|
180
|
+
by a lock → surface + offer re-evaluation, never silent compliance — stays
|
|
181
|
+
in the rule; the lock catalog, fire steps, and failure modes live here.
|
|
182
|
+
|
|
183
|
+
### What counts as a "lock"
|
|
184
|
+
|
|
185
|
+
- An eval verdict recorded as an honest null (a mechanism was tested,
|
|
186
|
+
showed no lift, and the disposition says "don't rebuild without new
|
|
187
|
+
evidence").
|
|
188
|
+
- A memory entry or `agents/settings/contexts/` note tagged "don't
|
|
189
|
+
relitigate" / "settled" / a locked council convergence.
|
|
190
|
+
- A budget or frugality-canon line (`token-budget-discipline`,
|
|
191
|
+
`telegraph-speak`, thin-projector trimming) that rejects a change on
|
|
192
|
+
cost grounds alone.
|
|
193
|
+
- An ADR whose decision is being cited as a blocker for the current change.
|
|
194
|
+
- A **hard structural cap** (kernel size, per-domain persona cap, rich-skill
|
|
195
|
+
ratio). A change that genuinely *qualifies* to cross the cap — e.g. a new
|
|
196
|
+
rule that truly meets the kernel-membership inclusion criteria — triggers a
|
|
197
|
+
**cap-raise proposal + maintainer/council approval**, never a silent
|
|
198
|
+
downgrade of the rule to fit the old number (e.g. demoting a must-always-fire
|
|
199
|
+
rule to `auto` just because the kernel says 9). Fitting the cap is not a
|
|
200
|
+
reason to weaken a qualifying rule; but a rule that does **not** meet the
|
|
201
|
+
criteria stays out — the cap is not the reason, the criteria are.
|
|
202
|
+
|
|
203
|
+
### What to do when it fires
|
|
204
|
+
|
|
205
|
+
1. **Mechanism-match check — do this FIRST.** A verdict settles the
|
|
206
|
+
*mechanism it tested*, not every future proposal that resembles it.
|
|
207
|
+
Before applying the lock, verify the blocked change is actually the
|
|
208
|
+
same mechanism — not merely a similar-sounding one. A null on
|
|
209
|
+
hardened blocking enforcement does not automatically cover
|
|
210
|
+
discretionary contextual nudges; a null on one architecture does not
|
|
211
|
+
cover a materially different one. If the mechanism differs, the lock
|
|
212
|
+
does not apply — proceed, noting the distinction.
|
|
213
|
+
2. **If the mechanism genuinely matches**, do not silently comply.
|
|
214
|
+
Surface, in one short block:
|
|
215
|
+
- What change is blocked.
|
|
216
|
+
- Which lock blocks it (cite the memory/context/ADR).
|
|
217
|
+
- Under what conditions the lock was recorded (date, evidence, or
|
|
218
|
+
"maintainer decision" if settled-by-decision rather than
|
|
219
|
+
settled-by-evidence).
|
|
220
|
+
- What has changed since (new evidence, new model generation, new
|
|
221
|
+
tooling, repeated encounters) that makes revisiting worth the cost.
|
|
222
|
+
3. **Offer numbered options** (per [`user-interaction`](../../rules/user-interaction.md)),
|
|
223
|
+
always including: re-evaluate the lock in the AI council. Other
|
|
224
|
+
options: keep the lock as-is, or proceed without the blocked change.
|
|
225
|
+
4. **On re-evaluation:** run this skill's Procedure above for the
|
|
226
|
+
backward audit and route to [`ai-council`](../ai-council/SKILL.md)
|
|
227
|
+
for the debate mechanics. The rule owns the obligation to surface;
|
|
228
|
+
this skill and the council own the procedure.
|
|
229
|
+
5. **Record the outcome** with scope + `revisit-if` per
|
|
230
|
+
[`ai-council`](../ai-council/SKILL.md)'s convergence-summary
|
|
231
|
+
contract — every re-evaluated lock gets a fresh, correctly-scoped
|
|
232
|
+
disposition, not a re-statement of the old one.
|
|
233
|
+
|
|
234
|
+
### When NOT to fire
|
|
235
|
+
|
|
236
|
+
- The blocked change has no real benefit — the gate is not a lever to
|
|
237
|
+
reopen every settled question; [`no-cheap-questions`](../../rules/no-cheap-questions.md)
|
|
238
|
+
still governs whether the resulting numbered-options block is a real
|
|
239
|
+
question or noise. A revisit-offer with a genuine trade-off is never
|
|
240
|
+
a "cheap question" under that rule — but a revisit-offer with no
|
|
241
|
+
actual case for change is.
|
|
242
|
+
- The mechanism-match check (step 1) shows the lock is the same
|
|
243
|
+
mechanism and no new evidence exists — apply the lock, no surfacing
|
|
244
|
+
needed; this is the lock working as intended.
|
|
245
|
+
- The user already declined a revisit on this exact lock this
|
|
246
|
+
conversation — per [`scope-control § Decline = silence`](../../rules/scope-control.md),
|
|
247
|
+
do not re-ask.
|
|
248
|
+
|
|
249
|
+
### Failure modes
|
|
250
|
+
|
|
251
|
+
- Treating a "don't relitigate" memory as permanently closed instead of
|
|
252
|
+
as settled-under-conditions-X.
|
|
253
|
+
- Applying a null verdict to a superficially similar but architecturally
|
|
254
|
+
different mechanism without running the mechanism-match check.
|
|
255
|
+
- Letting the token-frugality canon auto-reject a net-positive change
|
|
256
|
+
without surfacing the trade-off — see [`token-budget-discipline`](../../rules/token-budget-discipline.md)'s
|
|
257
|
+
value-over-budget clause.
|
|
258
|
+
- Silently dropping a good idea because "we already decided this" —
|
|
259
|
+
the canonical failure the gate exists to stop.
|
|
260
|
+
|
|
176
261
|
## See also
|
|
177
262
|
|
|
263
|
+
- [`decision-revisit-gate`](../../rules/decision-revisit-gate.md) — the rule whose migrated mechanics live above.
|
|
178
264
|
- [`decision-record`](../decision-record/SKILL.md) — forward flow: lock a new choice.
|
|
179
265
|
- [`adr-create`](../adr-create/SKILL.md) — file the ADR after a decision is locked.
|
|
180
266
|
- [`blameless-post-mortem`](../blameless-post-mortem/SKILL.md) — incident review; may hand off to decision-review when a prior architectural choice is implicated.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: module-detect-on-the-fly
|
|
4
|
-
description: "Use when editing a
|
|
4
|
+
description: "Use when editing a module-shaped path (`Modules/*`, `packages/*`, `apps/*`) while `modules.enabled` is false — asks once to enable it; also the project/stack + task-runner detection reference."
|
|
5
5
|
domain: process
|
|
6
6
|
workspaces:
|
|
7
7
|
- agent-config-maintainer
|
|
@@ -119,6 +119,63 @@ Confirm both flags via `get_modules_config()` before running detection.
|
|
|
119
119
|
the options block, continue the work and treat the project as flat
|
|
120
120
|
for the rest of the session.
|
|
121
121
|
|
|
122
|
+
## Project & module detection reference
|
|
123
|
+
|
|
124
|
+
_Origin: migrated from `src/rules/architecture.md` per the P4 pattern of `road-to-kernel-and-router.md`. The rule keeps the Iron-Law block, General Principles, and the ADR paragraph; the detection mechanics live here._
|
|
125
|
+
|
|
126
|
+
### Project detection
|
|
127
|
+
|
|
128
|
+
Detect the current project type from the **Git remote URL**, **directory name**, or **project files**:
|
|
129
|
+
|
|
130
|
+
- **PHP** — `composer.json` (framework slot: Laravel via `artisan`, Symfony via `bin/console`, standalone otherwise).
|
|
131
|
+
- **JS / TS** — `package.json` (framework slot: Next.js via `next` dep, Nuxt via `nuxt`, Express / Fastify / NestJS via deps; plain Node otherwise).
|
|
132
|
+
- **Python** — `pyproject.toml` / `requirements.txt` (framework slot: Django via `django`, FastAPI via `fastapi`, Flask via `flask`).
|
|
133
|
+
- **Go** — `go.mod` (framework slot: `gin`, `echo`, `fiber`, stdlib `net/http`).
|
|
134
|
+
- **Ruby** — `Gemfile` (framework slot: Rails via `rails` gem, Sinatra otherwise).
|
|
135
|
+
- **Rust** — `Cargo.toml` (framework slot: `axum`, `actix-web`, `rocket`).
|
|
136
|
+
- Check `AGENTS.md` or `agents/` for project-specific documentation.
|
|
137
|
+
|
|
138
|
+
Tooling lives in a runner file at the project root — detect once and reuse the result:
|
|
139
|
+
`Taskfile.yml` → `task`, `Makefile` → `make`, `package.json` `scripts:` → `npm` / `pnpm` / `yarn`, `pyproject.toml` `[tool.poetry.scripts]` or `[project.scripts]` → `poetry` / `uv`, framework CLIs (`artisan`, `bin/console`, `manage.py`, `bin/rails`) when the matching manifest is present.
|
|
140
|
+
|
|
141
|
+
### Project-specific architecture docs
|
|
142
|
+
|
|
143
|
+
Each project documents its own architecture in `./agents/` and/or `AGENTS.md`.
|
|
144
|
+
**Always read those files** before making structural decisions. Do not rely on
|
|
145
|
+
generic rules for project-specific directory layouts, database conventions, or
|
|
146
|
+
module systems.
|
|
147
|
+
|
|
148
|
+
### Module-level documentation
|
|
149
|
+
|
|
150
|
+
Some projects use a module system (e.g. `app/Modules/` in Laravel, `apps/`/`packages/` in a Turborepo, `src/modules/` in NestJS, `internal/` in Go).
|
|
151
|
+
Module roots and the per-module agent-docs folder are configured via
|
|
152
|
+
`modules.root_paths` and `modules.agent_folder` in `.agent-settings.yml`
|
|
153
|
+
(resolve at runtime via `scripts/_lib/agent_settings.ts::enumerate_modules()`).
|
|
154
|
+
Modules may have their own agent docs under
|
|
155
|
+
`{module_root}/*/{agent_folder}/` (Laravel shape: `app/Modules/*/agents/`) with:
|
|
156
|
+
|
|
157
|
+
- Module descriptions and feature docs
|
|
158
|
+
- Module-specific roadmaps (`agents/roadmaps/`)
|
|
159
|
+
- Module-specific documentation (`Docs/`)
|
|
160
|
+
|
|
161
|
+
When working on a module, **always check for module-level agent docs** first.
|
|
162
|
+
|
|
163
|
+
### Packages
|
|
164
|
+
|
|
165
|
+
Packages (Composer, npm, etc.) may also use `./agents/` in their root
|
|
166
|
+
for package-specific docs and roadmaps. Treat them the same way as projects.
|
|
167
|
+
|
|
168
|
+
### Build / task runner detection
|
|
169
|
+
|
|
170
|
+
Projects use either `Makefile` or `Taskfile.yml` (or both) for common commands.
|
|
171
|
+
**Always check which one exists** and read it to discover available targets for
|
|
172
|
+
testing, quality checks, container access, migrations, etc.
|
|
173
|
+
|
|
174
|
+
- `Makefile` → use `make <target>`
|
|
175
|
+
- `Taskfile.yml` → use `task <target>`
|
|
176
|
+
|
|
177
|
+
Prefer these targets over raw `docker compose exec` commands when available.
|
|
178
|
+
|
|
122
179
|
## See also
|
|
123
180
|
|
|
124
181
|
- `module-management` — the active skill once modules are configured.
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "8.
|
|
42
|
+
agent_config_version: "8.12.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -7,6 +7,18 @@ trust: durable
|
|
|
7
7
|
# Optional for project-local cards; required (plus a provenance footer) once a
|
|
8
8
|
# card is promoted to the global store. Resolve via knowledge_global.classify_tier.
|
|
9
9
|
tier: "<public | vendor | proprietary>"
|
|
10
|
+
# sensitivity — orthogonal to tier: WHETHER this card may ever leave the
|
|
11
|
+
# project at all (tier is WHERE it came from). Phase 1, road-to-feedback-8.11
|
|
12
|
+
# / successor note to ADR-119. Three machine-anchored classes:
|
|
13
|
+
# prohibited = contains redaction-class content; never leaves the repo
|
|
14
|
+
# (machine-derived from the redaction scan — never hand-set).
|
|
15
|
+
# project = DEFAULT. Stays project-local; promotion refused unless a
|
|
16
|
+
# human explicitly reclassifies the card to `shareable`.
|
|
17
|
+
# shareable = eligible for the global store; must pass redaction AND
|
|
18
|
+
# carry full promotion provenance (see the footer once
|
|
19
|
+
# promoted: source_repo, owner, review_after, promotion_reason).
|
|
20
|
+
# Required (and machine-checked) once a card is promoted to the global store.
|
|
21
|
+
sensitivity: "project"
|
|
10
22
|
origin: "<brief description — e.g. npm package / remote API / legacy DB>"
|
|
11
23
|
url: "<canonical upstream URL>"
|
|
12
24
|
ref: "<pinned version tag or commit SHA — never blind main>"
|
|
@@ -4945,7 +4945,7 @@
|
|
|
4945
4945
|
},
|
|
4946
4946
|
{
|
|
4947
4947
|
"category": "rule",
|
|
4948
|
-
"checksum": "sha256:
|
|
4948
|
+
"checksum": "sha256:93f763246cf4e462db9c4d54fc033ffb9c0ce5865a2e25b6b0381a84308f04ff",
|
|
4949
4949
|
"install": {
|
|
4950
4950
|
"default": true,
|
|
4951
4951
|
"removable": false
|
|
@@ -5177,7 +5177,7 @@
|
|
|
5177
5177
|
},
|
|
5178
5178
|
{
|
|
5179
5179
|
"category": "rule",
|
|
5180
|
-
"checksum": "sha256:
|
|
5180
|
+
"checksum": "sha256:c642c0a5798b5bfed082b9c2e86e4c3f8830e2971d1bba12df59094e060ee6da",
|
|
5181
5181
|
"install": {
|
|
5182
5182
|
"default": true,
|
|
5183
5183
|
"removable": false
|
|
@@ -5382,7 +5382,7 @@
|
|
|
5382
5382
|
},
|
|
5383
5383
|
{
|
|
5384
5384
|
"category": "rule",
|
|
5385
|
-
"checksum": "sha256:
|
|
5385
|
+
"checksum": "sha256:f09f13f41eab26421f29cc731f8b1b737f9f37079c913416ba686bc9d45a8bc2",
|
|
5386
5386
|
"install": {
|
|
5387
5387
|
"default": true,
|
|
5388
5388
|
"removable": false
|
|
@@ -5867,7 +5867,7 @@
|
|
|
5867
5867
|
},
|
|
5868
5868
|
{
|
|
5869
5869
|
"category": "rule",
|
|
5870
|
-
"checksum": "sha256:
|
|
5870
|
+
"checksum": "sha256:b5477c078fa690cfd61150f3dc7d79dbac6397517d283bec29948c506a1dc9c8",
|
|
5871
5871
|
"install": {
|
|
5872
5872
|
"default": true,
|
|
5873
5873
|
"removable": false
|
|
@@ -6329,7 +6329,7 @@
|
|
|
6329
6329
|
},
|
|
6330
6330
|
{
|
|
6331
6331
|
"category": "rule",
|
|
6332
|
-
"checksum": "sha256:
|
|
6332
|
+
"checksum": "sha256:b4f586610cd51268c9bdb8360a798642244d9b2d2521bf5100298bbdce1ec3fc",
|
|
6333
6333
|
"install": {
|
|
6334
6334
|
"default": true,
|
|
6335
6335
|
"removable": false
|
|
@@ -6465,7 +6465,7 @@
|
|
|
6465
6465
|
},
|
|
6466
6466
|
{
|
|
6467
6467
|
"category": "rule",
|
|
6468
|
-
"checksum": "sha256:
|
|
6468
|
+
"checksum": "sha256:3878d1b74420f68e2681b636718f60a3a8b3cb224cd5df1b74936d824e74bf6c",
|
|
6469
6469
|
"install": {
|
|
6470
6470
|
"default": true,
|
|
6471
6471
|
"removable": false
|
|
@@ -6549,7 +6549,7 @@
|
|
|
6549
6549
|
},
|
|
6550
6550
|
{
|
|
6551
6551
|
"category": "rule",
|
|
6552
|
-
"checksum": "sha256:
|
|
6552
|
+
"checksum": "sha256:d6e74bc3809c7b9d0a692bafae238c905e16c812fa4ffe884d37dbb419e3f90d",
|
|
6553
6553
|
"install": {
|
|
6554
6554
|
"default": true,
|
|
6555
6555
|
"removable": false
|
|
@@ -6616,7 +6616,7 @@
|
|
|
6616
6616
|
},
|
|
6617
6617
|
{
|
|
6618
6618
|
"category": "rule",
|
|
6619
|
-
"checksum": "sha256:
|
|
6619
|
+
"checksum": "sha256:db20269002f94ba1564050797367485a33264fba95a37cef8dfe23cba460e4d0",
|
|
6620
6620
|
"install": {
|
|
6621
6621
|
"default": true,
|
|
6622
6622
|
"removable": false
|
|
@@ -7174,7 +7174,7 @@
|
|
|
7174
7174
|
},
|
|
7175
7175
|
{
|
|
7176
7176
|
"category": "rule",
|
|
7177
|
-
"checksum": "sha256:
|
|
7177
|
+
"checksum": "sha256:1a7625fcb13e1268adf9cfe417a3b3de13edd1d4a60a9a849345ab7e2120c102",
|
|
7178
7178
|
"install": {
|
|
7179
7179
|
"default": true,
|
|
7180
7180
|
"removable": false
|
|
@@ -7386,7 +7386,7 @@
|
|
|
7386
7386
|
},
|
|
7387
7387
|
{
|
|
7388
7388
|
"category": "skill",
|
|
7389
|
-
"checksum": "sha256:
|
|
7389
|
+
"checksum": "sha256:88c6ff8281b0ee68b5d6d9402bd4b39087f7fb05e5ad92957fd24a63ee0f4032",
|
|
7390
7390
|
"install": {
|
|
7391
7391
|
"default": true,
|
|
7392
7392
|
"removable": false
|
|
@@ -8640,7 +8640,7 @@
|
|
|
8640
8640
|
},
|
|
8641
8641
|
{
|
|
8642
8642
|
"category": "skill",
|
|
8643
|
-
"checksum": "sha256:
|
|
8643
|
+
"checksum": "sha256:21fe1e1cab3bf7e739a0e3dbfe48ec60c0da59caae1c791b7003e1ccb1f6f42e",
|
|
8644
8644
|
"install": {
|
|
8645
8645
|
"default": false,
|
|
8646
8646
|
"removable": true
|
|
@@ -10642,7 +10642,7 @@
|
|
|
10642
10642
|
},
|
|
10643
10643
|
{
|
|
10644
10644
|
"category": "skill",
|
|
10645
|
-
"checksum": "sha256:
|
|
10645
|
+
"checksum": "sha256:da0978b98607af3fb63fee16e5fa45e9b79a62803678518fbedd6aec3165e647",
|
|
10646
10646
|
"install": {
|
|
10647
10647
|
"default": true,
|
|
10648
10648
|
"removable": false
|
|
@@ -13277,7 +13277,7 @@
|
|
|
13277
13277
|
"workspaces": []
|
|
13278
13278
|
}
|
|
13279
13279
|
],
|
|
13280
|
-
"checksum": "sha256:
|
|
13280
|
+
"checksum": "sha256:56deb428fad47a9e6ba6ba1abd224d75de548b62783275e3766d23dff86f5709",
|
|
13281
13281
|
"deprecations": [
|
|
13282
13282
|
{
|
|
13283
13283
|
"key": "tier",
|
|
@@ -13420,7 +13420,7 @@
|
|
|
13420
13420
|
"reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
|
|
13421
13421
|
}
|
|
13422
13422
|
],
|
|
13423
|
-
"generated_at": "2026-07-
|
|
13423
|
+
"generated_at": "2026-07-12T13:30:17Z",
|
|
13424
13424
|
"packs": [
|
|
13425
13425
|
{
|
|
13426
13426
|
"artefact_count": 105,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
e086e9b77bd9a0446fe86ca182d410759d46295fbb58e85044bde42b0310b165 discovery-manifest.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-07-
|
|
2
|
+
"checksum": "sha256:56deb428fad47a9e6ba6ba1abd224d75de548b62783275e3766d23dff86f5709",
|
|
3
|
+
"generated_at": "2026-07-12T13:30:17Z",
|
|
4
4
|
"packs": [
|
|
5
5
|
{
|
|
6
6
|
"always_on": false,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-07-
|
|
2
|
+
"checksum": "sha256:56deb428fad47a9e6ba6ba1abd224d75de548b62783275e3766d23dff86f5709",
|
|
3
|
+
"generated_at": "2026-07-12T13:30:17Z",
|
|
4
4
|
"scanner_version": "c24312e116f8",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
{
|