@lannguyensi/harness 0.6.0 → 0.7.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/CHANGELOG.md +77 -0
- package/README.md +156 -154
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +2 -0
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor/format.js +18 -1
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.js +30 -1
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +14 -0
- package/dist/cli/explain.d.ts +10 -1
- package/dist/cli/explain.js +44 -18
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/index.js +58 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +17 -0
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/session-export/index.d.ts +46 -0
- package/dist/cli/session-export/index.js +169 -0
- package/dist/cli/session-export/index.js.map +1 -0
- package/dist/cli/session-export/redact.d.ts +22 -0
- package/dist/cli/session-export/redact.js +47 -0
- package/dist/cli/session-export/redact.js.map +1 -0
- package/dist/cli/session-export/transcript.d.ts +24 -0
- package/dist/cli/session-export/transcript.js +162 -0
- package/dist/cli/session-export/transcript.js.map +1 -0
- package/dist/policies/ledger-client.js +2 -1
- package/dist/policies/ledger-client.js.map +1 -1
- package/dist/probes/mcp.js +2 -1
- package/dist/probes/mcp.js.map +1 -1
- package/dist/runtime/ledger-record.js +2 -1
- package/dist/runtime/ledger-record.js.map +1 -1
- package/dist/schema/audit.d.ts +71 -0
- package/dist/schema/audit.js +32 -0
- package/dist/schema/audit.js.map +1 -0
- package/dist/schema/index.d.ts +408 -0
- package/dist/schema/index.js +21 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/workflows.d.ts +519 -0
- package/dist/schema/workflows.js +81 -0
- package/dist/schema/workflows.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,83 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.7.0] - 2026-05-06
|
|
11
|
+
|
|
12
|
+
**Headline: workflows-as-data and full-session audit forensics.** The
|
|
13
|
+
`workflows:` block (PR #66) lets adopters declare branch policy,
|
|
14
|
+
review-subagent gating, and merge method as schema-validated data
|
|
15
|
+
instead of prose in memory files. `harness session-export <sessionId>`
|
|
16
|
+
(PR #67) joins the on-disk Claude Code transcript JSONL with the
|
|
17
|
+
evidence ledger for the same session and emits a single chronologically
|
|
18
|
+
ordered audit artifact, with default-on regex redaction extended by a
|
|
19
|
+
new optional `audit.redact[]` manifest block. The README is split into
|
|
20
|
+
audience-specific guides (`docs/for-humans.md`, `docs/for-agents.md`)
|
|
21
|
+
and gains a control-loop flowchart that both audiences read
|
|
22
|
+
identically. `harness explain --last` closes the "what just denied me?"
|
|
23
|
+
loop without needing the policy name. No runtime enforcement of
|
|
24
|
+
`workflows:` yet; that ships as a follow-up.
|
|
25
|
+
|
|
26
|
+
Operator note: no schema bump (still `version: 1`). All new manifest
|
|
27
|
+
fields are optional and additive; manifests written for `0.6.0` parse
|
|
28
|
+
under `0.7.0` byte-identically. The new `audit.redact[]` defaults to a
|
|
29
|
+
denylist that catches the four obvious key/secret patterns even when
|
|
30
|
+
the operator declares no `audit:` block, so existing operators get
|
|
31
|
+
redaction-on-by-default for `session-export` for free.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- `docs/for-agents.md` workflow lifecycle stateDiagram is now anchored
|
|
35
|
+
on the four step kinds the `workflows:` schema actually defines
|
|
36
|
+
(`branch`, `review_subagent`, `ci_gate`, `merge`) instead of
|
|
37
|
+
agent-tasks-MCP-specific verbs (`task_start`, `open` / `in_progress` /
|
|
38
|
+
`done`). A new "If you use agent-tasks MCP" footnote below the
|
|
39
|
+
diagram maps the lifecycle markers to the concrete MCP verbs as one
|
|
40
|
+
example integration; other task systems fit the same lifecycle.
|
|
41
|
+
Spotted right after the audience split landed (PR #69).
|
|
42
|
+
- Root `README.md` gains a control-loop flowchart ("What harness does":
|
|
43
|
+
declare, apply, enforce, record, observe, refine) that both
|
|
44
|
+
audiences read identically. No audience-specific verbs (PR #69).
|
|
45
|
+
- Docs split into two audience-specific surfaces:
|
|
46
|
+
`docs/for-humans.md` (operator guide: install, mental model, first
|
|
47
|
+
hour, diagnostics cheat sheet) and `docs/for-agents.md` (workflow
|
|
48
|
+
lifecycle, policy/ledger sequence, CLI cheat sheet by side-effect
|
|
49
|
+
class, audit triumvirate). README shrunk to a landing page that
|
|
50
|
+
picks audience, with the `Try it in 60 seconds` block, status
|
|
51
|
+
checklist, and `Why this exists` preserved. Three mermaid diagrams
|
|
52
|
+
added: a system flowchart in `for-humans.md`, a workflow
|
|
53
|
+
stateDiagram and a policy/ledger sequenceDiagram in
|
|
54
|
+
`for-agents.md`. Docs-only, no source changes (PR #68).
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
- `harness explain --last` traces the most recent policy decision in the
|
|
58
|
+
evidence ledger without needing the policy name, closing the common
|
|
59
|
+
"I just got a deny, what fired?" loop in one command instead of three.
|
|
60
|
+
Pair with `--decision allow|deny|warn-degraded` to skip past intervening
|
|
61
|
+
outcomes. `<policy>` and `--last` are mutually exclusive (PR #65).
|
|
62
|
+
- `harness session-export <sessionId>` joins the on-disk Claude Code
|
|
63
|
+
transcript JSONL (`~/.claude/projects/<projectDir>/<sessionId>.jsonl`)
|
|
64
|
+
with evidence-ledger rows for the same session and emits a single
|
|
65
|
+
chronologically-ordered audit artifact. `--format json` (default) and
|
|
66
|
+
`--format jsonl` ship in v1; `-o <file>` writes to disk. Each event
|
|
67
|
+
carries an explicit `source: "transcript" | "ledger"` marker so the
|
|
68
|
+
export is traceable back to its inputs (PR #67).
|
|
69
|
+
- New optional `audit.redact[]` block in the manifest. Each entry is
|
|
70
|
+
either `{ regex, replacement? }` or `{ env_var, replacement? }`;
|
|
71
|
+
`env_var:` resolves to the actual value at export time and
|
|
72
|
+
string-replaces it. A default denylist (token / secret / password /
|
|
73
|
+
api_key) ships even when the manifest declares no `audit:` block, so
|
|
74
|
+
redaction is on by default. Manifests without `audit:` parse
|
|
75
|
+
unchanged (PR #67).
|
|
76
|
+
- Additive `workflows:` and `review_templates:` top-level blocks in the
|
|
77
|
+
manifest (still `version: 1`). Lets adopters declare review-subagent
|
|
78
|
+
gating, branch policy, CI gate, and merge method as data instead of
|
|
79
|
+
prose in memory files. The schema rejects duplicate workflow names,
|
|
80
|
+
unknown step `kind` values, `spawn: required` without a `template`,
|
|
81
|
+
and `template:` references not defined in `review_templates`. Surfaces
|
|
82
|
+
via `harness describe --pillar workflows`, `harness list workflows`,
|
|
83
|
+
and a new `Workflows` section in `harness doctor`. No runtime
|
|
84
|
+
enforcement yet, that ships as a follow-up. Manifests without
|
|
85
|
+
`workflows:` parse identically to before (PR #66).
|
|
86
|
+
|
|
10
87
|
## [0.6.0] - 2026-05-03
|
|
11
88
|
|
|
12
89
|
**Headline: the Phase-5 adoption-blocker cycle closes end-to-end.**
|
package/README.md
CHANGED
|
@@ -2,11 +2,58 @@
|
|
|
2
2
|
|
|
3
3
|
**Declarative control plane for agent harnesses.**
|
|
4
4
|
|
|
5
|
-
One zod-validated YAML manifest for grounding, tools, memory, hooks,
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
One zod-validated YAML manifest for grounding, tools, memory, hooks,
|
|
6
|
+
policies, and workflows, plus a CLI that describes, validates, diffs,
|
|
7
|
+
applies, audits, and *enforces*.
|
|
8
|
+
|
|
9
|
+
> Most config tools tell you what an agent is configured to use.
|
|
10
|
+
> `harness` tells you what an agent is *allowed to do*, under this
|
|
11
|
+
> exact context, and why.
|
|
12
|
+
|
|
13
|
+
`harness` collapses the six-to-eight surfaces a working agent harness
|
|
14
|
+
leaks across (`settings.json`, `CLAUDE.md`, memory frontmatter, MCP
|
|
15
|
+
registrations, per-project overrides, hook scripts) into a single
|
|
16
|
+
source of truth. Today (`v0.7.0`) policies fire end-to-end: a
|
|
17
|
+
`mcp__agent-tasks__pull_requests_merge` call against a session
|
|
18
|
+
without a `review:${PR_NUMBER}` ledger entry refuses; `harness
|
|
19
|
+
explain review-before-merge --trace` shows exactly why.
|
|
20
|
+
|
|
21
|
+
## What harness does
|
|
22
|
+
|
|
23
|
+
```mermaid
|
|
24
|
+
flowchart LR
|
|
25
|
+
declare["1. Declare<br/><code>harness.yaml</code>"]
|
|
26
|
+
apply["2. Apply<br/><code>harness apply</code>"]
|
|
27
|
+
enforce["3. Enforce<br/>hooks + policies<br/>at runtime"]
|
|
28
|
+
record[("4. Record<br/>evidence ledger")]
|
|
29
|
+
observe["5. Observe<br/><code>audit</code> / <code>explain</code> /<br/><code>session-export</code>"]
|
|
30
|
+
|
|
31
|
+
declare --> apply
|
|
32
|
+
apply --> enforce
|
|
33
|
+
enforce --> record
|
|
34
|
+
record --> observe
|
|
35
|
+
observe -. refine .-> declare
|
|
36
|
+
```
|
|
8
37
|
|
|
9
|
-
|
|
38
|
+
One manifest declares grounding, tools, memory, hooks, policies, and
|
|
39
|
+
workflows. `apply` materialises that into the files Claude Code
|
|
40
|
+
actually reads. At runtime, hooks and policies enforce the contract
|
|
41
|
+
and write decision rows to the evidence ledger. The read-side
|
|
42
|
+
surfaces (`audit`, `explain --trace`, `session-export`) replay those
|
|
43
|
+
rows so you can see what fired, why, and across which session.
|
|
44
|
+
Whatever you learn from observing flows back into the manifest. That
|
|
45
|
+
loop is the whole product.
|
|
46
|
+
|
|
47
|
+
## Pick your audience
|
|
48
|
+
|
|
49
|
+
- **Operator?** Read [`docs/for-humans.md`](docs/for-humans.md). It
|
|
50
|
+
walks from `npm i -g @lannguyensi/harness` through your first
|
|
51
|
+
`apply`, your first real policy, and the diagnostics cheat sheet.
|
|
52
|
+
- **Agent (or onboarding one)?** Read
|
|
53
|
+
[`docs/for-agents.md`](docs/for-agents.md). It defines the
|
|
54
|
+
workflow lifecycle, the policy / ledger sequence, the CLI cheat
|
|
55
|
+
sheet split by side-effect class, and the audit triumvirate
|
|
56
|
+
(`audit` vs `explain --trace` vs `session-export`).
|
|
10
57
|
|
|
11
58
|
## Install
|
|
12
59
|
|
|
@@ -14,21 +61,10 @@ One zod-validated YAML manifest for grounding, tools, memory, hooks, and policie
|
|
|
14
61
|
npm i -g @lannguyensi/harness
|
|
15
62
|
```
|
|
16
63
|
|
|
17
|
-
The CLI binary is `harness`. Node
|
|
64
|
+
The CLI binary is `harness`. Node 20 or newer required.
|
|
18
65
|
|
|
19
66
|
## Try it in 60 seconds
|
|
20
67
|
|
|
21
|
-
```bash
|
|
22
|
-
# Statically predict which policies fire for a tool call (no ledger, no LLM).
|
|
23
|
-
# Uses the bundled reference manifest from the npm package.
|
|
24
|
-
harness dry-run "merge PR 42" \
|
|
25
|
-
--tool mcp__agent-tasks__pull_requests_merge \
|
|
26
|
-
--tool-args '{"prNumber":42}' \
|
|
27
|
-
--config "$(npm root -g)/@lannguyensi/harness/dist/../docs/examples/full-manifest.yaml"
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
Or from a checkout:
|
|
31
|
-
|
|
32
68
|
```bash
|
|
33
69
|
git clone https://github.com/LanNguyenSi/harness && cd harness
|
|
34
70
|
npm install && npm run build
|
|
@@ -38,157 +74,123 @@ node dist/cli/main.js dry-run "merge PR 42" \
|
|
|
38
74
|
--config docs/examples/full-manifest.yaml
|
|
39
75
|
```
|
|
40
76
|
|
|
41
|
-
`dry-run` reads the reference manifest, runs the trigger matcher,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```yaml
|
|
46
|
-
prompt: merge PR 42
|
|
47
|
-
tool: mcp__agent-tasks__pull_requests_merge
|
|
48
|
-
toolArgs:
|
|
49
|
-
prNumber: 42
|
|
50
|
-
Hooks that would fire:
|
|
51
|
-
- event: SessionStart
|
|
52
|
-
name: git-preflight
|
|
53
|
-
- event: PreToolUse
|
|
54
|
-
name: require-review-evidence
|
|
55
|
-
- event: PreToolUse
|
|
56
|
-
name: require-dogfood-evidence
|
|
57
|
-
- event: PreToolUse
|
|
58
|
-
name: require-preflight-evidence
|
|
59
|
-
Policies that match:
|
|
60
|
-
- name: review-before-merge
|
|
61
|
-
ledgerQuery: review:42
|
|
62
|
-
requires:
|
|
63
|
-
ledger_tag: review:${PR_NUMBER}
|
|
64
|
-
enforcement: block
|
|
65
|
-
triggerEvent: PreToolUse
|
|
66
|
-
- name: two-reviewers-required
|
|
67
|
-
ledgerQuery: review:42
|
|
68
|
-
requires:
|
|
69
|
-
ledger_tag: review:${PR_NUMBER}
|
|
70
|
-
count:
|
|
71
|
-
min: 2
|
|
72
|
-
enforcement: warn
|
|
73
|
-
triggerEvent: PreToolUse
|
|
74
|
-
Policies that COULD match (need --tool):
|
|
75
|
-
- name: dogfood-before-release
|
|
76
|
-
triggerEvent: PreToolUse
|
|
77
|
-
reason: --tool "mcp__agent-tasks__pull_requests_merge" does not contain trigger.match "Bash"
|
|
78
|
-
- name: preflight-before-investigation
|
|
79
|
-
triggerEvent: PreToolUse
|
|
80
|
-
reason: --tool "mcp__agent-tasks__pull_requests_merge" does not contain trigger.match "Bash"
|
|
81
|
-
Memories that would route:
|
|
82
|
-
- path: ~/.claude/projects/{project}/memory
|
|
83
|
-
scope: project
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
When the matching policy actually fires (via `harness policy intercept`, wired by `harness apply` into `settings.json` as a `PreToolUse` hook), and the evidence ledger has no `review:42` entry, the runtime emits Claude Code's deny shape on stdout:
|
|
87
|
-
|
|
88
|
-
```json
|
|
89
|
-
{"decision":"deny","reason":"review-before-merge: no matching ledger entry for tag `review:42`"}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
With `--verbose` (or `HARNESS_POLICY_VERBOSE=1`), stderr also carries a structured diagnostic block — policy name, ledger_tag, matched count, reason, sorted extract values — so the user sees *why* without a follow-up `explain --trace`.
|
|
93
|
-
|
|
94
|
-
After the entry is recorded, the same call is silently allowed. Every fire writes a `policy_decision` row that `harness audit` and `harness explain --trace` replay:
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
$ harness audit --since 1h --policy review-before-merge
|
|
98
|
-
|
|
99
|
-
timestamp policy outcome reason
|
|
100
|
-
------------------------ ------------------- ------- ---------------------------------------------
|
|
101
|
-
2026-04-30T18:30:00.000Z review-before-merge deny no matching ledger entry for tag `review:42`
|
|
102
|
-
2026-04-30T18:31:00.000Z review-before-merge allow 1 matching ledger entries for tag `review:42`
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Inside a Claude Code session, `--session` defaults to `$CLAUDE_SESSION_ID`, so the read path automatically lines up with what the runtime hook wrote.
|
|
106
|
-
|
|
107
|
-
## Wire into Claude Code
|
|
108
|
-
|
|
109
|
-
By default, `harness apply` writes the rendered settings to `harness.generated/settings.json` next to your manifest. To make Claude Code actually use it, point `apply` at a settings discovery path with `--target`:
|
|
77
|
+
`dry-run` reads the reference manifest, runs the trigger matcher,
|
|
78
|
+
substitutes `${PR_NUMBER}=42` through the JSONPath-restricted extract
|
|
79
|
+
DSL, and tells you exactly which hooks would fire and which policies
|
|
80
|
+
would match, before any ledger I/O.
|
|
110
81
|
|
|
111
|
-
|
|
112
|
-
# Project scope: write straight to .claude/settings.local.json (created if missing).
|
|
113
|
-
harness apply --target .claude/settings.local.json
|
|
114
|
-
|
|
115
|
-
# User scope: merge harness-owned keys into your existing ~/.claude/settings.json,
|
|
116
|
-
# preserving env, permissions, enabledPlugins, and any other top-level keys.
|
|
117
|
-
harness apply --target ~/.claude/settings.json --merge
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
`--merge` does a 3-way merge: harness-owned top-level keys (today: `hooks`) get replaced wholesale; everything else in the existing target file is preserved verbatim. Re-applying is idempotent: running twice produces the same target, and the second run reports `no changes`.
|
|
121
|
-
|
|
122
|
-
If the target exists and you pass neither `--merge` nor `--force`, apply refuses with a clear hint instead of clobbering. `--force` overwrites with the generated content as-is (no merge).
|
|
123
|
-
|
|
124
|
-
`harness.lock` records the target path + a sha256 of the merged output, so `harness validate --check-lock` flags out-of-band edits.
|
|
125
|
-
|
|
126
|
-
## Next steps
|
|
127
|
-
|
|
128
|
-
| If you want to... | Read |
|
|
129
|
-
|------|------|
|
|
130
|
-
| Understand the YAML shape, CLI surface, drift handling, `requires` schema | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) |
|
|
131
|
-
| See phase-by-phase scope, deliverables, acceptance criteria, exit gates | [`docs/ROADMAP.md`](docs/ROADMAP.md) |
|
|
132
|
-
| Read the long-form positioning (three pillars, ecosystem map, gaps) | [`docs/VISION.md`](docs/VISION.md) |
|
|
133
|
-
| Browse a manifest covering every field | [`docs/examples/full-manifest.yaml`](docs/examples/full-manifest.yaml) |
|
|
134
|
-
| Track what's shipping and what's deferred | [`CHANGELOG.md`](CHANGELOG.md) |
|
|
135
|
-
|
|
136
|
-
## Common commands
|
|
82
|
+
## Status
|
|
137
83
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
harness
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
84
|
+
- [x] Phase 1, read-only inventory (`describe`, `validate`, `doctor`,
|
|
85
|
+
`list`, `explain`, `diff`), released as
|
|
86
|
+
[`v0.1.0`](CHANGELOG.md#010---2026-04-29).
|
|
87
|
+
- [x] Phase 2, managed edits (`init`, `add`, `remove`, `adopt`,
|
|
88
|
+
`export`), released as [`v0.2.0`](CHANGELOG.md#020---2026-04-29).
|
|
89
|
+
- [x] Phase 3, declarative truth (`apply`, `diff --since-apply`,
|
|
90
|
+
`harness.lock`), released as
|
|
91
|
+
[`v0.3.0`](CHANGELOG.md#030---2026-04-30).
|
|
92
|
+
- [x] Phase 4, policy layer (`policy intercept`, `explain --trace`,
|
|
93
|
+
`audit`, `dry-run`, requires-evaluator + extract DSL +
|
|
94
|
+
grounding-mcp adapter), released as
|
|
95
|
+
[`v0.4.0`](CHANGELOG.md#040---2026-04-30).
|
|
96
|
+
- [x] Phase 5, polish + dogfood lessons (`--verbose` policy
|
|
97
|
+
diagnostics, `$CLAUDE_SESSION_ID` env fallback, server-side
|
|
98
|
+
`audit` filter pushdown, `policy_decision` first-class entry
|
|
99
|
+
type, npm distribution as `@lannguyensi/harness`), released as
|
|
100
|
+
[`v0.5.0`](CHANGELOG.md#050---2026-05-01).
|
|
101
|
+
- [x] Apply-into-settings cycle, `harness adopt`, `apply --target /
|
|
102
|
+
--merge`, `harness.lock` target tracking, released as
|
|
103
|
+
[`v0.6.0`](CHANGELOG.md#060---2026-05-03).
|
|
104
|
+
- [x] Workflows-as-data + full-session audit forensics: additive
|
|
105
|
+
`workflows:` / `review_templates:` / `audit.redact[]` manifest
|
|
106
|
+
blocks, `harness session-export`, `explain --last`, audience-
|
|
107
|
+
specific docs surfaces, released as
|
|
108
|
+
[`v0.7.0`](CHANGELOG.md#070---2026-05-06).
|
|
109
|
+
- [ ] Phase 6, Understanding Gate Policy Pack: agents must expose and
|
|
110
|
+
confirm task understanding before write-capable tools fire.
|
|
111
|
+
- [ ] Phase 7, Risk Gate: Action Envelope + Risk Classifier +
|
|
112
|
+
`allow / warn / require_approval / deny` for destructive-action
|
|
113
|
+
prevention.
|
|
148
114
|
|
|
149
115
|
## What's next
|
|
150
116
|
|
|
151
|
-
Two structurally larger themes are queued after Phase 5's polish
|
|
152
|
-
|
|
153
|
-
**Phase 6
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
117
|
+
Two structurally larger themes are queued after Phase 5's polish.
|
|
118
|
+
|
|
119
|
+
**Phase 6, Understanding Gate.** Before an agent edits files, runs
|
|
120
|
+
shell, commits, or opens a PR, it must produce an *Understanding
|
|
121
|
+
Report* (its interpretation of the task: derived todos, acceptance
|
|
122
|
+
criteria, assumptions, out-of-scope, risks). The user confirms,
|
|
123
|
+
corrects, or "grills me until precise enough". Only after explicit
|
|
124
|
+
approval is recorded in the evidence ledger may write-capable tools
|
|
125
|
+
fire. Ships as the first `harness` *Policy Pack*: a reusable bundle
|
|
126
|
+
of instruction template + hooks + policies + permission profiles.
|
|
127
|
+
|
|
128
|
+
**Phase 7, Risk Gate.** Today's policy model evaluates a rule per
|
|
129
|
+
matching trigger and returns a binary block/allow. Phase 7 makes
|
|
130
|
+
harness reason about *the action itself*: an Action Envelope (tool +
|
|
131
|
+
raw input + session + runtime context) is enriched by a Context
|
|
132
|
+
Resolver (production / staging / dev / unknown), classified by a Risk
|
|
133
|
+
Classifier (severity + categories + reversibility), then matched
|
|
134
|
+
against policies whose `when:` clauses can reference
|
|
135
|
+
`risk.severity_at_least`, `environment.name`, and similar. The
|
|
136
|
+
decision space extends to `allow / warn / require_approval / deny`.
|
|
137
|
+
Motivating use case: prevent `DROP TABLE users`, `kubectl delete
|
|
138
|
+
namespace prod`, `terraform destroy` against an unverified production
|
|
139
|
+
target, even if the model would have happily run them.
|
|
140
|
+
|
|
141
|
+
Both build on Phase 4's `policy intercept` runtime backbone; neither
|
|
142
|
+
replaces it.
|
|
158
143
|
|
|
159
144
|
> Bring your favorite agent harness. Add governance.
|
|
160
145
|
|
|
161
|
-
## Status
|
|
162
|
-
|
|
163
|
-
- [x] Repo bootstrap (LICENSE, .gitignore)
|
|
164
|
-
- [x] README + VISION — repo legible
|
|
165
|
-
- [x] ARCHITECTURE — YAML shape + CLI surface agreed
|
|
166
|
-
- [x] ROADMAP — phases 1–7 with acceptance criteria
|
|
167
|
-
- [x] Phase 1 — read-only inventory (`describe`, `validate`, `doctor`, `list`, `explain`, `diff`) — released as [`v0.1.0`](CHANGELOG.md#010---2026-04-29)
|
|
168
|
-
- [x] Phase 2 — managed edits (`init`, `add`, `remove`, `adopt`, `export`) — released as [`v0.2.0`](CHANGELOG.md#020---2026-04-29)
|
|
169
|
-
- [x] Phase 3 — declarative truth (`apply`, `diff --since-apply`, `harness.lock`) — released as [`v0.3.0`](CHANGELOG.md#030---2026-04-30)
|
|
170
|
-
- [x] Phase 4 — policy layer (`policy intercept`, `explain --trace`, `audit`, `dry-run`, requires-evaluator + extract DSL + grounding-mcp adapter) — released as [`v0.4.0`](CHANGELOG.md#040---2026-04-30)
|
|
171
|
-
- [x] Phase 5 — polish + dogfood lessons (`--verbose` policy diagnostics, `$CLAUDE_SESSION_ID` env fallback, server-side `audit` filter pushdown, `policy_decision` first-class entry type, audit `--since` UTC parse fix, `explain --trace` ms-precision sort, npm distribution as `@lannguyensi/harness`) — released as [`v0.5.0`](CHANGELOG.md#050---2026-05-01)
|
|
172
|
-
- [ ] Phase 6 — Understanding Gate Policy Pack (agents must expose and confirm task understanding before write-capable tools fire)
|
|
173
|
-
- [ ] Phase 7 — Risk Gate (Action Envelope + Risk Classifier + `allow / warn / require_approval / deny` for destructive-action prevention)
|
|
174
|
-
|
|
175
146
|
## Why this exists
|
|
176
147
|
|
|
177
|
-
A working agent harness today has six to eight configuration
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
148
|
+
A working agent harness today has six to eight configuration
|
|
149
|
+
surfaces, each with its own schema and lifecycle: `~/.claude/settings.json`,
|
|
150
|
+
`CLAUDE.md` (per repo + root), `~/.claude/projects/*/memory/*.md`
|
|
151
|
+
with frontmatter, `~/.claude/keybindings.json`, MCP server
|
|
152
|
+
registrations in `~/.claude.json`, skill directories, per-project
|
|
153
|
+
overrides, and external CLIs that behave differently per project.
|
|
154
|
+
|
|
155
|
+
There is no single place that answers *"what can this agent do right
|
|
156
|
+
now, and why is that configured that way?"*. Drift between sessions
|
|
157
|
+
is invisible until it breaks something. Humans editing one surface
|
|
158
|
+
do not know which other surfaces they need to touch. A fresh agent
|
|
159
|
+
instance has no way to audit its own setup.
|
|
160
|
+
|
|
161
|
+
Our entry point into this problem: on 2026-04-23, an
|
|
162
|
+
`agent-grounding` checkout that was 16 commits behind origin led two
|
|
163
|
+
tasks to be incorrectly called "stale". The check that would have
|
|
164
|
+
caught it already exists,
|
|
165
|
+
[`agent-preflight`](https://github.com/LanNguyenSi/agent-preflight)
|
|
166
|
+
runs `git fetch` + `git status` (alongside lint, typecheck, test,
|
|
167
|
+
audit) and emits a structured `ready` + confidence-score result. The
|
|
168
|
+
missing piece was not the check itself, it was the deterministic
|
|
169
|
+
*trigger*: a `SessionStart` hook that invokes `preflight run` and a
|
|
170
|
+
policy that gates further work on the result. Building that wiring
|
|
171
|
+
needs an agreed-upon place for harness config to live first. That
|
|
172
|
+
conversation is the origin of this repo.
|
|
182
173
|
|
|
183
174
|
## Related
|
|
184
175
|
|
|
185
|
-
- [`agent-grounding`](https://github.com/LanNguyenSi/agent-grounding)
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
- [`
|
|
190
|
-
|
|
176
|
+
- [`agent-grounding`](https://github.com/LanNguyenSi/agent-grounding):
|
|
177
|
+
grounding primitives (evidence-ledger, claim-gate,
|
|
178
|
+
review-claim-gate); `grounding-mcp` is the canonical client surface
|
|
179
|
+
harness queries through `queryLedgerByTag`.
|
|
180
|
+
- [`agent-memory`](https://github.com/LanNguyenSi/agent-memory):
|
|
181
|
+
memory surfaces the control plane inventories.
|
|
182
|
+
- [`agent-tasks`](https://github.com/LanNguyenSi/agent-tasks): the
|
|
183
|
+
MCP-registered task platform whose registration + health appear in
|
|
184
|
+
`harness describe`.
|
|
185
|
+
- [`agent-preflight`](https://github.com/LanNguyenSi/agent-preflight):
|
|
186
|
+
local preflight validator; the canonical implementation of
|
|
187
|
+
preflight-hook content harness wires.
|
|
188
|
+
- [`codebase-oracle`](https://github.com/LanNguyenSi/codebase-oracle):
|
|
189
|
+
one of the MCP surfaces being registered.
|
|
190
|
+
- [`agent-dx`](https://github.com/LanNguyenSi/agent-dx): ships
|
|
191
|
+
`git-batch-cli`, a day-to-day tool whose inventory appears in
|
|
192
|
+
`harness describe`.
|
|
191
193
|
|
|
192
194
|
## License
|
|
193
195
|
|
|
194
|
-
MIT
|
|
196
|
+
MIT, see [LICENSE](LICENSE).
|
package/dist/cli/describe.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Manifest } from "../schema/index.js";
|
|
2
2
|
import { type LoaderOptions } from "./loader.js";
|
|
3
|
-
export type Pillar = "grounding" | "tools" | "memory" | "hooks" | "policies";
|
|
3
|
+
export type Pillar = "grounding" | "tools" | "memory" | "hooks" | "policies" | "workflows" | "review_templates";
|
|
4
4
|
export declare function isPillar(value: string): value is Pillar;
|
|
5
5
|
export interface DescribeOptions extends LoaderOptions {
|
|
6
6
|
pillar?: Pillar;
|
package/dist/cli/describe.js
CHANGED
package/dist/cli/describe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/cli/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,YAAY,EAAsB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../src/cli/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,YAAY,EAAsB,MAAM,aAAa,CAAC;AAW/D,MAAM,OAAO,GAAsB;IACjC,WAAW;IACX,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,WAAW;IACX,kBAAkB;CACnB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAQ,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC;AAYD,SAAS,aAAa,CAAC,QAAkB,EAAE,MAAc;IACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAwB,EAAE;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAA4B,IAAI,CAAC,MAAM;QACrD,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;QACtC,CAAC,CAAE,QAA+C,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI;QACtB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { VERSION } from "../../version.js";
|
|
2
2
|
function mcpLine(r, shallow) {
|
|
3
3
|
switch (r.outcome.kind) {
|
|
4
4
|
case "healthy":
|
|
@@ -118,6 +118,22 @@ function formatPoliciesSection(report) {
|
|
|
118
118
|
out.push(` (no policies declared)`);
|
|
119
119
|
return out;
|
|
120
120
|
}
|
|
121
|
+
function formatWorkflowsSection(report) {
|
|
122
|
+
const w = report.workflows;
|
|
123
|
+
if (w.declared === 0 && w.templates === 0)
|
|
124
|
+
return [];
|
|
125
|
+
const out = ["", "Workflows"];
|
|
126
|
+
out.push(` ${w.declared} declared, ${w.templates} review template${w.templates === 1 ? "" : "s"}`);
|
|
127
|
+
for (const e of w.entries) {
|
|
128
|
+
const review = e.reviewSpawn
|
|
129
|
+
? `review: ${e.reviewSpawn}${e.reviewTemplate ? ` (${e.reviewTemplate})` : ""}`
|
|
130
|
+
: "no review_subagent step";
|
|
131
|
+
const merge = e.mergeGate ? `, merge.gate: ${e.mergeGate}` : "";
|
|
132
|
+
const labels = e.taskLabels.length > 0 ? `, labels: ${e.taskLabels.join(",")}` : "";
|
|
133
|
+
out.push(` ✓ ${e.name} ${e.steps} steps, ${review}${merge}${labels}`);
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
121
137
|
function formatSummary(report) {
|
|
122
138
|
const out = ["", "Summary"];
|
|
123
139
|
const errLabel = report.errorCount === 1 ? "error" : "errors";
|
|
@@ -133,6 +149,7 @@ export function format(report) {
|
|
|
133
149
|
lines.push(...formatMemorySection(report));
|
|
134
150
|
lines.push(...formatHooksSection(report));
|
|
135
151
|
lines.push(...formatPoliciesSection(report));
|
|
152
|
+
lines.push(...formatWorkflowsSection(report));
|
|
136
153
|
lines.push(...formatSummary(report));
|
|
137
154
|
lines.push("");
|
|
138
155
|
return lines.join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/doctor/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/doctor/format.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/doctor/index.js
CHANGED
|
@@ -184,8 +184,35 @@ function buildPolicies(manifest) {
|
|
|
184
184
|
caveat: "schema valid; last-evaluated tracking ships in Phase 4",
|
|
185
185
|
}));
|
|
186
186
|
}
|
|
187
|
+
function buildWorkflows(manifest) {
|
|
188
|
+
const entries = manifest.workflows.map((wf) => {
|
|
189
|
+
const review = wf.steps.find((s) => s.kind === "review_subagent");
|
|
190
|
+
const merge = wf.steps.find((s) => s.kind === "merge");
|
|
191
|
+
return {
|
|
192
|
+
name: wf.name,
|
|
193
|
+
steps: wf.steps.length,
|
|
194
|
+
reviewSpawn: review?.kind === "review_subagent" ? review.spawn : null,
|
|
195
|
+
reviewTemplate: review?.kind === "review_subagent" ? (review.template ?? null) : null,
|
|
196
|
+
mergeGate: merge?.kind === "merge" ? merge.gate : null,
|
|
197
|
+
taskLabels: wf.when.task_label ?? [],
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
return {
|
|
201
|
+
declared: manifest.workflows.length,
|
|
202
|
+
templates: Object.keys(manifest.review_templates).length,
|
|
203
|
+
entries,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
187
206
|
function manifestSection(manifest) {
|
|
188
|
-
const topLevelKeys = [
|
|
207
|
+
const topLevelKeys = [
|
|
208
|
+
"grounding",
|
|
209
|
+
"tools",
|
|
210
|
+
"memory",
|
|
211
|
+
"hooks",
|
|
212
|
+
"policies",
|
|
213
|
+
"workflows",
|
|
214
|
+
"review_templates",
|
|
215
|
+
];
|
|
189
216
|
const present = topLevelKeys.filter((k) => manifest[k] !== undefined).length;
|
|
190
217
|
// Note: a corrupt manifest never reaches this point; loadManifest exits
|
|
191
218
|
// EX_NOINPUT (66) before doctor() returns. The previous syntaxValid /
|
|
@@ -269,6 +296,7 @@ export async function doctor(opts = {}) {
|
|
|
269
296
|
});
|
|
270
297
|
const hooks = checkHooks(manifest, home);
|
|
271
298
|
const policies = buildPolicies(manifest);
|
|
299
|
+
const workflows = buildWorkflows(manifest);
|
|
272
300
|
const manifestSec = manifestSection(manifest);
|
|
273
301
|
const partial = {
|
|
274
302
|
manifestPath: resolved.base,
|
|
@@ -280,6 +308,7 @@ export async function doctor(opts = {}) {
|
|
|
280
308
|
memory,
|
|
281
309
|
hooks,
|
|
282
310
|
policies,
|
|
311
|
+
workflows,
|
|
283
312
|
};
|
|
284
313
|
const counts = countDiagnostics(partial);
|
|
285
314
|
return { ...partial, ...counts };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/doctor/index.ts"],"names":[],"mappings":"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"}
|