@deftai/directive-content 0.109.1 → 0.110.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/deft-directive-triage/SKILL.md +3 -3
- package/Taskfile.yml +8 -1
- package/commands.md +6 -6
- package/contracts/design-critique.md +39 -10
- package/contracts/path-write-fence.md +27 -6
- package/docs/consumer-issue-label-kit.md +6 -19
- package/docs/getting-started.md +1 -1
- package/docs/grok-build-subscription-setup.md +146 -0
- package/docs/scope-provenance.md +26 -0
- package/docs/test-boundary.md +3 -1
- package/package.json +1 -1
- package/packs/skills/skills-pack-0.1.json +30 -30
- package/scm/github.md +1 -1
- package/skills/deft-directive-design-critique/SKILL.md +5 -2
- package/skills/deft-directive-design-critique/references/motion-shape.md +1 -1
- package/skills/deft-directive-portfolio-priority/SKILL.md +2 -2
- package/skills/deft-directive-refinement/SKILL.md +3 -3
- package/skills/deft-directive-swarm/references/host-grok-build.md +2 -0
- package/skills/deft-directive-triage/SKILL.md +13 -115
- package/tasks/triage-classify.yml +11 -1
- package/templates/agents-entry.md +3 -3
- package/templates/design-critique-brief.md +3 -0
package/scm/github.md
CHANGED
|
@@ -406,7 +406,7 @@ Agent `edit_files` operations can fail when structured file sections contain Uni
|
|
|
406
406
|
|
|
407
407
|
**Status / role**: `status:tracker`, `status:child` (parented work), optional `epic` only for multi-ship product roots; project-specific holds as needed
|
|
408
408
|
|
|
409
|
-
**Mirror** (
|
|
409
|
+
**Mirror** (`triage:classify -- --mirror`) is withdrawn (#4070). Do not stamp `triaged` / `triage:*` from classify. Replacement sieve is #4071.
|
|
410
410
|
|
|
411
411
|
### Consumer hard-blocker (`adoption-blocker`)
|
|
412
412
|
|
|
@@ -40,7 +40,7 @@ Normative rules live in [`contracts/design-critique.md`](../../contracts/design-
|
|
|
40
40
|
|
|
41
41
|
Comment lead (model then role): Stop 3 — Critic envelope.
|
|
42
42
|
Operator-gated loop. Successor lean. Parent-side substantiation. Operator verbs. Dual stop. Halt line. Bind after accepted synthesis.
|
|
43
|
-
After
|
|
43
|
+
After this round's siblings are posted: successor lean, then verbs.
|
|
44
44
|
Auto-stamp after operator confirm; not while same-round siblings outstanding.
|
|
45
45
|
Walk / walk all. Auto-stamp when agents agree: Operator verbs.
|
|
46
46
|
Parent chip write: scm:issue:design-critique-chip.
|
|
@@ -52,11 +52,14 @@ Each critic dispatch EXITs after posting.
|
|
|
52
52
|
|
|
53
53
|
Not sequential review. Same-round critics are isolated: each reads one fixed input ceiling and cannot read other siblings' posts through the thread. More: [`references/motion-shape.md`](references/motion-shape.md).
|
|
54
54
|
|
|
55
|
-
After
|
|
55
|
+
After same-round siblings are posted, the parent posts the successor lean; the operator confirms or amends before bind or stamp.
|
|
56
56
|
|
|
57
57
|
⊗ Auto-dispatch critics from this skill.
|
|
58
58
|
⊗ Copy the variant table, synthesis rules, or other contract bodies into this skill.
|
|
59
59
|
|
|
60
|
+
Seat families and Grok Build launcher: Envelope and ceiling.
|
|
61
|
+
Dispatch-composition miss: offer or file a prevention issue.
|
|
62
|
+
|
|
60
63
|
## EXIT
|
|
61
64
|
|
|
62
65
|
deft-directive-design-critique complete -- exiting skill. Next: operator fills the brief template and dispatches the next envelope.
|
|
@@ -12,7 +12,7 @@ Orientation only. Normative rules: [`contracts/design-critique.md`](../../../con
|
|
|
12
12
|
|
|
13
13
|
| Step | Actor | Action |
|
|
14
14
|
|------|-------|--------|
|
|
15
|
-
| After
|
|
15
|
+
| After same-round siblings are posted | Parent | Post successor lean with proposed per-heading takes |
|
|
16
16
|
| Before bind/stamp | Operator | Confirm or amend that lean |
|
|
17
17
|
| Next envelope | Operator (or parent after operator verb) | Fill brief template and dispatch |
|
|
18
18
|
|
|
@@ -53,7 +53,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
53
53
|
## Inputs
|
|
54
54
|
|
|
55
55
|
- ! Local `.deft-cache/github-issue/` (bodies available)
|
|
56
|
-
- ! Classify
|
|
56
|
+
- ! Classify --mirror is withdrawn (#4070). Use a read-only `task triage:queue` listing (or a captured #4070 digest) as **FILTER only**. ⊗ Run `task triage:classify -- --mirror`.
|
|
57
57
|
- ~ Optional theme slice: label family, title prefix, author, epic parent
|
|
58
58
|
|
|
59
59
|
## Phases
|
|
@@ -66,7 +66,7 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
66
66
|
|
|
67
67
|
### Phase 1 — Classify as FILTER only
|
|
68
68
|
|
|
69
|
-
1. !
|
|
69
|
+
1. ! Classify --mirror is withdrawn (#4070). Partition from a read-only `task triage:queue` listing or a captured digest from `task triage:strip-withdrawn-chips -- --emit-digest`. ⊗ Run live `task triage:classify -- --mirror`.
|
|
70
70
|
2. ! Use classify outcomes only to **filter** the portfolio slice (e.g. deep-dive candidates from `no_match`; keep escalate on an interrupt queue).
|
|
71
71
|
3. ⊗ Use classify disposition chips as the **ranker** or final shortlist order.
|
|
72
72
|
4. ⊗ Pass `--apply` or `--re-enrich` with intent to write labels from this skill.
|
|
@@ -28,7 +28,7 @@ Conversational refinement session -- ingest, evaluate, reconcile, and prioritize
|
|
|
28
28
|
|
|
29
29
|
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
30
30
|
|
|
31
|
-
**Upstream pass**:
|
|
31
|
+
**Upstream pass**: classify playbook withdrawn (#4070). Work selection is `task plan-sequence:current`, then a read-only `task triage:queue` listing. The withdrawn stub is [`../deft-directive-triage/SKILL.md`](../deft-directive-triage/SKILL.md). Replacement sieve is #4071. Ingest / `task triage:accept` stay.
|
|
32
32
|
|
|
33
33
|
**See also**: [`../../contracts/deterministic-questions.md`](../../contracts/deterministic-questions.md) (canonical numbered-menu rule used by every Phase 0 / Phase 2-5 gate below) | `task cache:fetch-all` / `task cache:get` (Tier 1 unified content cache, #883 Story 2) | `task triage:bootstrap` / `task triage:accept` / `task triage:reject` / `task triage:defer` / `task triage:needs-ac` / `task triage:mark-duplicate` / `task triage:bulk-*` / `task triage:refresh-active` (Phase 0 action surface, #845 + #883 Story 3 rebind).
|
|
34
34
|
|
|
@@ -101,10 +101,10 @@ The agent may suggest the next phase, but the user decides. Phases can be entere
|
|
|
101
101
|
3. ! **Outstanding-work gate.** If the cache is populated AND any of `untriaged`, `stale-defer (resume condition met)`, or `in-flight` is non-zero, surface the one-liner verbatim to the user with the canonical recommendation:
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
|
|
104
|
+
classify playbook withdrawn (#4070) -- work selection is `task plan-sequence:current` then a read-only `task triage:queue` listing. Proceed to refinement ingest? [y/N]
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
~ Default is `N`:
|
|
107
|
+
~ Default is `N`: on `N`, exit with the canonical confirmation phrasing and the chaining instruction `Run task plan-sequence:current, then a read-only task triage:queue listing (#4070).`. On `y`, proceed to Phase 0b.
|
|
108
108
|
|
|
109
109
|
4. ? When all counts are zero (cache populated, no outstanding work), proceed to Phase 0b without prompting.
|
|
110
110
|
|
|
@@ -31,6 +31,8 @@ This path became first-class in #1342 (platform adapter slices 1-3) and is fully
|
|
|
31
31
|
|
|
32
32
|
~ This is the first-class non-Warp path. Workers use worktree state polling (`git status`, `git log`) and `get_command_or_subagent_output` as their coordination channel instead of Warp tab state.
|
|
33
33
|
|
|
34
|
+
! Design-critique N≥3 other-family seats are not `spawn_subagent` Grok catalog rows. When `claude` / `codex` resolve on PATH, CLI-spawn those seats (`content/docs/grok-build-subscription-setup.md`). Paste-ready is fallback. Normative stop: `content/contracts/design-critique.md` Envelope and ceiling (#4067).
|
|
35
|
+
|
|
34
36
|
|
|
35
37
|
## Monitor notes
|
|
36
38
|
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: deft-directive-triage
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
plan-sequence, walking per-item decisions (accept / reject / defer /
|
|
8
|
-
needs-ac / mark-duplicate), and auditing the session. Use when the operator
|
|
9
|
-
asks what to work on next, wants to build a cohort, work the cache, or run a
|
|
10
|
-
triage hygiene pass.
|
|
4
|
+
Withdrawn (#4070). Classify playbook is off. Work selection is
|
|
5
|
+
plan-sequence:current then a read-only triage:queue listing. Replacement
|
|
6
|
+
sieve is #4071. Triggers still match so packs:slice finds this stub.
|
|
11
7
|
triggers:
|
|
12
8
|
- triage
|
|
13
9
|
- triage hygiene
|
|
@@ -27,120 +23,22 @@ triggers:
|
|
|
27
23
|
|
|
28
24
|
# Deft Directive Triage
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
Withdrawn (#4070). Replacement sieve is #4071. #3579 is transitively withdrawn for the gap.
|
|
31
27
|
|
|
32
28
|
Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
33
29
|
|
|
34
|
-
##
|
|
30
|
+
## When to Use
|
|
35
31
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Deterministic Questions Contract
|
|
39
|
-
|
|
40
|
-
! Every numbered-menu prompt rendered in this skill (Phase 2 candidate selection, Phase 3 per-item decision walk, post-Accept offer) ! MUST follow [`../../contracts/deterministic-questions.md`](../../contracts/deterministic-questions.md): render the canonical numbered menu in chat unless the host UI visibly preserves numeric option labels and returns numeric selections or exact displayed option text. The final two numbered options are `Discuss` and `Back`, in that order, and the Discuss-pause semantic from the contract applies verbatim -- on `Discuss` the agent halts the in-progress sequence and resumes only on an explicit user signal.
|
|
41
|
-
|
|
42
|
-
## Work selection fork (#2542 / #2402)
|
|
43
|
-
|
|
44
|
-
Directive does not guess your mix: **ordered plan** (`task plan-sequence:*`) when you know the next units in order, or **ranked queue** (`task triage:queue`) when picking from the backlog. Labels bias the queue; they do not override an active plan.
|
|
45
|
-
|
|
46
|
-
! Before Phase 2 on bare "what's next?", run `task plan-sequence:current`. Active sequence → that entry only; exhausted → fail closed. Explicit "what's the queue?" / "build a cohort" → Phase 2. See `commands.md` § Backlog Triage → Two paths.
|
|
47
|
-
|
|
48
|
-
## Phase 0 -- Sync
|
|
49
|
-
|
|
50
|
-
! Probe cache freshness before doing any classification or selection. Stale cache reads produce stale decisions; the gate is the contract.
|
|
51
|
-
|
|
52
|
-
1. ! Run `task verify:cache-fresh` (D5 / #1127). Exit 0 -> proceed to Phase 1. Exit 1 (stale or blocked) -> refresh per the printed remediation. Exit 2 (no bootstrap) -> run `task triage:bootstrap` first. When the cache has zero entries, read paths auto-fetch from GitHub first (#2575).
|
|
53
|
-
2. ~ Refresh path: `task cache:fetch-all -- --source=github-issue --repo OWNER/NAME` for an already-bootstrapped project; `task triage:bootstrap` for a first-time seed.
|
|
54
|
-
3. ~ If `xbrief/active/*.xbrief.json` references are in play, run `task triage:refresh-active` to surface drift before the queue is rendered.
|
|
55
|
-
4. ~ When the session one-liner carries `[scope-drift] N` (D14 / #1133), run `task triage:scope-drift` and choose subscribe / ignore before walking the queue.
|
|
56
|
-
5. ⊗ Walk the queue against a stale cache -- the audit log will record decisions against bodies the operator never actually saw.
|
|
57
|
-
|
|
58
|
-
## Phase 1 -- Classify
|
|
59
|
-
|
|
60
|
-
! Inspect the auto-classification audit log so manually-decided items are not re-walked, and surface anomalies before the queue render.
|
|
61
|
-
|
|
62
|
-
1. ! Run `task triage:classify --list` (D10 / #1129) to render effective rules and hold-markers.
|
|
63
|
-
2. ! Walk recent `xbrief/.eval/candidates.jsonl` entries for anomalies (classifier disagreement, repeated defer, stale needs-ac); surface before Phase 2; do NOT auto-fix.
|
|
64
|
-
3. ~ Scope widen/narrow via `task triage:scope --list` (D12 / #1131); edits belong in PROJECT-DEFINITION.
|
|
65
|
-
4. ~ Label hygiene: recommend repo labels via `gh label list` when unlabeled; do not invent labels or block creation solely for missing labels.
|
|
66
|
-
5. ⊗ Re-classify terminally decided items without operator approval -- supersession is `task triage:reset <N>` only.
|
|
67
|
-
|
|
68
|
-
## Phase 2 -- Present
|
|
69
|
-
|
|
70
|
-
! Apply the Work selection fork gate (#2542): when no ordered-plan is active, render `task triage:queue` before suggesting work (#1149). Active sequence yields to the ordered-plan entry (#2402).
|
|
71
|
-
|
|
72
|
-
1. ! Run `task triage:queue --limit=N` (D11 / #1128) -- default `N=10`. Groups `[RESUME]` -> `[URGENT]` -> untriaged -> other; ranking via `plan.policy.triageRankingLabels[]`, tiebreak `updated_at` desc.
|
|
73
|
-
2. ! For per-item detail, run `task triage:show <N>` (default) or `task triage:show --format=operator <N>` (#2890) -- cached payload, latest decision, audit timeline, active-xBRIEF flag; operator format is the pasteable Phase 3 brief backbone. Exit 0 on hit, 1 on cache miss (re-sync per Phase 0).
|
|
74
|
-
3. ~ Present the ranked **queue listing** verbatim; do NOT silently re-rank, drop, or annotate the listing beyond the canonical renderer. This queue non-annotation rule does **not** forbid Phase 3 per-candidate operator briefs or leans (see Phase 3 / #2890).
|
|
75
|
-
4. ⊗ Recommend a specific issue without `task triage:queue` first, or an issue absent from the queue without `task triage:show` to surface why.
|
|
76
|
-
|
|
77
|
-
## Phase 3 -- Decide
|
|
78
|
-
|
|
79
|
-
! Walk per-item decisions through the canonical `task triage:*` verbs (tasks own audit-log append / schema / `xbrief/proposed/` write).
|
|
80
|
-
|
|
81
|
-
! **Operator brief (same turn as menu) (#2890 / #3116):** Before every per-item decision menu, present an operator brief in the **same operator-visible message/surface** as the menu, containing at least: **URL-first** lead (canonical issue URL as the first line for that item, or `#N title` + URL); labels (or explicit none); **current-state validity** (`still-open` | `partial` | `likely-shipped` | `needs-re-scope`) + one-line evidence (linked closed PR, code path, or "no evidence of fix"); 2–5 line problem/context summary; AC bullets or explicit "thin body / no AC"; agent **lean** + one-line why (Accept / Defer / Reject / Needs-AC / …). ~ Prefer `task triage:show --format=operator <N>` as the brief backbone (URL-first + validity placeholder); agent still owns validity verdict and lean. ⊗ Menu-only or chip-only Phase 3 turns without that brief. ⊗ Brief-only turn followed by a later chip/menu-only turn that does not restate the brief. ⊗ Body-only summary without validity check against current master, closed children, or linked PRs.
|
|
82
|
-
|
|
83
|
-
! **Host structured-question adapter:** On chips / `ask_user` / similar UIs (e.g. OpenClaw `ask_user`), keep the prose brief in chat; structured options are **actions only** (Accept / Defer / Reject / Needs-AC / Mark duplicate / Discuss / Back). Option labels ≉ substitute for the brief.
|
|
84
|
-
|
|
85
|
-
For each candidate, render the canonical numbered action menu and dispatch:
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
What would you like to do with this candidate?
|
|
89
|
-
1. Accept -- `task triage:accept -- --issue <N> --repo OWNER/NAME`
|
|
90
|
-
2. Reject -- `task triage:reject -- --issue <N> --repo OWNER/NAME`
|
|
91
|
-
3. Defer -- `task triage:defer -- --issue <N> --repo OWNER/NAME [--resume-on <event>]`
|
|
92
|
-
4. Needs-AC -- `task triage:needs-ac -- --issue <N> --repo OWNER/NAME`
|
|
93
|
-
5. Mark duplicate -- `task triage:mark-duplicate -- --issue <N> --of <of-issue> --repo OWNER/NAME`
|
|
94
|
-
6. Discuss
|
|
95
|
-
7. Back
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
- ! Map user replies only to the displayed number (`1`-`7`) or exact displayed option text. ⊗ Do NOT infer from alphabetic host affordances or bare letters such as `d` / `b` unless those letters were visibly rendered as choices.
|
|
99
|
-
- ! On `Discuss`, halt immediately, prompt `What would you like to discuss?`, resume only on explicit user signal. ⊗ Implicit resumption.
|
|
100
|
-
- ! On `Back`, un-buffer prior selection and re-render its action menu only before a `task triage:*` dispatch; after dispatch use `task triage:reset`.
|
|
101
|
-
- ~ Bulk: `task triage:bulk-{accept,reject,defer,needs-ac}`; results still flow through the audit log.
|
|
102
|
-
- ⊗ Write to `xbrief/proposed/` directly -- only `task triage:accept` is authorised.
|
|
103
|
-
- ~ **Accept → pending chain (#1136):** `task triage:accept` ingests into **`proposed/`**. To stage into WIP (`pending/`) in one operator action: `task triage:accept -- --issue <N> --repo OWNER/NAME --auto-promote` (WIP cap still enforced; use `--force` on the accept command for WIP override). Separately, promote an already-accepted proposed scope by issue: `task scope:promote -- --from-issue=<N> [--repo OWNER/NAME]` (gates on latest `candidates.jsonl` decision = `accept`; non-accept refuses unless `--force-no-cache`; no decision soft-warns, `--strict` fails). Path-based `task scope:promote -- <file>` remains ungated for refinement scaffolds.
|
|
104
|
-
- ? **After Accept (#3708):** offer `deft-directive-design-critique`. Optional; same after `--auto-promote` (promote already happened). Decline writes nothing. Menu: 1. Run critique (existing ADR-005 path) 2. Skip 3. Discuss 4. Back. Back = Skip (do not re-open Accept; undo is `task triage:reset`).
|
|
105
|
-
|
|
106
|
-
## Phase 4 -- Audit
|
|
107
|
-
|
|
108
|
-
! Confirm the session's decisions landed coherently before exiting the skill.
|
|
109
|
-
|
|
110
|
-
1. ! Run `task triage:audit --format=json` (D11 / #1128); optional `#1180` filters `--since` / `--action`. Transform with `jq` -- framework does not compute trends.
|
|
111
|
-
2. ! Run `task triage:summary` (D2 / #1122) -- `[triage] N untriaged · S stale-defer · M in-flight · WIP X/Y [⚠] [· [scope-drift] N]`.
|
|
112
|
-
3. ~ Non-zero `[scope-drift]` → surface `task triage:scope-drift` + subscribe/unsubscribe/ignore remediation; then `task triage:bootstrap -- --resume`.
|
|
113
|
-
4. ~ Stale accept (no active xBRIEF ref) → re-ingest or `task triage:reset`.
|
|
114
|
-
5. ⊗ Skip Phase 4 audit.
|
|
115
|
-
6. ! Umbrella/epic status: REST comments → `## Current shape (as of pass-N)` (#2066 / #1152); never body alone.
|
|
116
|
-
|
|
117
|
-
## Reversibility
|
|
118
|
-
|
|
119
|
-
! Undo via `task triage:reset <N>` (Layer 5; history never deleted). ⊗ Edit/delete `xbrief/.eval/candidates.jsonl` to "undo".
|
|
120
|
-
|
|
121
|
-
## Quarterly closed-entry archive vs TTL prune (#1137)
|
|
122
|
-
|
|
123
|
-
Live walkers (`triage:queue`, scope-drift, bootstrap) scan `.deft-cache/github-issue/`. Closed issues can linger forever. Operators may run an **explicit, reversible** archive pass — never auto on bootstrap/session/check.
|
|
124
|
-
|
|
125
|
-
| Tool | What it does |
|
|
126
|
-
| --- | --- |
|
|
127
|
-
| `task triage:cache-archive` | Move **closed** + aged (default 30d) entries → `.deft-cache/archived/github-issue/...` with `archive-meta.json`. Skips open lifecycle scopes. `--dry-run` first. |
|
|
128
|
-
| `task triage:archive-list` / `task triage:restore-from-archive` | List / move back to live. |
|
|
129
|
-
| `task cache:prune` | **TTL hard-delete** by `expires_at` — **not** reversible; **not** closed-state archive. |
|
|
130
|
-
|
|
131
|
-
! Prefer archive for closed clutter; use prune only for expired TTL / cap eviction. ⊗ Wire archive into session-start or `task check`.
|
|
132
|
-
|
|
133
|
-
## Anti-Patterns
|
|
134
|
-
|
|
135
|
-
- ⊗ Recommend work without `task triage:queue` (#1149).
|
|
136
|
-
- ⊗ Conclude "nothing to do" from folder scans or live GitHub alone (#2576).
|
|
137
|
-
- ⊗ Stale-cache walk; reimplement audit/`proposed/` writes; treat defer/needs-ac as terminal; edit candidates.jsonl; menu-only Phase 3 without operator brief (#2890); body-only brief without URL-first or current-state validity (#3116).
|
|
32
|
+
- Triggers still match so `packs:slice` finds this stub.
|
|
33
|
+
- ⊗ Do not load the old classify / Phase 1-3 playbook.
|
|
138
34
|
|
|
139
35
|
## EXIT
|
|
140
36
|
|
|
141
|
-
! On
|
|
37
|
+
! On any trigger: print `deft-directive-triage withdrawn -- exiting skill.` Point at https://github.com/deftai/directive/issues/4070 and #4071.
|
|
38
|
+
|
|
39
|
+
! Work selection during the gap: `task plan-sequence:current`, then a read-only `task triage:queue` listing.
|
|
142
40
|
|
|
143
|
-
|
|
41
|
+
⊗ `task triage:classify -- --mirror` (dry-run or `--apply`).
|
|
42
|
+
⊗ Treat leftover `triaged` / `triage:*` chips as a decision.
|
|
144
43
|
|
|
145
|
-
|
|
146
|
-
- Siblings: `deft-directive-refinement`, `deft-directive-swarm`, `deft-directive-sync`
|
|
44
|
+
`task triage:accept` / `issue:ingest` stay. Do not close #1423, #3579, #2611, or #3923.
|
|
@@ -22,7 +22,7 @@ vars:
|
|
|
22
22
|
|
|
23
23
|
tasks:
|
|
24
24
|
classify:
|
|
25
|
-
desc: "Inspect / validate triageAutoClassify + triageLabelMirror
|
|
25
|
+
desc: "Inspect / validate triageAutoClassify + triageLabelMirror. --mirror is withdrawn (#4070)."
|
|
26
26
|
internal: true
|
|
27
27
|
deps: [":engine:_ts-build"]
|
|
28
28
|
dir: '{{.USER_WORKING_DIR}}'
|
|
@@ -30,3 +30,13 @@ tasks:
|
|
|
30
30
|
- task: :engine:invoke
|
|
31
31
|
vars:
|
|
32
32
|
ENGINE_CMD: 'triage-classify --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
33
|
+
|
|
34
|
+
strip-withdrawn-chips:
|
|
35
|
+
desc: "Remaining-set strip of withdrawn triaged / triage:* chips (#4070). Dry-run default; --apply writes. --emit-digest prints shadowed vs faithful classify rows for #4071."
|
|
36
|
+
internal: true
|
|
37
|
+
deps: [":engine:_ts-build"]
|
|
38
|
+
dir: '{{.USER_WORKING_DIR}}'
|
|
39
|
+
cmds:
|
|
40
|
+
- task: :engine:invoke
|
|
41
|
+
vars:
|
|
42
|
+
ENGINE_CMD: 'triage-strip-withdrawn --project-root "{{.USER_WORKING_DIR}}" {{.CLI_ARGS}}'
|
|
@@ -17,11 +17,11 @@ Deft is installed in .deft/core/. Full guidelines: .deft/core/main.md
|
|
|
17
17
|
|
|
18
18
|
## Session routing (#2176)
|
|
19
19
|
|
|
20
|
-
! **Read-only default** until mutation intent: load AGENTS.md / main.md / USER.md / `xbrief/PROJECT-DEFINITION.xbrief.json`; resolve USER.md via `deft session:start` (`USER.md resolved …`; win32 `%APPDATA%\deft\USER.md`; unix `~/.config/deft/USER.md`; ⊗ invent `~/.config/deft` on Windows #2544); confirm Deft alignment + addressing-name; ⊗ no mutable `deft session:start` / triage welcome / sync / branch-policy unless asked or implementation-ready (#2176) — `.deft/core/commands.md` § Session routing. Bootstrap: cold-start → README § Cold-start (#2273) ⊗ never `.deft/core/`; pre-cutover → setup Pre-Cutover (#2068); missing USER.md / PROJECT-DEFINITION → setup Phase 1/2 (#1813) ⊗ before answering; else main → USER → PROJECT-DEFINITION; ~ sync. Mutation → `deft session:start` then `deft verify:session-ritual -- --tier=gated` (#1149). Occupancy (#3433/#3611/#3755): bearer-id, not auth/lineage; `occupancy:grant` → `commands.md`. ? `deft session:start -- --read-only` (#2176).
|
|
20
|
+
! **Read-only default** until mutation intent: load AGENTS.md / main.md / USER.md / `xbrief/PROJECT-DEFINITION.xbrief.json`; resolve USER.md via `deft session:start` (`USER.md resolved …`; win32 `%APPDATA%\deft\USER.md`; unix `~/.config/deft/USER.md`; ⊗ invent `~/.config/deft` on Windows #2544); confirm Deft alignment + addressing-name; ⊗ no mutable `deft session:start` / triage welcome / sync / branch-policy unless asked or implementation-ready (#2176) — `.deft/core/commands.md` § Session routing. Bootstrap: cold-start → README § Cold-start (#2273) ⊗ never `.deft/core/`; pre-cutover → setup Pre-Cutover (#2068); missing USER.md / PROJECT-DEFINITION → setup Phase 1/2 (#1813) ⊗ before answering; else main → USER → PROJECT-DEFINITION; ~ sync. Mutation → `deft session:start` then `deft verify:session-ritual -- --tier=gated` (#1149). Occupancy (#3433/#3611/#3755/#3926): bearer-id, not auth/lineage; `occupancy:grant` → `commands.md`. ? `deft session:start -- --read-only` (#2176).
|
|
21
21
|
|
|
22
22
|
## Session-start ritual (#1149)
|
|
23
23
|
|
|
24
|
-
! On **mutation** session start, run `deft session:start`; before code-writing or `start_agent` dispatch run `deft verify:session-ritual -- --tier=gated` (stale after `plan.policy.sessionRitualStalenessHours`; records `deft verify:tools` / `deft doctor` / `deft verify:cache-fresh` / `deft agents:refresh` / `npm i -g @deftai/directive@latest`; #1149 / #1348) — `.deft/core/commands.md` § Session-start ritual. Recovery: `deft session:ready` (one-shot: start + gated ritual + cache recovery; #2993).
|
|
24
|
+
! On **mutation** session start, run `deft session:start`; before code-writing or `start_agent` dispatch run `deft verify:session-ritual -- --tier=gated` (stale after `plan.policy.sessionRitualStalenessHours`; records `deft verify:tools` / `deft doctor` / `deft verify:cache-fresh` / `deft agents:refresh` / `npm i -g @deftai/directive@latest`; #1149 / #1348) — `.deft/core/commands.md` § Session-start ritual. Recovery: `deft session:ready` (one-shot: start + gated ritual + cache recovery; #2993). The #3124 SCM mirror tip does not fire (`triage:classify --mirror` withdrawn, #4070).
|
|
25
25
|
|
|
26
26
|
## WIP cap
|
|
27
27
|
|
|
@@ -39,7 +39,7 @@ Legacy `vbrief/`; `deft migrate:xbrief` (v0.6→v0.8). New writes `"version": "0
|
|
|
39
39
|
|
|
40
40
|
## Cache-as-authoritative work selection (#1149)
|
|
41
41
|
|
|
42
|
-
! "what next?" → two work-selection modes (#2402): **ordered
|
|
42
|
+
! "what next?" → two work-selection modes (#2402 / #1149): **ordered-plan first** (`deft plan-sequence:current`), then a read-only `deft triage:queue --limit=10` listing (D11) — `commands.md` § Backlog Triage → Two paths. `deft-directive-triage` classify withdrawn (#4070 / #4071). Empty cache auto-populates from GitHub (#2575).
|
|
43
43
|
|
|
44
44
|
⊗ Recommend work without queue/plan consult; ⊗ widen past an exhausted plan; ⊗ conclude "nothing to do" from `xbrief/{pending,active}` folder scans or GitHub-only reads without `deft triage:queue` (#2576).
|
|
45
45
|
|
|
@@ -14,6 +14,8 @@ Dispatch envelope skeleton for one critic or synthesis pass. Fill the fields. Re
|
|
|
14
14
|
- SHA at dispatch:
|
|
15
15
|
- Target (work issue or umbrella):
|
|
16
16
|
- Audit targets (marker ids, comma-separated, or `none`; ids only, no parent rationale):
|
|
17
|
+
- Seat families (N≥3: three claimed families before spawn):
|
|
18
|
+
- Launcher (spawn_subagent | grok | claude | codex | paste-ready):
|
|
17
19
|
|
|
18
20
|
## Forbidden inputs
|
|
19
21
|
|
|
@@ -40,6 +42,7 @@ Read, do not restate:
|
|
|
40
42
|
| Parent-facing dispatch rules | Parent-facing dispatch rules |
|
|
41
43
|
| Critic method | Critic method |
|
|
42
44
|
| Envelope and ceiling | Envelope and ceiling |
|
|
45
|
+
| Seat families / Grok Build launcher | Envelope and ceiling |
|
|
43
46
|
| Comment lead (model then role) | Stop 3 — Critic envelope |
|
|
44
47
|
| Fresh reiteration | Stop 4 — Residual reiteration |
|
|
45
48
|
| Operator-gated loop | Operator-gated loop |
|