@deftai/directive-content 0.90.0 → 0.92.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/QUICK-START.md +1 -1
- package/coding/coding.md +8 -0
- package/commands.md +21 -4
- package/contracts/scm-readiness.md +78 -0
- package/docs/deft-directive-disable.md +96 -0
- package/docs/directive-lifecycle.md +16 -0
- package/docs/getting-started.md +2 -0
- package/docs/no-deft-directive.md +1 -0
- package/docs/openclaw-agent-host.md +2 -2
- package/docs/skill-pin-policy.md +7 -0
- package/package.json +1 -1
- package/packs/lessons/lessons-pack-0.1.json +85 -45
- package/packs/patterns/patterns-pack-0.1.json +13 -1
- package/packs/rules/rules-pack-0.1.json +114 -82
- package/packs/skills/skills-pack-0.1.json +8 -5
- package/patterns/in-band-signaling.md +124 -0
- package/scm/github.md +47 -0
- package/skills/deft-directive-build/SKILL.md +44 -1
- package/skills/deft-directive-pre-pr/SKILL.md +4 -2
- package/skills/deft-directive-review-cycle/SKILL.md +50 -2
- package/skills/deft-directive-setup/SKILL.md +104 -1
- package/skills/deft-directive-swarm/references/core-ops.md +1 -0
- package/skills/deft-directive-swarm/references/core-phase-0.md +6 -0
- package/skills/deft-directive-swarm/references/host-openclaw.md +10 -0
- package/tasks/pr.yml +7 -8
- package/tasks/roadmap.yml +1 -1
- package/tasks/scope.yml +4 -1
- package/tasks/spec.yml +5 -2
- package/templates/agent-prompt-preamble.md +3 -0
- package/templates/agents-entry.md +10 -0
- package/templates/swarm-greptile-poller-prompt.md +48 -5
|
@@ -543,9 +543,12 @@ Every worker MUST send a final status message before exiting its tool loop, rega
|
|
|
543
543
|
|
|
544
544
|
! **Thin DONE is not success (#2943):** A terminal message that lacks PR URL / merge evidence (no `PR #N`, no PR URL, no merge confirmation) is a **thin DONE** / failed-leaf signal for the parent monitor — re-dispatch or take over after ground truth. Prefer structured completion fields when the host supplies them (`prUrl`, `mergeStatus`, `emptyDiff`). Workers MUST NOT exit with mid-edit prose and call it `DONE` when the envelope required a PR or merge-ready outcome.
|
|
545
545
|
|
|
546
|
+
! **Empty announce ≠ done / single review-monitor lease (#3044 / FC04 residual):** An empty settle, missing `STATUS:` line, or `status: unknown` from a review-monitor (`subagent_announce` with `(no output)` included) is **not** DONE/CLEAN/merge-ready. Parent MUST same-turn ground truth (`gh pr view` + checks + HEAD) and MUST NOT spawn a second monitor while the prior owner is running or only falsely settled. Prefer one sticky `<!-- deft:review-owner -->` lease and a non-empty `STATUS`/`HEAD`/`CHECKS`/`MERGE` handback. Full MUST language: `skills/deft-directive-review-cycle/SKILL.md` + OpenClaw host adapter residual.
|
|
547
|
+
|
|
546
548
|
! **Parent tool-first after leaf completion (#2943):** When a parent / monitor receives a leaf completion event (`subagent_announce`, parent-push, or host completion notify), its **first response** MUST be a **tool-first** ground-truth batch (`gh` / `git` / worktree or file status) **or** a host **yield** (`sessions_yield` on OpenClaw, or equivalent). ⊗ Multi-sentence progress-only first response with zero tools / yield — the OpenClaw text-repetition hang class (#2943).
|
|
547
549
|
|
|
548
550
|
⊗ Treat thin DONE (no PR URL / merge evidence) as success (#2943).
|
|
551
|
+
⊗ Treat empty/unknown review-monitor settle as DONE without same-turn ground truth, or dual-spawn a second monitor while the first lease is live (#3044).
|
|
549
552
|
|
|
550
553
|
Per-step acks during the run are noise. ONE start message, ONE final message; intermediate messages only on `BLOCKED` / `FAILED`. The final message lets the dispatcher distinguish a clean exit from a silent timeout when the lifecycle event arrives.
|
|
551
554
|
|
|
@@ -5,6 +5,11 @@ Deft is installed in .deft/core/. Full guidelines: .deft/core/main.md
|
|
|
5
5
|
|
|
6
6
|
! If any .deft/core/.agents/skills/ path referenced in this file cannot be read (missing file, stale path from a previous framework version, or a deprecation redirect stub), read .deft/core/QUICK-START.md instead and follow it. QUICK-START refreshes this section idempotently for the current framework version.
|
|
7
7
|
|
|
8
|
+
## Temporary test kill-switch (#3039)
|
|
9
|
+
|
|
10
|
+
! Before further Directive process load, check root `.deft-directive-disable` (presence = flag). If present → stop DD load; recovery = delete file + NEW agent session. Deposit OK; not `.no-deft-directive` (#2926). Docs: `.deft/core/docs/deft-directive-disable.md`.
|
|
11
|
+
⊗ Claim full operation while the flag exists or after delete without a NEW agent session.
|
|
12
|
+
|
|
8
13
|
## Session routing (#2176)
|
|
9
14
|
|
|
10
15
|
! **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). ? `deft session:start -- --read-only` (#2176).
|
|
@@ -63,6 +68,11 @@ Legacy `vbrief/` read-accepted; `deft migrate:xbrief` for `xbrief/` (v0.6→v0.8
|
|
|
63
68
|
! **Default always-pins:** `deft-directive-build`, `deft-directive-pre-pr`, `deft-directive-review-cycle`, `deft-directive-swarm` — read each `SKILL.md` when that work type starts.
|
|
64
69
|
⊗ Pin entire language packs, deployment docs, or framework bulk into AGENTS.md — pins are for false-negative-sensitive process gates only (#2508).
|
|
65
70
|
|
|
71
|
+
## Through-merge worker dispatch (#3032)
|
|
72
|
+
|
|
73
|
+
! On **through merge** / **drive to merge** / land-ship / **drive-to: merge-ready** story intent: parent MUST dispatch a `drive-to: merge-ready` worker (worktree, preflight, pre-pr, review-cycle, merge/`scope:complete`) via the **swarm/solo-worker launch path** even if **cohort size is 1** — parent MUST NOT implement as the leaf. Depth: swarm Phase 0 + skill-pin-policy (#3032 / #1880 Gap C).
|
|
74
|
+
⊗ Parent conversation implements or babysits product fix/CI loops for drive-to:merge-ready work when background subagent/worktree dispatch is available (#3032).
|
|
75
|
+
|
|
66
76
|
## Review-surface precedence (#2308)
|
|
67
77
|
|
|
68
78
|
! Route PR shepherding / review work through `deft-directive-review-cycle` — `.deft/core/.agents/skills/deft-directive-review-cycle/SKILL.md`; host `babysit` / `bugbot` / `security-review` advisory-only (#2308 / #2261).
|
|
@@ -426,10 +426,14 @@ Send to parent:
|
|
|
426
426
|
|
|
427
427
|
Subject: PR #{pr_number} CLEAN -- ready for merge
|
|
428
428
|
Body:
|
|
429
|
-
|
|
429
|
+
STATUS: DONE
|
|
430
|
+
HEAD: <sha>
|
|
431
|
+
CHECKS: <list of CheckRun statuses>
|
|
432
|
+
MERGE: n/a
|
|
433
|
+
ISSUE: open
|
|
434
|
+
NOTES: Greptile CLEAN confidence <N>/5; ready for merge
|
|
430
435
|
Confidence: <N>/5
|
|
431
436
|
Findings: P0=0, P1=0
|
|
432
|
-
CI: <list of CheckRun statuses>
|
|
433
437
|
Last reviewed commit: <sha>
|
|
434
438
|
-- no more polling, exiting now
|
|
435
439
|
|
|
@@ -445,9 +449,13 @@ If the same review surfaces 3 consecutive review cycles (push -> review -> still
|
|
|
445
449
|
|
|
446
450
|
Subject: PR #{pr_number} escalation -- 3 review cycles still surfacing P0/P1
|
|
447
451
|
Body:
|
|
448
|
-
|
|
452
|
+
STATUS: BLOCKED
|
|
453
|
+
HEAD: <sha>
|
|
454
|
+
CHECKS: see latest findings
|
|
455
|
+
MERGE: n/a
|
|
456
|
+
ISSUE: open
|
|
457
|
+
NOTES: 3 review cycles still surfacing P0/P1; <summary>
|
|
449
458
|
Latest findings: <summary>
|
|
450
|
-
Latest HEAD: <sha>
|
|
451
459
|
-- no more polling, exiting now
|
|
452
460
|
|
|
453
461
|
### (3) ERRORED
|
|
@@ -458,7 +466,12 @@ Retry ONCE: post `@greptileai review` as a PR comment via `gh pr comment {pr_num
|
|
|
458
466
|
|
|
459
467
|
Subject: PR #{pr_number} Greptile errored -- escalation required
|
|
460
468
|
Body:
|
|
461
|
-
|
|
469
|
+
STATUS: FAILED
|
|
470
|
+
HEAD: <sha>
|
|
471
|
+
CHECKS: Greptile errored (retry also errored)
|
|
472
|
+
MERGE: n/a
|
|
473
|
+
ISSUE: open
|
|
474
|
+
NOTES: escalate per swarm Phase 6 Step 1 (wait / empty retrigger / override)
|
|
462
475
|
Parent should escalate to user with the three-way choice per
|
|
463
476
|
skills/deft-directive-swarm/SKILL.md Phase 6 Step 1:
|
|
464
477
|
(a) wait longer (~15-20 min)
|
|
@@ -474,6 +487,12 @@ Send:
|
|
|
474
487
|
|
|
475
488
|
Subject: PR #{pr_number} poll cap exceeded -- parent should escalate
|
|
476
489
|
Body:
|
|
490
|
+
STATUS: BLOCKED
|
|
491
|
+
HEAD: <sha>
|
|
492
|
+
CHECKS: <statuses>
|
|
493
|
+
MERGE: n/a
|
|
494
|
+
ISSUE: open
|
|
495
|
+
NOTES: poll cap exceeded; holdout=<which-of-the-five-conditions-failed>
|
|
477
496
|
{poll_cap_minutes}-minute poll cap exceeded.
|
|
478
497
|
Latest state:
|
|
479
498
|
last_reviewed_sha: <sha or "unparsed">
|
|
@@ -494,6 +513,12 @@ Increment the `stall_streak` counter introduced under `## CLEAN gate evaluation,
|
|
|
494
513
|
|
|
495
514
|
Subject: PR #{pr_number} poll loop wedged -- terminal-condition detection failure
|
|
496
515
|
Body:
|
|
516
|
+
STATUS: BLOCKED
|
|
517
|
+
HEAD: <sha>
|
|
518
|
+
CHECKS: holdout=<which-of-the-five-conditions-failed>
|
|
519
|
+
MERGE: n/a
|
|
520
|
+
ISSUE: open
|
|
521
|
+
NOTES: STALL — detector cannot reach CLEAN or P0/P1; diagnose instrumentation
|
|
497
522
|
Detector cannot reach CLEAN or NEW P0/P1 FINDINGS but no blocking signals
|
|
498
523
|
are visible. Likely terminal-condition detection gap on this PR's review surface.
|
|
499
524
|
Latest state:
|
|
@@ -515,6 +540,12 @@ Send:
|
|
|
515
540
|
|
|
516
541
|
Subject: PR #{pr_number} informal-clean missing canonical fields -- recovery required
|
|
517
542
|
Body:
|
|
543
|
+
STATUS: BLOCKED
|
|
544
|
+
HEAD: <sha>
|
|
545
|
+
CHECKS: informal-clean missing canonical fields
|
|
546
|
+
MERGE: n/a
|
|
547
|
+
ISSUE: open
|
|
548
|
+
NOTES: #1543 informal-clean; recovery @greptileai or override
|
|
518
549
|
Greptile informal-clean missing-canonical-fields state (#1543).
|
|
519
550
|
Latest Greptile comment says the diff is clean / prior issues resolved,
|
|
520
551
|
but lacks canonical `Last reviewed commit:` and `Confidence Score: X/5`.
|
|
@@ -542,6 +573,18 @@ Send:
|
|
|
542
573
|
- ! Use Python scripts (single `run_shell_command` call) for the poll loop, NEVER shell `Start-Sleep` + repeated tool calls. The Python script handles `time.sleep({poll_interval_seconds})` between polls and exits when a terminal condition fires.
|
|
543
574
|
- ! Always pass `do_not_summarize_output: true` semantics when fetching `gh pr view --comments` -- summarizers silently drop the Outside-Diff section.
|
|
544
575
|
- ! Send a status message to `{parent_agent_id}` at start (acknowledging the task) and at every terminal exit (CLEAN / NEW P0/P1 FINDINGS escalation / ERRORED / TIMEOUT / STALL / INFORMAL-CLEAN). Route it through the host completion channel for your primitive (see Role posture -- OpenClaw `sessions_spawn` uses parent push / announce). Do NOT silently complete.
|
|
576
|
+
- ! **Required non-empty monitor handback (#3044):** every terminal exit message MUST be non-empty and include these structured fields (map CLEAN → `STATUS: DONE`, NEW P0/P1 / INFORMAL-CLEAN / TIMEOUT / STALL → `STATUS: BLOCKED`, ERRORED → `STATUS: FAILED` unless a hard failure):
|
|
577
|
+
|
|
578
|
+
```text
|
|
579
|
+
STATUS: DONE|BLOCKED|FAILED
|
|
580
|
+
HEAD: <sha>
|
|
581
|
+
CHECKS: <summary>
|
|
582
|
+
MERGE: <url|error|n/a>
|
|
583
|
+
ISSUE: <closed|open|n/a>
|
|
584
|
+
NOTES: <short>
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
⊗ Empty final assistant message / empty `subagent_announce` body. Parents treat empty or missing-`STATUS` settles as FC04 residual, not success (`skills/deft-directive-review-cycle/SKILL.md` Empty announce ≠ done).
|
|
545
588
|
|
|
546
589
|
## Implementation Notes
|
|
547
590
|
|