mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-12 19:44:48 +01:00
plan-tune: describe the never-ask hook truthfully; drop plan codes (s09 H8, H9, H10, M10; W4 plan-tune)
W4: make the text true rather than change the hook. The consent copy and scope now say never-ask questions are auto-decided with gstack's recommendation by the question-preference hook (one-way doors still ask), and the profile itself never changes defaults. H10 removes the nonexistent --dismiss command. M10 strips cathedral/Layer/D-codes and keeps mechanisms. Template-only commit: generated SKILL.md is expected red until the regeneration commit.
This commit is contained in:
1 parent
d299fc8548
commit
6f12766db6
1 file changed
+27
-27
+27
-27
@@ -42,9 +42,11 @@ this skill in plain English and you interpret. Never require subcommand syntax.
|
||||
Shortcuts exist (`profile`, `vibe`, `stats`, etc.) but users don't have to
|
||||
memorize them.
|
||||
|
||||
**v1 scope (observational):** typed question registry, per-question explicit
|
||||
preferences, question logging, dual-track profile (declared + inferred),
|
||||
plain-English inspection. No skills adapt behavior based on the profile yet.
|
||||
**Scope:** typed question registry, per-question explicit preferences,
|
||||
question logging, dual-track profile (declared + inferred), plain-English
|
||||
inspection. Per-question preferences take effect: the question-preference hook
|
||||
auto-decides `never-ask` questions (see Recent auto-decisions). The profile
|
||||
itself never changes a skill's defaults.
|
||||
|
||||
Canonical reference: `docs/designs/PLAN_TUNING_V0.md`.
|
||||
|
||||
@@ -66,7 +68,7 @@ Each gate is guarded by a marker so the user is prompted at most once per choice
|
||||
`~/.gstack/developer-profile.json`'s `declared` object is empty AND
|
||||
`~/.gstack/.declared-setup-prompted` is missing → run `5-Q setup` below.
|
||||
Touch the marker after setup completes OR is declined.
|
||||
3. **Dream-cycle gate (Layer 8 / cathedral T10/T11).** If
|
||||
3. **Dream-cycle gate.** If
|
||||
`~/.gstack/projects/<slug>/distillation-proposals.json` exists AND has
|
||||
`applied_at` missing on any proposal → run `Dream cycle review` below.
|
||||
Marker: each proposal carries its own `applied_at` so re-firing this
|
||||
@@ -130,8 +132,9 @@ explicit.
|
||||
> Question tuning is off. gstack can learn which of its prompts you find
|
||||
> valuable vs noisy — so over time, gstack stops asking questions you've
|
||||
> already answered the same way. It takes about 2 minutes to set up your
|
||||
> initial profile. v1 is observational: gstack tracks your preferences
|
||||
> and shows you a profile, but doesn't silently change skill behavior yet.
|
||||
> initial profile. Questions you mark never-ask are answered with
|
||||
> gstack's recommendation (one-way doors still ask); your profile is
|
||||
> shown to you, not used to change defaults.
|
||||
> Logs stay local (`~/.gstack/projects/<slug>/question-log.jsonl`).
|
||||
>
|
||||
> RECOMMENDATION: Enable and set up your profile. Completeness: A=9/10.
|
||||
@@ -146,7 +149,7 @@ explicit.
|
||||
> (skills adapting to your steering style). Enabling logs every
|
||||
> AskUserQuestion outcome locally to
|
||||
> `~/.gstack/projects/<slug>/question-log.jsonl` — nothing leaves your
|
||||
> machine. v1 is observational only.
|
||||
> machine. Questions auto-decide only where you set never-ask.
|
||||
>
|
||||
> RECOMMENDATION: Enable and set up your profile. Completeness: A=9/10.
|
||||
>
|
||||
@@ -372,7 +375,7 @@ boil-the-ocean than 0.5 suggests", "I've gotten more careful about architecture"
|
||||
"bump detail_preference up".
|
||||
|
||||
**Always confirm before writing.** Free-form input + direct profile mutation
|
||||
is a trust boundary (Codex #15 in the design doc).
|
||||
is a trust boundary.
|
||||
|
||||
1. Parse the user's intent. Translate to `(dimension, new_value)`.
|
||||
- "more boil-the-ocean" → `scope_appetite` → pick a value 0.15 higher than
|
||||
@@ -426,9 +429,8 @@ the user decides whether declared is wrong or behavior is wrong.
|
||||
|
||||
## Stats
|
||||
|
||||
Cathedral T13 surfaces: host-aware breakdown (claude hook vs codex import
|
||||
vs agent-enriched), marked vs hash-only, auto-decided count, and dream
|
||||
cycle cost-to-date.
|
||||
Shows: host-aware breakdown (claude hook vs codex import vs agent-enriched),
|
||||
marked vs hash-only, auto-decided count, and dream cycle cost-to-date.
|
||||
|
||||
```bash
|
||||
~/.claude/skills/gstack/bin/gstack-question-preference --stats
|
||||
@@ -471,9 +473,8 @@ echo '---DISTILL---'
|
||||
|
||||
Present as a compact summary with plain-English calibration status ("5 more
|
||||
events across 2 more skills and you'll be calibrated" or "you're calibrated").
|
||||
Surface the source breakdown so the user can see capture is real (Codex
|
||||
correction — without source columns, the cathedral's "before:0 / after:>0"
|
||||
claim is invisible).
|
||||
Surface the source breakdown so the user can see which capture paths are
|
||||
actually logging.
|
||||
|
||||
---
|
||||
|
||||
@@ -510,9 +511,9 @@ Run `gstack-question-preference --write '{"question_id":"<id>","preference":
|
||||
|
||||
## Audit unmarked questions
|
||||
|
||||
Top N hash-only question_ids by frequency. These are AUQ fires the cathedral
|
||||
hook captured but cannot enforce against (no `<gstack-qid:foo>` marker in
|
||||
the skill template — D18 progressive markers). Surfacing them drives marker
|
||||
Top N hash-only question_ids by frequency. These are AUQ fires the
|
||||
preference hook captured but cannot enforce against (no `<gstack-qid:foo>`
|
||||
marker in the skill template). Surfacing them drives marker
|
||||
adoption: high-traffic unmarked questions are the next candidates to retrofit.
|
||||
|
||||
```bash
|
||||
@@ -592,20 +593,19 @@ invokes via `/plan-tune distill` / `dream`.
|
||||
~/.claude/skills/gstack/bin/gstack-distill-apply --proposal N
|
||||
```
|
||||
|
||||
4. **On decline**: skip without marking. User can re-decide later (the
|
||||
proposal stays in the file). To dismiss permanently, manually clear:
|
||||
`gstack-distill-apply --proposal N --dismiss` (not implemented in T11;
|
||||
for now, regenerate via next distill run with corrected free-text).
|
||||
4. **On decline**: skip without marking. The proposal stays in the file and
|
||||
the gate offers it again. `gstack-distill-apply` has no dismiss flag; the
|
||||
next distill run overwrites the proposals file.
|
||||
|
||||
5. **gbrain integration.** When `mcp__gbrain__*` tools are available in
|
||||
this session:
|
||||
- On `memory-nugget` apply: `mcp__gbrain__put_page` with the nugget +
|
||||
`mcp__gbrain__extract_facts` + `mcp__gbrain__add_tag` per the cathedral
|
||||
plan D9 routing. Then pass `--gbrain-published true` to the bin so
|
||||
`mcp__gbrain__extract_facts` + `mcp__gbrain__add_tag`. Then pass
|
||||
`--gbrain-published true` to the bin so
|
||||
the proposals file records the mirror.
|
||||
- When gbrain isn't configured (no MCP tools), the bin's local file
|
||||
write is the durable source-of-truth and the PreToolUse hook reads it
|
||||
via Layer 8 memory injection.
|
||||
via memory injection.
|
||||
|
||||
---
|
||||
|
||||
@@ -650,9 +650,9 @@ For background mode (e.g., the user wants to keep working):
|
||||
- **One-way doors override never-ask.** Even with a never-ask preference, the
|
||||
binary returns ASK_NORMALLY for destructive/architectural/security questions.
|
||||
Surface the safety note to the user whenever it fires.
|
||||
- **No behavior adaptation in v1.** This skill INSPECTS and CONFIGURES. No
|
||||
skills currently read the profile to change defaults. That's v2 work, gated
|
||||
on the registry proving durable.
|
||||
- **The profile never changes defaults.** This skill inspects and configures.
|
||||
Per-question preferences can auto-decide questions; the declared/inferred
|
||||
profile is advisory only.
|
||||
- **Completion status:**
|
||||
- DONE — did what the user asked (enable/inspect/set/update/disable)
|
||||
- DONE_WITH_CONCERNS — action taken but flagging something (e.g., "your
|
||||
|
||||
Reference in new issue
Block a user