@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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 121
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-07-12
|
|
5
|
+
decision: knowledge-sensitivity-classes
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: feedback-8.11
|
|
9
|
+
type: structural
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-121 — Per-card sensitivity classes for the knowledge boundary
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
Accepted (2026-07-12). Successor note to ADR-119 (global knowledge sharing
|
|
17
|
+
default ON) — adds boundary teeth; does NOT revert the flip.
|
|
18
|
+
|
|
19
|
+
## Context
|
|
20
|
+
|
|
21
|
+
The 8.11.0 external reviews and the maintainer both name cross-project
|
|
22
|
+
context transfer as the riskiest open surface of the ADR-119 flip: the only
|
|
23
|
+
per-entry axis was origin tier (`public|vendor|proprietary` — where knowledge
|
|
24
|
+
came from), the binary page flag `visibility: private`, and a write-time
|
|
25
|
+
regex redaction gate. There was NO sensitivity taxonomy (how far an entry may
|
|
26
|
+
travel), no per-card owner/expiry on shared cards, no promotion-reason
|
|
27
|
+
capture, and no revocation trail — deletion was silent.
|
|
28
|
+
|
|
29
|
+
A two-round council debate (anthropic/claude-sonnet-4-5 + openai/gpt-4o,
|
|
30
|
+
2026-07-12) split on scope: one member argued measure-first with a 2-level
|
|
31
|
+
enum at most (six classes over-fit a single-maintainer install — `team` /
|
|
32
|
+
`organization` are phantom categories today); the other argued the full
|
|
33
|
+
six-class taxonomy from the reviews. Resolution: a SMALL machine-anchored
|
|
34
|
+
axis now (the maintainer's danger is present, not speculative), the wider
|
|
35
|
+
enum behind a revisit-if.
|
|
36
|
+
|
|
37
|
+
## Decision
|
|
38
|
+
|
|
39
|
+
Three sensitivity classes, each anchored to a machine check
|
|
40
|
+
(`agents/settings/contexts/knowledge-sensitivity.md` carries the full table):
|
|
41
|
+
|
|
42
|
+
- `prohibited` — redaction-class content; a redaction hit FORCES this class
|
|
43
|
+
(declared values cannot override it); hard linter error in the global
|
|
44
|
+
store (check G6).
|
|
45
|
+
- `project` — the DEFAULT; promotion structurally refused unless a human
|
|
46
|
+
reclassifies; unset/invalid resolves here, never upward.
|
|
47
|
+
- `shareable` — global-store eligible; requires passing redaction AND full
|
|
48
|
+
provenance: `source_repo`, `owner`, `review_after`, `promotion_reason`
|
|
49
|
+
(checks G4/G5); `promotion_reason` is mandatory human input — there is no
|
|
50
|
+
auto-`shareable` path.
|
|
51
|
+
|
|
52
|
+
Plus an append-only revocation ledger (`.revocations.jsonl` tombstones
|
|
53
|
+
written by `forget`/`purge` BEFORE deletion; rendered via
|
|
54
|
+
`knowledge:global:list --revoked`).
|
|
55
|
+
|
|
56
|
+
ADR-119's default-ON, `allowed_tiers: [public]`, measurement window, and
|
|
57
|
+
demotion trigger are unchanged.
|
|
58
|
+
|
|
59
|
+
## Consequences
|
|
60
|
+
|
|
61
|
+
- Cross-project transfer now requires a recorded human decision per card
|
|
62
|
+
(class + reason), machine-verified in CI (`check_knowledge_cards` G4–G6)
|
|
63
|
+
and at promotion time (`gate_sensitivity_for_promotion`).
|
|
64
|
+
- Deletion is auditable; the demotion trigger of ADR-119 gains a per-entry
|
|
65
|
+
trail to point at.
|
|
66
|
+
- Cost: one more frontmatter field + four footer fields on shared cards;
|
|
67
|
+
no new subsystem, no read-time machinery.
|
|
68
|
+
|
|
69
|
+
## Alternatives considered
|
|
70
|
+
|
|
71
|
+
- Six-class enum `{local-only, project, team, organization, confidential,
|
|
72
|
+
prohibited}` (the reviews' proposal) — rejected now: `team`/`organization`
|
|
73
|
+
have no consumer today; widening is cheap later, narrowing is not.
|
|
74
|
+
Revisit-if: a real multi-tenant org install exists.
|
|
75
|
+
- Revert ADR-119 to default-OFF — rejected: re-creates the ADR-103
|
|
76
|
+
measure-then-decide deadlock; the danger is contained by classes + gates,
|
|
77
|
+
not by turning the layer off.
|
|
78
|
+
- Semantic PII detection / k-anonymity — out of scope per ADR-119 §6
|
|
79
|
+
(write-time text gate, single-install trust boundary).
|
|
80
|
+
|
|
81
|
+
## References
|
|
82
|
+
|
|
83
|
+
- `agents/settings/contexts/knowledge-sensitivity.md` — locked design table.
|
|
84
|
+
- ADR-119 — the flip this hardens.
|
|
85
|
+
- Implementation: `knowledge_global.ts` (SENSITIVITIES, footer fields),
|
|
86
|
+
`knowledge_global_promote.ts` (`resolve_effective_sensitivity`,
|
|
87
|
+
`gate_sensitivity_for_promotion`, tombstones), `knowledge_global_cli.ts`
|
|
88
|
+
(promote/forget/purge/list flags), `check_knowledge_cards.ts` (G4–G6);
|
|
89
|
+
118 tests across 6 files incl. 3 cross-project-contamination adversarial
|
|
90
|
+
cases.
|
package/docs/decisions/INDEX.md
CHANGED
|
@@ -123,6 +123,8 @@ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
|
|
|
123
123
|
| [ADR-117](ADR-117-subagents-auto-default-on.md) | Subagents Auto Default On | accepted | 2026-07-09 | — |
|
|
124
124
|
| [ADR-118](ADR-118-loop-engineering-boundaries.md) | Loop Engineering Boundaries | accepted | 2026-07-10 | — |
|
|
125
125
|
| [ADR-119](ADR-119-global-knowledge-default-on.md) | Global Knowledge Default On | accepted | 2026-07-12 | 103 |
|
|
126
|
+
| [ADR-120](ADR-120-council-chairman-mode.md) | Council Chairman Mode | accepted | 2026-07-12 | — |
|
|
127
|
+
| [ADR-121](ADR-121-knowledge-sensitivity-classes.md) | Knowledge Sensitivity Classes | accepted | 2026-07-12 | — |
|
|
126
128
|
| [ADR-200](ADR-200-python-to-typescript-migration.md) | Python To Typescript Migration | accepted | 2026-06-11 | — |
|
|
127
129
|
|
|
128
130
|
## Unnumbered (legacy)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Council-vs-solo baseline eval — design (pre-registered)
|
|
2
|
+
|
|
3
|
+
> Design artifact for `road-to-feedback-8.11` Phase 3. It fixes the
|
|
4
|
+
> methodology **before** the first billable call; the run itself is
|
|
5
|
+
> spend-gated (blocker `council-baseline-spend-authorization` — the user
|
|
6
|
+
> confirms the rendered estimate in-session). This document is the "design
|
|
7
|
+
> the baseline" step — not the run. Companion claim:
|
|
8
|
+
> `docs/CLAIMS.md § council-vs-solo-baseline` (status: unbacked until the run
|
|
9
|
+
> resolves).
|
|
10
|
+
|
|
11
|
+
## Why this exists
|
|
12
|
+
|
|
13
|
+
The council deliberation protocol (stance tally, chairman, debate gates,
|
|
14
|
+
anti-conformity) is well-built and default-off — but there is **no evidence
|
|
15
|
+
that convening the council beats a single strong model** on any decision
|
|
16
|
+
class. The 2026-07-12 feedback-disposition debate (claude-sonnet-4-5 +
|
|
17
|
+
gpt-4o) REJECTED adding a ≥2-of-5 admission gate for exactly this reason and
|
|
18
|
+
ADOPTED this baseline as the precondition for ANY further
|
|
19
|
+
deliberation-protocol expansion: admission criteria must be derived from
|
|
20
|
+
empirical decision characteristics, not a-priori heuristics.
|
|
21
|
+
|
|
22
|
+
Shadow-log status at design time (2026-07-12): `agents/runtime/council/
|
|
23
|
+
shadow-log.jsonl` is **absent/empty** on both the main checkout and the run
|
|
24
|
+
worktree — the shadow-dispatch agreement mechanism has produced zero
|
|
25
|
+
analyzable lines. That absence is itself the first finding: the only
|
|
26
|
+
council-vs-solo signal the package planned to collect has no data, so a
|
|
27
|
+
deliberate baseline run is the only path to a verdict.
|
|
28
|
+
|
|
29
|
+
## Arms
|
|
30
|
+
|
|
31
|
+
| Arm | What runs | Cost profile |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| A — solo | ONE strong model (the council's strongest configured member, single call, standard prompt) | 1 call/decision |
|
|
34
|
+
| B — council | The full configured council in `debate` mode (2 members × ≤2 rounds, current defaults; stance tally ON so dissent is recorded) | 4–5 calls/decision |
|
|
35
|
+
|
|
36
|
+
Same decision text, same context budget, both arms blind to each other.
|
|
37
|
+
|
|
38
|
+
## Corpus — ≥30 real decisions
|
|
39
|
+
|
|
40
|
+
- Source: real decision questions from the repo's own history — the
|
|
41
|
+
council-labelled golden set (labels final per the 2026-07-11 amendment; no
|
|
42
|
+
re-labelling) plus archived council question files whose ground-truth
|
|
43
|
+
disposition is now KNOWN (the decision shipped and survived, was reverted,
|
|
44
|
+
or was killed by later evidence). Minimum n = 30; pre-register the exact
|
|
45
|
+
list in the run manifest BEFORE the first call.
|
|
46
|
+
- Class mix: at least 8 decisions per impact class {low, medium, high} so the
|
|
47
|
+
per-class analysis (the whole point — which characteristics correlate with
|
|
48
|
+
council lift) is not vacuous.
|
|
49
|
+
|
|
50
|
+
## Metrics — fixed before data
|
|
51
|
+
|
|
52
|
+
1. **Quality**: blind post-hoc grading of both arms' verdicts against the
|
|
53
|
+
known ground-truth disposition — primary judge = strongest available
|
|
54
|
+
model, blind second judge, report Cohen's κ (reuse `cohensKappa()` /
|
|
55
|
+
`judgeKappa()` from `src/scripts/check_quality_regression.ts`); verdict
|
|
56
|
+
admissible only at κ ≥ 0.60.
|
|
57
|
+
2. **Cost**: tokens + USD (from the council cost ledger) + wall-clock per
|
|
58
|
+
decision, per arm.
|
|
59
|
+
3. **Characteristics capture**: per decision, record the five feedback-
|
|
60
|
+
proposed dimensions (reversibility cost, material spend/risk,
|
|
61
|
+
multi-perspective conflict, evidence tension, policy/governance change) as
|
|
62
|
+
booleans AT PRE-REGISTRATION TIME (not after results) — so the ≥2-of-5
|
|
63
|
+
hypothesis is testable as a POST-HOc correlate without having gated
|
|
64
|
+
anything.
|
|
65
|
+
|
|
66
|
+
## Kill criterion (falsifiable, from the 2026-07-12 debate)
|
|
67
|
+
|
|
68
|
+
- **No lift anywhere**: if council decisions show no identifiable quality
|
|
69
|
+
lift on ANY decision subset (overall AND per impact class AND per
|
|
70
|
+
dimension-count stratum), further deliberation-protocol phases STOP and
|
|
71
|
+
the protocol goes maintenance-only; `road-to-opt-council-deliberation`
|
|
72
|
+
records the honest null.
|
|
73
|
+
- **Lift on a subset**: derive empirical admission criteria FROM that
|
|
74
|
+
subset's recorded characteristics (which may or may not match the ≥2-of-5
|
|
75
|
+
heuristic — the data decides), and only then design an admission gate.
|
|
76
|
+
- **Judge floor**: κ < 0.60 → record κ, withhold the win-rate, do not claim
|
|
77
|
+
either direction.
|
|
78
|
+
|
|
79
|
+
## Spend gate
|
|
80
|
+
|
|
81
|
+
Execution requires in-session user confirmation of the rendered estimate
|
|
82
|
+
(existing council estimate machinery; ~30 decisions × (1 + ~4.5) calls —
|
|
83
|
+
estimate rendered by `council estimate` at run time). Authoring the corpus
|
|
84
|
+
manifest and this design is unblocked and free.
|
|
85
|
+
|
|
86
|
+
## Non-goals
|
|
87
|
+
|
|
88
|
+
- Not a cross-provider capability comparison (both arms use the configured
|
|
89
|
+
members; provider identity is held constant per arm definition).
|
|
90
|
+
- Not a re-test of the deliberation features individually (stance tally,
|
|
91
|
+
chairman) — arm B runs the current default debate shape; feature ablations
|
|
92
|
+
are follow-ups only if B beats A at all.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Utilization-window decision criteria — pre-registered
|
|
2
|
+
|
|
3
|
+
> Design artifact for `road-to-feedback-8.11-2` Phase 0. The engagement
|
|
4
|
+
> observation window (telemetry.artifact_engagement, id-only,
|
|
5
|
+
> PII-excluded-by-construction) has been RUNNING in the agent-config repo
|
|
6
|
+
> since 2026-07-12. Per the repo's claims convention, the window's decision
|
|
7
|
+
> rules are fixed HERE, BEFORE the numbers accumulate — the reviewer's
|
|
8
|
+
> warning was precise: without pre-fixed criteria "the window ends with
|
|
9
|
+
> many events and no decidable statement." Companion claim:
|
|
10
|
+
> `docs/CLAIMS.md § utilization-window-decidability`.
|
|
11
|
+
|
|
12
|
+
## Observation floor (all three, else "underpowered")
|
|
13
|
+
|
|
14
|
+
1. **≥ 100 recorded task boundaries** in `.agent-engagement.jsonl`
|
|
15
|
+
(boundary_kind `task` or `phase-step`).
|
|
16
|
+
2. **≥ 2 distinct hosts** contributed records (host identity read from the
|
|
17
|
+
session context at analysis time, not stored in the event — the event
|
|
18
|
+
schema stays id-only; if host cannot be attributed without widening the
|
|
19
|
+
schema, the floor degrades to "≥ 2 distinct recording periods ≥ 14 days
|
|
20
|
+
apart" and this deviation is recorded in the closing report).
|
|
21
|
+
3. **≥ 45 elapsed days** since 2026-07-12.
|
|
22
|
+
|
|
23
|
+
Below the floor at day 90 → the window is **underpowered**: extend ONCE by
|
|
24
|
+
30 days. Still below → STOP, record the honest null ("insufficient natural
|
|
25
|
+
usage volume to decide utilization"), and do NOT rebuild collection
|
|
26
|
+
apparatus without a new demand signal.
|
|
27
|
+
|
|
28
|
+
## Decision rules (fixed now — no goalpost-moving)
|
|
29
|
+
|
|
30
|
+
| # | Observation at window close | Bound decision |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| D1 | Artifact kind entry (skill/rule/command/guideline/persona id) **loaded-never-consulted** across the full window (requires the U1a `loaded` denominator; if U1a has not landed, D1 degrades to consulted-set analysis and says so) | Goes on the **retirement-candidate list** feeding U1's ranked cut list — candidate, not auto-cut; kernel + safety floors exempt by construction |
|
|
33
|
+
| D2 | Artifact **consulted-never-applied** with ≥ 5 consultations and applied-ratio < 10% | Goes on the **trigger-review queue** (description/trigger overhaul, not deletion) |
|
|
34
|
+
| D3 | Window closes **above the floor** | The first U1 report MUST name ≥ 1 concrete keep/cut/review decision per artifact kind, or record per kind why the data does not support one |
|
|
35
|
+
| D4 | Window closes **below the floor** (after the one extension) | Honest null; lifecycle-automation and field-outcome-ledger gates STAY closed (their revisit-if remains "≥ 1 full window") |
|
|
36
|
+
|
|
37
|
+
## Explicitly out of scope for this window
|
|
38
|
+
|
|
39
|
+
- **Outcome-quality attribution** (did artifact X improve the result) —
|
|
40
|
+
needs the `loaded` denominator plus far more volume; stays with U1a.
|
|
41
|
+
- **Cost-vs-rework economics** — owned by the orchestration telemetry
|
|
42
|
+
track (`road-to-subagent-value-realization-followup`).
|
|
43
|
+
- **Cross-repo aggregation** — the window is this repo only (council
|
|
44
|
+
condition from the 8.11 disposition).
|
|
45
|
+
|
|
46
|
+
## Kill criterion
|
|
47
|
+
|
|
48
|
+
If the window closes decidable (D3) but its decisions are cited by zero
|
|
49
|
+
actual portfolio changes within 2 releases, the analysis layer (not the
|
|
50
|
+
telemetry) is the dead weight — record that honest null before building
|
|
51
|
+
any further reporting on top.
|
|
@@ -95,6 +95,74 @@ When making decisions:
|
|
|
95
95
|
- Avoid rework caused by wrong assumptions
|
|
96
96
|
- Prefer: short clarification early → correct implementation once
|
|
97
97
|
|
|
98
|
+
## 8. Improve before implement — pre-implementation validation
|
|
99
|
+
|
|
100
|
+
_Origin: migrated from `src/rules/improve-before-implement.md` per the P4 pattern of `road-to-kernel-and-router.md`. The rule keeps the activation lists and the golden rule ("Challenge to improve, never to refuse"); the check detail lives here._
|
|
101
|
+
|
|
102
|
+
Before coding a new feature, refactor, module, or behavior-altering change, quickly verify:
|
|
103
|
+
|
|
104
|
+
### 8a. Is the request clear?
|
|
105
|
+
|
|
106
|
+
- Are acceptance criteria defined or derivable?
|
|
107
|
+
- Is the scope bounded? (not "make it better" but "add X to Y")
|
|
108
|
+
- Are edge cases considered?
|
|
109
|
+
|
|
110
|
+
**If unclear** → ask ONE focused question. Max 2 questions, never an interrogation.
|
|
111
|
+
|
|
112
|
+
### 8b. Does it fit the existing architecture?
|
|
113
|
+
|
|
114
|
+
- Does similar functionality already exist?
|
|
115
|
+
- Does it follow established patterns in the codebase?
|
|
116
|
+
- Does it contradict existing conventions?
|
|
117
|
+
- Do **multiple valid patterns/frameworks** already exist (e.g. Tailwind + Flux, multiple form libraries, competing state stores)? If yes, do NOT pick one arbitrarily — ask which to use.
|
|
118
|
+
- Is the change a **second branch on the same discriminator** — second `match`/`switch` arm, second `if/elseif`, or second class hardcoded to one enum value (e.g. `Provider::FOO`, `'stripe'`)? If yes, run the Strategy sniff test before adding the branch — see [`strategy.md`](../php/patterns/strategy.md#sniff-test--when-an-enumstring-discriminator-wants-to-become-a-strategy).
|
|
119
|
+
|
|
120
|
+
**If misfit** → show evidence (file references), propose alternative.
|
|
121
|
+
**If multiple valid options** → list them, ask which to use. See [§ 2 — No blind implementation](#2-no-blind-implementation).
|
|
122
|
+
|
|
123
|
+
### 8c. Is the approach sound?
|
|
124
|
+
|
|
125
|
+
- Is there a simpler way to achieve the same result?
|
|
126
|
+
- Are there known problems with the requested approach?
|
|
127
|
+
- Does the scope match the stated goal? (not over-engineered, not under-specified)
|
|
128
|
+
|
|
129
|
+
**If problematic** → explain the concern, propose a better approach.
|
|
130
|
+
|
|
131
|
+
### How to challenge
|
|
132
|
+
|
|
133
|
+
- **Be concise** — one sentence per concern, not paragraphs
|
|
134
|
+
- **Show evidence** — reference existing code, patterns, or conventions
|
|
135
|
+
- **Offer alternatives** — don't just say "this is wrong"
|
|
136
|
+
- **Use numbered options** — let the user choose quickly
|
|
137
|
+
- **Respect "just do it"** — if the user insists after your challenge, execute immediately
|
|
138
|
+
|
|
139
|
+
Example:
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
> ⚠️ `UserService` already has a `deactivate()` method that covers this case.
|
|
143
|
+
>
|
|
144
|
+
> 1. Use existing method — extend with new parameter
|
|
145
|
+
> 2. Create new method anyway — I'll explain the overlap in a comment
|
|
146
|
+
> 3. Skip validation — implement as requested
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
After presenting concerns: user picks an option → execute immediately; user says "just do it" → execute immediately. Never argue twice about the same point. Never block work — delay is only justified if it prevents a clear mistake.
|
|
150
|
+
|
|
151
|
+
### Scope limits
|
|
152
|
+
|
|
153
|
+
- **Max 1-2 challenges per task** — not every request needs validation
|
|
154
|
+
- **Max 1 minute of analysis** — if the check takes longer, skip it
|
|
155
|
+
- **Never validate simple tasks** — only features, architecture, significant changes
|
|
156
|
+
- **Never validate after the user already explained their reasoning**
|
|
157
|
+
|
|
158
|
+
### Verify with concrete tools, not prose
|
|
159
|
+
|
|
160
|
+
If the challenge requires you to confirm current behavior before proposing an alternative, use a concrete probe — a `curl` against the endpoint, a Playwright spec, a debugger / `xdebug` step-through, or the project's test runner with a targeted filter. Asserting current behavior from memory is not validation.
|
|
161
|
+
|
|
162
|
+
### Intent inference (RDP, standard host)
|
|
163
|
+
|
|
164
|
+
When the literal request and the underlying goal may differ, **state the inferred goal in one line and give ONE recommendation** — do not spread 2–3 framings (that is the overplanning [`direct-answers`](../../../src/rules/direct-answers.md) suppresses). Standard host only; a strong-reasoning host self-infers, so skip it there. Engage per [`rdp-gate`](../../../src/agent-src/contexts/execution/rdp-gate.md).
|
|
165
|
+
|
|
98
166
|
## Anti-patterns
|
|
99
167
|
|
|
100
168
|
- Asking 5 complex questions at once
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Rule Body Migration Inventory
|
|
2
|
+
|
|
3
|
+
> Full classification of every `src/rules/*.md` file against the P4 pattern
|
|
4
|
+
> (thin Iron-Law stub + `Body migrated to skill:X / guideline:Y` routing
|
|
5
|
+
> line) — done vs. not-yet-done vs. must-never-be-done, with concrete
|
|
6
|
+
> target homes for the not-yet-done set.
|
|
7
|
+
|
|
8
|
+
_Compiled: 2026-07-12 · Scope: `src/rules/*.md` only (104 files) · Method
|
|
9
|
+
below._
|
|
10
|
+
|
|
11
|
+
## Method
|
|
12
|
+
|
|
13
|
+
1. Read every rule's frontmatter (`type`, `alwaysApply`, `tier`) and body
|
|
14
|
+
line count via `wc -l`.
|
|
15
|
+
2. Checked kernel membership against
|
|
16
|
+
[`docs/contracts/kernel-membership.md`](../../contracts/kernel-membership.md)
|
|
17
|
+
§ 4 — the 9 rules currently carrying `type: "always"` /
|
|
18
|
+
`alwaysApply: true` are the live kernel (`user-interrupt-priority` was
|
|
19
|
+
demoted from the kernel back to `type: auto` on 2026-07-06 per that
|
|
20
|
+
contract's provenance log, so it is **not** counted as kernel here even
|
|
21
|
+
though an earlier section of the same contract still labels it the
|
|
22
|
+
"10th kernel rule" — frontmatter is ground truth).
|
|
23
|
+
3. Grepped case-insensitively for `migrated to` across `src/rules/*.md` to
|
|
24
|
+
find rules that already point their body at a skill/guideline/context —
|
|
25
|
+
including near-variants of the exact P4 phrase (`Portability body
|
|
26
|
+
migrated to …`, `Sync body migrated to …`).
|
|
27
|
+
4. For rules **without** that marker, read the full body (already present
|
|
28
|
+
verbatim in-session from the `dist/agent-src/rules/` projection, which
|
|
29
|
+
preserves Iron Laws byte-for-byte and body structure per
|
|
30
|
+
`preservation-guard`) and judged: is the non-Iron-Law content (a)
|
|
31
|
+
already effectively a thin routing hub even without the literal phrase
|
|
32
|
+
(e.g. `source-of-truth.md`'s "Mechanics — … live in
|
|
33
|
+
`[…]`" pointer), (b) a tight, load-bearing enforcement surface — a
|
|
34
|
+
table, a literal-string marker set, a short numbered check — that
|
|
35
|
+
doesn't shrink usefully by relocating, or (c) genuine bulk (worked
|
|
36
|
+
examples, rationale essays, multi-step procedures, failure-mode
|
|
37
|
+
catalogs) with either an existing skill/guideline that already
|
|
38
|
+
half-references it, or an obvious net-new location.
|
|
39
|
+
5. For every `should-migrate` candidate, verified the named target file
|
|
40
|
+
actually exists (`ls`/`find`) before citing it as "existing"; targets
|
|
41
|
+
that don't exist are marked "new guideline needed".
|
|
42
|
+
|
|
43
|
+
## Classification table
|
|
44
|
+
|
|
45
|
+
Legend: **class** = `thin` (already-thin) / `migrate` (should-migrate) /
|
|
46
|
+
`stay` (must-stay-monolithic). **Kernel?** = Y only for the 9 live
|
|
47
|
+
always-loaded rules.
|
|
48
|
+
|
|
49
|
+
| rule | class | body lines | kernel? | target home | note |
|
|
50
|
+
|---|---|---:|:---:|---|---|
|
|
51
|
+
| active-remediation.md | migrate | 92 | | new guideline: `docs/guidelines/agent-infra/active-remediation-mechanics.md` | ladder detail, version-gated modernization, guardrails prose extractable; Iron Law + ladder tiers + live-security carve-out stay |
|
|
52
|
+
| agent-authority.md | stay | 26 | Y | — | kernel priority index; body IS the routing table |
|
|
53
|
+
| analysis-skill-routing.md | thin | 20 | | `skill:analysis-skill-router` (existing) | pure P4 stub |
|
|
54
|
+
| architecture.md | migrate | 96 | | `skill:module-detect-on-the-fly` (existing) | Project Detection / Build-Runner Detection / Module & Package docs sections migratable; keep Iron Law + General Principles (already pointer-heavy to laravel/symfony/nextjs skills) |
|
|
55
|
+
| artifact-drafting-protocol.md | migrate | 122 | | new guideline: `docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md` | Phase A/B/C detail + roadmap batch-mode carve-out extractable; keep Iron Law + phase headers + golden rules |
|
|
56
|
+
| artifact-engagement-recording.md | thin | 52 | | `contexts/contracts/artifact-engagement-flow.md` (existing) | routes via "Recording contract + privacy floor: […]" phrasing, functionally P4 |
|
|
57
|
+
| ask-when-uncertain.md | stay | 66 | Y | — | kernel Iron Law + ask-policy floor |
|
|
58
|
+
| augment-edit-discipline.md | thin | 29 | | `guideline:augment-portability-patterns` + `skill:agent-docs-writing` (both existing) | two explicit "body migrated to" sentences |
|
|
59
|
+
| autonomous-execution.md | thin | 81 | | `contexts/execution/autonomy-mechanics.md` + siblings (existing) | hybrid: several short Iron-Law-style blocks retained (Hard Floor pointer, N=3 budget headline), full mechanics already migrated |
|
|
60
|
+
| brand-consistency.md | stay | 75 | | — | gate definition is the enforcement surface itself; already routes deeper mechanics to `brand-identity`/`brand-to-tokens`/`design-intelligence` |
|
|
61
|
+
| brand-source-of-truth.md | stay | 65 | | — | explicitly "light by design"; precedence order is the whole rule |
|
|
62
|
+
| broken-access-control.md | thin | 68 | | `skill:authz-review` (existing) | hybrid: 2 short Iron-Law blocks (3 negative tests) retained, deep controls/matrix/backstop-grep content already migrated |
|
|
63
|
+
| cli-output-handling.md | thin | 40 | | `skill:rtk-output-filtering` (existing) | pure P4 stub |
|
|
64
|
+
| code-comment-discipline.md | migrate | 148 | | `docs/guidelines/code-clarity.md` (existing) | already cross-references this guideline as "canonical long-form"; 3 worked-example code blocks + carve-out detail duplicate it and can move, keeping Iron Law + banned-class table + scope boundary |
|
|
65
|
+
| command-suggestion-policy.md | stay | 47 | | — | tier `mechanical-already`; single Iron Law + 5-item subordination list is the whole enforcement surface |
|
|
66
|
+
| commit-conventions.md | thin | 20 | | `skill:conventional-commits-writing` (existing) | pure P4 stub |
|
|
67
|
+
| commit-policy.md | stay | 67 | Y | — | kernel Iron Law + commit exceptions |
|
|
68
|
+
| communication-through-line.md | stay | 42 | | — | short; 5-item checkable-behaviors list is the whole rule |
|
|
69
|
+
| content-quoting-floor.md | stay | 88 | | — | the 5 numbered floor rules + carve-outs ARE the enforcement; failure-modes list is short (4 bullets), not worth extracting |
|
|
70
|
+
| context-hygiene.md | migrate | 186 | | new guideline: `docs/guidelines/agent-infra/context-hygiene-mechanics.md` | **longest rule in the tree**; hook-fallback prose, state-dump template, Copilot-fallback procedure, Augment ignored-skills recovery all extractable; keep Iron-Law-style freshness/3-failure/loop-detection triggers |
|
|
71
|
+
| copilot-routing.md | thin | 20 | | `skill:copilot-config` (existing) | pure P4 stub |
|
|
72
|
+
| decision-revisit-gate.md | migrate | 128 | | `skill:decision-review` (existing) | lock-type catalog + failure-mode catalog extractable; keep Iron Law + "what to do when it fires" steps + "when NOT to fire" |
|
|
73
|
+
| delegation-policy.md | stay | 96 | | — | already a routing hub in all but name — 6 numbered obligations, each 1–2 lines pointing at an existing context file (`auto-orchestration-activation.md`, `subagent-steering.md`, etc.) |
|
|
74
|
+
| design-fidelity.md | migrate | 140 | | new guideline: `docs/guidelines/design-fidelity-mechanics.md` | "Surgical visual edits" + "Asset & imagery discipline" + failure-mode catalog are substantial illustrative content; keep Iron Law + strictness-mode table + when-fires/not |
|
|
75
|
+
| devcontainer-routing.md | thin | 21 | | `skill:devcontainer` (existing) | pure P4 stub |
|
|
76
|
+
| direct-answers.md | stay | 62 | Y | — | kernel — 3 Iron Laws |
|
|
77
|
+
| docker-commands.md | thin | 21 | | `skill:docker` (existing) | pure P4 stub |
|
|
78
|
+
| domain-adoption-policy.md | migrate | 158 | | new guideline: `docs/guidelines/agent-infra/domain-adoption-gates.md` | 3-gate rationale essays + "what to do when gates fail" procedure + failure-mode catalog are substantial and rarely-fired (only on new-domain proposals); keep Iron Law + 3 gate names |
|
|
79
|
+
| domain-safety-disclaimer.md | stay | 117 | | — | domain safety floor |
|
|
80
|
+
| domain-safety-pii.md | stay | 166 | | — | domain safety floor (2nd-longest rule; 4-surface redaction tables ARE the enforcement) |
|
|
81
|
+
| domain-safety-retention.md | stay | 87 | | — | domain safety floor |
|
|
82
|
+
| downstream-changes.md | stay | 80 | | — | the "what to check" table + breaking-change lists ARE the checklist |
|
|
83
|
+
| engineering-safety-floor.md | stay | 91 | | — | domain safety floor |
|
|
84
|
+
| external-code-graph-interop.md | stay | 65 | | — | narrow, tight; numbered steps are the whole rule |
|
|
85
|
+
| external-reference-deep-dive.md | stay | 70 | | — | failure-mode catalog + case-zero anchor are load-bearing recognition material, not filler; below the bulk threshold applied elsewhere |
|
|
86
|
+
| fast-path-marker-visibility.md | stay | 83 | | — | body IS literal marker strings the agent must reproduce verbatim; cannot be paraphrased into a skill |
|
|
87
|
+
| finance-safety-floor.md | stay | 103 | | — | domain safety floor |
|
|
88
|
+
| framework-neutrality-in-generic-skills.md | migrate | 131 | | new guideline: `docs/guidelines/agent-infra/framework-neutrality-patterns.md` | 10-row forbidden-pattern table + cross-stack/carve-out examples extractable; keep Iron Law + scope + enforcement pointer (linter is the backstop either way) |
|
|
89
|
+
| git-history-discipline.md | thin | 90 | | `skill:git-workflow` (existing) | hybrid: 3 short Iron-Law blocks retained, full mechanics already migrated |
|
|
90
|
+
| guidelines.md | thin | 30 | | `contexts/communication/rules-auto/guidelines-mechanics.md` (existing) | "Index — see mechanics" pointer, functionally P4 |
|
|
91
|
+
| icon-consistency.md | stay | 52 | | — | tight; already routes deeper mechanics to `iconography` skill |
|
|
92
|
+
| image-likeness-and-rights.md | stay | 65 | | — | explicit "Compose — do NOT duplicate" section pointing at 5 media policy files; gate table is short |
|
|
93
|
+
| improve-before-implement.md | migrate | 124 | | `docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md` (existing) | already cross-referenced twice ("no blind implementation"); worked-example block + scope-limits detail extractable |
|
|
94
|
+
| invite-challenge.md | stay | 72 | | — | worked-example block is short and essential; below bulk threshold |
|
|
95
|
+
| language-and-tone.md | stay | 62 | Y | — | kernel Iron Law |
|
|
96
|
+
| laravel-routing.md | thin | 26 | | `skill:laravel` (existing) | pure P4 stub |
|
|
97
|
+
| laravel-translations.md | thin | 26 | | `skill:laravel` (existing) | pure P4 stub |
|
|
98
|
+
| legal-safety-floor.md | stay | 134 | | — | domain safety floor — but note: already the **best existing exemplar** of the P4 pattern applied *within* a safety floor (5 Iron Laws kept inline, all operating mechanics migrated to `skill:legal-practice-profile`); a template for the other 6 safety floors below, none of which do this yet |
|
|
99
|
+
| lethal-trifecta-guard.md | stay | 86 | | — | conceptual (3 legs) + short decision list; no removable bulk |
|
|
100
|
+
| linked-projects-onboarding-gate.md | thin | 35 | | `guideline:agent-infra/linked-projects-onboarding-gate` (existing) | pure P4 stub |
|
|
101
|
+
| low-impact-corpus-privacy-floor.md | stay | 77 | | — | 8-class forbidden-content table IS the redactor spec (mirrors `scripts/ai_council/redact_low_impact_entry.ts`) |
|
|
102
|
+
| markdown-safe-codeblocks.md | stay | 23 | | — | trivial |
|
|
103
|
+
| media-governance-routing.md | stay | 83 | | — | already a routing rule by design (7 pointers into `agents/settings/policies/media/`); rationale essay is short |
|
|
104
|
+
| media-sync-ground-truth.md | stay | 74 | | — | 6-step procedure is the whole rule |
|
|
105
|
+
| minimal-safe-diff.md | migrate | 166 | | new guideline: `docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md` | **tied-longest rule**; "Anti-over-engineering", "Own-orphan cleanup", "Break-glass exception", "Bounded remediation carve-out" are each self-contained essays with worked criteria; keep Iron Law + "the rule" + "before writing the diff" + red flags |
|
|
106
|
+
| missing-tool-handling.md | thin | 20 | | `guideline:agent-infra/missing-tool-handling` (existing) | pure P4 stub |
|
|
107
|
+
| model-recommendation.md | thin | 23 | | `guideline:agent-infra/model-recommendation` (existing) | pure P4 stub |
|
|
108
|
+
| no-attribution-footers.md | stay | 55 | | — | short; forbidden-pattern list is the check |
|
|
109
|
+
| no-cheap-questions.md | stay | 72 | Y | — | kernel — 6 Iron Laws + self-check |
|
|
110
|
+
| no-decorative-emojis-in-git-surfaces.md | stay | 110 | | — | whitelist/blacklist/legend-carve-out tables ARE the enforcement surface, must stay verbatim |
|
|
111
|
+
| no-pr-progress-comments.md | stay | 105 | | — | gated/not-gated lists ARE the enforcement surface |
|
|
112
|
+
| no-roadmap-references.md | migrate | 139 | | `skill:agent-docs-writing` (existing) | already cross-referenced ("roadmap layer conventions"); structural-carveout table + 4-step "what to do instead" + narrative failure modes extractable |
|
|
113
|
+
| non-destructive-by-default.md | stay | 59 | Y | — | kernel Hard Floor |
|
|
114
|
+
| notes-first-reasoning.md | stay | 69 | | — | structural section list is the whole rule |
|
|
115
|
+
| onboarding-gate.md | stay | 31 | | — | trivial |
|
|
116
|
+
| output-discipline.md | stay | 83 | | — | banned-placeholder-pattern table IS the enforcement surface (mirrors `lint_output_slop.ts`) |
|
|
117
|
+
| package-ci-checks.md | thin | 20 | | `skill:lint-skills` (existing) | pure P4 stub |
|
|
118
|
+
| persona-governance.md | migrate | 91 | | `docs/contracts/persona-schema.md` (existing) | already routes schema/catalog there; "four checks" full elaboration + day-one historical note extractable, keep Iron Law + check names + failure modes |
|
|
119
|
+
| php-coding.md | thin | 25 | | `guideline:php/php-coding-patterns` (existing) | pure P4 stub |
|
|
120
|
+
| prefer-enums-over-literals.md | stay | 65 | | — | all content directly operative (when/when-not/how); no removable bulk |
|
|
121
|
+
| preservation-guard.md | stay | 95 | | — | body IS the condensation-quality checklist consumed by `check_condensation.ts` |
|
|
122
|
+
| provider-lifecycle-discipline.md | migrate | 78 | | `docs/contracts/provider-lifecycle.md` (existing) | already the primary reference; "why agent-in-the-loop, not Python gate" rationale essay + day-one state note extractable |
|
|
123
|
+
| question-not-instruction.md | stay | 76 | | — | short "the trap" narrative + 3-step protocol is the whole rule |
|
|
124
|
+
| reviewer-awareness.md | thin | 27 | | `skill:review-routing` (existing) | pure P4 stub |
|
|
125
|
+
| roadmap-ci-steps-policy.md | migrate | 155 | | `contexts/execution/roadmap-process-loop.md` (existing) | already cross-referenced ("§5 owns the inline-skip mechanics"); forbidden-pattern table + authoring/execution procedure detail extractable |
|
|
126
|
+
| roadmap-progress-sync.md | thin | 90 | | `guideline:agent-infra/roadmap-progress-mechanics` (existing) | hybrid: 3 Iron Laws + PR-gate + mandatory pre-send self-check retained, long-form detail already migrated |
|
|
127
|
+
| role-mode-adherence.md | stay | 59 | | — | short; already delegates contract detail to `docs/guidelines/agent-infra/role-contracts.md` |
|
|
128
|
+
| rule-type-governance.md | thin | 18 | | `guideline:agent-infra/rule-type-governance` (existing) | pure P4 stub |
|
|
129
|
+
| runtime-safety.md | stay | 49 | | — | trivial |
|
|
130
|
+
| scope-control.md | stay | 67 | Y | — | kernel — git-ops permission gate |
|
|
131
|
+
| security-sensitive-stop.md | stay | 103 | | — | surface table + "what to do when it fires" table + memory-lookup command block ARE the enforcement surface; security-critical, kept loaded rather than gated behind a fetch |
|
|
132
|
+
| senior-engineering-discipline.md | stay | 82 | | — | already delegates deep detail to `skill:ai-code-blindspots`; remaining prose is the anchor summary |
|
|
133
|
+
| size-enforcement.md | stay | 35 | | — | trivial |
|
|
134
|
+
| skill-improvement-trigger.md | thin | 20 | | `skill:skill-improvement-pipeline` (existing) | pure P4 stub |
|
|
135
|
+
| skill-quality.md | thin | 18 | | `guideline:agent-infra/skill-quality-checklist` (existing) | pure P4 stub |
|
|
136
|
+
| slash-command-routing-policy.md | thin | 21 | | `skill:command-routing` (existing) | pure P4 stub |
|
|
137
|
+
| source-confidentiality.md | stay | 97 | | — | two short Iron-Law-style blocks; each section is directly operative |
|
|
138
|
+
| source-discovery-gate.md | stay | 96 | | — | two short Iron-Law-style blocks; already delegates the procedure to `skill:source-discovery` and 2 context files |
|
|
139
|
+
| source-of-truth.md | thin | 78 | | `contexts/communication/rules-auto/source-of-truth-mechanics.md` (existing) | explicit "Mechanics — … live in […]" pointer, functionally P4 |
|
|
140
|
+
| spreadsheet-source-quality.md | stay | 61 | | — | source-priority list is the whole rule |
|
|
141
|
+
| strategy-safety-floor.md | stay | 104 | | — | domain safety floor |
|
|
142
|
+
| symfony-routing.md | thin | 26 | | `skill:symfony-workflow` (existing) | pure P4 stub |
|
|
143
|
+
| telegraph-speak.md | stay | 85 | | — | self-describing condensation mechanism; algorithm must stay next to the Iron Law it governs (applies to every reply) |
|
|
144
|
+
| think-before-action.md | thin | 64 | | `contexts/communication/rules-auto/think-before-action-mechanics.md` (existing) | explicit "obligation surface / lookup material" split, functionally P4 |
|
|
145
|
+
| token-budget-discipline.md | stay | 118 | | — | 2 Iron-Law-style blocks + 2 classification tables ARE the governance criteria |
|
|
146
|
+
| token-efficiency.md | thin | 35 | | `contexts/communication/rules-auto/token-efficiency-mechanics.md` (existing) | explicit "Mechanics — …" pointer, functionally P4 |
|
|
147
|
+
| token-optimizer-maintenance.md | stay | 69 | | — | narrow, self-referential meta-rule about one skill's catalog freshness |
|
|
148
|
+
| tool-safety.md | stay | 53 | | — | short; constraints list is the whole rule |
|
|
149
|
+
| ui-audit-gate.md | thin | 59 | | `skill:existing-ui-audit` (existing) | hybrid: Iron Law + allow-list retained, rest migrated |
|
|
150
|
+
| untrusted-input-defense.md | migrate | 142 | | `docs/guidelines/agent-infra/untrusted-input-spotlighting.md` (existing) | injection-signal taxonomy (dark patterns, session integrity, autofill, card-from-chat) is substantial and already half-covered by this guideline; keep Iron Law + found-instructions quarantine + "what to do" |
|
|
151
|
+
| upstream-proposal.md | thin | 20 | | `skill:upstream-contribute` (existing) | pure P4 stub |
|
|
152
|
+
| user-interaction.md | thin | 74 | | `contexts/communication/rules-auto/user-interaction-mechanics.md` (existing) | explicit "obligation surface / lookup material" split, functionally P4 |
|
|
153
|
+
| user-interrupt-priority.md | stay | 58 | | — | short; classify-table + 3-step protocol is the whole rule (demoted from kernel 2026-07-06, still foundational authority content) |
|
|
154
|
+
| verify-before-complete.md | stay | 80 | Y | — | kernel — already partially delegates to `contexts/execution/verification-mechanics.md` |
|
|
155
|
+
|
|
156
|
+
## Summary counts
|
|
157
|
+
|
|
158
|
+
| class | count |
|
|
159
|
+
|---|---:|
|
|
160
|
+
| `already-thin` | 32 |
|
|
161
|
+
| `should-migrate` | 16 |
|
|
162
|
+
| `must-stay-monolithic` | 56 |
|
|
163
|
+
| **total** | **104** |
|
|
164
|
+
|
|
165
|
+
`must-stay-monolithic` breakdown: 9 kernel + 7 domain-safety-floor
|
|
166
|
+
(`finance-safety-floor`, `legal-safety-floor`, `strategy-safety-floor`,
|
|
167
|
+
`engineering-safety-floor`, `domain-safety-disclaimer`, `domain-safety-pii`,
|
|
168
|
+
`domain-safety-retention`) + 40 other (short/tight/table-is-the-law rules).
|
|
169
|
+
|
|
170
|
+
`already-thin` breakdown: 27 carry the literal (or near-literal, e.g.
|
|
171
|
+
"Portability body migrated to …") P4 routing phrase; 5 more
|
|
172
|
+
(`guidelines.md`, `source-of-truth.md`, `think-before-action.md`,
|
|
173
|
+
`token-efficiency.md`, `user-interaction.md`) achieve the same
|
|
174
|
+
obligation-surface / lookup-material split via an explicit "Mechanics — …
|
|
175
|
+
live in `[…]`" pointer instead of the exact phrase, and are counted as
|
|
176
|
+
thin because their residual body is small and non-duplicative.
|
|
177
|
+
|
|
178
|
+
## Full should-migrate list with targets
|
|
179
|
+
|
|
180
|
+
| rule | body lines | target home | status |
|
|
181
|
+
|---|---:|---|---|
|
|
182
|
+
| context-hygiene.md | 186 | `docs/guidelines/agent-infra/context-hygiene-mechanics.md` | new guideline needed |
|
|
183
|
+
| minimal-safe-diff.md | 166 | `docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md` | new guideline needed |
|
|
184
|
+
| domain-adoption-policy.md | 158 | `docs/guidelines/agent-infra/domain-adoption-gates.md` | new guideline needed |
|
|
185
|
+
| roadmap-ci-steps-policy.md | 155 | `src/agent-src/contexts/execution/roadmap-process-loop.md` | existing — extend |
|
|
186
|
+
| code-comment-discipline.md | 148 | `docs/guidelines/code-clarity.md` | existing — extend |
|
|
187
|
+
| untrusted-input-defense.md | 142 | `docs/guidelines/agent-infra/untrusted-input-spotlighting.md` | existing — extend |
|
|
188
|
+
| design-fidelity.md | 140 | `docs/guidelines/design-fidelity-mechanics.md` | new guideline needed |
|
|
189
|
+
| no-roadmap-references.md | 139 | `skill:agent-docs-writing` | existing — extend |
|
|
190
|
+
| framework-neutrality-in-generic-skills.md | 131 | `docs/guidelines/agent-infra/framework-neutrality-patterns.md` | new guideline needed |
|
|
191
|
+
| decision-revisit-gate.md | 128 | `skill:decision-review` | existing — extend |
|
|
192
|
+
| improve-before-implement.md | 124 | `docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md` | existing — extend |
|
|
193
|
+
| artifact-drafting-protocol.md | 122 | `docs/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md` | new guideline needed |
|
|
194
|
+
| architecture.md | 96 | `skill:module-detect-on-the-fly` | existing — extend |
|
|
195
|
+
| active-remediation.md | 92 | `docs/guidelines/agent-infra/active-remediation-mechanics.md` | new guideline needed |
|
|
196
|
+
| persona-governance.md | 91 | `docs/contracts/persona-schema.md` | existing — extend |
|
|
197
|
+
| provider-lifecycle-discipline.md | 78 | `docs/contracts/provider-lifecycle.md` | existing — extend |
|
|
198
|
+
|
|
199
|
+
7 new guidelines needed; 9 target an existing skill/guideline/context file.
|
|
200
|
+
|
|
201
|
+
## Batching proposal (input to the follow-on rule-load roadmap, not edited here)
|
|
202
|
+
|
|
203
|
+
Grouped by target-home affinity into 3 batches of 5–6, ordered so the
|
|
204
|
+
new-guideline-heavy batch (more authoring work, less risk of touching a
|
|
205
|
+
kernel-adjacent surface) lands first and the safety/security-adjacent batch
|
|
206
|
+
lands last (extra review scrutiny, smallest batch):
|
|
207
|
+
|
|
208
|
+
**Batch 1 — new agent-infra guidelines (5 rules, all net-new targets)**
|
|
209
|
+
`context-hygiene.md`, `minimal-safe-diff.md`, `domain-adoption-policy.md`,
|
|
210
|
+
`artifact-drafting-protocol.md`, `active-remediation.md` → each gets its own
|
|
211
|
+
new `docs/guidelines/agent-infra/*-mechanics.md` (or `*-gates.md`). No
|
|
212
|
+
cross-rule dependency; can land in any order inside the batch.
|
|
213
|
+
|
|
214
|
+
**Batch 2 — extend existing docs/contracts + docs/guidelines (6 rules)**
|
|
215
|
+
`code-comment-discipline.md` → `docs/guidelines/code-clarity.md`;
|
|
216
|
+
`decision-revisit-gate.md` → `skill:decision-review`;
|
|
217
|
+
`improve-before-implement.md` → `docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md`;
|
|
218
|
+
`architecture.md` → `skill:module-detect-on-the-fly`;
|
|
219
|
+
`persona-governance.md` → `docs/contracts/persona-schema.md`;
|
|
220
|
+
`provider-lifecycle-discipline.md` → `docs/contracts/provider-lifecycle.md`.
|
|
221
|
+
Each target already has partial coverage of the migrating content — lowest
|
|
222
|
+
risk of duplication/contradiction, good second batch.
|
|
223
|
+
|
|
224
|
+
**Batch 3 — execution/security-adjacent (5 rules, extra review)**
|
|
225
|
+
`roadmap-ci-steps-policy.md` → `contexts/execution/roadmap-process-loop.md`;
|
|
226
|
+
`no-roadmap-references.md` → `skill:agent-docs-writing`;
|
|
227
|
+
`untrusted-input-defense.md` → `docs/guidelines/agent-infra/untrusted-input-spotlighting.md`;
|
|
228
|
+
`design-fidelity.md` → `docs/guidelines/design-fidelity-mechanics.md` (new);
|
|
229
|
+
`framework-neutrality-in-generic-skills.md` → `docs/guidelines/agent-infra/framework-neutrality-patterns.md` (new).
|
|
230
|
+
Grouped last because 2 of the 5 touch security/untrusted-input adjacent
|
|
231
|
+
surfaces (`untrusted-input-defense`, and indirectly `no-roadmap-references`
|
|
232
|
+
via the CI-reference-integrity gate) and 2 are linter-companion rules
|
|
233
|
+
(`roadmap-ci-steps-policy`, `framework-neutrality-in-generic-skills`) where
|
|
234
|
+
the migrated prose must stay in lockstep with the corresponding
|
|
235
|
+
`scripts/lint_*.ts` — worth a slower, more careful pass.
|
|
236
|
+
|
|
237
|
+
## See also
|
|
238
|
+
|
|
239
|
+
- [`docs/contracts/kernel-membership.md`](../../contracts/kernel-membership.md) — the 9-rule kernel this inventory treats as permanently must-stay.
|
|
240
|
+
- [`docs/guidelines/agent-infra/model-recommendation.md`](model-recommendation.md) / [`docs/guidelines/agent-infra/roadmap-progress-mechanics.md`](roadmap-progress-mechanics.md) — worked examples of the target-file header/format convention this inventory's proposed new guidelines should follow (`# Title` + `>` one-line summary + `_Origin: migrated from …`_ + Iron-Law restatement + sections; no frontmatter).
|
|
241
|
+
- The roadmap layer's "P4" migration pattern — the mechanism this inventory audits; not cited by filepath per [`no-roadmap-references`](../../../src/rules/no-roadmap-references.md) (roadmap files are transient, this inventory is durable).
|