@hegemonart/get-design-done 1.28.8 → 1.30.5
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 +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +116 -0
- package/README.de.md +25 -0
- package/README.fr.md +25 -0
- package/README.it.md +25 -0
- package/README.ja.md +25 -0
- package/README.ko.md +25 -0
- package/README.md +30 -0
- package/README.zh-CN.md +25 -0
- package/SKILL.md +2 -0
- package/agents/design-authority-watcher.md +42 -1
- package/agents/design-reflector.md +50 -0
- package/package.json +1 -1
- package/reference/capability-gap-stage-gate.md +261 -0
- package/reference/known-failure-modes.md +521 -0
- package/reference/pseudonymization-rules.md +189 -0
- package/reference/registry.json +22 -1
- package/reference/schemas/events.schema.json +158 -3
- package/reference/schemas/generated.d.ts +319 -4
- package/scripts/cli/gdd-events.mjs +35 -2
- package/scripts/gsd-cleanup-incubator.cjs +367 -0
- package/scripts/lib/apply-reflections/incubator-proposals.cjs +455 -0
- package/scripts/lib/authority-watcher/index.cjs +201 -0
- package/scripts/lib/bandit-router.cjs +92 -9
- package/scripts/lib/failure-mode-matcher.cjs +460 -0
- package/scripts/lib/gsd-health-mirror/index.cjs +37 -1
- package/scripts/lib/incubator-author.cjs +845 -0
- package/scripts/lib/install/interactive.cjs +27 -2
- package/scripts/lib/issue-reporter/cli-flag-report.cjs +153 -0
- package/scripts/lib/issue-reporter/consent-prompt.cjs +231 -0
- package/scripts/lib/issue-reporter/dedup.cjs +458 -0
- package/scripts/lib/issue-reporter/destination.cjs +37 -0
- package/scripts/lib/issue-reporter/draft-writer.cjs +157 -0
- package/scripts/lib/issue-reporter/gh-absent-fallback.cjs +220 -0
- package/scripts/lib/issue-reporter/gh-submit.cjs +114 -0
- package/scripts/lib/issue-reporter/kill-switch.cjs +122 -0
- package/scripts/lib/issue-reporter/payload-assembly.cjs +367 -0
- package/scripts/lib/issue-reporter/privacy-diff.cjs +385 -0
- package/scripts/lib/issue-reporter/report-flow.cjs +269 -0
- package/scripts/lib/issue-reporter/triage-matcher.cjs +270 -0
- package/scripts/lib/pseudonymize.cjs +444 -0
- package/scripts/lib/reflections-cycle-writer.cjs +172 -0
- package/scripts/lib/reflector/capability-gap-scan.cjs +751 -0
- package/scripts/lib/reflector-capability-gap-aggregator.cjs +352 -0
- package/scripts/lib/reflector-kfm-proposer.cjs +468 -0
- package/scripts/release-smoke-test.cjs +33 -2
- package/scripts/validate-incubator-scope.cjs +133 -0
- package/skills/apply-reflections/SKILL.md +20 -1
- package/skills/apply-reflections/apply-reflections-procedure.md +106 -4
- package/skills/fast/SKILL.md +46 -0
- package/skills/reflect/SKILL.md +9 -0
- package/skills/reflect/procedures/capability-gap-scan.md +120 -0
- package/skills/report-issue/SKILL.md +53 -0
- package/skills/report-issue/report-issue-procedure.md +120 -0
- package/skills/router/SKILL.md +5 -0
- package/skills/router/capability-gap-emitter.md +65 -0
- package/skills/update/SKILL.md +3 -2
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "Get Design Done — 5-stage agent-orchestrated design pipeline with 9 connections, handoff-first workflow, bidirectional Figma write-back, 22+ specialized agents, queryable knowledge layer (intel store, dependency analysis, learnings extraction), and a self-improvement loop (reflector, frontmatter + budget feedback, global-skills layer). v1.20.0 ships the SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream, and resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) for rate-limit + 429 + context-overflow recovery. Full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation (auto-tag + GitHub Release + release-time smoke test).",
|
|
8
|
-
"version": "1.
|
|
8
|
+
"version": "1.30.5"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "get-design-done",
|
|
13
13
|
"source": "./",
|
|
14
14
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), Claude Design handoff, bidirectional Figma write-back, and a queryable intel store (.design/intel/) for dependency and learnings queries. Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows) and release automation. Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain.",
|
|
15
|
-
"version": "1.
|
|
15
|
+
"version": "1.30.5",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "hegemonart"
|
|
18
18
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "get-design-done",
|
|
3
3
|
"short_name": "gdd",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.30.5",
|
|
5
5
|
"description": "Agent-orchestrated 5-stage design pipeline: Brief → Explore → Plan → Design → Verify. 22+ specialized agents, 9 connections (Figma, Refero, Preview, Storybook, Chromatic, Figma Writer, Graphify, Pinterest, Claude Design), handoff-first workflow via Claude Design bundles, bidirectional Figma write-back (annotations, Code Connect), queryable intel store (`.design/intel/`) for O(1) design surface lookups, and self-improvement loop (reflector agent, frontmatter + budget feedback, global-skills layer at `~/.claude/gdd/global-skills/`). Standalone commands: style, darkmode, compare, figma-write, graphify, handoff, analyze-dependencies, skill-manifest, extract-learnings, reflect, apply-reflections. Embeds NNG heuristics, WCAG thresholds, typographic systems, motion framework, and anti-pattern catalog. Ships with a full CI/CD pipeline (Node 22/24 × Linux/macOS/Windows, lint + schema + frontmatter + stale-ref + shellcheck + gitleaks + injection-scan + blocking size-budget) and release automation (auto-tag + GitHub Release + release-time smoke test). Optimization layer (v1.0.4.1, retroactive): gdd-router + gdd-cache-manager skills, PreToolUse budget-enforcer hook, tier-aware agent frontmatter, lazy checker gates, streaming synthesizer, /gdd:warm-cache + /gdd:optimize commands, and cost telemetry at .design/telemetry/costs.jsonl — targeting 50-70% per-task token-cost reduction with no quality-floor regression. v1.20.0 SDK foundation: gdd-state MCP server (11 typed tools), lockfile-safe STATE.md mutations, event stream at .design/telemetry/events.jsonl, resilience primitives (jittered-backoff, rate-guard, error-classifier, iteration-budget) with rate-limit + 429 + context-overflow recovery, and TypeScript toolchain. v1.27.7 ships gdd-mcp (Phase 27.7): 12 read-only MCP tools for sub-3s priming. v1.28.0 (Phase 28): Foundational References Tier 2 — 5 new reference files (color-theory, composition, proportion-systems, i18n, contrast-advanced), 2 verifier i18n probes + 1 explore i18n-readiness probe, 12 additive cross-link insertions across 10 existing references, 2 orthogonal audit-scoring lens-tags (composition_alignment + i18n_readiness).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "hegemonart",
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,122 @@ All notable changes to get-design-done are documented here. Versions follow [sem
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.30.5] - 2026-05-21
|
|
8
|
+
|
|
9
|
+
### Phase 30.5 — Failure-Mode Catalogue
|
|
10
|
+
|
|
11
|
+
Decimal sub-phase building on Phase 30's `/gdd:report-issue` triage gate. Expands the known-failure-modes catalogue, adds a deterministic fuzzy matcher, and wires reflector + authority-watcher proposal flows into a 6th `/gdd:apply-reflections` proposal class. 3 plans ship together at v1.30.5 (D-11 ship-together): catalogue expansion (Wave A), fuzzy matcher (Wave A), reflector/authority-watcher wiring + closeout (Wave B).
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **Failure-mode catalogue expansion** (`reference/known-failure-modes.md`, Plan 30.5-01). Catalogue grows from 10 → 22 entries (KFM-001..KFM-022) — covers EACCES, gh-missing, Node mismatch, npm-ci lockfile drift, webpack chunk collisions, esbuild config errors, vite HMR, TS6133 unused locals, and 14 more long-tail failure modes harvested from closed PRs + reflections cycles + public Node/npm/git failure-mode references. Each entry carries the schema-v2 11-field shape (`id`, `pattern`, `diagnosis`, `remedy`, `severity`, `propose_report`, `symptom`, `root_cause`, `fix`, `related_phases`, `first_observed_cycle`); Phase 30's `triage-matcher.cjs` reads only the original 6 fields (D-02 backward-compat).
|
|
16
|
+
- **Fuzzy failure-mode matcher** (`scripts/lib/failure-mode-matcher.cjs`, Plan 30.5-02). New `match(errorContext, { topN, threshold, cataloguePath })` API returns top-N candidates ranked by cosine similarity over a stop-word-filtered bag-of-words across `symptom + root_cause + un-regexed pattern`. Default `topN=3`, `threshold=0.4`, dominance-collapse delta `0.15`. Pure CommonJS, zero npm dependencies, deterministic (no `Math.random` / `Date.now` / I/O outside catalogue read). Phase 30's exact-match `triage-matcher.cjs` is untouched (D-04 byte-identity guard).
|
|
17
|
+
- **Reflector KFM proposer** (`scripts/lib/reflector-kfm-proposer.cjs`, Plan 30.5-03 D-05). When a Phase 29 `capability_gap` cluster recurs ≥3× with no matching catalogue entry (per `failure-mode-matcher.match()`), the proposer drops a pre-filled draft at `.design/reflections/incubator/kfm-<slug>/CATALOGUE-ENTRY.md`. The draft carries all 11 schema-v2 fields; `pattern` + `fix` are `TODO:` placeholders the user fills via the apply-reflections edit action.
|
|
18
|
+
- **Authority-watcher `kfm-candidate` event class** (`reference/schemas/events.schema.json` + `scripts/lib/authority-watcher/index.cjs`, Plan 30.5-03 D-06). New additive `allOf[1]` branch on the events schema; new 7-field `KfmCandidatePayload` definition. When the authority-watcher pipeline encounters an article whose title matches `/common errors|failure modes|troubleshooting|known issues|pitfalls/i`, it emits a `kfm-candidate` event that the reflector consumes into the SAME incubator draft surface as `capability_gap` clusters (one unified user-review path).
|
|
19
|
+
- **`/gdd:apply-reflections` KFM-CANDIDATE proposal class** (`skills/apply-reflections/SKILL.md` + `apply-reflections-procedure.md`, Plan 30.5-03). 6th proposal class after frontmatter / reference / budget / question / global-skill / incubator-skill. User actions: **accept** (promote draft → `reference/known-failure-modes.md` with next `KFM-NNN`, register in `reference/registry.json` with `origin: 'incubator-kfm'`), **reject** (remove incubator subdir), **defer** (stamp `deferred_until`), **edit** (return path for `$EDITOR`).
|
|
20
|
+
- **Phase 30.5 regression baseline** (`tests/phase-30.5-baseline.test.cjs` + `test-fixture/baselines/phase-30.5/`, Plan 30.5-03). 16 version-agnostic tests covering 6-manifest lockstep, catalogue entry count ≥20, matcher API exports, schema event branch, OFF_CADENCE_VERSIONS membership, fuzzy-matcher accuracy snapshot, registry diff, cross-link integrity, and CHANGELOG top entry.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **Reflector capability-gap aggregator** (`scripts/lib/reflector-capability-gap-aggregator.cjs`) — adds lazy-loaded `proposeKfmDraftsForClusters(clusters, options)` export that invokes the KFM proposer as an additional pass after Phase 29 aggregation. Phase 29's existing 5 proposal classes are untouched (additive).
|
|
25
|
+
- **Authority-watcher agent prompt** (`agents/design-authority-watcher.md`) — gains a new `Step 7.5 — Emit kfm-candidate events` section documenting the whitelist patterns + payload shape. Phase 13.2's existing fetch/diff/classify/write loop is unchanged.
|
|
26
|
+
- **OFF_CADENCE_VERSIONS** (`tests/semver-compare.test.cjs`) — registers `'1.30.5'` per Phase 29/30 precedent.
|
|
27
|
+
|
|
28
|
+
### Documentation
|
|
29
|
+
|
|
30
|
+
- `CHANGELOG.md` — this entry (v1.30.5).
|
|
31
|
+
- `README.md` + 6 translated READMEs (de/fr/it/ja/ko/zh-CN) — single-paragraph mention of v1.30.5's catalogue expansion + fuzzy matcher.
|
|
32
|
+
- `reference/known-failure-modes.md` — schema-v2 header documenting the 11-field shape (Plan 30.5-01).
|
|
33
|
+
|
|
34
|
+
### Privacy & Safety
|
|
35
|
+
|
|
36
|
+
- **No auto-promotion.** The reflector KFM proposer is strictly proposal-only (Phase 11 SC-8). Drafts live in `.design/reflections/incubator/` until the user accepts them via `/gdd:apply-reflections`. The canonical catalogue feeds Phase 30's pre-consent triage gate, so a bad entry could mute legitimate issue reports — the user-review gate is non-negotiable (D-05).
|
|
37
|
+
- **`kfm-candidate` events are local-only.** No new network surfaces. The authority-watcher's existing whitelist (`reference/authority-feeds.md`) is the sole ingress for `kfm-candidate` events; nothing the reflector emits travels off-machine.
|
|
38
|
+
- **`raw_excerpt` cap.** Authority-derived excerpts are truncated to 500 chars before draft write (schema-enforced).
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## [1.30.0] - 2026-05-20
|
|
43
|
+
|
|
44
|
+
### Phase 30 — Consent-First GitHub Issue Reporter
|
|
45
|
+
|
|
46
|
+
Opt-in user feedback channel that pseudonymizes payloads before submission (NOT anonymization — see disclosure below). Local-first, consent-gated, no auto-mode. Destination repo is hardcoded. 8 plans across Wave A primitives (30-01..30-03) / Wave B integration (30-04..30-06) / Wave C closeout (30-07..30-08). 6-manifest lockstep at 1.30.0 (D-12 ship-together on-cadence minor from 1.29.0).
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- **Consent-First GitHub Issue Reporter.** Phase 30 ships these surfaces:
|
|
51
|
+
- **`/gdd:report-issue` skill** (`skills/report-issue/SKILL.md`, from 30-04) — Phase 28.5 compliant (≤100 lines). Walks the user through a consented submission: kill-switch check → triage against known failure modes → dedup against existing issues → assemble pseudonymized payload → draft to disk + open `$EDITOR` → consent prompt → submit via `gh` CLI.
|
|
52
|
+
- **`scripts/lib/pseudonymize.cjs`** (from 30-01) — 8 pseudonymization rules (R1..R8) covering git identity, absolute paths (Linux/macOS/Windows shapes), hostname, repo origin, env-var values, emails in logs, IPv4/IPv6 addresses, and stable per-user pseudonyms. Pure module: no `fs`, no `child_process`, no env mutation, no network.
|
|
53
|
+
- **`scripts/lib/issue-reporter/payload-assembly.cjs`** (from 30-02) — composes the final issue payload (title, body, fingerprint, bilingual disclaimer) from pseudonymized inputs. Two-layer scrub: Phase 22 `redact.cjs` then Phase 30 `pseudonymize.cjs` (order non-negotiable). Pure module: returns a string, no I/O.
|
|
54
|
+
- **`scripts/lib/issue-reporter/destination.cjs`** (from 30-04) — hardcoded `https://github.com/hegemonart/get-design-done` constant. SOLE FILE under the issue-reporter tree allowed to contain the destination URL literal. Frozen export.
|
|
55
|
+
- **Triage matcher** (`scripts/lib/issue-reporter/triage-matcher.cjs`, from 30-03) — pattern-matches the user's error against `reference/known-failure-modes.md`. On match: surfaces the remedy and stops; user can override with `--force-report`.
|
|
56
|
+
- **Dedup matcher** (`scripts/lib/issue-reporter/dedup.cjs`, from 30-05) — queries `gh issue list` against the destination repo and surfaces existing-issue matches before submission. Match outcomes: no-match → proceed; single-match → react with +1 + offer "me too" comment; multi-match → user picks. Wired into the report-flow BEFORE the consent prompt.
|
|
57
|
+
- **Kill-switch** (`scripts/lib/issue-reporter/kill-switch.cjs`, from 30-06) — env-var override (`GDD_DISABLE_ISSUE_REPORTER=1`) OR config-file override (`.design/config.json` with `{ "issue_reporter": false }`). Either disables the reporter; env wins when both set. Halts submission before any network call. `gsd-health` mirrors the same disable line.
|
|
58
|
+
- **`gh`-absent fallback** (`scripts/lib/issue-reporter/gh-absent-fallback.cjs`, from 30-06) — when GitHub CLI isn't installed, the assembled payload is written to disk under `.design/issue-drafts/` and the issue-template URL is copied to the platform-appropriate clipboard (xclip / pbcopy / clip).
|
|
59
|
+
- **Privacy-diff renderer** (`scripts/lib/issue-reporter/privacy-diff.cjs`, from 30-07) — renders the before/after pseudonymization diff at consent time and via `/gdd:update --show-privacy-diff`.
|
|
60
|
+
- **Network-isolation CI gate** (`tests/issue-reporter-network-isolation.test.cjs`, from 30-07) — static-analysis test asserts no `https://` / `fetch(` / `XMLHttpRequest` references exist anywhere under `scripts/lib/issue-reporter/` or `scripts/lib/pseudonymize.cjs` except the single destination URL constant in `destination.cjs`. Whitelisted via explicit allowlist.
|
|
61
|
+
- **`reference/pseudonymization-rules.md`** + **`reference/known-failure-modes.md`** (from 30-01 / 30-03) — registered in `registry.json`. User-facing docs explaining the 8-rule pseudonymization catalog and the known failure modes / anti-patterns the reporter detects.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- Phase 30 does not change existing surfaces beyond adding the new skill + helpers; no breaking changes.
|
|
66
|
+
|
|
67
|
+
### Documentation
|
|
68
|
+
|
|
69
|
+
- `reference/pseudonymization-rules.md` + `reference/known-failure-modes.md` — added + registered in `reference/registry.json` (2 new entries).
|
|
70
|
+
- `README.md` + 6 translated READMEs (de/fr/it/ja/ko/zh-CN) updated with a "Feedback Channel (v1.30.0+)" section disclosing the `/gdd:report-issue` command and the pseudonymization-NOT-anonymization stance.
|
|
71
|
+
- `NOTICE` — Phase 30 section noting the consent-first reporter discipline (added in 30-07).
|
|
72
|
+
|
|
73
|
+
### Privacy & Safety
|
|
74
|
+
|
|
75
|
+
- **Pseudonymization, not anonymization.** Payloads obscure direct identifiers (username, hostname, absolute paths, git identity, env-var values, emails, IPs) but preserve internal correlation so maintainers can debug. Side-channel data (writing style, code patterns, repo fingerprints) may still re-identify. Users see a full payload preview before submission and explicitly consent per-issue.
|
|
76
|
+
- **Kill-switch.** Env-var (`GDD_DISABLE_ISSUE_REPORTER=1`) or config-file (`.design/config.json` `{ "issue_reporter": false }`) overrides halt submission before any network call. `gsd-health` surfaces the disable line.
|
|
77
|
+
- **Hardcoded destination.** The issue-reporter cannot be redirected at runtime; the destination URL is a frozen module constant in `scripts/lib/issue-reporter/destination.cjs`. No env-var, config, or flag override.
|
|
78
|
+
- **Network isolation.** Issue-reporter modules contain NO `https://` (or equivalent) calls beyond the single destination URL constant — verified by Phase 30 baseline static-analysis check (Plan 30-07).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## [1.29.0] - 2026-05-19
|
|
83
|
+
|
|
84
|
+
### Phase 29 — Capability-Gap Telemetry + Self-Authoring of Agents/Skills
|
|
85
|
+
|
|
86
|
+
First on-cadence minor version after the 1.28.x decimal sub-phase sequence (1.28.0 through 1.28.8). Extends Phase 11's reflector-driven self-improvement loop from authoring reference content to authoring executable artifacts (agents and skills) when capability-gaps recur. Two structural ceilings close here: the artifact-type ceiling (reflector now drafts agents/skills, not just `reference/*.md`) and the signal-source ceiling (capability-lookup failures are now first-class telemetry). Strictly proposal-only — `/gdd:apply-reflections` remains the single human gate. 6-manifest lockstep at 1.29.0 (extends Phase 28.8's 4-manifest lockstep with the 2 Tier-2 manifests `.cursor-plugin/plugin.json` + `.codex-plugin/plugin.json` bumped in lockstep). 7 plans across Wave A telemetry (29-01..29-03) / Wave B authoring (29-04..29-06) / Wave C closeout (29-07).
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
|
|
90
|
+
- **Capability-gap telemetry + self-authoring of agents/skills.** Two-stage rollout per Phase 29 D-01:
|
|
91
|
+
- **Stage 0 — telemetry only (ships immediately).**
|
|
92
|
+
- New typed `capability_gap` event added to the Phase 22 event-chain schema (`reference/schemas/events.schema.json`). 7 fields exactly per D-02 (no PII): `event_id`, `parent_event_id`, `source` (enum: `fast`/`router`/`reflector_pattern`), `context_hash`, `intent_summary`, `suggested_kind` (enum: `agent`/`skill`), `evidence_refs[]` (hash-pinned trajectory-JSONL pointers per D-07, not duplicated content).
|
|
93
|
+
- Emitters integrated at three lookup-fail points (29-01): `skills/fast/SKILL.md` no-skill-match path emits `source: "fast"`; `skills/router/SKILL.md` unmatched-intent path emits `source: "router"`. Per D-08, MCP-probe connection failures do NOT emit `capability_gap` — those remain Phase 22's connection-status surface.
|
|
94
|
+
- Reflector pattern-detection pass (29-02) at `scripts/lib/reflector/capability-gap-scan.cjs` scans `.design/intel/` + Phase 23.5 posterior + recent trajectories for `Touches:` clusters recurring without dedicated agent owners and emits `capability_gap` events with `source: "reflector_pattern"`.
|
|
95
|
+
- Reflector aggregation extension (29-03) at `scripts/lib/reflector-capability-gap-aggregator.cjs` reads all `capability_gap` events, clusters by `context_hash`, and writes a `## Capability gaps observed` section to `.design/reflections/<cycle-slug>.md`. `gdd-events --type capability_gap` filter exposed via the existing CLI.
|
|
96
|
+
- `reference/capability-gap-stage-gate.md` — Stage-0 → Stage-1 gate spec. K=3 stable clusters across M=10 cycles per D-03, cluster-stability defined as Phase 23.5 posterior `stddev(Beta(α, β)) < 0.05`. Both K and M overridable in the gate doc.
|
|
97
|
+
- **Stage 1 — incubator authoring (data-gated, user-opt-in per D-01).**
|
|
98
|
+
- `scripts/lib/incubator-author.cjs` (29-04) reads gap clusters above the stability threshold + posterior, then drafts `SKILL.md` or `agents/<slug>.md` at `.design/reflections/incubator/<slug>/` with Phase 28.5-compliant frontmatter (`name`, `description` in `<what>. Use when <triggers>.` form, `tools`, `default-tier`, optional `reasoning-class`, `parallel-safe`, `reads-only`). Origin section with `capability_gap` event refs. Computed usage frequency. Suggested integration point. `delegate_to: null` defensive default per D-12 (forward-compat with Phase 27).
|
|
99
|
+
- `/gdd:apply-reflections` extension (29-05) at `skills/apply-reflections/SKILL.md` and `scripts/lib/incubator-proposals.cjs` surfaces incubator drafts as a new (5th) proposal class alongside frontmatter/reference/budget/discussant. Each proposal renders a diff vs the nearest existing artifact (by name + tools + description embedding per D-09). Four actions per proposal: `accept` (promotes to `agents/`/`skills/` + registers via the Phase 14.5 `reference/registry.json`), `reject`, `defer`, `edit` ($EDITOR). Scope-guard validator at `scripts/validate-incubator-scope.cjs` (D-05) blocks promotion outside `agents/`+`skills/`.
|
|
100
|
+
- **Bandit fairness gate (29-06)** — `scripts/lib/bandit-router.cjs` accepts a new `prior_class: "promoted_incubator"` parameter. Promoted arms enter the Phase 23.5 posterior with a conservative `Beta(2, 8)` prior (assume worse-than-average) instead of an optimistic uniform. Per D-04: this IS the staging mechanism — single-step promotion gate via `/gdd:apply-reflections accept`, no two-step staging/ratify split.
|
|
101
|
+
- **Incubator TTL (29-06)** — drafts not promoted/refreshed within P=30 days (per D-06) auto-archive via `scripts/gsd-cleanup-incubator.cjs` to `.design/reflections/incubator/archive/<slug>/`. Refresh = new `capability_gap` event matching an existing slug's `context_hash` resets the timer.
|
|
102
|
+
|
|
103
|
+
### Changed
|
|
104
|
+
|
|
105
|
+
- Reflector now emits `capability_gap` events alongside the existing learnings / telemetry / agent-metrics signals. No change to existing reflection proposal classes — additive only.
|
|
106
|
+
- `/gdd:apply-reflections` now surfaces 5 proposal classes (was 4: frontmatter / reference / budget / discussant; now adds Incubator agents+skills).
|
|
107
|
+
- `scripts/lib/bandit-router.cjs` accepts a new `prior_class` parameter (default `null` = existing uniform-prior behavior; `"promoted_incubator"` = `Beta(2, 8)` conservative prior).
|
|
108
|
+
|
|
109
|
+
### Documentation
|
|
110
|
+
|
|
111
|
+
- `reference/capability-gap-stage-gate.md` — Stage-0 → Stage-1 gate spec (K=3 / M=10 defaults, `stddev(Beta(α, β)) < 0.05` stability threshold, user opt-in flow).
|
|
112
|
+
- `README.md` + 6 translated READMEs (de/fr/it/ja/ko/zh-CN) updated with the capability-gap telemetry + self-authoring section: Stage 0 ships immediately (telemetry-only, no authoring); Stage 1 authoring is opt-in via `/gdd:apply-reflections` once K=3 stable clusters across M=10 cycles surface.
|
|
113
|
+
|
|
114
|
+
### Preserved (no behavior change)
|
|
115
|
+
|
|
116
|
+
- **Phase 11 success-criterion-8 discipline.** The reflector authors nothing that auto-ships. `/gdd:apply-reflections` remains the single human gate (extended to include the new Incubator proposal class, not bypassed).
|
|
117
|
+
- **Phase 28.7 file-drop install paths UNCHANGED.** `scripts/lib/install/converters/cursor.cjs` and `scripts/lib/install/converters/codex.cjs` remain backward-compatible per the Phase 28.8 D-05 invariant.
|
|
118
|
+
- **Phase 28.8 Tier-2 channels (.cursor-plugin/plugin.json + .codex-plugin/plugin.json)** version-bumped in lockstep, but their schemas / keys / structure are UNCHANGED.
|
|
119
|
+
- **Scope guard (D-05).** Self-authoring is limited to `agents/` and `skills/` only. No runtimes / transports / connections / hooks / scripts / CI workflow authoring. `scripts/validate-incubator-scope.cjs` enforces this at promotion time.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
7
123
|
## [1.28.8] - 2026-05-19
|
|
8
124
|
|
|
9
125
|
### Phase 28.8 — Tier-2 Distribution Channels
|
package/README.de.md
CHANGED
|
@@ -211,6 +211,16 @@ Zusätzlich zu den Phase-28.7-Datei-Installationspfaden oben (Standard, weiterhi
|
|
|
211
211
|
|
|
212
212
|
Vollständige Details siehe [README.md](README.md) (Englisch, autoritativ).
|
|
213
213
|
|
|
214
|
+
### Capability-Gap-Telemetrie + Self-Authoring (v1.29.0+)
|
|
215
|
+
|
|
216
|
+
Die Reflector-Schleife verfolgt "Capability-Lookup fehlgeschlagen"-Signale jetzt als erstklassige Telemetrie und kann — sobald genügend wiederkehrende Lücken auftauchen — neue Agents oder Skills als Vorschläge zur Überprüfung entwerfen.
|
|
217
|
+
|
|
218
|
+
**Stufe 0 — Telemetrie (sofort verfügbar).** Drei Lookup-Fail-Punkte emittieren typisierte `capability_gap`-Events: `skills/fast` No-Skill-Match-Pfade, `gdd-router` Unmatched-Intent-Pfade und die Pattern-Detection-Pass des Reflectors. Anzeigen mit `gdd-events --type capability_gap`.
|
|
219
|
+
|
|
220
|
+
**Stufe 1 — Self-Authoring (Opt-in, sobald Daten das Gate überschreiten).** Wenn K=3 stabile Cluster über M=10 Reflexions-Zyklen auftauchen, fordert `/gdd:apply-reflections` Sie einmalig auf, Stufe 1 zu aktivieren. Der Reflector entwirft dann Inkubator-Artefakte unter `.design/reflections/incubator/<slug>/` mit Phase-28.5-konformen Frontmatter. Vier Aktionen: `accept` / `reject` / `defer` / `edit`. Strict proposal-only — `/gdd:apply-reflections` bleibt der einzige menschliche Gate (Phase 11 SC-8).
|
|
221
|
+
|
|
222
|
+
Scope-Guard: Authoring beschränkt sich auf `agents/` und `skills/` — niemals Runtimes / Transports / Hooks. Vollständige Details siehe [README.md](README.md) (Englisch, autoritativ).
|
|
223
|
+
|
|
214
224
|
|
|
215
225
|
## Wie es funktioniert
|
|
216
226
|
|
|
@@ -680,6 +690,21 @@ Entfernt alle GDD-Befehle, Agenten, Hooks und Einstellungen, ohne deine anderen
|
|
|
680
690
|
|
|
681
691
|
---
|
|
682
692
|
|
|
693
|
+
## Feedback-Kanal (ab v1.30.0)
|
|
694
|
+
|
|
695
|
+
GDD enthält jetzt einen einwilligungsbasierten GitHub-Issue-Reporter über den Slash-Befehl `/gdd:report-issue`.
|
|
696
|
+
|
|
697
|
+
- **Was er tut.** Führt Sie durch das Melden eines Fehlers oder einer Funktionslücke, mit Vorschau der Nutzlast vor dem Absenden. Lokal-first, einwilligungsbasiert, kein Auto-Modus.
|
|
698
|
+
- **Pseudonymisierung, KEINE Anonymisierung.** Direkte Identifikatoren (Benutzername, Hostname, absolute Pfade, Git-Identität, Umgebungsvariablen-Werte, E-Mails, IP-Adressen) werden durch stabile Pseudonyme ersetzt — aber die interne Korrelation bleibt erhalten, damit Maintainer debuggen können. Seitenkanäle (Schreibstil, Code-Muster, Repo-Fingerabdrücke) können weiterhin re-identifizieren. Sie sehen die vollständige Nutzlast vor dem Absenden und stimmen pro Issue ausdrücklich zu.
|
|
699
|
+
- **Notausschalter.** Setzen Sie `GDD_DISABLE_ISSUE_REPORTER=1` (Umgebung) oder fügen Sie `{ "issue_reporter": false }` in `.design/config.json` hinzu, um die Übermittlung vor jedem Netzwerkaufruf zu stoppen.
|
|
700
|
+
- **`gh`-Fallback.** Falls die GitHub-CLI nicht installiert ist, wird die Nutzlast auf die Festplatte unter `.design/issue-drafts/` geschrieben und die Issue-Template-URL in die Zwischenablage kopiert.
|
|
701
|
+
|
|
702
|
+
Siehe die englische [`README.md`](README.md) für die vollständigen Details, [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md) für den Regelkatalog (R1..R8) und [`reference/known-failure-modes.md`](reference/known-failure-modes.md) für bekannte Fehlermodi.
|
|
703
|
+
|
|
704
|
+
**v1.30.5-Update** — der Katalog umfasst jetzt 22 Einträge (vorher 10 in v1.30.0) und ein neues deterministisches Fuzzy-Matching-Modul (`scripts/lib/failure-mode-matcher.cjs`) liefert Top-N-Kandidaten mit Konfidenzwerten. Reflector + Authority-Watcher können neue Einträge über `/gdd:apply-reflections` vorschlagen (6. Vorschlagsklasse) — strikt nur Vorschläge, jeder Eintrag durchläuft die Nutzerprüfung.
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
683
708
|
## Lizenz
|
|
684
709
|
|
|
685
710
|
MIT-Lizenz. Siehe [LICENSE](LICENSE) für Details.
|
package/README.fr.md
CHANGED
|
@@ -211,6 +211,16 @@ En complément des chemins d'installation par dépôt de fichiers de la Phase 28
|
|
|
211
211
|
|
|
212
212
|
Pour les détails complets, voir [README.md](README.md) (anglais, autoritatif).
|
|
213
213
|
|
|
214
|
+
### Télémétrie Capability-Gap + Auto-Authoring (v1.29.0+)
|
|
215
|
+
|
|
216
|
+
La boucle réflectrice suit désormais les signaux "lookup de capacité échoué" comme télémétrie de première classe et — une fois que suffisamment de lacunes récurrentes émergent — peut esquisser de nouveaux agents ou skills comme propositions à votre review.
|
|
217
|
+
|
|
218
|
+
**Phase 0 — télémétrie (livrée immédiatement).** Trois points de lookup-fail émettent désormais des événements typés `capability_gap` : chemins `skills/fast` sans match, chemins `gdd-router` à intent non-matché, et le pattern-detection pass du reflector. Affichage via `gdd-events --type capability_gap`.
|
|
219
|
+
|
|
220
|
+
**Phase 1 — auto-authoring (opt-in une fois les données franchissant le seuil).** Lorsque K=3 clusters stables émergent sur M=10 cycles de réflexion, `/gdd:apply-reflections` vous propose une seule fois d'activer la Phase 1. Le reflector esquisse alors des artefacts incubateur sous `.design/reflections/incubator/<slug>/` avec frontmatter conforme Phase 28.5. Quatre actions : `accept` / `reject` / `defer` / `edit`. Strictement proposition-only — `/gdd:apply-reflections` reste l'unique gate humain (Phase 11 SC-8).
|
|
221
|
+
|
|
222
|
+
Scope-guard : l'authoring est limité à `agents/` et `skills/` — jamais runtimes / transports / hooks. Pour les détails complets, voir [README.md](README.md) (anglais, autoritatif).
|
|
223
|
+
|
|
214
224
|
|
|
215
225
|
## Comment ça marche
|
|
216
226
|
|
|
@@ -680,6 +690,21 @@ Supprime toutes les commandes, agents, hooks et paramètres GDD tout en préserv
|
|
|
680
690
|
|
|
681
691
|
---
|
|
682
692
|
|
|
693
|
+
## Canal de retour (v1.30.0+)
|
|
694
|
+
|
|
695
|
+
GDD inclut désormais un rapporteur de problèmes GitHub avec consentement explicite via la commande slash `/gdd:report-issue`.
|
|
696
|
+
|
|
697
|
+
- **Ce qu'il fait.** Vous guide pour signaler un bug ou une lacune fonctionnelle, avec aperçu de la charge utile avant soumission. Local-first, basé sur le consentement, pas de mode automatique.
|
|
698
|
+
- **Pseudonymisation, PAS d'anonymisation.** Les identifiants directs (nom d'utilisateur, nom d'hôte, chemins absolus, identité Git, valeurs des variables d'environnement, e-mails, adresses IP) sont remplacés par des pseudonymes stables — mais la corrélation interne est préservée pour que les mainteneurs puissent déboguer. Les canaux latéraux (style d'écriture, motifs de code, empreintes de dépôt) peuvent encore ré-identifier. Vous voyez la charge utile complète avant l'envoi et donnez votre consentement par problème.
|
|
699
|
+
- **Interrupteur d'arrêt.** Définissez `GDD_DISABLE_ISSUE_REPORTER=1` (env) ou ajoutez `{ "issue_reporter": false }` à `.design/config.json` pour arrêter la soumission avant tout appel réseau.
|
|
700
|
+
- **Repli si `gh` absent.** Si la CLI GitHub n'est pas installée, la charge utile est écrite sur disque dans `.design/issue-drafts/` et l'URL du modèle d'issue est copiée dans le presse-papiers.
|
|
701
|
+
|
|
702
|
+
Voir [`README.md`](README.md) en anglais pour les détails complets, [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md) pour le catalogue de règles (R1..R8) et [`reference/known-failure-modes.md`](reference/known-failure-modes.md) pour les modes d'échec connus.
|
|
703
|
+
|
|
704
|
+
**Mise à jour v1.30.5** — le catalogue compte maintenant 22 entrées (10 dans v1.30.0) et un nouveau matcher flou déterministe (`scripts/lib/failure-mode-matcher.cjs`) renvoie des candidats top-N avec score de confiance. Le réflecteur + authority-watcher peuvent proposer de nouvelles entrées via `/gdd:apply-reflections` (6e classe de proposition) — strictement propositionnel, chaque entrée passe par la revue utilisateur.
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
683
708
|
## Licence
|
|
684
709
|
|
|
685
710
|
Licence MIT. Voir [LICENSE](LICENSE) pour les détails.
|
package/README.it.md
CHANGED
|
@@ -211,6 +211,16 @@ Oltre ai percorsi di installazione file-drop della Fase 28.7 sopra (predefiniti,
|
|
|
211
211
|
|
|
212
212
|
Per i dettagli completi, vedere [README.md](README.md) (inglese, autorevole).
|
|
213
213
|
|
|
214
|
+
### Telemetria Capability-Gap + Self-Authoring (v1.29.0+)
|
|
215
|
+
|
|
216
|
+
Il loop riflettore ora traccia i segnali "capability lookup fallito" come telemetria di prima classe e — una volta che emergono abbastanza lacune ricorrenti — può abbozzare nuovi agent o skill come proposte da revisionare.
|
|
217
|
+
|
|
218
|
+
**Stadio 0 — telemetria (rilasciato immediatamente).** Tre punti di lookup-fail emettono eventi tipizzati `capability_gap`: percorsi `skills/fast` senza match, percorsi `gdd-router` con intent non risolto, e il pattern-detection pass del riflettore. Visualizza con `gdd-events --type capability_gap`.
|
|
219
|
+
|
|
220
|
+
**Stadio 1 — self-authoring (opt-in una volta superata la soglia).** Quando K=3 cluster stabili emergono su M=10 cicli di riflessione, `/gdd:apply-reflections` ti chiede una sola volta di abilitare lo Stadio 1. Il riflettore abbozza quindi artefatti incubatore in `.design/reflections/incubator/<slug>/` con frontmatter conforme Phase 28.5. Quattro azioni: `accept` / `reject` / `defer` / `edit`. Strettamente proposal-only — `/gdd:apply-reflections` rimane l'unico gate umano (Phase 11 SC-8).
|
|
221
|
+
|
|
222
|
+
Scope-guard: l'authoring è limitato ad `agents/` e `skills/` — mai runtimes / transports / hooks. Per i dettagli completi, vedere [README.md](README.md) (inglese, autorevole).
|
|
223
|
+
|
|
214
224
|
|
|
215
225
|
## Come funziona
|
|
216
226
|
|
|
@@ -680,6 +690,21 @@ Rimuove tutti i comandi, agenti, hook e impostazioni GDD preservando le altre co
|
|
|
680
690
|
|
|
681
691
|
---
|
|
682
692
|
|
|
693
|
+
## Canale di feedback (da v1.30.0)
|
|
694
|
+
|
|
695
|
+
GDD ora include un reporter di issue GitHub basato sul consenso esplicito tramite il comando slash `/gdd:report-issue`.
|
|
696
|
+
|
|
697
|
+
- **Cosa fa.** Ti guida nella segnalazione di un problema o una lacuna funzionale, con un'anteprima del payload prima dell'invio. Local-first, basato sul consenso, senza modalità automatica.
|
|
698
|
+
- **Pseudonimizzazione, NON anonimizzazione.** Gli identificatori diretti (nome utente, hostname, percorsi assoluti, identità Git, valori delle variabili d'ambiente, e-mail, indirizzi IP) vengono sostituiti con pseudonimi stabili — ma la correlazione interna è preservata affinché i maintainer possano fare debugging. I canali laterali (stile di scrittura, pattern di codice, fingerprint del repository) possono ancora re-identificare. Vedi il payload completo prima dell'invio e dai il consenso per ogni issue.
|
|
699
|
+
- **Interruttore di emergenza.** Imposta `GDD_DISABLE_ISSUE_REPORTER=1` (env) o aggiungi `{ "issue_reporter": false }` a `.design/config.json` per fermare l'invio prima di qualsiasi chiamata di rete.
|
|
700
|
+
- **Fallback in assenza di `gh`.** Se la CLI di GitHub non è installata, il payload viene scritto su disco in `.design/issue-drafts/` e l'URL del template di issue viene copiata negli appunti.
|
|
701
|
+
|
|
702
|
+
Vedi [`README.md`](README.md) in inglese per i dettagli completi, [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md) per il catalogo delle regole (R1..R8) e [`reference/known-failure-modes.md`](reference/known-failure-modes.md) per i modi di fallimento noti.
|
|
703
|
+
|
|
704
|
+
**Aggiornamento v1.30.5** — il catalogo ora contiene 22 voci (10 in v1.30.0) e un nuovo matcher fuzzy deterministico (`scripts/lib/failure-mode-matcher.cjs`) restituisce candidati top-N con punteggio di confidenza. Reflector + authority-watcher possono proporre nuove voci tramite `/gdd:apply-reflections` (6a classe di proposta) — strettamente solo proposta, ogni voce passa attraverso la revisione utente.
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
683
708
|
## Licenza
|
|
684
709
|
|
|
685
710
|
Licenza MIT. Vedi [LICENSE](LICENSE) per i dettagli.
|
package/README.ja.md
CHANGED
|
@@ -211,6 +211,16 @@ claude plugin install get-design-done@get-design-done
|
|
|
211
211
|
|
|
212
212
|
詳細は [README.md](README.md)(英語、正本)を参照してください。
|
|
213
213
|
|
|
214
|
+
### Capability-Gap テレメトリ + 自己オーサリング (v1.29.0+)
|
|
215
|
+
|
|
216
|
+
リフレクター・ループは「ケイパビリティ・ルックアップ失敗」シグナルをファーストクラスのテレメトリとして追跡するようになりました。十分な繰り返し発生するギャップが浮上したら、レビュー対象として新しい agent / skill を提案として下書きできます。
|
|
217
|
+
|
|
218
|
+
**ステージ 0 — テレメトリ(即時リリース)。** 3 つのルックアップ失敗ポイントが型付き `capability_gap` イベントを発行します: `skills/fast` のスキル不一致パス、`gdd-router` の未解決インテント・パス、リフレクターのパターン検出パス。表示は `gdd-events --type capability_gap`。
|
|
219
|
+
|
|
220
|
+
**ステージ 1 — 自己オーサリング(データがゲートを越えたらオプトイン)。** K=3 個の安定したクラスタが M=10 サイクルで現れると、`/gdd:apply-reflections` がステージ 1 を有効化するかを一度だけ尋ねます。リフレクターは Phase 28.5 準拠の frontmatter を持つインキュベーター・アーティファクトを `.design/reflections/incubator/<slug>/` に下書きします。4 つのアクション: `accept` / `reject` / `defer` / `edit`。厳密に proposal-only — `/gdd:apply-reflections` が唯一の人間ゲートです (Phase 11 SC-8)。
|
|
221
|
+
|
|
222
|
+
スコープ・ガード: オーサリングは `agents/` と `skills/` に限定され、ランタイム / トランスポート / フックは対象外です。詳細は [README.md](README.md)(英語、正本)を参照してください。
|
|
223
|
+
|
|
214
224
|
|
|
215
225
|
## 仕組み
|
|
216
226
|
|
|
@@ -680,6 +690,21 @@ npx @hegemonart/get-design-done --claude --local --uninstall
|
|
|
680
690
|
|
|
681
691
|
---
|
|
682
692
|
|
|
693
|
+
## フィードバックチャンネル(v1.30.0+)
|
|
694
|
+
|
|
695
|
+
GDD は、`/gdd:report-issue` スラッシュコマンドによる同意ベースの GitHub Issue リポーターを搭載しました。
|
|
696
|
+
|
|
697
|
+
- **何をするか。** 問題や機能不足の報告をガイドし、送信前にペイロードのプレビューを表示します。ローカルファースト、同意ベース、自動モードなし。
|
|
698
|
+
- **疑似匿名化であり、匿名化ではありません。** 直接識別子(ユーザー名、ホスト名、絶対パス、Git アイデンティティ、環境変数の値、メールアドレス、IP アドレス)は安定した疑似識別子に置き換えられますが、メンテナーがデバッグできるよう内部相関は保持されます。サイドチャネルデータ(文体、コードパターン、リポジトリのフィンガープリント)による再識別の可能性は残ります。送信前に完全なペイロードを確認し、Issue ごとに明示的に同意します。
|
|
699
|
+
- **キルスイッチ。** ネットワーク呼び出しの前に送信を停止するには、`GDD_DISABLE_ISSUE_REPORTER=1`(環境変数)または `.design/config.json` に `{ "issue_reporter": false }` を設定します。
|
|
700
|
+
- **`gh` 不在時のフォールバック。** GitHub CLI がインストールされていない場合、ペイロードは `.design/issue-drafts/` のディスクに書き込まれ、Issue テンプレート URL がクリップボードにコピーされます。
|
|
701
|
+
|
|
702
|
+
詳細は英語版の [`README.md`](README.md)、ルールカタログ(R1..R8)は [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md)、既知の失敗モードは [`reference/known-failure-modes.md`](reference/known-failure-modes.md) を参照してください。
|
|
703
|
+
|
|
704
|
+
**v1.30.5 アップデート** — カタログは22エントリに拡張(v1.30.0は10件)、新しい決定論的ファジーマッチャー(`scripts/lib/failure-mode-matcher.cjs`)が信頼度スコア付きの上位N候補を返します。Reflector + authority-watcher は `/gdd:apply-reflections`(6番目の提案クラス)経由で新エントリを提案できます — 厳密に提案のみ、すべてのエントリはユーザーレビューを通過します。
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
683
708
|
## ライセンス
|
|
684
709
|
|
|
685
710
|
MIT ライセンス。詳細は [LICENSE](LICENSE) を参照。
|
package/README.ko.md
CHANGED
|
@@ -211,6 +211,16 @@ claude plugin install get-design-done@get-design-done
|
|
|
211
211
|
|
|
212
212
|
자세한 내용은 [README.md](README.md)(영어, 정본)을 참조하세요.
|
|
213
213
|
|
|
214
|
+
### Capability-Gap 텔레메트리 + 자가 저작 (v1.29.0+)
|
|
215
|
+
|
|
216
|
+
리플렉터 루프는 이제 "capability 조회 실패" 신호를 일급 텔레메트리로 추적하며, 충분히 반복되는 갭이 드러나면 새로운 agent 또는 skill을 리뷰용 제안으로 작성할 수 있습니다.
|
|
217
|
+
|
|
218
|
+
**스테이지 0 — 텔레메트리(즉시 출시).** 세 가지 조회 실패 지점이 타입화된 `capability_gap` 이벤트를 발행합니다: `skills/fast` 스킬 미일치 경로, `gdd-router` 미일치 인텐트 경로, 리플렉터 패턴 감지 패스. `gdd-events --type capability_gap`으로 확인하세요.
|
|
219
|
+
|
|
220
|
+
**스테이지 1 — 자가 저작(데이터가 게이트를 통과하면 옵트인).** K=3개의 안정 클러스터가 M=10 사이클에 걸쳐 나타나면, `/gdd:apply-reflections`가 스테이지 1 활성화 여부를 한 번 묻습니다. 그러면 리플렉터는 Phase 28.5 준수 frontmatter를 가진 인큐베이터 아티팩트를 `.design/reflections/incubator/<slug>/`에 초안 작성합니다. 4가지 액션: `accept` / `reject` / `defer` / `edit`. 엄격히 proposal-only — `/gdd:apply-reflections`가 유일한 인간 게이트입니다 (Phase 11 SC-8).
|
|
221
|
+
|
|
222
|
+
스코프 가드: 저작은 `agents/` 와 `skills/`에 한정되며 — 런타임 / 트랜스포트 / 훅은 대상이 아닙니다. 자세한 내용은 [README.md](README.md)(영어, 정본)을 참조하세요.
|
|
223
|
+
|
|
214
224
|
|
|
215
225
|
## 작동 방식
|
|
216
226
|
|
|
@@ -680,6 +690,21 @@ npx @hegemonart/get-design-done --claude --local --uninstall
|
|
|
680
690
|
|
|
681
691
|
---
|
|
682
692
|
|
|
693
|
+
## 피드백 채널 (v1.30.0+)
|
|
694
|
+
|
|
695
|
+
GDD에는 이제 `/gdd:report-issue` 슬래시 명령어를 통한 동의 기반 GitHub 이슈 리포터가 포함되어 있습니다.
|
|
696
|
+
|
|
697
|
+
- **무엇을 하나요.** 이슈 또는 기능 부족을 보고하도록 안내하며, 제출 전에 페이로드를 미리 봅니다. 로컬 우선, 동의 기반, 자동 모드 없음.
|
|
698
|
+
- **익명화가 아닌 가명화입니다.** 직접 식별자(사용자 이름, 호스트 이름, 절대 경로, Git ID, 환경 변수 값, 이메일, IP 주소)는 안정적인 가명으로 대체되지만, 메인테이너가 디버깅할 수 있도록 내부 상관관계는 유지됩니다. 사이드 채널 데이터(글쓰기 스타일, 코드 패턴, 저장소 지문)는 여전히 재식별될 수 있습니다. 제출 전에 전체 페이로드를 보고 이슈별로 명시적으로 동의합니다.
|
|
699
|
+
- **킬 스위치.** 네트워크 호출 전에 제출을 중단하려면 `GDD_DISABLE_ISSUE_REPORTER=1`(환경) 또는 `.design/config.json`에 `{ "issue_reporter": false }`를 추가하세요.
|
|
700
|
+
- **`gh` 부재 시 폴백.** GitHub CLI가 설치되어 있지 않으면 페이로드가 `.design/issue-drafts/`에 디스크에 기록되고 이슈 템플릿 URL이 클립보드에 복사됩니다.
|
|
701
|
+
|
|
702
|
+
전체 세부 사항은 영어 [`README.md`](README.md)를, 규칙 카탈로그(R1..R8)는 [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md)를, 알려진 실패 모드는 [`reference/known-failure-modes.md`](reference/known-failure-modes.md)를 참조하세요.
|
|
703
|
+
|
|
704
|
+
**v1.30.5 업데이트** — 카탈로그가 22개 항목(v1.30.0에서는 10개)으로 확장되었고, 새로운 결정론적 퍼지 매처(`scripts/lib/failure-mode-matcher.cjs`)가 신뢰도 점수와 함께 top-N 후보를 반환합니다. Reflector + authority-watcher는 `/gdd:apply-reflections`(6번째 제안 클래스)를 통해 새 항목을 제안할 수 있습니다 — 엄격하게 제안 전용이며 모든 항목은 사용자 검토를 거칩니다.
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
683
708
|
## 라이선스
|
|
684
709
|
|
|
685
710
|
MIT 라이선스. 자세한 내용은 [LICENSE](LICENSE) 참조.
|
package/README.md
CHANGED
|
@@ -241,6 +241,20 @@ Beyond the Phase 28.7 file-drop install paths above (which remain the default an
|
|
|
241
241
|
|
|
242
242
|
Tier-1 file-drop paths above and Tier-2 channels here are **additive opt-in** — both work independently per Phase 28.8 D-05 backward-compat discipline.
|
|
243
243
|
|
|
244
|
+
### Capability-Gap Telemetry + Self-Authoring (v1.29.0+)
|
|
245
|
+
|
|
246
|
+
The reflector loop now tracks "capability lookup failed" signals as first-class telemetry and — once enough recurring gaps surface — can draft new agents or skills as proposals for your review.
|
|
247
|
+
|
|
248
|
+
**Stage 0 — telemetry (ships immediately).**
|
|
249
|
+
Three lookup-fail points now emit typed `capability_gap` events: `skills/fast` no-skill-match paths, `gdd-router` unmatched-intent paths, and the reflector's pattern-detection pass (recurring `Touches:` clusters without a dedicated owner). The reflector aggregates per-cycle gap events into a `## Capability gaps observed` section in your reflection notes. View with `gdd-events --type capability_gap`. No authoring on Stage 0 — this just surfaces signal.
|
|
250
|
+
|
|
251
|
+
**Stage 1 — self-authoring (opt-in once data crosses the gate).**
|
|
252
|
+
When K=3 stable clusters surface across M=10 reflection cycles (defaults in `reference/capability-gap-stage-gate.md`), `/gdd:apply-reflections` prompts you once to enable Stage 1. With Stage 1 on, the reflector drafts incubator artifacts at `.design/reflections/incubator/<slug>/` — `SKILL.md` or `agents/<slug>.md` with full Phase 28.5-compliant frontmatter, originating events, computed usage frequency, and a suggested integration point. Drafts surface in `/gdd:apply-reflections` as a 5th proposal class with four actions: `accept` (promotes + registers), `reject`, `defer`, `edit`. Promoted arms enter the bandit with a conservative `Beta(2, 8)` prior so they don't get preferential selection until evidence accumulates. Drafts not promoted/refreshed within 30 days auto-archive.
|
|
253
|
+
|
|
254
|
+
**Scope guard.** Authoring is limited to `agents/` and `skills/` only — never runtimes, transports, connections, hooks, or CI workflows. `scripts/validate-incubator-scope.cjs` blocks promotion attempts outside scope.
|
|
255
|
+
|
|
256
|
+
**Discipline preserved.** Reflector authors nothing that auto-ships. `/gdd:apply-reflections` remains the single human gate (Phase 11 SC-8). Stage 1 never auto-flips — user opts in.
|
|
257
|
+
|
|
244
258
|
|
|
245
259
|
## How It Works
|
|
246
260
|
|
|
@@ -743,6 +757,22 @@ This removes all GDD commands, agents, hooks, and settings while preserving othe
|
|
|
743
757
|
|
|
744
758
|
---
|
|
745
759
|
|
|
760
|
+
## Feedback Channel (v1.30.0+)
|
|
761
|
+
|
|
762
|
+
GDD now ships a consent-first GitHub issue reporter via the `/gdd:report-issue` slash command.
|
|
763
|
+
|
|
764
|
+
- **What it does.** Walks you through reporting an issue or a capability gap, with a payload preview before submission. Local-first, consent-gated, no auto-mode. Triages against `reference/known-failure-modes.md` first — many failures resolve without filing.
|
|
765
|
+
- **Pseudonymization, NOT anonymization.** Direct identifiers (your username, hostname, absolute paths, git identity, env-var values, emails, IPs) are replaced with stable pseudonyms — but internal correlation is preserved so maintainers can debug. Side-channel data (writing style, code patterns, repo fingerprints) may still re-identify. You see the full payload before submission and explicitly consent per-issue.
|
|
766
|
+
- **Kill-switch.** Set `GDD_DISABLE_ISSUE_REPORTER=1` (env) or add `{ "issue_reporter": false }` to `.design/config.json` to halt submission before any network call. `gsd-health` surfaces the disable line.
|
|
767
|
+
- **Hardcoded destination.** The reporter cannot be redirected at runtime; the destination repo is a frozen constant in `scripts/lib/issue-reporter/destination.cjs`.
|
|
768
|
+
- **`gh`-absent fallback.** If the GitHub CLI isn't installed, the payload is written to `.design/issue-drafts/` and the issue-template URL is copied to your clipboard (xclip / pbcopy / clip).
|
|
769
|
+
|
|
770
|
+
See [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md) for the R1..R8 rule catalog and [`reference/known-failure-modes.md`](reference/known-failure-modes.md) for known anti-patterns the reporter detects.
|
|
771
|
+
|
|
772
|
+
**v1.30.5 update** — the catalogue now ships 22 entries (was 10 in v1.30.0), and a new deterministic fuzzy matcher (`scripts/lib/failure-mode-matcher.cjs`, top-N + threshold + confidence) returns ranked candidates for ambiguous symptoms. The reflector + authority-watcher can propose new entries via `/gdd:apply-reflections` (6th proposal class) — strictly proposal-only, every entry passes through user review.
|
|
773
|
+
|
|
774
|
+
---
|
|
775
|
+
|
|
746
776
|
## License
|
|
747
777
|
|
|
748
778
|
MIT License. See [LICENSE](LICENSE) for details.
|
package/README.zh-CN.md
CHANGED
|
@@ -210,6 +210,16 @@ claude plugin install get-design-done@get-design-done
|
|
|
210
210
|
|
|
211
211
|
完整细节请见 [README.md](README.md)(英文,权威版本)。
|
|
212
212
|
|
|
213
|
+
### Capability-Gap 遥测 + 自动撰写(v1.29.0+)
|
|
214
|
+
|
|
215
|
+
反射器循环现在将"能力查找失败"信号作为一类遥测来跟踪,一旦出现足够多的循环性缺口,可以将新的 agent 或 skill 作为提案草稿提交给你审查。
|
|
216
|
+
|
|
217
|
+
**Stage 0 — 遥测(立即发布)。** 三个查找失败点现在发出类型化的 `capability_gap` 事件:`skills/fast` 无 skill 匹配路径、`gdd-router` 未匹配意图路径、反射器模式检测 pass。使用 `gdd-events --type capability_gap` 查看。
|
|
218
|
+
|
|
219
|
+
**Stage 1 — 自动撰写(数据越过阈值后选择性启用)。** 当 K=3 个稳定集群在 M=10 个反思周期中出现时,`/gdd:apply-reflections` 会一次性提示你启用 Stage 1。反射器随后在 `.design/reflections/incubator/<slug>/` 起草符合 Phase 28.5 标准 frontmatter 的孵化器 artifact。四个动作:`accept` / `reject` / `defer` / `edit`。严格 proposal-only — `/gdd:apply-reflections` 仍是唯一的人类闸门 (Phase 11 SC-8)。
|
|
220
|
+
|
|
221
|
+
作用域守卫:撰写仅限 `agents/` 和 `skills/` — 永不涉及 runtimes / transports / hooks。完整细节请见 [README.md](README.md)(英文,权威版本)。
|
|
222
|
+
|
|
213
223
|
|
|
214
224
|
## 工作流程
|
|
215
225
|
|
|
@@ -701,6 +711,21 @@ npx @hegemonart/get-design-done --claude --local --uninstall
|
|
|
701
711
|
|
|
702
712
|
---
|
|
703
713
|
|
|
714
|
+
## 反馈通道(v1.30.0 起)
|
|
715
|
+
|
|
716
|
+
GDD 现在通过 `/gdd:report-issue` 斜杠命令提供基于明确同意的 GitHub 问题报告器。
|
|
717
|
+
|
|
718
|
+
- **它做什么。** 引导你报告问题或能力空缺,并在提交前预览有效负载。本地优先、基于同意、无自动模式。
|
|
719
|
+
- **是假名化,不是匿名化。** 直接标识符(用户名、主机名、绝对路径、Git 身份、环境变量值、邮箱、IP 地址)会被替换为稳定的假名 —— 但内部关联得以保留,以便维护者进行调试。副信道数据(写作风格、代码模式、仓库指纹)仍可能用于再识别。你会在提交前看到完整的有效负载,并对每个问题明确同意。
|
|
720
|
+
- **关停开关。** 设置 `GDD_DISABLE_ISSUE_REPORTER=1`(环境变量)或在 `.design/config.json` 中添加 `{ "issue_reporter": false }`,即可在任何网络调用前停止提交。
|
|
721
|
+
- **`gh` 缺失时的回退。** 如果未安装 GitHub CLI,有效负载会写入磁盘 `.design/issue-drafts/`,问题模板 URL 会复制到剪贴板。
|
|
722
|
+
|
|
723
|
+
完整细节请参见英文 [`README.md`](README.md),规则目录(R1..R8)参见 [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md),已知失败模式参见 [`reference/known-failure-modes.md`](reference/known-failure-modes.md)。
|
|
724
|
+
|
|
725
|
+
**v1.30.5 更新** — 目录现包含 22 个条目(v1.30.0 为 10 个),新的确定性模糊匹配器(`scripts/lib/failure-mode-matcher.cjs`)返回带置信度评分的 top-N 候选。Reflector + authority-watcher 可通过 `/gdd:apply-reflections`(第 6 个提议类)提议新条目 — 严格仅提议,每个条目都需经过用户审查。
|
|
726
|
+
|
|
727
|
+
---
|
|
728
|
+
|
|
704
729
|
## 许可证
|
|
705
730
|
|
|
706
731
|
MIT 协议。详见 [LICENSE](LICENSE)。
|
package/SKILL.md
CHANGED
|
@@ -58,6 +58,7 @@ Each stage produces artifacts in `.design/` inside the current project.
|
|
|
58
58
|
| **Debug & Workflow** | | |
|
|
59
59
|
| `debug [<symptom>]` | `get-design-done:gdd-debug` | Symptom-driven design investigation; persistent state in `.design/DEBUG.md` |
|
|
60
60
|
| `do <natural language>` | `get-design-done:gdd-do` | Natural-language router — parses intent, confirms, dispatches |
|
|
61
|
+
| `report-issue [<cmd>] [--force-report]` | `get-design-done:report-issue` | Consent-gated GitHub issue reporter — triage, pseudonymize, draft to disk, submit via `gh` (no auto-mode; hardcoded destination) |
|
|
61
62
|
| **Ship & Safety** | | |
|
|
62
63
|
| `ship [--title <t>] [--draft]` | `get-design-done:gdd-ship` | Post-verify PR flow — clean branch + `gh pr create` |
|
|
63
64
|
| `pr-branch [<base>]` | `get-design-done:gdd-pr-branch` | Strip `.design/` and `.planning/` commits for clean code-review branch |
|
|
@@ -231,6 +232,7 @@ If `$ARGUMENTS` is a stage or command name — invoke it directly, no state chec
|
|
|
231
232
|
# --- Debug & Workflow ---
|
|
232
233
|
/gdd:debug → Skill("get-design-done:gdd-debug")
|
|
233
234
|
/gdd:do → Skill("get-design-done:gdd-do")
|
|
235
|
+
/gdd:report-issue → Skill("get-design-done:report-issue")
|
|
234
236
|
# --- Ship & Safety ---
|
|
235
237
|
/gdd:ship → Skill("get-design-done:gdd-ship")
|
|
236
238
|
/gdd:pr-branch → Skill("get-design-done:gdd-pr-branch")
|
|
@@ -184,13 +184,54 @@ N entries surfaced across M feeds. K skipped.
|
|
|
184
184
|
```
|
|
185
185
|
- Entry line format is exact: `- **[Title](url)** — feed: <feed-title> — *<rationale>*`. Em-dash (`—`), italicized rationale, no trailing period unless the rationale itself ends one.
|
|
186
186
|
|
|
187
|
+
## Step 7.5 — Emit `kfm-candidate` events (Phase 30.5-03 D-06)
|
|
188
|
+
|
|
189
|
+
After classifying the new entries (Step 5) but BEFORE writing the snapshot (Step 6), evaluate every NEW entry against the failure-mode-article whitelist. The whitelist patterns (case-insensitive) are:
|
|
190
|
+
|
|
191
|
+
- `/common errors/i`
|
|
192
|
+
- `/failure modes/i`
|
|
193
|
+
- `/troubleshooting/i`
|
|
194
|
+
- `/known issues/i`
|
|
195
|
+
- `/pitfalls/i`
|
|
196
|
+
|
|
197
|
+
For each entry whose `title` matches ANY pattern, emit a single `kfm-candidate` event to the events stream (`.design/telemetry/events.jsonl`) via `scripts/lib/event-stream/writer.ts` (or the Bash equivalent — `printf '%s\n' "<json>" >> .design/telemetry/events.jsonl`).
|
|
198
|
+
|
|
199
|
+
Event payload shape — validates against `reference/schemas/events.schema.json` definitions `KfmCandidatePayload` (allOf[1] branch). Required 7 fields:
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"type": "kfm-candidate",
|
|
204
|
+
"timestamp": "<ISO-8601>",
|
|
205
|
+
"sessionId": "authority-watcher",
|
|
206
|
+
"payload": {
|
|
207
|
+
"event_id": "kfm-cand-<feed-id>-<entry-id>-<unix-ms>",
|
|
208
|
+
"source": "authority_watcher",
|
|
209
|
+
"article_url": "<entry.permalink or entry.link>",
|
|
210
|
+
"article_title": "<entry.title verbatim>",
|
|
211
|
+
"suggested_symptom": "<entry.title sliced to 180 chars>",
|
|
212
|
+
"suggested_pattern_hint": "<best-effort up to 3 ALL-CAPS error tokens joined by |, or empty>",
|
|
213
|
+
"raw_excerpt": "<entry.summary truncated to 500 chars with … suffix>"
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Excerpt cap.** `raw_excerpt` MUST be ≤500 chars (the schema rejects longer). Truncate with a single-char ellipsis when the source summary exceeds 500.
|
|
219
|
+
|
|
220
|
+
**One event per matched entry.** Do NOT emit duplicates within a single run; if `event_id` is already present in the stream from a prior run, the writer's dedup logic handles it (Plan 22 event-chain).
|
|
221
|
+
|
|
222
|
+
**No catalogue writes.** This step ONLY emits events. The Phase 30.5-03 reflector consumes them into `.design/reflections/incubator/kfm-<slug>/CATALOGUE-ENTRY.md` drafts; the user reviews via `/gdd:apply-reflections` and accepts/rejects per Plan 30.5-03 Task 1. Authority-watcher NEVER writes to `reference/known-failure-modes.md` directly (D-06 + Phase 11 SC-8).
|
|
223
|
+
|
|
224
|
+
Programmatic helper available at `scripts/lib/authority-watcher/index.cjs` — `classifyArticles(articles) → events`. Callers in test harnesses use the helper directly; the agent emits events via the Bash equivalent.
|
|
225
|
+
|
|
187
226
|
## Step 8 — Output
|
|
188
227
|
|
|
189
228
|
Emit a single-line summary to stdout:
|
|
190
229
|
|
|
191
|
-
- **Normal mode:** `Surfaced N entries across M feeds. K skipped. See .design/authority-report.md.`
|
|
230
|
+
- **Normal mode:** `Surfaced N entries across M feeds. K skipped. <X kfm-candidate events emitted.> See .design/authority-report.md.`
|
|
192
231
|
- **First-run / refresh mode:** `Seeded snapshot for N feeds — next run will surface new entries.`
|
|
193
232
|
|
|
233
|
+
When `X > 0`, the suffix `X kfm-candidate events emitted` is appended; when `X == 0`, omit the suffix entirely.
|
|
234
|
+
|
|
194
235
|
## Do Not
|
|
195
236
|
|
|
196
237
|
- Do NOT modify `agents/design-reflector.md`. Reflector integration is Plan 13.2-03's scope and lives in `skills/reflect/SKILL.md` only.
|
|
@@ -35,6 +35,18 @@ Read flow:
|
|
|
35
35
|
|
|
36
36
|
Legacy grep-based parsing of skill outputs is preserved as a fallback for skills that haven't yet migrated to emit `reflection.proposal` events (Phase 22 scope). If no `reflection.proposal` events are present in the stream, run the legacy harvest across `.design/learnings/*.md` and `.design/intel/` exactly as before — both paths produce the same Proposals section format.
|
|
37
37
|
|
|
38
|
+
## Capability-gap pattern scan (Phase 29 Plan 02)
|
|
39
|
+
|
|
40
|
+
During the reflection pass, also run the capability-gap pattern scan to detect recurring patterns lacking a dedicated executable owner. The scan emits `capability_gap` events with `source: "reflector_pattern"` for Plan 29-03 to aggregate.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
node -e "console.log(JSON.stringify(require('./scripts/lib/reflector/capability-gap-scan.cjs').runCapabilityGapScan(), null, 2))"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The scan reads three signal sources: `.design/intel/*.md` `Touches:` clusters, `.design/telemetry/posterior.json` high-usage arms with no specialized agent, and recent `.design/gep/events.jsonl` decision sequences. MCP-probe failures (`outcome === 'connection-error'`, `agent === 'mcp-probe'`, or `mcp_probe: true`) do NOT trigger gap events (CONTEXT D-08). See @skills/reflect/procedures/capability-gap-scan.md for the full contract.
|
|
47
|
+
|
|
48
|
+
Cite the returned `emittedEventIds` in the run summary under a `## Capability gaps emitted` heading. The threshold knob is `reflector.capability_gap_threshold` in `.design/config.json` (default `N=3`, integer ≥ 1).
|
|
49
|
+
|
|
38
50
|
## Required Reading
|
|
39
51
|
|
|
40
52
|
The orchestrating stage supplies a `<required_reading>` block in the prompt. Read every listed file before acting — this is mandatory.
|
|
@@ -52,6 +64,8 @@ Minimum expected inputs (skip gracefully if absent, note what's missing):
|
|
|
52
64
|
|
|
53
65
|
Write `.design/reflections/<cycle-slug>.md`. If `--dry-run` is set in the spawning prompt, print proposals to stdout only — do not write the file.
|
|
54
66
|
|
|
67
|
+
If the capability-gap pattern scan emitted any events during this run, include a `## Capability gaps emitted` heading listing each `event_id` with the source signal kind (`intel` | `posterior` | `trajectory`) and the `suggested_kind` (`agent` | `skill`) per event. Plan 29-03 reads these events from `.design/gep/events.jsonl` to cluster recurring `capability_gap` events for `/gdd:apply-reflections`.
|
|
68
|
+
|
|
55
69
|
Terminate with `## REFLECTION COMPLETE`.
|
|
56
70
|
|
|
57
71
|
## Reflection Sections
|
|
@@ -203,6 +217,42 @@ Render each `bandit_arbitrage` entry into the Proposals section as a `[FRONTMATT
|
|
|
203
217
|
|
|
204
218
|
---
|
|
205
219
|
|
|
220
|
+
### 9. Capability gaps observed (Phase 29 — D-01 / D-03)
|
|
221
|
+
|
|
222
|
+
**Why this exists:** Plans 29-01 and 29-02 emit `capability_gap` events to `.design/gep/events.jsonl` whenever `/gdd:fast`, `gdd-router`, or the reflector pattern-detection pass identifies a lookup-fail with no dedicated owner. This section surfaces those events as clusters in the cycle markdown and evaluates the Stage-0 → Stage-1 gate per `reference/capability-gap-stage-gate.md`.
|
|
223
|
+
|
|
224
|
+
**Data sources:**
|
|
225
|
+
|
|
226
|
+
- `.design/gep/events.jsonl` — the Phase 22 causal event chain. Rows where `type === 'capability_gap'` (or `outcome === 'capability_gap'`) are aggregated by `payload.context_hash`.
|
|
227
|
+
- `.design/config.json` (optional) — `capability_gap_gate.{K, M, stddev_threshold}` overrides. Defaults: `K=3`, `M=10`, `stddev_threshold=0.05` per D-03.
|
|
228
|
+
|
|
229
|
+
**The mechanism:**
|
|
230
|
+
|
|
231
|
+
1. Invoke `scripts/lib/reflections-cycle-writer.cjs` via Bash with `--chain=.design/gep/events.jsonl` and (when available) `--history=<path>` pointing at an array of prior cycle cluster lists.
|
|
232
|
+
2. The shim calls `aggregateCapabilityGaps()` from `scripts/lib/reflector-capability-gap-aggregator.cjs` which clusters events by `context_hash`, caps each cluster's example evidence at 3, and orders by size desc.
|
|
233
|
+
3. The shim calls `renderGapsSection(clusters)` which returns the `## Capability gaps observed` markdown block. The block is empty (no header emitted) when there are no clusters in this cycle — the cycle markdown is unchanged.
|
|
234
|
+
4. When `--history` is supplied AND at least M cycles have been observed, the shim also calls `evaluateStageGate(history, config)`. If the gate is crossed AND `.design/config.json` does NOT already carry `capability_gap_gate.user_prompted_at`, a one-time prompt block is appended (verbatim text in `reference/capability-gap-stage-gate.md` § 5).
|
|
235
|
+
|
|
236
|
+
**Bash invocation (executor follows verbatim):**
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
node scripts/lib/reflections-cycle-writer.cjs \
|
|
240
|
+
--chain=.design/gep/events.jsonl \
|
|
241
|
+
--config=.design/config.json
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Append stdout to the cycle markdown body (after Section 8 / before the Proposals header). If `--history=<path>` is wired by a future cycle-aggregator, add the flag. For Stage 0 (this phase), per-cycle cluster aggregation alone is the deliverable — gate evaluation surfaces additively when history is present.
|
|
245
|
+
|
|
246
|
+
**Important discipline (D-01 lock):**
|
|
247
|
+
|
|
248
|
+
- This section NEVER auto-flips `capability_gap_gate.stage` or any other runtime state. The output is markdown only; the user opts in via Plan 29-05's apply-reflections extension.
|
|
249
|
+
- The shim is read-only with respect to `.design/config.json`. The only state-mutating writer is the user-driven opt-in path (deferred to 29-05).
|
|
250
|
+
- `evidence_refs[]` content is rendered as-is in the markdown table examples column — per the plan's threat model T-29.03-04, evidence refs are trusted-content (file:line or event-id strings from the 29-01 schema).
|
|
251
|
+
|
|
252
|
+
**Helper:** `scripts/lib/reflector-capability-gap-aggregator.cjs` exports `aggregateCapabilityGaps`, `renderGapsSection`, `evaluateStageGate`. The shim wraps these for invocation from the agent prompt; tests in `tests/reflector-capability-gap-aggregation.test.cjs` cover the helper directly with synthetic fixtures (D-11).
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
206
256
|
## Proposals
|
|
207
257
|
|
|
208
258
|
After all sections, write a **Proposals** section. Number proposals sequentially. Every proposal must include evidence — no vague observations.
|