@ryuenn3123/agentic-senior-core 6.14.0 → 6.15.1

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.
Files changed (49) hide show
  1. package/.agents/plugins/agentic-senior-core/.codex-plugin/plugin.json +1 -1
  2. package/.agents/plugins/agentic-senior-core/commands/asc-develop.md +1 -0
  3. package/.agents/plugins/agentic-senior-core/commands/asc-develop.toml +3 -0
  4. package/.agents/plugins/agentic-senior-core/commands/asc-reference.md +1 -0
  5. package/.agents/plugins/agentic-senior-core/commands/asc-reference.toml +3 -0
  6. package/.agents/plugins/agentic-senior-core/commands/asc-review.md +1 -1
  7. package/.agents/plugins/agentic-senior-core/commands/asc-review.toml +2 -2
  8. package/.agents/plugins/agentic-senior-core/commands/asc-ui.md +1 -0
  9. package/.agents/plugins/agentic-senior-core/commands/asc-ui.toml +3 -0
  10. package/.agents/plugins/agentic-senior-core/commands/asc.md +1 -0
  11. package/.agents/plugins/agentic-senior-core/commands/asc.toml +3 -0
  12. package/.agents/plugins/agentic-senior-core/hooks/lib/known-ui-slop-patterns.json +15 -0
  13. package/.agents/plugins/agentic-senior-core/plugin.json +1 -1
  14. package/.agents/plugins/agentic-senior-core/rules/agentic-senior-core.md +6 -7
  15. package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +61 -26
  16. package/.agents/plugins/agentic-senior-core/skills/asc-develop/SKILL.md +85 -0
  17. package/.agents/plugins/agentic-senior-core/skills/asc-reference/SKILL.md +2 -1
  18. package/.agents/plugins/agentic-senior-core/skills/asc-review/SKILL.md +55 -51
  19. package/.agents/plugins/agentic-senior-core/skills/asc-ui/SKILL.md +204 -0
  20. package/README.md +1 -1
  21. package/gemini-extension.json +1 -1
  22. package/lib/cli/commands/adapter.mjs +14 -2
  23. package/lib/cli/commands/global.mjs +14 -2
  24. package/package.json +1 -1
  25. package/plugin.yaml +7 -19
  26. package/.agents/plugins/agentic-senior-core/commands/asc-add-feature.md +0 -1
  27. package/.agents/plugins/agentic-senior-core/commands/asc-add-feature.toml +0 -6
  28. package/.agents/plugins/agentic-senior-core/commands/asc-audit.md +0 -1
  29. package/.agents/plugins/agentic-senior-core/commands/asc-audit.toml +0 -2
  30. package/.agents/plugins/agentic-senior-core/commands/asc-dedup.md +0 -1
  31. package/.agents/plugins/agentic-senior-core/commands/asc-dedup.toml +0 -2
  32. package/.agents/plugins/agentic-senior-core/commands/asc-fingerprint.md +0 -1
  33. package/.agents/plugins/agentic-senior-core/commands/asc-fingerprint.toml +0 -2
  34. package/.agents/plugins/agentic-senior-core/commands/asc-help.md +0 -12
  35. package/.agents/plugins/agentic-senior-core/commands/asc-help.toml +0 -12
  36. package/.agents/plugins/agentic-senior-core/commands/asc-new-project.md +0 -1
  37. package/.agents/plugins/agentic-senior-core/commands/asc-new-project.toml +0 -6
  38. package/.agents/plugins/agentic-senior-core/commands/asc-refactor.md +0 -1
  39. package/.agents/plugins/agentic-senior-core/commands/asc-refactor.toml +0 -2
  40. package/.agents/plugins/agentic-senior-core/skills/asc-adapter/SKILL.md +0 -49
  41. package/.agents/plugins/agentic-senior-core/skills/asc-add-feature/SKILL.md +0 -60
  42. package/.agents/plugins/agentic-senior-core/skills/asc-audit/SKILL.md +0 -61
  43. package/.agents/plugins/agentic-senior-core/skills/asc-bootstrap/SKILL.md +0 -27
  44. package/.agents/plugins/agentic-senior-core/skills/asc-debt/SKILL.md +0 -82
  45. package/.agents/plugins/agentic-senior-core/skills/asc-dedup/SKILL.md +0 -56
  46. package/.agents/plugins/agentic-senior-core/skills/asc-fingerprint/SKILL.md +0 -49
  47. package/.agents/plugins/agentic-senior-core/skills/asc-learn/SKILL.md +0 -40
  48. package/.agents/plugins/agentic-senior-core/skills/asc-new-project/SKILL.md +0 -62
  49. package/.agents/plugins/agentic-senior-core/skills/asc-refactor/SKILL.md +0 -62
