ultimate-pi 0.20.0 → 0.22.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/harness-decisions/SKILL.md +68 -2
- package/.agents/skills/harness-git-commit/SKILL.md +72 -0
- package/.agents/skills/harness-governor/SKILL.md +2 -2
- package/.agents/skills/harness-ls-lint-setup/SKILL.md +59 -0
- package/.agents/skills/harness-plan/SKILL.md +13 -11
- package/.agents/skills/harness-review/SKILL.md +1 -1
- package/.agents/skills/harness-sentrux-repair/SKILL.md +48 -0
- package/.agents/skills/sentrux/SKILL.md +4 -2
- package/.agents/skills/wiki-save/SKILL.md +1 -1
- package/.pi/PACKAGING.md +6 -0
- package/.pi/SYSTEM.md +21 -3
- package/.pi/agents/harness/ls-lint-steward.md +49 -0
- package/.pi/agents/harness/planning/decompose.md +4 -4
- package/.pi/agents/harness/reviewing/evaluator.md +1 -1
- package/.pi/agents/harness/running/executor.md +1 -1
- package/.pi/agents/harness/sentrux-repair-advisor.md +50 -0
- package/.pi/agents/pi-pi/prompt-expert.md +17 -2
- package/.pi/auto-commit.json +9 -2
- package/.pi/extensions/debate-orchestrator.ts +3 -0
- package/.pi/extensions/harness-anchored-edit.ts +7 -9
- package/.pi/extensions/harness-ask-user.ts +13 -34
- package/.pi/extensions/harness-debate-tools.ts +43 -4
- package/.pi/extensions/harness-live-widget.ts +28 -19
- package/.pi/extensions/harness-run-context.ts +278 -115
- package/.pi/extensions/harness-web-tools.ts +598 -471
- package/.pi/extensions/ls-lint-rules-sync.ts +103 -0
- package/.pi/extensions/observation-bus.ts +4 -0
- package/.pi/extensions/policy-gate.ts +270 -229
- package/.pi/extensions/sentrux-rules-sync.ts +2 -0
- package/.pi/extensions/soundboard.ts +48 -48
- package/.pi/harness/README.md +4 -0
- package/.pi/harness/agents.manifest.json +15 -7
- package/.pi/harness/agents.policy.yaml +49 -82
- package/.pi/harness/docs/adrs/0052-ls-lint-naming-lifecycle.md +45 -0
- package/.pi/harness/docs/adrs/0052-sentrux-structured-repair.md +38 -0
- package/.pi/harness/docs/adrs/0053-plan-task-clarification-gate.md +39 -0
- package/.pi/harness/docs/adrs/0054-harness-native-ask-user.md +40 -0
- package/.pi/harness/docs/adrs/0055-auto-commit-coauthor-lifecycle.md +40 -0
- package/.pi/harness/docs/adrs/README.md +5 -0
- package/.pi/harness/docs/practice-map.md +10 -5
- package/.pi/harness/evals/smoke/ls-lint-stub.json +10 -0
- package/.pi/harness/evolution/self-healing-rules.json +16 -0
- package/.pi/harness/ls-lint/naming.manifest.json +128 -0
- package/.pi/harness/sentrux/architecture.manifest.json +1 -1
- package/.pi/harness/specs/auto-commit.schema.json +63 -0
- package/.pi/harness/specs/ls-lint-manifest-proposal.schema.json +80 -0
- package/.pi/harness/specs/ls-lint-signal.schema.json +47 -0
- package/.pi/harness/specs/naming-manifest.schema.json +54 -0
- package/.pi/harness/specs/plan-task-clarification.schema.json +88 -0
- package/.pi/harness/specs/sentrux-diagnostics.schema.json +173 -0
- package/.pi/harness/specs/sentrux-repair-plan.schema.json +133 -0
- package/.pi/harness/specs/sentrux-report.schema.json +119 -0
- package/.pi/harness/specs/sentrux-signal.schema.json +34 -1
- package/.pi/lib/agents-policy.d.mts +26 -51
- package/.pi/lib/agents-policy.mjs +41 -28
- package/.pi/lib/agt/build-evaluation-context.ts +136 -64
- package/.pi/lib/ask-user/constants.mjs +3 -0
- package/.pi/lib/ask-user/constants.ts +4 -0
- package/.pi/lib/ask-user/contracts/glimpse-parse.ts +56 -0
- package/.pi/lib/ask-user/contracts/glimpse-payload-build.ts +58 -0
- package/.pi/lib/ask-user/contracts/glimpse-payload.ts +38 -0
- package/.pi/lib/ask-user/core/questionnaire.ts +74 -0
- package/.pi/lib/ask-user/dialog.ts +2 -314
- package/.pi/lib/ask-user/fallback.ts +2 -78
- package/.pi/lib/ask-user/format.ts +85 -0
- package/.pi/lib/ask-user/glimpseui.d.ts +10 -0
- package/.pi/lib/ask-user/index.ts +114 -0
- package/.pi/lib/ask-user/merge-task-clarification.ts +98 -0
- package/.pi/lib/ask-user/policy.mjs +43 -0
- package/.pi/lib/ask-user/policy.ts +104 -0
- package/.pi/lib/ask-user/presenters/glimpse.ts +130 -0
- package/.pi/lib/ask-user/presenters/headless.ts +131 -0
- package/.pi/lib/ask-user/presenters/select.ts +60 -0
- package/.pi/lib/ask-user/presenters/tui.ts +373 -0
- package/.pi/lib/ask-user/presenters/types.ts +13 -0
- package/.pi/lib/ask-user/render.ts +40 -9
- package/.pi/lib/ask-user/schema.ts +66 -13
- package/.pi/lib/ask-user/types.ts +60 -3
- package/.pi/lib/ask-user/validate-core.mjs +193 -7
- package/.pi/lib/ask-user/validate.ts +53 -34
- package/.pi/lib/harness-anchored-edit/package.json +3 -0
- package/.pi/lib/harness-artifact-gate.ts +75 -21
- package/.pi/lib/harness-auto-commit-config.mjs +321 -0
- package/.pi/lib/harness-lens/clients/lsp/client.ts +62 -39
- package/.pi/lib/harness-lens/clients/tool-policy.ts +73 -181
- package/.pi/lib/harness-lens/index.ts +241 -108
- package/.pi/lib/harness-lens/tools/lsp-navigation.ts +10 -8
- package/.pi/lib/harness-repair-brief.ts +84 -25
- package/.pi/lib/harness-run-context.ts +42 -52
- package/.pi/lib/harness-sentrux-parse.mjs +272 -0
- package/.pi/lib/harness-sentrux-root.mjs +78 -0
- package/.pi/lib/harness-slash-completions.ts +116 -0
- package/.pi/lib/harness-spawn-topology.ts +121 -87
- package/.pi/lib/harness-subagent-submit-registry.ts +10 -0
- package/.pi/lib/harness-subagents-bridge.ts +4 -1
- package/.pi/lib/harness-ui-state.ts +95 -48
- package/.pi/lib/plan-approval/dialog.ts +5 -0
- package/.pi/lib/plan-approval/validate.ts +1 -1
- package/.pi/lib/plan-approval-readiness.ts +32 -0
- package/.pi/lib/plan-debate-gate.ts +154 -114
- package/.pi/lib/plan-task-clarification.ts +158 -0
- package/.pi/prompts/harness-auto.md +2 -2
- package/.pi/prompts/harness-ls-lint-steward.md +43 -0
- package/.pi/prompts/harness-plan.md +58 -8
- package/.pi/prompts/harness-review.md +40 -6
- package/.pi/prompts/harness-run.md +33 -11
- package/.pi/prompts/harness-setup.md +72 -3
- package/.pi/prompts/harness-steer.md +2 -1
- package/.pi/prompts/wiki-save.md +5 -4
- package/.pi/scripts/README.md +8 -0
- package/.pi/scripts/generate-agents-policy-yaml.mjs +14 -2
- package/.pi/scripts/harness-auto-commit-bootstrap.mjs +96 -0
- package/.pi/scripts/harness-cli-verify.sh +47 -0
- package/.pi/scripts/harness-git-churn.mjs +77 -0
- package/.pi/scripts/harness-git-commit.mjs +173 -0
- package/.pi/scripts/harness-ls-lint-bootstrap.mjs +142 -0
- package/.pi/scripts/harness-ls-lint-cli.mjs +184 -0
- package/.pi/scripts/harness-seed-project-contracts.mjs +47 -0
- package/.pi/scripts/harness-sentrux-diagnostics.mjs +230 -0
- package/.pi/scripts/harness-sentrux-report.mjs +256 -0
- package/.pi/scripts/harness-verify.mjs +288 -125
- package/.pi/scripts/ls-lint-rules-sync.mjs +265 -0
- package/.pi/scripts/run-tests.mjs +1 -0
- package/.pi/settings.example.json +1 -0
- package/.sentrux/rules.toml +1 -1
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +25 -0
- package/README.md +13 -4
- package/package.json +5 -1
- package/vendor/pi-vcc/src/hooks/before-compact.ts +86 -60
package/.pi/harness/README.md
CHANGED
|
@@ -11,6 +11,7 @@ Phase 1–2 scaffold for the Pi harness runtime surfaces.
|
|
|
11
11
|
- `evolution/` - self-healing rules and chaos drills (JSONL-first).
|
|
12
12
|
- `corpus/` - ingest notes for graphify/raw sources.
|
|
13
13
|
- `sentrux/` - `architecture.manifest.json` source for `.sentrux/rules.toml` ([ADR 0009](docs/adrs/0009-sentrux-rules-lifecycle.md)).
|
|
14
|
+
- `ls-lint/` - `naming.manifest.json` source for `.ls-lint.yml` ([ADR 0052](docs/adrs/0052-ls-lint-naming-lifecycle.md)).
|
|
14
15
|
|
|
15
16
|
This scaffold is intentionally minimal and safe to adopt incrementally.
|
|
16
17
|
|
|
@@ -21,6 +22,8 @@ UP_PKG="$(node -p "require('path').dirname(require.resolve('ultimate-pi/package.
|
|
|
21
22
|
node "$UP_PKG/.pi/scripts/harness-verify.mjs"
|
|
22
23
|
node "$UP_PKG/.pi/scripts/harness-sentrux-bootstrap.mjs" # idempotent bootstrap (/harness-setup)
|
|
23
24
|
node "$UP_PKG/.pi/scripts/harness-sentrux-bootstrap.mjs" --force # after editing sentrux/architecture.manifest.json
|
|
25
|
+
node "$UP_PKG/.pi/scripts/harness-ls-lint-bootstrap.mjs" # idempotent naming bootstrap
|
|
26
|
+
node "$UP_PKG/.pi/scripts/harness-ls-lint-bootstrap.mjs" --force # after editing ls-lint/naming.manifest.json
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
## Governance Extensions
|
|
@@ -42,6 +45,7 @@ manifest (`package.json`).
|
|
|
42
45
|
- `observation-bus.ts` - normalized HarnessObservation envelopes
|
|
43
46
|
- `drift-monitor.ts` - interactive replan/proceed on high plan drift
|
|
44
47
|
- `sentrux-rules-sync.ts` - sync `.sentrux/rules.toml` from `sentrux/architecture.manifest.json`
|
|
48
|
+
- `ls-lint-rules-sync.ts` - sync `.ls-lint.yml` from `ls-lint/naming.manifest.json`
|
|
45
49
|
- `review-integrity.ts` - executor/reviewer session-isolation enforcement
|
|
46
50
|
- `test-diff-integrity.ts` - suspicious test-diff detection + adversary escalation
|
|
47
51
|
- `debate-orchestrator.ts` - headless debate bus + consensus packet emission
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
3
|
"package": "ultimate-pi",
|
|
4
|
-
"package_version": "0.
|
|
5
|
-
"generated_at": "2026-05-
|
|
6
|
-
"policy_sha256": "
|
|
4
|
+
"package_version": "0.21.0",
|
|
5
|
+
"generated_at": "2026-05-27T07:05:16.312Z",
|
|
6
|
+
"policy_sha256": "799782453e74a1d2d15a28715c985c1b5dc4566701ddcce475ec4725294437e4",
|
|
7
7
|
"agents": {
|
|
8
8
|
"pi-pi/agent-expert": {
|
|
9
9
|
"path": ".pi/agents/pi-pi/agent-expert.md",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"pi-pi/prompt-expert": {
|
|
33
33
|
"path": ".pi/agents/pi-pi/prompt-expert.md",
|
|
34
|
-
"sha256": "
|
|
34
|
+
"sha256": "043856946673ea7e655e31d71b544e1eac43705839669a3fd223dc16da12a71e"
|
|
35
35
|
},
|
|
36
36
|
"pi-pi/skill-expert": {
|
|
37
37
|
"path": ".pi/agents/pi-pi/skill-expert.md",
|
|
@@ -49,10 +49,18 @@
|
|
|
49
49
|
"path": ".pi/agents/harness/incident-recorder.md",
|
|
50
50
|
"sha256": "4efbdb9482b1038e2bd08cae9898aed9ef983903107ddab6c84d51436d5d3296"
|
|
51
51
|
},
|
|
52
|
+
"harness/ls-lint-steward": {
|
|
53
|
+
"path": ".pi/agents/harness/ls-lint-steward.md",
|
|
54
|
+
"sha256": "e35bf59adf2785e7369a7428793a26691cea43d630e02a9541398cb5a5b1f5dc"
|
|
55
|
+
},
|
|
52
56
|
"harness/sentrux-bootstrap": {
|
|
53
57
|
"path": ".pi/agents/harness/sentrux-bootstrap.md",
|
|
54
58
|
"sha256": "6132e83b400b6bc381841a09205eda00a2349ec127368f9d164631d73faadd1a"
|
|
55
59
|
},
|
|
60
|
+
"harness/sentrux-repair-advisor": {
|
|
61
|
+
"path": ".pi/agents/harness/sentrux-repair-advisor.md",
|
|
62
|
+
"sha256": "057618de561d90e597be7a319f3abfa2adaa128d4e92850c50b3e35a447f0371"
|
|
63
|
+
},
|
|
56
64
|
"harness/sentrux-steward": {
|
|
57
65
|
"path": ".pi/agents/harness/sentrux-steward.md",
|
|
58
66
|
"sha256": "d806cbf2c2e211c6b4c95e35893bc250c8a0fab6fae92190766eab16cd091d51"
|
|
@@ -87,7 +95,7 @@
|
|
|
87
95
|
},
|
|
88
96
|
"harness/running/executor": {
|
|
89
97
|
"path": ".pi/agents/harness/running/executor.md",
|
|
90
|
-
"sha256": "
|
|
98
|
+
"sha256": "0b602c27f8842af3b1bc702623649de8ba775e77fe59bc156bfabf91b5303d85"
|
|
91
99
|
},
|
|
92
100
|
"harness/reviewing/adversary": {
|
|
93
101
|
"path": ".pi/agents/harness/reviewing/adversary.md",
|
|
@@ -95,7 +103,7 @@
|
|
|
95
103
|
},
|
|
96
104
|
"harness/reviewing/evaluator": {
|
|
97
105
|
"path": ".pi/agents/harness/reviewing/evaluator.md",
|
|
98
|
-
"sha256": "
|
|
106
|
+
"sha256": "885dda59bbbc6193c485a90fa4a867d44f2d4278b6ab001dc548c67529d06452"
|
|
99
107
|
},
|
|
100
108
|
"harness/reviewing/tie-breaker": {
|
|
101
109
|
"path": ".pi/agents/harness/reviewing/tie-breaker.md",
|
|
@@ -103,7 +111,7 @@
|
|
|
103
111
|
},
|
|
104
112
|
"harness/planning/decompose": {
|
|
105
113
|
"path": ".pi/agents/harness/planning/decompose.md",
|
|
106
|
-
"sha256": "
|
|
114
|
+
"sha256": "ef552be75ff92667e6be90a85768e0804501d00e517b753ca37d174b2561618a"
|
|
107
115
|
},
|
|
108
116
|
"harness/planning/execution-plan-author": {
|
|
109
117
|
"path": ".pi/agents/harness/planning/execution-plan-author.md",
|
|
@@ -9,11 +9,6 @@ kinds:
|
|
|
9
9
|
- grep
|
|
10
10
|
- find
|
|
11
11
|
- ls
|
|
12
|
-
- ctx_read
|
|
13
|
-
- ctx_search
|
|
14
|
-
- ctx_execute
|
|
15
|
-
- ctx_batch_execute
|
|
16
|
-
- ctx_tree
|
|
17
12
|
extensions: false
|
|
18
13
|
read_only: true
|
|
19
14
|
executor:
|
|
@@ -22,10 +17,11 @@ kinds:
|
|
|
22
17
|
- write
|
|
23
18
|
- edit
|
|
24
19
|
- bash
|
|
20
|
+
- grep
|
|
21
|
+
- find
|
|
25
22
|
- ls
|
|
26
|
-
|
|
23
|
+
extensions: true
|
|
27
24
|
extension_bundle: executor
|
|
28
|
-
extensions: false
|
|
29
25
|
read_only: false
|
|
30
26
|
evaluator:
|
|
31
27
|
tools:
|
|
@@ -33,11 +29,6 @@ kinds:
|
|
|
33
29
|
- grep
|
|
34
30
|
- find
|
|
35
31
|
- ls
|
|
36
|
-
- ctx_read
|
|
37
|
-
- ctx_search
|
|
38
|
-
- ctx_execute
|
|
39
|
-
- ctx_batch_execute
|
|
40
|
-
- ctx_tree
|
|
41
32
|
extensions: false
|
|
42
33
|
read_only: true
|
|
43
34
|
adversary:
|
|
@@ -46,11 +37,6 @@ kinds:
|
|
|
46
37
|
- grep
|
|
47
38
|
- find
|
|
48
39
|
- ls
|
|
49
|
-
- ctx_read
|
|
50
|
-
- ctx_search
|
|
51
|
-
- ctx_execute
|
|
52
|
-
- ctx_batch_execute
|
|
53
|
-
- ctx_tree
|
|
54
40
|
extensions: false
|
|
55
41
|
read_only: true
|
|
56
42
|
tie_breaker:
|
|
@@ -59,11 +45,6 @@ kinds:
|
|
|
59
45
|
- grep
|
|
60
46
|
- find
|
|
61
47
|
- ls
|
|
62
|
-
- ctx_read
|
|
63
|
-
- ctx_search
|
|
64
|
-
- ctx_execute
|
|
65
|
-
- ctx_batch_execute
|
|
66
|
-
- ctx_tree
|
|
67
48
|
extensions: false
|
|
68
49
|
read_only: true
|
|
69
50
|
trace:
|
|
@@ -72,11 +53,6 @@ kinds:
|
|
|
72
53
|
- grep
|
|
73
54
|
- find
|
|
74
55
|
- ls
|
|
75
|
-
- ctx_read
|
|
76
|
-
- ctx_search
|
|
77
|
-
- ctx_execute
|
|
78
|
-
- ctx_batch_execute
|
|
79
|
-
- ctx_tree
|
|
80
56
|
extensions: false
|
|
81
57
|
read_only: true
|
|
82
58
|
incident:
|
|
@@ -85,11 +61,6 @@ kinds:
|
|
|
85
61
|
- grep
|
|
86
62
|
- find
|
|
87
63
|
- ls
|
|
88
|
-
- ctx_read
|
|
89
|
-
- ctx_search
|
|
90
|
-
- ctx_execute
|
|
91
|
-
- ctx_batch_execute
|
|
92
|
-
- ctx_tree
|
|
93
64
|
extensions: false
|
|
94
65
|
read_only: true
|
|
95
66
|
other:
|
|
@@ -98,10 +69,6 @@ kinds:
|
|
|
98
69
|
- grep
|
|
99
70
|
- find
|
|
100
71
|
- ls
|
|
101
|
-
- ctx_read
|
|
102
|
-
- ctx_search
|
|
103
|
-
- ctx_execute
|
|
104
|
-
- ctx_tree
|
|
105
72
|
extensions: false
|
|
106
73
|
read_only: true
|
|
107
74
|
agents:
|
|
@@ -113,17 +80,30 @@ agents:
|
|
|
113
80
|
max_turns: 15
|
|
114
81
|
thinking: medium
|
|
115
82
|
submit_tool: submit_human_required
|
|
116
|
-
harness/
|
|
83
|
+
harness/ls-lint-steward:
|
|
117
84
|
kind: planner
|
|
118
85
|
tools_add:
|
|
119
|
-
-
|
|
86
|
+
- submit_ls_lint_manifest_proposal
|
|
87
|
+
extensions: false
|
|
88
|
+
max_turns: 16
|
|
89
|
+
thinking: high
|
|
90
|
+
submit_tool: submit_ls_lint_manifest_proposal
|
|
91
|
+
harness/sentrux-bootstrap:
|
|
92
|
+
kind: planner
|
|
120
93
|
extensions: true
|
|
121
94
|
max_turns: 12
|
|
122
95
|
thinking: low
|
|
96
|
+
harness/sentrux-repair-advisor:
|
|
97
|
+
kind: evaluator
|
|
98
|
+
tools_add:
|
|
99
|
+
- submit_sentrux_repair_plan
|
|
100
|
+
extensions: false
|
|
101
|
+
max_turns: 14
|
|
102
|
+
thinking: high
|
|
103
|
+
submit_tool: submit_sentrux_repair_plan
|
|
123
104
|
harness/sentrux-steward:
|
|
124
105
|
kind: planner
|
|
125
106
|
tools_add:
|
|
126
|
-
- bash
|
|
127
107
|
- submit_sentrux_manifest_proposal
|
|
128
108
|
extensions: false
|
|
129
109
|
max_turns: 16
|
|
@@ -137,6 +117,36 @@ agents:
|
|
|
137
117
|
max_turns: 20
|
|
138
118
|
thinking: medium
|
|
139
119
|
submit_tool: submit_human_required
|
|
120
|
+
harness/web-retrieval/web-answerer:
|
|
121
|
+
kind: other
|
|
122
|
+
extensions: false
|
|
123
|
+
max_turns: 12
|
|
124
|
+
thinking: medium
|
|
125
|
+
harness/web-retrieval/web-criteria-verifier:
|
|
126
|
+
kind: other
|
|
127
|
+
extensions: false
|
|
128
|
+
max_turns: 14
|
|
129
|
+
thinking: medium
|
|
130
|
+
harness/web-retrieval/web-gap-analyzer:
|
|
131
|
+
kind: other
|
|
132
|
+
extensions: false
|
|
133
|
+
max_turns: 10
|
|
134
|
+
thinking: low
|
|
135
|
+
harness/web-retrieval/web-query-expander-fast:
|
|
136
|
+
kind: other
|
|
137
|
+
extensions: false
|
|
138
|
+
max_turns: 5
|
|
139
|
+
thinking: off
|
|
140
|
+
harness/web-retrieval/web-query-expander:
|
|
141
|
+
kind: other
|
|
142
|
+
extensions: false
|
|
143
|
+
max_turns: 8
|
|
144
|
+
thinking: low
|
|
145
|
+
harness/web-retrieval/web-summarizer:
|
|
146
|
+
kind: other
|
|
147
|
+
extensions: false
|
|
148
|
+
max_turns: 6
|
|
149
|
+
thinking: low
|
|
140
150
|
harness/running/executor:
|
|
141
151
|
kind: executor
|
|
142
152
|
tools_add:
|
|
@@ -171,7 +181,6 @@ agents:
|
|
|
171
181
|
harness/planning/decompose:
|
|
172
182
|
kind: planner
|
|
173
183
|
tools_add:
|
|
174
|
-
- bash
|
|
175
184
|
- submit_decomposition_brief
|
|
176
185
|
- submit_human_required
|
|
177
186
|
extensions: false
|
|
@@ -196,50 +205,14 @@ agents:
|
|
|
196
205
|
harness/planning/hypothesis:
|
|
197
206
|
kind: planner
|
|
198
207
|
tools_add:
|
|
199
|
-
- bash
|
|
200
208
|
- submit_hypothesis_brief
|
|
201
209
|
extensions: false
|
|
202
210
|
max_turns: 14
|
|
203
211
|
thinking: medium
|
|
204
212
|
submit_tool: submit_hypothesis_brief
|
|
205
|
-
harness/web-retrieval/web-query-expander:
|
|
206
|
-
kind: other
|
|
207
|
-
extensions: false
|
|
208
|
-
max_turns: 8
|
|
209
|
-
thinking: low
|
|
210
|
-
harness/web-retrieval/web-query-expander-fast:
|
|
211
|
-
kind: other
|
|
212
|
-
extensions: false
|
|
213
|
-
max_turns: 5
|
|
214
|
-
thinking: off
|
|
215
|
-
harness/web-retrieval/web-gap-analyzer:
|
|
216
|
-
kind: other
|
|
217
|
-
extensions: false
|
|
218
|
-
max_turns: 8
|
|
219
|
-
thinking: low
|
|
220
|
-
harness/web-retrieval/web-answerer:
|
|
221
|
-
kind: other
|
|
222
|
-
extensions: false
|
|
223
|
-
max_turns: 12
|
|
224
|
-
thinking: medium
|
|
225
|
-
harness/web-retrieval/web-summarizer:
|
|
226
|
-
kind: other
|
|
227
|
-
extensions: false
|
|
228
|
-
max_turns: 6
|
|
229
|
-
thinking: low
|
|
230
|
-
harness/web-retrieval/web-criteria-verifier:
|
|
231
|
-
kind: other
|
|
232
|
-
extensions: false
|
|
233
|
-
max_turns: 14
|
|
234
|
-
thinking: medium
|
|
235
213
|
harness/planning/implementation-researcher:
|
|
236
214
|
kind: planner
|
|
237
215
|
tools_add:
|
|
238
|
-
- bash
|
|
239
|
-
- web_search
|
|
240
|
-
- web_fetch
|
|
241
|
-
- web_find_similar
|
|
242
|
-
- web_contents
|
|
243
216
|
- submit_implementation_research
|
|
244
217
|
extensions: false
|
|
245
218
|
max_turns: 14
|
|
@@ -271,7 +244,6 @@ agents:
|
|
|
271
244
|
harness/planning/planning-context:
|
|
272
245
|
kind: planner
|
|
273
246
|
tools_add:
|
|
274
|
-
- bash
|
|
275
247
|
- submit_planning_context
|
|
276
248
|
extensions: false
|
|
277
249
|
max_turns: 12
|
|
@@ -296,11 +268,6 @@ agents:
|
|
|
296
268
|
harness/planning/stack-researcher:
|
|
297
269
|
kind: planner
|
|
298
270
|
tools_add:
|
|
299
|
-
- bash
|
|
300
|
-
- web_search
|
|
301
|
-
- web_fetch
|
|
302
|
-
- web_find_similar
|
|
303
|
-
- web_contents
|
|
304
271
|
- submit_stack_brief
|
|
305
272
|
extensions: false
|
|
306
273
|
max_turns: 16
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ADR 0052: ls-lint naming lifecycle
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-05-26
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Harness projects need deterministic **filesystem naming** fitness functions alongside Sentrux (code architecture). [ls-lint](https://ls-lint.org/) validates file and directory names from `.ls-lint.yml`. The harness must keep naming rules aligned when conventions evolve — not only on initial setup.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
|
|
12
|
+
1. **Canonical source:** [`.pi/harness/ls-lint/naming.manifest.json`](../../ls-lint/naming.manifest.json) — `global_rules`, `scoped_rules`, `ignores`.
|
|
13
|
+
2. **Generated artifact:** `.ls-lint.yml` at repo root — committed to git; managed block between `harness:managed:start/end` markers.
|
|
14
|
+
3. **Bootstrap (idempotent):** `node "$UP_PKG/.pi/scripts/harness-ls-lint-bootstrap.mjs"` — seeds manifest when missing, runs sync without `--force` when unchanged.
|
|
15
|
+
4. **Re-sync:** `node "$UP_PKG/.pi/scripts/ls-lint-rules-sync.mjs" --force` or `harness-ls-lint-bootstrap.mjs --force`.
|
|
16
|
+
5. **Pi command:** `/harness-ls-lint-sync` via `ls-lint-rules-sync.ts` extension.
|
|
17
|
+
6. **When to sync:**
|
|
18
|
+
- `/harness-setup` Step 4.3 (after ls-lint CLI install in Step 2.9)
|
|
19
|
+
- After editing `naming.manifest.json`
|
|
20
|
+
- On `agent_end` when harness phase is `plan` or `merge`, or `harness-naming-changed`
|
|
21
|
+
- `harness-verify.mjs` fails if manifest hash ≠ last sync (`--check`)
|
|
22
|
+
7. **Custom rules:** YAML outside the managed block is preserved on sync.
|
|
23
|
+
8. **Skill:** `harness-ls-lint-setup` documents bootstrap vs steward vs sync vs observation.
|
|
24
|
+
9. **Intent evolution:** `harness/ls-lint-steward` proposes JSON Merge Patches via `submit_ls_lint_manifest_proposal` → `artifacts/ls-lint-manifest-proposal.yaml`. Chair applies manifest edits; never silent auto-merge from directory trees.
|
|
25
|
+
10. **Observation vs intent:** `/harness-run` + `/harness-review` run `harness-ls-lint-cli.mjs` → `artifacts/ls-lint-signal.yaml`. Violations after execute → steer/repair. Manifest changes → steward + ADR when material.
|
|
26
|
+
|
|
27
|
+
## Consequences
|
|
28
|
+
|
|
29
|
+
### Positive
|
|
30
|
+
|
|
31
|
+
- Filename drift is caught before merge with millisecond lint cost.
|
|
32
|
+
- Complements Sentrux without conflating path naming with import-layer architecture.
|
|
33
|
+
|
|
34
|
+
### Negative
|
|
35
|
+
|
|
36
|
+
- Strict global kebab-case may require scoped rules or ignores for legacy third-party trees (handled via `ignores` and `scoped_rules`).
|
|
37
|
+
|
|
38
|
+
## References
|
|
39
|
+
|
|
40
|
+
- ADR 0009 (Sentrux rules lifecycle — parallel pattern)
|
|
41
|
+
- `.pi/agents/harness/ls-lint-steward.md`, `.pi/prompts/harness-ls-lint-steward.md`
|
|
42
|
+
- `.pi/harness/specs/ls-lint-manifest-proposal.schema.json`, `ls-lint-signal.schema.json`
|
|
43
|
+
- `.pi/scripts/harness-ls-lint-bootstrap.mjs`, `ls-lint-rules-sync.mjs`, `harness-ls-lint-cli.mjs`
|
|
44
|
+
- `.agents/skills/harness-ls-lint-setup/SKILL.md`
|
|
45
|
+
- `.pi/extensions/ls-lint-rules-sync.ts`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# ADR 0052: Sentrux structured repair (OSS diagnostics, no MCP/Pro)
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-05-27
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Sentrux OSS `check` / `gate` already compute a full `HealthReport` internally, but the free CLI prints violations and a quality line while dropping rich lists (god files, hotspots, complex functions). Sentrux Pro exposes the same shape via MCP `health`. Ultimate-pi harness needs **actionable “what to fix”** for steer/executor without Pro, MCP, or duplicate scans per review phase.
|
|
9
|
+
|
|
10
|
+
ADR 0006/0009 cover dual-layer trust and manifest lifecycle; ADR 0044 covers steer via `repair-brief.yaml`. Prior `sentrux-signal.yaml` (v1.0.0) was too thin for repair routing.
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
|
|
14
|
+
1. **Single scan per run** — Parent runs `harness-sentrux-report.mjs` once (check + gate capture → `artifacts/sentrux-report.json`). Review reuses artifacts unless missing or `HARNESS_SENTRUX_RESCAN=1`.
|
|
15
|
+
2. **OSS synthesis** — `harness-sentrux-diagnostics.mjs` builds Pro-shaped `artifacts/sentrux-diagnostics.json` from the report (+ optional git churn, graphify refs). `bottleneck_inferred: true` when not from upstream JSON.
|
|
16
|
+
3. **Signal v1.1.0** — `sentrux-signal.yaml` adds `quality_signal`, `violation_count`, `report_path`, `diagnostics_path`, `degraded_reasons`.
|
|
17
|
+
4. **Repair advisor subagent** — `harness/sentrux-repair-advisor` (read-only, no bash) submits `artifacts/sentrux-repair-plan.yaml` via `submit_sentrux_repair_plan`. Spawned in `/harness-review` **Phase 1b** before benchmark evaluator when violations or gate degradation exist.
|
|
18
|
+
5. **Steer merge** — `synthesizeRepairBrief` prepends `[sentrux:…]` directives from the repair plan into `repair-brief.yaml`.
|
|
19
|
+
6. **Upstream optional** — Report script probes `sentrux check --format json`; when available, prefer parsed JSON over stdout heuristics. Track upstream contribution separately (`raw/sentrux-upstream-json-format.md`).
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
### Positive
|
|
24
|
+
|
|
25
|
+
- Pro-style repair context without Pro/MCP.
|
|
26
|
+
- One CLI scan per run; review/advisor read paths only.
|
|
27
|
+
- Clear separation: steward = manifest intent; repair advisor = code fixes.
|
|
28
|
+
|
|
29
|
+
### Negative
|
|
30
|
+
|
|
31
|
+
- Stdout parsers must track CLI formatting changes until upstream JSON ships.
|
|
32
|
+
- Inferred diagnostics are weaker than native HealthReport serialization.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [ADR 0006](0006-sentrux-dual-layer.md), [ADR 0009](0009-sentrux-rules-lifecycle.md), [ADR 0044](0044-harness-steer-loop.md)
|
|
37
|
+
- `.pi/scripts/harness-sentrux-report.mjs`, `harness-sentrux-diagnostics.mjs`
|
|
38
|
+
- `.pi/agents/harness/sentrux-repair-advisor.md`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# ADR 0053: Plan-phase task clarification gate
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-05-26
|
|
5
|
+
- **Deciders:** ultimate-pi harness team
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
`/harness-plan` began with Phase 1 reconnaissance (graphify, ccc, optional planning-context subprocess) before the user’s intent was unambiguous. That burned tokens and subagent time on the wrong problem. `ask_user` appeared only after expensive work (Phase 3.5 forks, debate, approval). Decompose §1.1 duplicated problem clarification too late.
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
Insert **Phase 0 — Task clarification** before full planning:
|
|
14
|
+
|
|
15
|
+
1. Parent writes `artifacts/task-clarification.yaml` with a canonical `clarified_task`, scope boundaries, draft acceptance checks, and empty `unresolved_questions` when `status: ready`.
|
|
16
|
+
2. Codebase reads and web-retrieval are **allowed** during Phase 0 when they help disambiguate the task; the boundary is **phase scope** (no planning subagents, no `planning-context.yaml` or downstream plan artifacts), not a tool ban.
|
|
17
|
+
3. Enforce readiness via `harness_artifact_ready`, `write_harness_yaml` / `merge_harness_yaml` write-order, spawn topology, and `validatePlanApprovalReadiness`.
|
|
18
|
+
4. Phase 1 inherits Phase 0 `grounding` / `evidence_refs` and sets `planning-context.task_ref` to the clarification artifact.
|
|
19
|
+
|
|
20
|
+
## Consequences
|
|
21
|
+
|
|
22
|
+
### Positive
|
|
23
|
+
|
|
24
|
+
- Ambiguity resolved before reconnaissance, decomposition, research, and debate.
|
|
25
|
+
- Single task contract artifact for spawn context and scope checks (`task_summary` syncs on gate pass).
|
|
26
|
+
- Prompt-only bypass closed by write-order and spawn guards.
|
|
27
|
+
|
|
28
|
+
### Negative / trade-offs
|
|
29
|
+
|
|
30
|
+
- Extra `ask_user` latency on vague tasks (intentional).
|
|
31
|
+
- Overlap between Phase 0 investigation and Phase 1 recon unless orchestrator deduplicates via `grounding`.
|
|
32
|
+
- Three status vocabularies (`task-clarification.status`, `plan-phase-status`, `last_outcome`) — document which applies when.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [practice-map.md](../practice-map.md) — Phase 0 / 0a rows
|
|
37
|
+
- [.pi/prompts/harness-plan.md](../../../prompts/harness-plan.md)
|
|
38
|
+
- [.pi/lib/plan-task-clarification.ts](../../../lib/plan-task-clarification.ts)
|
|
39
|
+
- [.pi/harness/specs/plan-task-clarification.schema.json](../specs/plan-task-clarification.schema.json)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ADR 0054: Harness-native ask_user with Glimpse presenters
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-05-27
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Harness orchestrators need structured human decisions (`ask_user`) during setup, Phase 0 task clarification, and governance forks. Terminal-only prompts are hard to scan for multi-dimensional forks. [@alexleekt/pi-ask-user-glimpse](https://www.npmjs.com/package/@alexleekt/pi-ask-user-glimpse) ships a rich WebView UI, but installing it as a second Pi extension would duplicate tool registration and couple harness policy to upstream extension lifecycle.
|
|
9
|
+
|
|
10
|
+
## Decision
|
|
11
|
+
|
|
12
|
+
1. **Single tool registration** — [`.pi/extensions/harness-ask-user.ts`](../../../extensions/harness-ask-user.ts) registers `ask_user` and delegates to [`runAskUser`](../../../lib/ask-user/index.ts).
|
|
13
|
+
2. **Domain module** — [`.pi/lib/ask-user/`](../../../lib/ask-user/): `types`, `schema`, `validate`, `format`, `policy`, `merge-task-clarification`, `core/questionnaire`.
|
|
14
|
+
3. **Presenter stack** (UI only) — `presenters/tui.ts`, `presenters/headless.ts`, `presenters/glimpse.ts`, routed by `presenters/select.ts`.
|
|
15
|
+
4. **Glimpse as npm dependency** — pinned in [`.pi/npm/package.json`](../../../npm/package.json) (`@alexleekt/pi-ask-user-glimpse`, `glimpseui`). Harness-owned payload builder + parser in `contracts/`; no import of glimpse’s private `tool/ask-user.ts`.
|
|
16
|
+
5. **Response shape** — `AskResponse` includes `kind: "questionnaire"` with `questionnaireDetails[]` (aligned with glimpse, not a parallel `answers` array).
|
|
17
|
+
6. **Routing** — `HARNESS_ASK_USER_UI=auto|tui|glimpse|headless`. `displayMode: "inline"` always uses TUI. Glimpse failure degrades to TUI with `details.ui_degraded: true`. Non-interactive sessions short-circuit via `isHarnessNonInteractive()`.
|
|
18
|
+
7. **Plan approval** — remains on `approve_plan` only; `isPlanApprovalAskUser` in `policy.ts` rejects mistaken plan-approval-shaped `ask_user` calls.
|
|
19
|
+
8. **Formatting** — only [`format.ts`](../../../lib/ask-user/format.ts) emits tool `content` text; presenters return structured `DialogResult`.
|
|
20
|
+
|
|
21
|
+
## Consequences
|
|
22
|
+
|
|
23
|
+
### Positive
|
|
24
|
+
|
|
25
|
+
- One `ask_user` contract for agents; swappable UI without policy forks.
|
|
26
|
+
- Questionnaire mode supports Phase 0 multi-fork clarification in one tool call.
|
|
27
|
+
- WSL/CI can force TUI or headless without removing glimpse for desktop users.
|
|
28
|
+
|
|
29
|
+
### Negative
|
|
30
|
+
|
|
31
|
+
- Glimpse bundle adds weight to `.pi/npm` installs (~3.5 MB web assets).
|
|
32
|
+
- `timeout` applies to TUI/headless only in v1; glimpse relies on user Cancel.
|
|
33
|
+
- `approve_plan` still uses TUI inline flow (v1.5: shared presenter + plan markdown context).
|
|
34
|
+
|
|
35
|
+
## References
|
|
36
|
+
|
|
37
|
+
- ADR 0053 (task clarification gate)
|
|
38
|
+
- `.agents/skills/harness-decisions/SKILL.md`
|
|
39
|
+
- `test/harness-ask-user.test.mjs`
|
|
40
|
+
- `.pi/lib/ask-user/merge-task-clarification.ts`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ADR 0055: Auto-commit co-author lifecycle
|
|
2
|
+
|
|
3
|
+
- **Status:** Accepted
|
|
4
|
+
- **Date:** 2026-05-27
|
|
5
|
+
|
|
6
|
+
## Context
|
|
7
|
+
|
|
8
|
+
Harness agents and `/harness-auto` frequently commit after review. Attribution should credit **pi-mono** (or a project-configured bot) via GitHub `Co-authored-by` trailers. Message shape should be consistent and configurable for external repos installing `ultimate-pi` via npm.
|
|
9
|
+
|
|
10
|
+
Prior state: `.pi/auto-commit.json` existed with `coAuthor` and `scopeDefault`, but agents used ad-hoc `git commit -m` (e.g. `release.md` hardcoded trailers). No deterministic formatter or skill contract.
|
|
11
|
+
|
|
12
|
+
## Decision
|
|
13
|
+
|
|
14
|
+
1. **Canonical config:** `.pi/auto-commit.json` at project root (seeded from package template on bootstrap).
|
|
15
|
+
2. **Merge:** Project file deep-merges over `$UP_PKG/.pi/auto-commit.json`; project `coAuthor` **fully replaces** package co-author fields after merge (no forced pi-mono when project overrides).
|
|
16
|
+
3. **CLI:** `harness-git-commit.mjs` — format message, append trailer idempotently, `git commit -F` (argv spawn, no shell), supports `--amend`, `--dry-run`, `--print-message`, `--root`.
|
|
17
|
+
4. **Bootstrap:** `harness-auto-commit-bootstrap.mjs` seeds project config when missing; personalizes `message.scopeDefault`.
|
|
18
|
+
5. **Skill:** `harness-git-commit` — agents must use CLI; raw `git commit` forbidden in skill text.
|
|
19
|
+
6. **Enforcement:** Skill + prompts + `harness-verify` contract only — **no** `commit-msg` git hook (v1).
|
|
20
|
+
7. **Schema:** `.pi/harness/specs/auto-commit.schema.json` for validation and seeding.
|
|
21
|
+
|
|
22
|
+
## Consequences
|
|
23
|
+
|
|
24
|
+
### Positive
|
|
25
|
+
|
|
26
|
+
- One path for agent commits with configurable conventional-commit templates.
|
|
27
|
+
- External projects customize format and co-author without forking the package.
|
|
28
|
+
|
|
29
|
+
### Negative
|
|
30
|
+
|
|
31
|
+
- Bypass remains possible (raw git, subagents, gstack `/ship`, humans).
|
|
32
|
+
- Submodule commits at nested roots do not pick up project config unless `--root` points at owner repo.
|
|
33
|
+
- Squash merges on GitHub may drop co-authors — documented limitation.
|
|
34
|
+
|
|
35
|
+
## References
|
|
36
|
+
|
|
37
|
+
- `.pi/auto-commit.json`, `.pi/lib/harness-auto-commit-config.mjs`
|
|
38
|
+
- `.pi/scripts/harness-git-commit.mjs`, `harness-auto-commit-bootstrap.mjs`
|
|
39
|
+
- `.agents/skills/harness-git-commit/SKILL.md`
|
|
40
|
+
- ADR 0052 (parallel bootstrap/sync pattern for ls-lint)
|
|
@@ -38,6 +38,11 @@ Team-shared ADRs for the ultimate-pi harness live under `.pi/harness/docs/adrs/`
|
|
|
38
38
|
| [0049](0049-agents-policy-manifest.md) | agents.policy.yaml SSOT + native discovery | Accepted |
|
|
39
39
|
| [0050](0050-agentic-web-retrieval-stack.md) | Agentic Web Retrieval Stack (WRS) | Accepted |
|
|
40
40
|
| [0051](0051-hash-anchored-executor-edits.md) | Hash-anchored read/edit (Dirac-inspired) | Accepted |
|
|
41
|
+
| [0052](0052-sentrux-structured-repair.md) | Sentrux structured repair (OSS diagnostics) | Accepted |
|
|
42
|
+
| [0052](0052-ls-lint-naming-lifecycle.md) | ls-lint naming lifecycle | Accepted |
|
|
43
|
+
| [0053](0053-plan-task-clarification-gate.md) | Plan-phase task clarification gate | Accepted |
|
|
44
|
+
| [0054](0054-harness-native-ask-user.md) | Harness-native ask_user + Glimpse presenters | Accepted |
|
|
45
|
+
| [0055](0055-auto-commit-coauthor-lifecycle.md) | Auto-commit co-author + message format lifecycle | Accepted |
|
|
41
46
|
|
|
42
47
|
## Practice map
|
|
43
48
|
|
|
@@ -23,7 +23,7 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
23
23
|
1. **Parallelism law** — Parallel `subagent` `tasks` only when outputs are independent inputs to a later merge (implementation ∥ stack research; inspector ∥ adversary in `parallel_probes`). Never parallelize decompose ∥ hypothesis.
|
|
24
24
|
2. **Two-pizza cap per batch** — Max 2 research lanes, max 1 optional `planning-context` subagent, max 1 executor, max 1 debate lane agent per `subagent` call (plan-verify may use 2 probes + integrator in separate batches).
|
|
25
25
|
3. **No redundant thinkers** — If artifact X exists, downstream agents read it; they do not re-derive (e.g. decompose after `planning-context.yaml`).
|
|
26
|
-
4. **Sequential dependency chain** — planning context → problem framing / decompose → hypothesis → research → synthesis/author → DAG → plan-verify → approve → execute → review → (steer)* → policy.
|
|
26
|
+
4. **Sequential dependency chain** — task clarification → planning context → problem framing / decompose → hypothesis → research → synthesis/author → DAG → plan-verify → approve → execute → review → (steer)* → policy.
|
|
27
27
|
5. **Plan-verify (agent-native)** — For `fast`/`standard`, parallel probes then integrator; parent is chair, not participant. Threaded debate remains for `full` until parity.
|
|
28
28
|
6. **Tool intelligence** — Parent chooses graphify, sg, ccc; subprocesses optional. **Path-first:** disk is source of truth; tool args are pointers (ADR 0043).
|
|
29
29
|
|
|
@@ -31,8 +31,9 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
31
31
|
|
|
32
32
|
| Phase | Practice | Agent translation | Actor | Spawn |
|
|
33
33
|
|-------|----------|---------------------|-------|-------|
|
|
34
|
-
| 0 |
|
|
35
|
-
|
|
|
34
|
+
| 0 | Task clarification | Task contract on disk; code + web OK | Parent + `ask_user` | No subprocess |
|
|
35
|
+
| 0a | Tooling / fast feedback | Pre-index once | Parent + `ccc` | Automatic |
|
|
36
|
+
| 1 | Reconnaissance before WBS | **ContextPack** on disk | Parent tools or optional `planning-context` | After task-clarification gate |
|
|
36
37
|
| 2a | Problem framing / lakes | Lake outcomes, not ticket tree | `decompose` or synthesizer section | Sequential after context gate |
|
|
37
38
|
| 2b | Hypothesis-driven approach | Falsifiable claim grounded in framing | `hypothesis` or synthesizer | After `artifacts/decomposition.yaml` |
|
|
38
39
|
| 3.5 | Spike / external research | Paths in research brief | Researchers optional | Artifacts required |
|
|
@@ -41,6 +42,8 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
41
42
|
| 4c | Deterministic quality gate | Script, not LLM | `validate-plan-dag.mjs` | Parent; hard stop |
|
|
42
43
|
| 4d | Tailor process to risk | Probe depth, not meeting count | `harness_plan_debate_eligibility` | Pre plan-verify |
|
|
43
44
|
| 4e | Architectural intent | Fitness-function spec | `harness/sentrux-steward` optional | When structural risk |
|
|
45
|
+
| 4e″ | Structural repair plan | OSS diagnostics → actions | `harness/sentrux-repair-advisor` | `/harness-review` when violations/degraded |
|
|
46
|
+
| 4e′ | Naming intent | Filename convention spec | `harness/ls-lint-steward` optional | New paths/extensions |
|
|
44
47
|
| 5 | Plan-verify (Review Gate) | Parallel probes + integrator | Debate cast / probes | `parallel_probes` or threaded |
|
|
45
48
|
| 6 | Baseline + approve | Path-only `approve_plan` | Parent | `approve_plan`, `create_plan` |
|
|
46
49
|
|
|
@@ -69,9 +72,9 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
69
72
|
| Step | Practice | Agent translation | Actor |
|
|
70
73
|
|------|----------|-------------------|-------|
|
|
71
74
|
| Gate | Change control | `plan_ready` required | Parent |
|
|
72
|
-
| Pre-work | Fitness baseline | `sentrux gate --save` | Parent |
|
|
75
|
+
| Pre-work | Fitness baseline | `sentrux gate --save` + ls-lint pre-check | Parent |
|
|
73
76
|
| Work | Single implementer | `executor_strategy` | `harness/running/executor` |
|
|
74
|
-
| Post-work | Observation | `sentrux
|
|
77
|
+
| Post-work | Observation | `harness-sentrux-report.mjs` + diagnostics; ls-lint signal | Parent |
|
|
75
78
|
| Handoff | Generator–evaluator | `submit_executor_handoff` | Executor |
|
|
76
79
|
| Next | Always verify | **`/harness-review`** (not replan on blocked) | Parent routing |
|
|
77
80
|
|
|
@@ -91,6 +94,7 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
91
94
|
| Phase | Practice | Agent translation | Actor |
|
|
92
95
|
|-------|----------|-------------------|-------|
|
|
93
96
|
| 1 | Automated QC + fitness | Deterministic first | Parent scripts |
|
|
97
|
+
| 1b | Structural repair plan | OSS diagnostics → actions | `sentrux-repair-advisor` |
|
|
94
98
|
| 2 | Measure vs plan | Benchmark on disk | `evaluator` benchmark |
|
|
95
99
|
| 3 | Policy audit | Verdict (no fail-fast skip) | `evaluator` verdict |
|
|
96
100
|
| 4 | Red team | Tiered: full attempt 1, lite 2+ steer | `adversary` |
|
|
@@ -111,6 +115,7 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
111
115
|
|
|
112
116
|
## Anti-patterns
|
|
113
117
|
|
|
118
|
+
- **Do not** write `planning-context.yaml` or spawn planning subagents before `artifacts/task-clarification.yaml` is `ready` (enforced in `write_harness_yaml`, spawn topology, `approve_plan`).
|
|
114
119
|
- **Do not** spawn `decompose` and `hypothesis` in the same parallel `tasks` batch.
|
|
115
120
|
- **Do not** run `graphify query` in `decompose` when planning-context coverage is ok (ADR 0041).
|
|
116
121
|
- **Do not** parallelize threaded debate lanes in one batch (except `parallel_probes` inspector ∥ adversary per ADR 0042).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"run_id": "smoke",
|
|
4
|
+
"lint_pass": true,
|
|
5
|
+
"violation_count": 0,
|
|
6
|
+
"status": "pass",
|
|
7
|
+
"quality_signal_summary": "smoke stub for harness-verify when no run signal",
|
|
8
|
+
"recorded_at": "2026-05-26T00:00:00.000Z",
|
|
9
|
+
"phase": "evaluate"
|
|
10
|
+
}
|
|
@@ -23,6 +23,22 @@
|
|
|
23
23
|
"drift_score_gte": 0.65
|
|
24
24
|
},
|
|
25
25
|
"suggestion": "User must harness-drift-replan or harness-drift-proceed with ack."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "sentrux-gate-degraded",
|
|
29
|
+
"match": {
|
|
30
|
+
"customType": "harness-sentrux-signal",
|
|
31
|
+
"gate_status": "degraded"
|
|
32
|
+
},
|
|
33
|
+
"suggestion": "Run /harness-review Phase 1b (sentrux-repair-advisor); steer on implementation_gap; do not tune manifest on one noisy gate."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "sentrux-check-fail",
|
|
37
|
+
"match": {
|
|
38
|
+
"customType": "harness-sentrux-signal",
|
|
39
|
+
"check_pass": false
|
|
40
|
+
},
|
|
41
|
+
"suggestion": "Read artifacts/sentrux-diagnostics.json; spawn sentrux-repair-advisor or sentrux-steward if boundary/layer rules need intent change."
|
|
26
42
|
}
|
|
27
43
|
]
|
|
28
44
|
}
|