@deftai/directive-content 0.86.0 → 0.88.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-swarm/SKILL.md +1 -996
- package/QUICK-START.md +6 -0
- package/Taskfile.yml +3 -1
- package/UPGRADING.md +24 -2
- package/coding/coding.md +5 -1
- package/commands.md +1 -1
- package/contracts/runtime-authority.md +34 -8
- package/conventions/references.md +1 -1
- package/docs/getting-started.md +6 -0
- package/docs/no-deft-directive.md +87 -0
- package/docs/openclaw-agent-host.md +170 -0
- package/docs/product-signal.md +2 -0
- package/docs/writing-ste100.md +53 -0
- package/glossary.md +37 -39
- package/package.json +2 -1
- package/packs/rules/rules-pack-0.1.json +25 -1
- package/packs/skills/skills-pack-0.1.json +5 -5
- package/packs/strategies/strategies-pack-0.1.json +4 -4
- package/skills/deft-directive-review-cycle/SKILL.md +116 -14
- package/skills/deft-directive-setup/SKILL.md +35 -8
- package/skills/deft-directive-swarm/SKILL.md +81 -956
- package/skills/deft-directive-swarm/references/core-ops.md +144 -0
- package/skills/deft-directive-swarm/references/core-phase-0.md +200 -0
- package/skills/deft-directive-swarm/references/core-phase-1-2.md +73 -0
- package/skills/deft-directive-swarm/references/core-phase-3.md +145 -0
- package/skills/deft-directive-swarm/references/core-phase-4.md +71 -0
- package/skills/deft-directive-swarm/references/core-phase-5-6.md +317 -0
- package/skills/deft-directive-swarm/references/host-cursor.md +25 -0
- package/skills/deft-directive-swarm/references/host-generic.md +27 -0
- package/skills/deft-directive-swarm/references/host-grok-build.md +37 -0
- package/skills/deft-directive-swarm/references/host-openclaw.md +70 -0
- package/skills/deft-directive-swarm/references/host-warp.md +37 -0
- package/skills/deft-directive-triage/SKILL.md +40 -55
- package/skills/deft-directive-write-skill/SKILL.md +17 -0
- package/strategies/artifact-guards.md +24 -14
- package/strategies/discuss.md +40 -1
- package/strategies/interview.md +103 -30
- package/strategies/probe.md +27 -1
- package/tasks/engine-invoke.cjs +69 -13
- package/tasks/engine-invoke.test.cjs +188 -0
- package/tasks/triage-queue.yml +1 -1
- package/tasks/verify.yml +19 -0
- package/templates/agent-prompt-preamble.md +16 -5
- package/templates/swarm-greptile-poller-prompt.md +21 -12
- package/vbrief/vbrief.md +4 -2
package/QUICK-START.md
CHANGED
|
@@ -151,6 +151,12 @@ Read and follow `../AGENTS.md`. This starts the normal first-session flow (user
|
|
|
151
151
|
|
|
152
152
|
**Upgrade pointer:** Users moving between framework versions should also read [UPGRADING.md](./UPGRADING.md) in the repo root for the version-by-version guide. For a multi-version "big jump", start at its [big-jump triage entry point](./UPGRADING.md#big-jump-triage--multi-version-upgrades-start-here), which names which version buckets apply and in what order. An agent on a big jump that hits both a stale AGENTS.md and pre-cutover artifacts should follow [Case G+H](#case-gh--combined-stale-agentsmd--pre-cutover-migration-big-jump-one-session) above to complete both in one session.
|
|
153
153
|
|
|
154
|
+
**OpenClaw agent-host pointer:** Running Directive under OpenClaw persistent-memory agents? See [docs/openclaw-agent-host.md](./docs/openclaw-agent-host.md) for Control UI / identity notes, the executable babysit path (installed review-cycle skill), and the epic babysit → `sessions_spawn` Approach 1 expectation — skill and register contracts stay in shipped skills (#2877 / epic #2874).
|
|
155
|
+
|
|
156
|
+
**Writing pointer:** For docs, issues, and PR prose that maintainers or agents author, follow [docs/writing-ste100.md](./docs/writing-ste100.md) (short controlled English; #2927).
|
|
157
|
+
|
|
158
|
+
**Opt-out pointer:** Projects that must not use Directive should commit root [`.no-deft-directive`](./docs/no-deft-directive.md) so session/doctor/init/setup skip install and ritual (#2926).
|
|
159
|
+
|
|
154
160
|
**Contributor pointer (non-blocking):** Working on Deft itself (a `deftai/directive` source checkout)? See [CONTRIBUTING.md](../CONTRIBUTING.md) and use the maintainer install path (`deft-install --yes --upgrade --maintainer --repo-root . --json`). The repo's root `AGENTS.md` has contributor instructions — you do not need the consumer first-session flow above.
|
|
155
161
|
|
|
156
162
|
## Update notifications
|
package/Taskfile.yml
CHANGED
|
@@ -403,9 +403,11 @@ tasks:
|
|
|
403
403
|
- verify:rule-ownership
|
|
404
404
|
- verify:biome-config
|
|
405
405
|
- verify:content-manifest
|
|
406
|
+
- verify:license-sync
|
|
406
407
|
- verify:skill-external-fetch-gate
|
|
407
408
|
- verify:contract-drift
|
|
408
409
|
- verify:cursor-tier1
|
|
410
|
+
- verify:openclaw-tier1
|
|
409
411
|
- verify:go-freeze
|
|
410
412
|
- verify:bridge-drift
|
|
411
413
|
- verify:branch
|
|
@@ -960,7 +962,7 @@ tasks:
|
|
|
960
962
|
CLI_ARGS: "{{.CLI_ARGS}}"
|
|
961
963
|
|
|
962
964
|
triage:show:
|
|
963
|
-
desc: "Per-issue triage detail (#1128 / D11). -- task triage:show -- <N> [--repo OWNER/NAME]"
|
|
965
|
+
desc: "Per-issue triage detail (#1128 / D11, #2890). -- task triage:show -- <N> [--format=default|operator] [--repo OWNER/NAME]"
|
|
964
966
|
cmds:
|
|
965
967
|
- task: triage-queue:show
|
|
966
968
|
vars:
|
package/UPGRADING.md
CHANGED
|
@@ -8,7 +8,29 @@ Legend (from RFC2119): !=MUST, ~=SHOULD, ≉=SHOULD NOT, ⊗=MUST NOT, ?=MAY.
|
|
|
8
8
|
|
|
9
9
|
<!-- xbrief-backcompat-2111 -->
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
### xBRIEF rename (#2034 / #2110 / #2907)
|
|
12
|
+
|
|
13
|
+
> **Single authoritative rename/history note.** Public product voice uses **xBRIEF** / `xbrief/` only. **vBRIEF** is **legacy**.
|
|
14
|
+
|
|
15
|
+
| Legacy (historical) | Current public canon |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `vbrief/` lifecycle root | `xbrief/` |
|
|
18
|
+
| `*.vbrief.json` | `*.xbrief.json` |
|
|
19
|
+
| `vBRIEF` / “scope vBRIEF” in guidance | `xBRIEF` / “scope xBRIEF” |
|
|
20
|
+
| `x-vbrief/*` reference tokens | `x-xbrief/*` (and migrate-accepted legacy tokens) |
|
|
21
|
+
| `task vbrief:*` / `migrate:vbrief` aliases | Prefer `task xbrief:*` / `deft migrate:xbrief`; keep `vbrief:*` only as deprecated aliases when required for back-compat |
|
|
22
|
+
| Envelope keys `vBRIEFInfo` | `xBRIEFInfo` (legacy keys still read-accepted on unmigrated files) |
|
|
23
|
+
|
|
24
|
+
**Why two names existed:** consumer layout and disk SoT moved to `xbrief/` while docs, glossary, and marketing still taught vBRIEF as current. That dual present-day naming is retired (#2907). Schema lineage, fixtures, migrate paths, changelog history, and archive prose may still say vBRIEF — always as **legacy/historical**, never as competing current guidance.
|
|
25
|
+
|
|
26
|
+
**What to do:**
|
|
27
|
+
|
|
28
|
+
1. Prefer `xbrief/` and `.xbrief.json` in all new docs, skills, CLI help, and agent prose.
|
|
29
|
+
2. On projects still on disk under `vbrief/`, run `deft migrate:xbrief` (or `task migrate:xbrief`). `deft doctor` and `deft update` signpost unmigrated layouts.
|
|
30
|
+
3. Do **not** tell users to “prefer vBRIEF” or treat xbrief and vBRIEF as two current models.
|
|
31
|
+
4. Deep schema conventions still live under `content/vbrief/` (path name is historical for the schema package); public work-state name remains xBRIEF.
|
|
32
|
+
|
|
33
|
+
Refs: [#2034](https://github.com/deftai/directive/issues/2034), [#2110](https://github.com/deftai/directive/issues/2110), [#2907](https://github.com/deftai/directive/issues/2907).
|
|
12
34
|
|
|
13
35
|
---
|
|
14
36
|
|
|
@@ -927,7 +949,7 @@ After you update `deft/` to v0.20.0, `vbrief/*.vbrief.json` files are the source
|
|
|
927
949
|
- [docs/BROWNFIELD.md](./docs/BROWNFIELD.md) — detailed brownfield adoption / migration walkthrough.
|
|
928
950
|
- [QUICK-START.md](./QUICK-START.md) — agent-facing bootstrap + upgrade detection.
|
|
929
951
|
- [vbrief/vbrief.md](./vbrief/vbrief.md) — canonical vBRIEF file taxonomy.
|
|
930
|
-
- [glossary.md](./glossary.md) — canonical v0.20 vocabulary (Scope
|
|
952
|
+
- [glossary.md](./glossary.md) — canonical xBRIEF / v0.20+ vocabulary (Scope xBRIEF, lifecycle folder, canonical narrative keys, rendered export, source of truth; vBRIEF marked legacy).
|
|
931
953
|
- [CHANGELOG.md](../CHANGELOG.md) — full v0.20.0 change list.
|
|
932
954
|
|
|
933
955
|
---
|
package/coding/coding.md
CHANGED
|
@@ -125,9 +125,12 @@ This rule is the OPERATIONAL complement to the EPISTEMIC honesty rules elsewhere
|
|
|
125
125
|
- ⊗ MUST NOT use successful-sounding completion phrasing to paper over uncertainty -- default to surfacing uncertainty, not hiding it
|
|
126
126
|
- ⊗ MUST NOT suppress error output (`2>$null`, `2>/dev/null`, `try/except: pass` around the verification command) and then claim completion based on the resulting silence
|
|
127
127
|
|
|
128
|
+
- ! Before claiming "feature complete", "ready for real users", "production-ready", or equivalent area-complete language for a surface that has open graduations (Now+Later dual-path locks; #2899), MUST name the open `graduationRef`s, **or** explicitly state that graduation review was skipped and why — otherwise the claim is outcome-blind under this rule
|
|
129
|
+
- ⊗ MUST NOT claim "feature complete" / "production-ready" / "ready for real users" for an area with open graduations without naming those `graduationRef`s or an explicit skip-with-reason
|
|
130
|
+
|
|
128
131
|
The rule applies to agent completion claims during task execution. It applies equally to claims to the user, claims in commit messages, claims in PR bodies, claims in CHANGELOG entries, and claims in status messages to a parent agent. A short, honest "the migration completed; I did not verify the per-record count" is strictly preferred over a confident "migration completed successfully" that hides the gap.
|
|
129
132
|
|
|
130
|
-
**Cross-references:** `## Quality Standards` above (`⊗ Claim checks passed without running them` -- the sibling rule that this expands from process to outcome); `hygiene.md` `## Error Handling: No Hiding` (the same hiding pattern at the code-write level, not the claim level); `skills/deft-directive-pre-pr/SKILL.md` (pre-PR verification claims); `skills/deft-directive-build/SKILL.md` Step 4 Quality Gates (task-completion claims); `skills/deft-directive-review-cycle/SKILL.md` (the review-cycle skill explicitly checks for hidden incompleteness in fix-batch completion claims).
|
|
133
|
+
**Cross-references:** strategies discuss/probe Graduation dual-path locks (#2899); `## Quality Standards` above (`⊗ Claim checks passed without running them` -- the sibling rule that this expands from process to outcome); `hygiene.md` `## Error Handling: No Hiding` (the same hiding pattern at the code-write level, not the claim level); `skills/deft-directive-pre-pr/SKILL.md` (pre-PR verification claims); `skills/deft-directive-build/SKILL.md` Step 4 Quality Gates (task-completion claims); `skills/deft-directive-review-cycle/SKILL.md` (the review-cycle skill explicitly checks for hidden incompleteness in fix-batch completion claims).
|
|
131
134
|
|
|
132
135
|
## Calling LLM APIs (#481)
|
|
133
136
|
|
|
@@ -231,5 +234,6 @@ See [debugging.md](debugging.md) for the full four-phase process, evidence disci
|
|
|
231
234
|
- ⊗ Circular imports between modules
|
|
232
235
|
- ⊗ Duplicate logic across 2+ call sites without shared abstraction
|
|
233
236
|
- ⊗ Outcome-blind completion claims: "tests pass" with skipped tests, "migration completed" without per-record counts, "feature works" without naming the verified edge case (#1006 -- see `## Fail Loud` above)
|
|
237
|
+
- ⊗ Outcome-blind "feature complete" / "production-ready" claims that ignore open graduations (`graduationRef`s) without naming them or an explicit skip (#2899 / #1006 -- see `## Fail Loud` above)
|
|
234
238
|
- ⊗ Averaging contradicting codebase patterns: writing new code that satisfies both of two conflicting patterns simultaneously (#1005 -- see `hygiene.md` `## Surface Conflicts`)
|
|
235
239
|
- ⊗ Debugging by guess-and-check: fixing before reproducing, treating the first plausible hypothesis as confirmed, or presenting a duration/exit-status as a root cause (#1621 -- see `debugging.md`)
|
package/commands.md
CHANGED
|
@@ -218,7 +218,7 @@ When the workflow needs an Approach 1 monitor, scope the Cursor leaf `stop-at: p
|
|
|
218
218
|
- **Compact re-arm (#2113):** Cursor `preCompact` and Claude/Grok `PreCompact`/`PostCompact` call `deft-hook --event session.compact` to mark the gated session ritual stale after context compaction/resume; the existing PreToolUse gate then denies direct writes until `deft session:start` and `deft verify:session-ritual -- --tier=gated`. Codex has no native compact hook — operators must re-run the mutation ritual manually after compaction.
|
|
219
219
|
- Codex project hooks are trust-gated by Codex. Directive verifies only that the registrations are structurally current; after an install or changed hook hash, open `/hooks` in Codex and review/approve the project hook commands. Runtime trust cannot be inferred from the file alone.
|
|
220
220
|
- Directive writes only `.codex/hooks.json`; it does not parse or modify `.codex/config.toml`. Codex can also load inline hooks from `config.toml`, so avoid defining duplicate Directive commands there or they may run more than once. See the [Codex hooks documentation](https://learn.chatgpt.com/docs/hooks).
|
|
221
|
-
- The P0 hook slice does not classify shell-mediated writes,
|
|
221
|
+
- The P0 hook slice does not classify shell-mediated *file* writes, richer unified-exec calls, or WebSearch by default. **Runtime authority (#1394 / #2711)** adds opt-in path allow/deny lists and graduated `scopes` (`edits`, `push`, `merge`) under `plan.policy.runtimeAuthority` — inspect with `deft policy:show --field=runtimeAuthority`. When `enabled: true`, PreToolUse denies classifiable direct-write targets outside `allowPaths` or matching `denyPaths` after ritual/scope/read-only gates; `scopes.edits` gates all direct writes. `scopes.push` / `scopes.merge` deny classifiable Shell/Bash (`git push`, `gh pr merge`) and classifiable MCP push/merge tool names; unclassifiable shell/MCP calls fail open (see `content/contracts/runtime-authority.md`).
|
|
222
222
|
|
|
223
223
|
## Session-start ritual (#1149)
|
|
224
224
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Runtime authority policy (#1394)
|
|
1
|
+
# Runtime authority policy (#1394 / #2711)
|
|
2
2
|
|
|
3
3
|
Typed session-level enforcement under `plan.policy.runtimeAuthority` in `xbrief/PROJECT-DEFINITION.xbrief.json`.
|
|
4
4
|
|
|
@@ -10,8 +10,8 @@ Typed session-level enforcement under `plan.policy.runtimeAuthority` in `xbrief/
|
|
|
10
10
|
| `allowPaths` | `[]` | Empty = allow all paths (when enabled) |
|
|
11
11
|
| `denyPaths` | `[]` | Deny wins over allow |
|
|
12
12
|
| `scopes.edits` | `true` | Direct Write/Edit/StrReplace tools |
|
|
13
|
-
| `scopes.push` | `false` |
|
|
14
|
-
| `scopes.merge` | `false` |
|
|
13
|
+
| `scopes.push` | `false` | Shell/Bash `git push` and classifiable MCP push tools (#2711) |
|
|
14
|
+
| `scopes.merge` | `false` | Shell/Bash `gh pr merge` and classifiable MCP merge tools (#2711) |
|
|
15
15
|
|
|
16
16
|
## Path globs
|
|
17
17
|
|
|
@@ -20,10 +20,38 @@ Gitignore-style globs via the shared `matchPath` helper (`src/**`, `**/AGENTS.md
|
|
|
20
20
|
## Evaluation order (PreToolUse)
|
|
21
21
|
|
|
22
22
|
1. Ritual / scope / read-only / spawn gates (existing #2438 / #1185 stack)
|
|
23
|
-
2. Runtime authority path + `scopes.edits`
|
|
23
|
+
2. Runtime authority path + `scopes.edits` for direct-write tools
|
|
24
|
+
3. Runtime authority `scopes.push` / `scopes.merge` for Shell/Bash and classifiable MCP tools (#2711)
|
|
24
25
|
|
|
25
26
|
Policy load failures fail open (host crash behavior unchanged).
|
|
26
27
|
|
|
28
|
+
## Shell / MCP classification (#2711)
|
|
29
|
+
|
|
30
|
+
When `enabled: true`:
|
|
31
|
+
|
|
32
|
+
| Classified as | Examples | Scope |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| **push** | `git push …`, `git -C <path> push`, env-prefixed `FOO=1 git push`, after `&&` / `;` / `\|` | `scopes.push` |
|
|
35
|
+
| **merge** | `gh pr merge …`, `gh.exe pr merge …` | `scopes.merge` |
|
|
36
|
+
| **MCP merge** | tool names matching `merge_pull_request`, `pr_merge`, … | `scopes.merge` |
|
|
37
|
+
| **MCP push** | tool names matching `git_push`, `push_branch`, … | `scopes.push` |
|
|
38
|
+
|
|
39
|
+
**Fail open (allow)** when:
|
|
40
|
+
|
|
41
|
+
- the tool is Shell/MCP but the command/tool name is **not** classifiable as push or merge (e.g. `git status`, unrelated MCP tools)
|
|
42
|
+
- the host payload omits a command string
|
|
43
|
+
- policy load throws
|
|
44
|
+
|
|
45
|
+
**Install note:** agent-host PreToolUse deposits include a Shell/Bash matcher (`SHELL_HOOK_MATCHER`) so classifiable shell ops reach `hook:dispatch` (#2711). MCP tools are classified when the host invokes the hook for that tool name; hosts that never fire PreToolUse for MCP remain a residual gap.
|
|
46
|
+
|
|
47
|
+
**Not enforced** (document as residual host gap):
|
|
48
|
+
|
|
49
|
+
- WebSearch / non-shell non-MCP tools
|
|
50
|
+
- Obfuscated shell (`bash -c "$(echo Z2l0IHB1c2g=|base64 -d)"`) — not a complete substitute for Tier-2 git hooks
|
|
51
|
+
- Every MCP host spelling — only patterns above; unknown MCP tools fail open
|
|
52
|
+
- MCP tools on hosts that do not install/subscribe a PreToolUse matcher for those tool names
|
|
53
|
+
Tier-2 git hooks remain authoritative for commit/push on the working tree. This layer is session-time PreToolUse only.
|
|
54
|
+
|
|
27
55
|
## Inspection
|
|
28
56
|
|
|
29
57
|
```bash
|
|
@@ -47,8 +75,6 @@ deft policy:show --field=runtimeAuthority
|
|
|
47
75
|
}
|
|
48
76
|
```
|
|
49
77
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- Shell/Bash `git push`, `gh pr merge`, MCP mutations — not on the direct-write PreToolUse matcher today. `scopes.push` / `scopes.merge` are reserved for a follow-on Shell matcher (#1394 phase 2).
|
|
78
|
+
With that shape, a PreToolUse `Bash` / `Shell` invocation of `git push` or `gh pr merge` is denied when the matching scope is `false`.
|
|
53
79
|
|
|
54
|
-
Refs #2437 Core T1 Wave C.
|
|
80
|
+
Refs #2437 Core T1 Wave C residual, #2711, #2948 Wave 0.
|
|
@@ -46,7 +46,7 @@ The following `type` values are recognized by deft's tooling and skills. Any
|
|
|
46
46
|
semantics.
|
|
47
47
|
|
|
48
48
|
- `x-vbrief/plan` — reference to another vBRIEF plan (epic→story or story→epic links, also the canonical v0.5 enum value)
|
|
49
|
-
- `x-vbrief/github-issue` — a GitHub issue (the origin of an ingested scope vBRIEF
|
|
49
|
+
- `x-vbrief/github-issue` — a GitHub issue (the **primary** origin of an ingested scope vBRIEF). `task issue:emit` treats any `plan.references[]` entry whose type matches `github-issue` / `x-vbrief/github-issue` / `x-xbrief/github-issue` as **already tracked** and SKIPs create. Do **not** add related-only issue refs with this type when the brief still needs emit for its primary origin — keep related links in narratives / PR body / `Refs #N` prose instead (#2881 related-ref footgun).
|
|
50
50
|
- `x-vbrief/github-pr` — a GitHub pull request (implementing PR, related PR, or superseded PR)
|
|
51
51
|
- `x-vbrief/jira-ticket` — a Jira ticket (origin provenance for Jira-backed projects)
|
|
52
52
|
- `x-vbrief/user-request` — a direct user request captured verbatim (no external tracker ID)
|
package/docs/getting-started.md
CHANGED
|
@@ -139,3 +139,9 @@ Full command reference for every triage and cache verb lives in [`commands.md`
|
|
|
139
139
|
## Agent Configuration
|
|
140
140
|
|
|
141
141
|
<!-- TODO: Cover AGENTS.md, skill routing, Warp Drive integration, and cloud agent dispatch -->
|
|
142
|
+
|
|
143
|
+
**OpenClaw:** If your agent host is OpenClaw (persistent-memory agents, Control UI, `sessions_spawn`), read [openclaw-agent-host.md](./openclaw-agent-host.md) for the host mental model, executable babysit path (installed skills), and the epic babysit → `sessions_spawn` Approach 1 expectation. Skill gate text remains in `deft-directive-review-cycle` / `deft-directive-swarm` — the host doc only points.
|
|
144
|
+
|
|
145
|
+
**Writing:** For docs, issues, and PR prose, follow [writing-ste100.md](./writing-ste100.md) (short controlled English; #2927).
|
|
146
|
+
|
|
147
|
+
**Opt out:** To mark a repo as not using Directive, add root [`.no-deft-directive`](./no-deft-directive.md) (#2926). Tools skip install and session ritual when that file is present.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Opt out with `.no-deft-directive`
|
|
2
|
+
|
|
3
|
+
Some projects should not use Deft Directive. Use a **root file flag** so tools and agents stop offering install, session ritual, and setup.
|
|
4
|
+
|
|
5
|
+
Tracker: [#2926](https://github.com/deftai/directive/issues/2926).
|
|
6
|
+
|
|
7
|
+
## Filename and location
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
.no-deft-directive
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- **Exact name:** lowercase `.no-deft-directive`
|
|
14
|
+
- **Location:** project / workspace **root only** (the root the agent or CLI opened)
|
|
15
|
+
- **Content:** empty file or a short `#` comment. Presence is the flag. No schema.
|
|
16
|
+
|
|
17
|
+
~ Commit the flag. Opt-out is a project decision other clones should see.
|
|
18
|
+
|
|
19
|
+
## Behavior
|
|
20
|
+
|
|
21
|
+
| Condition | Behavior |
|
|
22
|
+
|-----------|----------|
|
|
23
|
+
| Flag **present** | Directive **off** for this project. Do not install. Do not run session ritual (CLI `session:start` **and** installed host SessionStart hooks). Do not offer setup. |
|
|
24
|
+
| Flag **absent**, no deposit | Tools **may** ask whether to install. On decline, create the flag. On enable, install and do **not** create the flag. |
|
|
25
|
+
| Operator stops using DD | Create `.no-deft-directive`. Do **not** auto-delete an existing deposit. |
|
|
26
|
+
| Operator starts using DD | Remove the flag, then run `directive init` or `directive update` so install is present. |
|
|
27
|
+
|
|
28
|
+
One-line message when tools honor the flag:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
Directive disabled via `.no-deft-directive`
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Inconsistent state (flag + deposit)
|
|
35
|
+
|
|
36
|
+
If **both** `.no-deft-directive` and a deposit (`.deft/core`) exist:
|
|
37
|
+
|
|
38
|
+
- **Doctor:** **warns** and exits dirty (exit 1)
|
|
39
|
+
- **`session:start`:** short-circuits with the disabled message plus the inconsistency warning (exit 1)
|
|
40
|
+
- **Host SessionStart hooks:** skip ritual bookkeeping (allow with `session-start-disabled`); never write `.deft/last-session.json` under opt-out
|
|
41
|
+
- **`init` / `update`:** **fail closed** (no scaffold/refresh)
|
|
42
|
+
|
|
43
|
+
**Product choice (v1):** warn in doctor; fail closed on mutating install paths (`warn-and-fail-closed`).
|
|
44
|
+
|
|
45
|
+
Fix by either:
|
|
46
|
+
|
|
47
|
+
1. Removing the flag if the project should use Directive, or
|
|
48
|
+
2. Removing the deposit if opt-out is intentional (explicit cleanup only — tools do not delete `.deft/` when creating the flag)
|
|
49
|
+
|
|
50
|
+
## Local flag wins (v1)
|
|
51
|
+
|
|
52
|
+
The root flag **wins locally** over ambient trusted-org / product-signal force-on. Org defaults must not override a committed opt-out without an explicit product decision beyond v1.
|
|
53
|
+
|
|
54
|
+
## CLI helpers (optional)
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
directive policy:disable-directive [--project-root .] [--note "reason"]
|
|
58
|
+
directive policy:enable-directive [--project-root .]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- `disable-directive` creates the flag (optional `--note` becomes a `#` comment)
|
|
62
|
+
- `enable-directive` removes the flag and tells you to ensure install
|
|
63
|
+
|
|
64
|
+
Presence detection is the core contract. CLI helpers are convenience only.
|
|
65
|
+
|
|
66
|
+
## Setup skill contract
|
|
67
|
+
|
|
68
|
+
When `deft-directive-setup` runs:
|
|
69
|
+
|
|
70
|
+
1. ! Check for root `.no-deft-directive` **before** any install or interview phase
|
|
71
|
+
2. ! If present → stop with `Directive disabled via \`.no-deft-directive\``
|
|
72
|
+
3. ? If absent and no deposit → ask the human whether to use Directive
|
|
73
|
+
4. ! On decline → create `.no-deft-directive` and stop
|
|
74
|
+
5. ! On enable / “start using DD” → remove the flag and ensure install
|
|
75
|
+
|
|
76
|
+
## Non-goals / follow-ups
|
|
77
|
+
|
|
78
|
+
- ⊗ Auto-delete `.deft/` when creating the flag
|
|
79
|
+
- ⊗ Org-wide ban (this is per-project filesystem only)
|
|
80
|
+
- ⊗ Nested monorepo package roots (v1 is workspace root only; multi-package monorepo rules are a follow-up)
|
|
81
|
+
- ⊗ Host personality / who may approve gates
|
|
82
|
+
|
|
83
|
+
## Related
|
|
84
|
+
|
|
85
|
+
- [getting-started.md](./getting-started.md) — install and first project
|
|
86
|
+
- [product-signal.md](./product-signal.md) — optional partner signal (defaults off; flag still wins locally)
|
|
87
|
+
- `session:start`, `doctor`, `directive init`, `directive update`
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Agent host: OpenClaw
|
|
2
|
+
|
|
3
|
+
Consumer/operator guide for running **Deft Directive** under **OpenClaw** persistent-memory agents (`ape-deft`-class and peers).
|
|
4
|
+
|
|
5
|
+
This is an **agent-host** adapter note — not a product-UI design standard (those live under `interfaces/` for CLI/TUI/REST/Web) and not a hardware platform pack (`platforms/` is Atari/Unity-class). OpenClaw sits in the same mental model as Warp, Cursor, and Grok Build: a runtime that can host Directive skills, swarm launch, and PR review-monitors.
|
|
6
|
+
|
|
7
|
+
Legend (RFC2119): `!`=MUST, `~`=SHOULD, `≉`=SHOULD NOT, `⊗`=MUST NOT, `?`=MAY.
|
|
8
|
+
|
|
9
|
+
Epic spine: [#2874](https://github.com/deftai/directive/issues/2874). This doc is the discoverable operator path for [#2877](https://github.com/deftai/directive/issues/2877).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Who this is for
|
|
14
|
+
|
|
15
|
+
- Operators running OpenClaw as the always-on agent runtime and wanting Directive lifecycle (xBRIEF, triage, swarm, review-cycle) without re-deriving host mappings every session.
|
|
16
|
+
- First-session agents that need a short answer to: **“What is babysit on OpenClaw?”**
|
|
17
|
+
- Maintainers comparing host primitives across Warp / Cursor / Grok Build / OpenClaw.
|
|
18
|
+
|
|
19
|
+
If you are installing Directive for the first time, start at [QUICK-START.md](../QUICK-START.md) or [getting-started.md](./getting-started.md), then return here for host-specific expectations.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Mental model (host class)
|
|
24
|
+
|
|
25
|
+
| Host | Host-native background spawn (typical) | Directive review-monitor role |
|
|
26
|
+
|------|----------------------------------------|-------------------------------|
|
|
27
|
+
| Warp | `start_agent` | Approach 1 when Tier 1 |
|
|
28
|
+
| Grok Build | `spawn_subagent` | Approach 1 when Tier 1 |
|
|
29
|
+
| Cursor | `Task` (`run_in_background: true`) | Approach 1 when Tier 1 |
|
|
30
|
+
| **OpenClaw** | **`sessions_spawn`** (optional visible) | Approach 1 when Tier 1 **in the installed skill/matrix** |
|
|
31
|
+
|
|
32
|
+
OpenClaw’s native background-spawn tool is **`sessions_spawn`**. Operator intent places that tool in the **same Tier-1 role** as Warp / Grok Build / Cursor — not “interactive shell only.” Whether a given Directive **release** classifies OpenClaw as Tier 1 is decided by the **shipped** swarm matrix and review-cycle skill, not by this page.
|
|
33
|
+
|
|
34
|
+
! Gate tiers, allowed register primitives, dispatch detection, and review Approaches are defined **only** in shipped skill + engine text:
|
|
35
|
+
|
|
36
|
+
- Swarm capability matrix + launch path: [`skills/deft-directive-swarm/SKILL.md`](../skills/deft-directive-swarm/SKILL.md) (thin skill: detect + route table) and OpenClaw adapter [`skills/deft-directive-swarm/references/host-openclaw.md`](../skills/deft-directive-swarm/references/host-openclaw.md) (Step 2f launch, worktree-before-spawn #2929, phase handoff #2934, parent-monitor tool-first after announce #2943). Skill text remains source of truth.
|
|
37
|
+
- PR babysit / shepherd / watch: [`skills/deft-directive-review-cycle/SKILL.md`](../skills/deft-directive-review-cycle/SKILL.md) → **Review Monitoring**.
|
|
38
|
+
- Provider-neutral dispatch envelope: [`templates/agent-prompt-preamble.md`](../templates/agent-prompt-preamble.md).
|
|
39
|
+
- Review-owner lease: `task review-monitor:register` / `task verify:review-monitor` (only `--platform-primitive` values those commands accept in your install).
|
|
40
|
+
|
|
41
|
+
! When this host guide and the installed skill/CLI disagree, **the skill and CLI win**.
|
|
42
|
+
|
|
43
|
+
⊗ Invent a parallel “OpenClaw-only” review gate that bypasses `deft-directive-review-cycle`.
|
|
44
|
+
|
|
45
|
+
⊗ Pass `sessions_spawn` (or any host-native name) to `task review-monitor:register -- --platform-primitive …` unless that exact token is listed in the **installed** skill/CLI help.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## First-session: babysit on OpenClaw
|
|
50
|
+
|
|
51
|
+
**Operator says:** “babysit this PR”, “shepherd”, “watch the PR”, or equivalent PR-shepherding intent on a Deft-managed repo (`.deft/core/` present, or framework checkout with Directive skills).
|
|
52
|
+
|
|
53
|
+
### Executable path (any installed Directive version)
|
|
54
|
+
|
|
55
|
+
1. ! Load **`deft-directive-review-cycle`** — not a host-global babysit skill and not a freestyle `gh` poll loop in the main session ([#2261](https://github.com/deftai/directive/issues/2261) class).
|
|
56
|
+
2. ! Select monitoring Approach using **runtime detection in that skill** (and the swarm Phase 3 matrix when relevant). Do not invent a host path outside the skill.
|
|
57
|
+
3. ! If the installed skill reports Tier 1, use **Approach 1** (background review-monitor) and register with a **`--platform-primitive` value accepted by the installed CLI**.
|
|
58
|
+
4. ! Prefer deterministic wait language from the skill (`task pr:watch` when the consumer Taskfile exposes it) over inventing sleep/cron loops.
|
|
59
|
+
5. ⊗ Treat **OpenClaw cron alone** as Approach 1. Cron / scheduler re-invocation is fallback territory when a live background review-monitor cannot be spawned per the skill — not a substitute for Approach 1 when the skill says spawn is available.
|
|
60
|
+
6. ⊗ Block the main session with long `gh` poll + sleep when the skill’s Tier 1 / background path is available (#1880 Gap D / incident class on epic #2874).
|
|
61
|
+
|
|
62
|
+
### Operator expectation: babysit → `sessions_spawn` (epic target)
|
|
63
|
+
|
|
64
|
+
Epic [#2874](https://github.com/deftai/directive/issues/2874) sets the **intended** OpenClaw mapping:
|
|
65
|
+
|
|
66
|
+
> On OpenClaw, PR babysit/shepherd/watch routes into **`deft-directive-review-cycle` Approach 1** using the host-native **`sessions_spawn`** (prefer **visible** when Control UI is the control plane), not main-session `gh` poll + cron.
|
|
67
|
+
|
|
68
|
+
That expectation is for operators and first-session agents to **find and remember**. It becomes the **executable** default only when the installed Directive version’s swarm matrix + review-cycle skill name OpenClaw / `sessions_spawn` as Tier 1 Approach 1 (sibling work):
|
|
69
|
+
|
|
70
|
+
| Issue | Lands |
|
|
71
|
+
|-------|--------|
|
|
72
|
+
| [#2875](https://github.com/deftai/directive/issues/2875) | Swarm matrix + `openclaw` descriptor + verify gate |
|
|
73
|
+
| [#2876](https://github.com/deftai/directive/issues/2876) | Review-cycle Approach 1 + register primitive for OpenClaw `sessions_spawn`; cron ≠ Approach 1 |
|
|
74
|
+
| [#2879](https://github.com/deftai/directive/issues/2879) | Poller/preamble templates + heartbeat mapping |
|
|
75
|
+
| [#2878](https://github.com/deftai/directive/issues/2878) | Consumer `pr:watch` / official gh fallback |
|
|
76
|
+
|
|
77
|
+
~ After those slices are in your Directive version, follow the **updated skill text** end-to-end (including any new register token). Until then, still open review-cycle on babysit intent and use only primitives the **current** skill accepts — while keeping the `sessions_spawn` expectation as the design north star (do not freestyle a weaker path when you could wait for / upgrade to the OpenClaw-capable release).
|
|
78
|
+
|
|
79
|
+
This section is a **discovery map**. Authoritative Approaches, register primitives, and exit predicates live only in skill files and CLI.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Control plane preference (operator signal)
|
|
84
|
+
|
|
85
|
+
When multiple OpenClaw surfaces are available:
|
|
86
|
+
|
|
87
|
+
| Surface | Role |
|
|
88
|
+
|---------|------|
|
|
89
|
+
| **Control UI** | Default **control plane** for long infra work and **visible** subagent watch (review-monitors, swarm leaves). |
|
|
90
|
+
| **Telegram** (or similar mobile chat) | Remote/mobile chat; not the preferred surface for long blocking polls. |
|
|
91
|
+
| **TUI** | Break-glass local terminal — use when UI/channels are unavailable. |
|
|
92
|
+
|
|
93
|
+
~ Prefer **visible** background review-monitors when Control UI is in play so the operator can see the subagent without freezing the parent conversation. Once OpenClaw Approach 1 is skill-backed, that usually means visible `sessions_spawn`.
|
|
94
|
+
|
|
95
|
+
! Keep long-running review-monitors and implementation leaves on independent/background dispatch so the parent session stays interactive (Gap D — see preamble and review-cycle skill).
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Bot identity vs human GitHub identity
|
|
100
|
+
|
|
101
|
+
OpenClaw agents often act under a **bot / service identity** (e.g. `ape-deft`-class) that is distinct from the human operator’s GitHub login.
|
|
102
|
+
|
|
103
|
+
- ! Assume the agent’s `gh` auth may be a bot account with different permissions than the human (merge rights, org SSO, protected-branch rules).
|
|
104
|
+
- ~ Prefer bot-owned comments, review-monitor leases, and PR status updates when the bot is the active worker; do not silently switch identities mid-loop.
|
|
105
|
+
- ⊗ Mandate merge rights for bot accounts in this doc — merge policy is per-repo ops, not an OpenClaw host requirement (epic #2874 out of scope).
|
|
106
|
+
- ~ When a merge or ruleset action requires a human, surface a clear handoff instead of retrying with the wrong identity.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Directive-for-OpenClaw-users (onboarding blurb)
|
|
111
|
+
|
|
112
|
+
1. Install / refresh Directive like any other host ([QUICK-START.md](../QUICK-START.md), `directive init` / `directive update`).
|
|
113
|
+
2. Confirm skills resolve under the deposit (consumer: `.deft/core/.agents/skills/…`; framework checkout: `content/skills/…`).
|
|
114
|
+
3. On first PR shepherding request, open **`deft-directive-review-cycle`** and follow its Review Monitoring section for **your** install. Remember the epic expectation: OpenClaw → Approach 1 via `sessions_spawn` once skill wiring ships (#2875 / #2876).
|
|
115
|
+
4. For multi-story parallel work, follow **`deft-directive-swarm`** — do not hand-roll worktree orchestration outside the skill.
|
|
116
|
+
5. Keep CHANGELOG / xBRIEF / branch gates the same as on Cursor or Warp; the host changes the **spawn surface**, not the Directive lifecycle.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Swarm on OpenClaw (#2929 / #2934 / #2943)
|
|
124
|
+
|
|
125
|
+
! For **parallel** swarm leaves on OpenClaw:
|
|
126
|
+
|
|
127
|
+
1. Create worktrees (or consume a worktree-map) **before** any `sessions_spawn`.
|
|
128
|
+
2. Set each worker cwd to that worktree — not the shared repo root.
|
|
129
|
+
3. Prefer `task swarm:launch` + manifest; DIY multi-leaf `sessions_spawn` without worktree prep is forbidden.
|
|
130
|
+
|
|
131
|
+
! After a coding cohort completes, dispatch the next phase with a **real tool call in the same turn**, or write explicit terminal status (`blocked` / `awaiting-human` / `done`). Do not end on narrative-only “I will spawn…”.
|
|
132
|
+
|
|
133
|
+
### Parent-monitor after `subagent_announce` (#2943)
|
|
134
|
+
|
|
135
|
+
OpenClaw parents can lock into a **text-only repetition hang** after thin leaf completions: the model regenerates the same “checking worktrees / open PRs next” sentence with **zero tool calls** until length cap or abort. Subagents may still be healthy; only the parent appears hung.
|
|
136
|
+
|
|
137
|
+
! After any leaf completion event (`subagent_announce` / parent-push completion), the parent’s **first response** MUST be **tool-first** or **yield**:
|
|
138
|
+
|
|
139
|
+
1. **Tool-first ground-truth batch** — one same-turn tool batch that inspects reality (`gh` PR/issue status, `git` / worktree status, or file/xBRIEF state), **or**
|
|
140
|
+
2. **`sessions_yield`** (or host equivalent yield) — leave the turn steerable without narrating unfinished work.
|
|
141
|
+
|
|
142
|
+
⊗ Open the first response after announce with multi-sentence progress-only prose (“Two leaves look unfinished…”, “Checking worktrees next…”, “Implementing both myself…”) and **zero** tool calls / yield.
|
|
143
|
+
|
|
144
|
+
! **Thin DONE = failed leaf:** a completion without PR URL / merge evidence (and without a structured `BLOCKED` / `FAILED` terminal) is **not** success. Treat as failed: re-dispatch or take over after the ground-truth batch. Do not celebrate thin DONE as shipped.
|
|
145
|
+
|
|
146
|
+
~ Prefer structured completion fields when present (`prUrl`, `mergeStatus`, `emptyDiff`); never model free-text thin DONE as success.
|
|
147
|
+
|
|
148
|
+
Full rules: [`skills/deft-directive-swarm/references/host-openclaw.md`](../skills/deft-directive-swarm/references/host-openclaw.md), thin swarm SKILL hard-gates, and [`templates/agent-prompt-preamble.md`](../templates/agent-prompt-preamble.md) §11. This page does not fork a second source of truth.
|
|
149
|
+
|
|
150
|
+
## Anti-patterns
|
|
151
|
+
|
|
152
|
+
- ⊗ Main-session `gh` poll + **cron** as the default babysit path when the installed skill offers a Tier 1 / background monitor.
|
|
153
|
+
- ⊗ Inventing skill gate semantics or unregistered `--platform-primitive` values in operator docs instead of linking to shipped `SKILL.md` / CLI text.
|
|
154
|
+
- ⊗ Treating `content/platforms/` hardware packs as the home for agent-host OpenClaw guidance.
|
|
155
|
+
- ⊗ Substituting host-native review theater for `deft-directive-review-cycle` on Deft-managed repos.
|
|
156
|
+
- ⊗ Claiming this doc alone makes `sessions_spawn` a shipped register/matrix primitive — that is epic skill/engine work (#2875 / #2876).
|
|
157
|
+
- ⊗ Multi-sentence progress-only first response after `subagent_announce` with zero tools / yield (#2943 text-repetition hang).
|
|
158
|
+
- ⊗ Treating thin DONE (no PR URL / merge evidence) as success (#2943).
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## See also
|
|
163
|
+
|
|
164
|
+
- [QUICK-START.md](../QUICK-START.md) — install / AGENTS.md refresh entry
|
|
165
|
+
- [getting-started.md](./getting-started.md) — orientation lifecycle
|
|
166
|
+
- [skill-pin-policy.md](./skill-pin-policy.md) — always-pin process skills (includes review-cycle)
|
|
167
|
+
- [`skills/deft-directive-review-cycle/SKILL.md`](../skills/deft-directive-review-cycle/SKILL.md)
|
|
168
|
+
- [`skills/deft-directive-swarm/SKILL.md`](../skills/deft-directive-swarm/SKILL.md)
|
|
169
|
+
- [`skills/deft-directive-swarm/references/host-openclaw.md`](../skills/deft-directive-swarm/references/host-openclaw.md) — OpenClaw swarm adapter
|
|
170
|
+
- [`templates/agent-prompt-preamble.md`](../templates/agent-prompt-preamble.md)
|
package/docs/product-signal.md
CHANGED
|
@@ -6,6 +6,8 @@ Phase 1 consented product-improvement signal under epic #2603 (#2693). Defaults
|
|
|
6
6
|
|
|
7
7
|
Trusted-org repos (`deftai/*`, plus `DEFT_VALUE_AUTOENABLE_ORGS`) receive a **one-time** install/upgrade force-on (#2822): local value feedback and product-signal enable flip ON on the next `directive update`, with a durable `.deft-cache/org-force-on-v2822.json` marker so later intentional opt-out is not fought forever. Outbound product signal still requires personal consent (D17).
|
|
8
8
|
|
|
9
|
+
**Verify-on-skip (#2903):** the marker stores the pre-migration policy snapshots (key-order independent). If `PROJECT-DEFINITION` force-on is discarded (working-tree-only write lost beside a deposit PR, `git restore`, branch without PD) while the marker remains, the next `directive update` sees current typed blocks still equal those snapshots and **re-applies** force-on. Snapshot equality is company policy: restoring the exact pre-migration disabled shape is treated as incomplete migration (not a durable opt-out). An intentional post-migration disable must **differ** from the previous snapshot (and from the force-on shape), or use `task policy:clear-value-feedback`, or root `.no-deft-directive`. Outbound product signal still requires personal consent (D17) even when local enable is forced on. Manual recovery remains `rm -f .deft-cache/org-force-on-v2822.json && deft update`, then commit `xbrief/PROJECT-DEFINITION.xbrief.json`.
|
|
10
|
+
|
|
9
11
|
```bash
|
|
10
12
|
task product-signal:enable -- --confirm
|
|
11
13
|
task policy:show -- --field=productSignal
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Controlled English for docs and issues
|
|
2
|
+
|
|
3
|
+
Directive uses a short **controlled-English** bar for product docs, issues, PRs, and agent-facing prose.
|
|
4
|
+
|
|
5
|
+
**ASD-STE100** is Simplified Technical English (aerospace controlled language). Here it means a practical subset. It is not a certification program.
|
|
6
|
+
|
|
7
|
+
Legend (RFC2119): `!`=MUST, `~`=SHOULD, `≉`=SHOULD NOT, `⊗`=MUST NOT, `?`=MAY.
|
|
8
|
+
|
|
9
|
+
Tracker: [#2927](https://github.com/deftai/directive/issues/2927).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Rules (minimum bar)
|
|
14
|
+
|
|
15
|
+
1. **Short sentences.** Prefer one main idea per sentence.
|
|
16
|
+
2. **Active voice.** Prefer "The agent runs the gate" over "The gate is run by the agent."
|
|
17
|
+
3. **One term = one meaning.** Keep product terms stable (`xbrief`, host, skill pack, swarm, deposit). Do not reuse one word for two concepts.
|
|
18
|
+
4. **First-use definitions.** Define a tech term the first time it appears when the reader may not know it.
|
|
19
|
+
|
|
20
|
+
! Apply these four rules to **new and touched** prose that maintainers or agents author for this repo.
|
|
21
|
+
|
|
22
|
+
~ Prefer clarity over ceremony. When a product term already has a glossary or category note, reuse that meaning.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Where it applies
|
|
27
|
+
|
|
28
|
+
- Agent and maintainer communications about Directive
|
|
29
|
+
- Product docs (including `content/docs/` and related guides)
|
|
30
|
+
- GitHub issues, PRs, and review comments that maintainers or agents author here
|
|
31
|
+
- Skill and strategy prose where clarity matters for agent load
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Non-goals
|
|
36
|
+
|
|
37
|
+
- ⊗ Full ASD-STE100 dictionary compliance or formal STE tooling certification
|
|
38
|
+
- ⊗ A big-bang rewrite of the historical issue corpus
|
|
39
|
+
- ⊗ A red CI style gate in v1 that blocks merges on style nitpicks
|
|
40
|
+
|
|
41
|
+
Process expectation only: follow the bar by default. Do not invent a merge blocker from this page alone.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Related
|
|
46
|
+
|
|
47
|
+
| Issue | Role |
|
|
48
|
+
|-------|------|
|
|
49
|
+
| [#740](https://github.com/deftai/directive/issues/740) | Plain-English UX pass (closed; interview-focused) |
|
|
50
|
+
| [#865](https://github.com/deftai/directive/issues/865) | Every rule is a token tax |
|
|
51
|
+
| [#847](https://github.com/deftai/directive/issues/847) | Lean context first |
|
|
52
|
+
| [#2484](https://github.com/deftai/directive/issues/2484) | Progressive disclosure for large skills |
|
|
53
|
+
| [#2905](https://github.com/deftai/directive/issues/2905) | Category terms (host vs skill pack vs practice layer) |
|