@@ -1,82 +0,0 @@
1
- ---
2
- name: asc-debt
3
- description: >
4
- Trigger this skill when the user says: "log this debt", "skip this for now", "defer this fix", "note this smell", "track this violation", "add to debt ledger", "we'll fix this later", "accept the shortcut", "I know this is bad but", "just do it for now", "TODO later", "catat debt", "skip dulu", "nanti aja benerinnya", "tunda perbaikan", "catat ini buat nanti". Also trigger when an ASC ladder nudge fires and the user accepts the shortcut rather than fixing it — log the deferred violation for later resolution. Do NOT trigger for actively resolving or refactoring existing debt items (use asc-refactor instead).
5
- ---
6
-
7
- # Debt Ledger
8
-
9
- Track deferred enforcement violations. When an ASC ladder nudge fires and the shortcut is accepted rather than fixed, log it here for later resolution.
10
-
11
- Grounded in: Cunningham's technical debt metaphor (1992). Entry format (ladder step + violation + status lifecycle) is an ASC-specific implementation.
12
-
13
- ## Storage
14
-
15
- Entries persist in `.agent-context/state/debt-ledger.json` (or `.asc/debt-ledger.json`) via standard file read/write operations. The ledger is a JSON array of entry objects.
16
-
17
- ## Stub Convention
18
-
19
- When introducing a temporary stub during development, mark it explicitly:
20
- ```typescript
21
- // ASC-STUB: [reason for temporary code] [ASC-DEBT-001]
22
- ```
23
- (or `# ASC-STUB: [reason] [ASC-DEBT-001]` in Python/Ruby).
24
-
25
- Every stub marker in source code MUST reference an open debt ID. Unregistered stubs will be blocked by the Git pre-commit runner.
26
-
27
- ## Entry Format
28
-
29
- ```json
30
- {
31
- "id": "sequential integer (or ASC-DEBT-xxx)",
32
- "file": "path/to/file.ts",
33
- "ladderStep": "3",
34
- "violation": "Added axios — stdlib fetch covers this",
35
- "addedAt": "ISO-8601 timestamp",
36
- "status": "open | resolved",
37
- "resolvedAt": "ISO-8601 timestamp or null"
38
- }
39
- ```
40
-
41
- ## Operations
42
-
43
- ### Add Entry
44
-
45
- When an enforcement nudge fires and the violation is deferred:
46
-
47
- 1. Read the current ledger from `.agent-context/state/debt-ledger.json`. If missing, start with `[]`.
48
- 2. Append a new entry with the next sequential `id`, the file path, ladder step, and a one-line violation summary.
49
- 3. Write the updated ledger back to disk.
50
- 4. Confirm: "Logged to debt ledger: [violation summary]"
51
-
52
- ### List Open Debt
53
-
54
- 1. Read the ledger.
55
- 2. Filter to entries where `status` is `"open"`.
56
- 3. Display as a table: ID, file, ladder step, violation, age.
57
- 4. If no open entries, say so explicitly.
58
-
59
- ### Resolve Entry
60
-
61
- When a deferred violation has been addressed:
62
-
63
- 1. Read the ledger.
64
- 2. Set the matching entry's `status` to `"resolved"` and `resolvedAt` to the current timestamp.
65
- 3. Write the updated ledger.
66
- 4. Confirm: "Resolved debt #[id]: [violation summary]"
67
-
68
- ### Summary
69
-
70
- 1. Read the ledger.
71
- 2. Report: total entries, open count, resolved count, oldest open entry age.
72
-
73
- ## When to Log
74
-
75
- Log a debt entry when ALL of these are true:
76
- - The PostToolUse enforcement hook fired a nudge
77
- - The agent acknowledged the nudge but proceeded without fixing the violation
78
- - The violation is deferrable (not a security issue — security violations must be fixed immediately)
79
-
80
- ## Integration
81
-
82
- The `/asc` skill documents the enforcement loop. This ledger captures what enforcement flags but the session defers. Use `/asc-debt` at session end or before commits to review outstanding shortcuts.
@@ -1,56 +0,0 @@
1
- ---
2
- name: asc-dedup
3
- description: >
4
- Trigger this skill when the user says: "find duplicate code", "check
5
- for clones", "audit for duplication", "is this repeated elsewhere",
6
- "scan for copy-paste", "run jscpd", "dedup report", "consolidate
7
- duplicate logic", "this looks the same as the other file",
8
- "we already have this somewhere", "why is this code repeated",
9
- "isn't this a copy of", "cari kode duplikat", "ini kok sama kayak yang itu",
10
- "ini udah ada kan". Use for whole-repo or whole-directory duplication
11
- audits on demand — this is a deep, on-demand scan, distinct from the
12
- continuous per-edit check already enforced by the dedup-gate hook. Do NOT
13
- trigger for general code restructuring or refactoring without duplication/clone audit focus (use asc-refactor instead).
14
- ---
15
-
16
- # Duplicate Code Audit
17
-
18
- On-demand deep duplication scan using jscpd (token-level clone detection). Distinct from the continuous per-edit `dedup-gate` hook — this skill runs a full-scope scan and produces a ranked report.
19
-
20
- Grounded in: GitClear 2024 analysis (211M LOC, 8x increase in duplicated code blocks in AI-assisted repos). Token-level clone detection catches near-duplicates that differ in names/structure — something diff-only review tools and pattern matching cannot do.
21
-
22
- ## When to Use
23
-
24
- - User asks to scan a directory, package, or entire repo for duplicated code
25
- - Before a refactoring pass, to identify consolidation targets
26
- - After a multi-file feature addition, to verify no accidental duplication was introduced
27
-
28
- ## Scan Procedure
29
-
30
- 1. Determine scope from user's request (specific directory, package, or full repo).
31
- 2. Check for `.asc/dedup-config.json` — use `ignoreDirs` and `minTokens` from it if present.
32
- 3. Run: `npx jscpd@5 "<scope>" --min-tokens <minTokens> --reporters console,json --output ./report/`
33
- - If `bunx` is available, prefer `bunx jscpd` for speed (24-37x faster per jscpd v5 benchmarks).
34
- - Apply `--ignore` flags from config `ignoreDirs`.
35
- 4. Parse the JSON report and present findings ranked by number of duplicated lines (largest clusters first).
36
-
37
- ## Report Format
38
-
39
- For each duplicate cluster, report:
40
- - **Files involved** and line ranges
41
- - **Duplicated lines count** and overlap percentage
42
- - **Consolidation recommendation** (only if pattern appears 3+ times — Rule of Three)
43
-
44
- ## Consolidation Rules
45
-
46
- Per this repo's asc-refactor YAGNI and Rule of Three conventions:
47
-
48
- - **2 occurrences**: Report the duplication. Do NOT suggest a shared abstraction — "three similar lines is better than a premature abstraction."
49
- - **3+ occurrences**: Suggest the smallest safe consolidation — extract a shared function, component, or module. Explain what risk or friction the duplication creates and what the consolidated shape looks like.
50
- - **Structural boilerplate** (imports, prop types, export statements): Flag but do not count as actionable duplication — these are framework-mandated patterns, not logic clones.
51
-
52
- ## Integration
53
-
54
- - The `dedup-gate` hook provides continuous per-edit detection (PostToolUse, scoped, fast).
55
- - This skill provides deep on-demand audits (full scope, thorough, user-triggered).
56
- - Findings from either can be logged to the debt ledger via `/asc-debt` if deferred.
@@ -1,49 +0,0 @@
1
- ---
2
- name: asc-fingerprint
3
- description: >
4
- Trigger this skill when the user says: "map this codebase", "what are our conventions",
5
- "document our patterns", "onboard to this repo", "fingerprint this repository",
6
- "learn this repository structure", "petakan codebase", "pelajari struktur repo",
7
- "apa aturan arsitektur di sini", "kebiasaan coding repo ini apa". Use it before substantial work in an unfamiliar
8
- repository or when feature research repeatedly rediscovers the same conventions. Do NOT trigger for simple file finding or code searches within single files.
9
- ---
10
-
11
- # Repository Fingerprinting
12
-
13
- Extract this repository's actual architectural and procedural conventions before building
14
- anything substantial. The goal is evidence-backed alignment with this codebase, not a
15
- generic architecture score.
16
-
17
- ## Phase 1: Read-only map
18
-
19
- 1. Read local instructions and list the active runtime, test, and deployment surfaces.
20
- 2. Find two or more analogous modules. Record their layer split, naming, validation,
21
- error handling, user notification/toast provider, fallback patterns, tests, and
22
- documentation conventions with file paths.
23
- 3. Inspect recent Git history (up to 200 commits, or since the last fingerprint) for
24
- repeated review corrections, reverts, and release conventions.
25
- 4. Read a debt ledger only when it exists. Treat repeated entries as a possible
26
- convention candidate, not as proof by itself.
27
- 5. Report only falsifiable findings. Separate observations from recommendations and
28
- include the file or commit evidence for every proposed convention.
29
- 6. STOP and wait for approval before writing project files.
30
-
31
- ## Phase 2: Record approved conventions
32
-
33
- 1. If the target repository already has a project-level `CONVENTIONS.md`, update only
34
- the approved sections. Otherwise create it at the target repository root.
35
- 2. Do not overwrite the ASC package bundle or copy the universal ASC rule into the
36
- target convention file.
37
- 3. Keep each rule short, project-specific, and testable. Record the source evidence
38
- beside the rule when it would otherwise be ambiguous.
39
- 4. Recommend rerunning this skill only when repository structure or repeated feature
40
- research shows that the document is stale.
41
-
42
- ## Output
43
-
44
- Return:
45
-
46
- - factual repository map;
47
- - named analogous modules;
48
- - proposed conventions with evidence;
49
- - a short list of open questions or insufficient evidence.
@@ -1,40 +0,0 @@
1
- ---
2
- name: asc-learn
3
- description: >
4
- Trigger this skill when the user says: "learn this preference", "don't do this again", "remember my preference", "log this rule", "add to my design rules", "never use X", "always use Y for UI", "save this preference", "remember this style", "ingat preferensi ini", "jangan lakuin ini lagi", "catat aturan ini", "simpan gaya ini". Also trigger when mining explicit user corrections from conversation history to update adaptive preferences. Do NOT trigger for initial day-one design rule bootstrapping or cold start wizard (use asc-bootstrap instead).
5
- ---
6
-
7
- # Adaptive Preference Miner (`asc-learn`)
8
-
9
- Mines explicit user corrections and design preferences from conversation history, atomizes them into clean rules, and routes them to Track A (Syntactic/Compiled) or Track B (Taste/AGENTS.md).
10
-
11
- Grounded in: **TRACE (arXiv:2606.13174)** correction mining & **Supermemory** dual-scope preference isolation.
12
-
13
- ## Workflow
14
-
15
- 1. **Extract & Atomize**: Parse the user's explicit correction or preference into a single atomic rule.
16
- 2. **Categorize Track**:
17
- - **Track A (Syntactic / Concrete)**: Banned Tailwind classes, specific CSS patterns, forbidden AST structures, or exact code tokens.
18
- - **Track B (Taste / Visual Vibe)**: Subjective UI aesthetic guidance (layout flow, typography feel, brand mood).
19
- 3. **Select Scope**:
20
- - **User Scope (`~/.gemini/config/`)**: Global personal preferences that follow the developer across all repositories.
21
- - **Project Scope (`.agents/`)**: Repository-specific conventions.
22
- 4. **Execute Dual-Track Routing**:
23
- - For **Track A**: Pass rule to `addRule()` in `adaptive-preferences.mjs` and invoke `installGitPreCommitHook()` / `compileAndSaveValidator()` to generate deterministic Git pre-commit & `ascx validate` enforcement (capped at `DEFAULT_RULE_CAP = 25`).
24
- - For **Track B**: Append the structured, deduped atomic rule to `AGENTS.md` / `SCRUTABLE_RULES.md` under `## Adaptive Preferences`.
25
- 5. **Track B Governance & Budgeting (Anti-Bloat)**:
26
- - Cap active taste rules at a maximum of **15 rules** per repository to prevent instruction density degradation (Gloaguen ETH Zurich 2026).
27
- - When exceeding 15 rules, perform semantic compaction: merge overlapping guidelines (e.g. typography rules) and prune superseded preferences.
28
-
29
- ## Atomic Rule Format
30
-
31
- ```json
32
- {
33
- "id": "rule_timestamp_hash",
34
- "type": "syntactic | taste",
35
- "pattern": "Concrete pattern or regex",
36
- "reason": "Clear explanation of why this pattern is preferred or banned",
37
- "source": "learn",
38
- "scope": "user | project"
39
- }
40
- ```
@@ -1,62 +0,0 @@
1
- ---
2
- name: asc-new-project
3
- description: >
4
- Trigger this skill when the user says: "new project", "start from scratch", "scaffold this", "bootstrap project", "bootstrap repository", "bootstrap new app", "create a new app", "init a project", "set up a new repo", "greenfield", "plan the architecture", "design the system", "build me an app", "start a new codebase", "I want to build", "let's create", "bikin project baru", "buat aplikasi baru", "scaffold repo baru", "mulai dari awal". Also trigger for any request to create a new codebase, plan a new system architecture, or scaffold a new repository from zero. Do NOT trigger for adding features, routes, or components to an existing codebase (use asc-add-feature instead), or for UI style preference onboarding (use asc-bootstrap instead).
5
- ---
6
-
7
- # New Project Workflow
8
-
9
- Structured greenfield workflow. Prevents building before alignment on what to build.
10
-
11
- Grounded in: Spec-Driven Development (SDD) with scaffolding-spec approach. Core spec documents guide greenfield implementation (`PRD.md`, `Architecture.md`, `Schema.md`). Once implemented, the code becomes the primary ground truth, while docs are updated on structural changes.
12
-
13
- ## Gate Mechanism & 3 Spec Document Requirement
14
-
15
- This workflow nudges the agent to stop at each phase boundary, same enforcement tier as the existing decision ladder — not a hard block. Bypasses are logged to the debt ledger.
16
-
17
- For greenfield projects (`asc-new-project`), Phase 2 requires creating the **3 Core SDD Documents** in `docs/` or project root:
18
- 1. `PRD.md` — Product intent, goals, non-goals, user problems, and user feedback expectations.
19
- 2. `Architecture.md` — System structure, module boundaries, tech stack choices, and global error handling, fallback, and notification strategy.
20
- 3. `Schema.md` — Data contracts, database entities, API endpoints.
21
-
22
- *Note on Rules:* Coding conventions and project constraints are automatically loaded from global plugin rules (`agentic-senior-core.md`) or workspace `AGENTS.md`. No duplicate `docs/Rules.md` file is required.
23
-
24
- To track phase, write to `workflow-gate.json` via the `state_write` MCP tool.
25
- Format:
26
- ```json
27
- {
28
- "workflow": "asc-new-project",
29
- "phase": "<current_phase>",
30
- "updatedAt": "<ISO-timestamp>"
31
- }
32
- ```
33
-
34
- ## Phase 1: Define (No Code)
35
-
36
- 1. Write `workflow-gate.json` with phase `research`.
37
- 2. Clarify with the user: tech stack, target platform, constraints, non-goals.
38
- 3. Propose a directory structure and module boundaries.
39
- 4. Output a project brief summarizing decisions.
40
- 5. **STOP and wait for user approval.** Do not write specs or code.
41
-
42
- ## Phase 2: Spec (No Implementation Code)
43
-
44
- 1. On approval of Phase 1, update `workflow-gate.json` phase to `plan`.
45
- 2. Generate the 3 core SDD documents from templates (`docs/PRD.md`, `docs/Architecture.md`, `docs/Schema.md`).
46
- 3. Verify exact file naming — check for typos like `Architectyre.md`.
47
- 4. Output specs for review.
48
- 5. **STOP and wait for user approval.** Do not implement code.
49
-
50
- ## Phase 3: Implement
51
-
52
- 1. On approval of Phase 2, update `workflow-gate.json` phase to `implement`.
53
- 2. Run Anti Context-Blindness check: verify entities/tables mentioned in `Schema.md` or `Architecture.md` align with proposed code targets.
54
- 3. Build against the approved specs. Apply the ASC decision ladder on every file.
55
- 4. Run the decision ladder: does this need to exist? Does stdlib cover it? One function or full module?
56
- 5. Generate a `.github/workflows/asc-quality-gate.yml` file that runs linter, type-check, and dependency audit on `push` and `pull_request`. Remind the user to enable Branch Protection in GitHub (require status checks to pass) to enforce this gate globally.
57
-
58
- ## Phase 4: Validate
59
-
60
- 1. Run tests. Check each spec's acceptance criteria.
61
- 2. Confirm nothing was over-built beyond what the specs required.
62
- 3. On completion, clear the state in `workflow-gate.json` by overwriting it with `{}`.
@@ -1,62 +0,0 @@
1
- ---
2
- name: asc-refactor
3
- description: >
4
- Trigger this skill when the user says: "refactor this", "clean up this code", "improve this structure", "rewrite this", "extract this into", "reduce duplication", "apply DRY", "apply SOLID", "migrate this", "simplify this module", "split this file", "decompose this", "this is messy", "make this cleaner", "too much coupling", "move this logic", "rapikan kode ini", "bersihin kodingan", "refactor ini", "perbaiki struktur kodingan". Also trigger for any request to restructure, modernize, or improve code organization without changing behavior. Do NOT trigger for building new features from scratch or greenfield projects (use asc-add-feature or asc-new-project instead).
5
- ---
6
-
7
- # Refactor Skill
8
-
9
- Structured refactoring workflow. Preserves existing behavior while improving structure.
10
-
11
- Grounded in: Fowler's Refactoring (read-understand-smallest scope-preserve behavior), Rule of Three (abstraction threshold), YAGNI principle (XP/Kent Beck). Empirical evidence: agents dominate low-level refactors (rename, extract, type changes) but struggle with multi-file architectural changes (arXiv, 15k+ instance study).
12
-
13
- ## YAGNI Scan (Before Any Restructuring)
14
-
15
- Before changing structure, scan for speculative code to remove:
16
- - "Just in case" logic, unused feature flags, dead branches behind config toggles.
17
- - Abstractions wrapping a single implementation with no second consumer.
18
- - Premature extension points (plugin hooks, strategy patterns) with one concrete path.
19
-
20
- Removing speculative code is the highest-value, lowest-risk refactor type.
21
-
22
- ## Classify Before Proceeding
23
-
24
- After reading the target code, classify the refactor:
25
-
26
- - **Low-level** (rename, extract method, type safety, dead code removal): proceed after explaining the change. No approval gate needed.
27
- - **High-level** (move module, change architecture, redesign abstractions, multi-file structural changes): write `workflow-gate.json` with `{"workflow": "asc-refactor", "phase": "plan"}`, output a plan with specific files and rationale, then **stop and wait for user approval** before implementing.
28
-
29
- ## Before Editing
30
-
31
- 1. **Verify Baseline**: Run project test runner (`ascx test`, `npm test`, or equivalent). Do not refactor on failing tests.
32
- 2. Read the target code and understand existing patterns.
33
- 3. Identify the smallest relevant scope for the refactor.
34
- 4. Classify the refactor (see above). For high-level refactors, update `workflow-gate.json` to phase `implement` only after user approval.
35
- 5. If the change touches UI, check accessibility and responsive behavior.
36
- 6. If the change touches dependencies, verify current official docs.
37
-
38
- ## Refactor Rules
39
-
40
- - Improve clarity, boundaries, naming, validation, error handling, and tests.
41
- - Action Feedback & Fallbacks: Preserve all user feedback indicators, error toasts, and dependency fallbacks. Refactoring must never silently drop error-handling branches.
42
- - Prioritize maintainability over compressed one-liners.
43
- - Keep the main flow traceable. Use early returns where they reduce nesting.
44
- - Introduce abstractions only when the repeated pattern is real and visible.
45
- - Split large files when the split makes the flow easier to understand.
46
- - Remove code that does not carry behavior, safety, clarity, maintainability, or test value.
47
- - Prefer the shorter implementation only when it keeps the same guarantees.
48
- - Run a final simplification pass before completion.
49
- - Update tests and docs whenever behavior contracts, public APIs, data shape, or UI contracts change.
50
-
51
- ## For Every Change, Explain
52
-
53
- - What risk or friction existed.
54
- - What changed.
55
- - Why the new shape is safer or easier to maintain.
56
-
57
- ## Validation
58
-
59
- - Existing behavior is preserved unless the user approved a change.
60
- - Edge cases, empty states, error paths, and rollback paths are handled.
61
- - Public contracts remain stable or are versioned.
62
- - Tests pass.