ultimate-pi 0.19.1 → 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 +43 -2
- 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 +139 -0
- 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 +47 -81
- package/.pi/harness/docs/adrs/0051-hash-anchored-executor-edits.md +41 -0
- 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 +7 -0
- package/.pi/harness/docs/practice-map.md +21 -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 -47
- package/.pi/lib/agents-policy.mjs +84 -29
- package/.pi/lib/agents-policy.ts +1 -0
- 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/.hash_anchors +1721 -0
- package/.pi/lib/harness-anchored-edit/anchor-state.ts +320 -0
- package/.pi/lib/harness-anchored-edit/apply-anchored-edits.ts +161 -0
- package/.pi/lib/harness-anchored-edit/edit-executor.ts +146 -0
- package/.pi/lib/harness-anchored-edit/index.ts +9 -0
- package/.pi/lib/harness-anchored-edit/line-protocol.ts +38 -0
- package/.pi/lib/harness-anchored-edit/package.json +3 -0
- package/.pi/lib/harness-anchored-edit/settings.ts +1 -0
- package/.pi/lib/harness-anchored-edit/task-id.ts +8 -0
- package/.pi/lib/harness-anchored-edit/types.ts +19 -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/anchored-edit-autopatch.ts +158 -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 +246 -96
- 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 +11 -6
- 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 +3 -2
- 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-anchored-edit-smoke.mjs +45 -0
- 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 +347 -117
- package/.pi/scripts/ls-lint-rules-sync.mjs +265 -0
- package/.pi/scripts/run-tests.mjs +65 -0
- package/.pi/settings.example.json +1 -0
- package/.sentrux/rules.toml +1 -1
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +31 -0
- package/README.md +13 -4
- package/THIRD_PARTY_NOTICES.md +7 -0
- package/package.json +8 -3
- package/vendor/pi-subagents/src/agents.ts +5 -0
- package/vendor/pi-subagents/src/subagents.ts +22 -3
- package/vendor/pi-vcc/src/hooks/before-compact.ts +86 -60
- package/.pi/scripts/release.sh +0 -338
|
@@ -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,17 +72,29 @@ 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
|
|
|
81
|
+
|
|
82
|
+
### Executor edit discipline (ADR 0051)
|
|
83
|
+
|
|
84
|
+
| Practice | Agent rule |
|
|
85
|
+
|----------|------------|
|
|
86
|
+
| Hash-anchored targeting | `read` → `Anchor§line`; `edit` uses anchors (default harness tools) |
|
|
87
|
+
| Batching | All edits per file in one `edit`; independent files same turn when safe |
|
|
88
|
+
| Pre-handoff verify | Run `acceptance_checks`; clear lens blockers; then `submit_executor_handoff` |
|
|
89
|
+
| Structural refactor | `sg -p` locate → read slice → anchored edit — no `replace_symbol` tools |
|
|
90
|
+
| Code search | `sg` / `ccc` only — not `grep`/`find` on executor |
|
|
91
|
+
|
|
78
92
|
## `/harness-review` — Monitoring and Controlling
|
|
79
93
|
|
|
80
94
|
| Phase | Practice | Agent translation | Actor |
|
|
81
95
|
|-------|----------|-------------------|-------|
|
|
82
96
|
| 1 | Automated QC + fitness | Deterministic first | Parent scripts |
|
|
97
|
+
| 1b | Structural repair plan | OSS diagnostics → actions | `sentrux-repair-advisor` |
|
|
83
98
|
| 2 | Measure vs plan | Benchmark on disk | `evaluator` benchmark |
|
|
84
99
|
| 3 | Policy audit | Verdict (no fail-fast skip) | `evaluator` verdict |
|
|
85
100
|
| 4 | Red team | Tiered: full attempt 1, lite 2+ steer | `adversary` |
|
|
@@ -100,6 +115,7 @@ See also: [ADRs](adrs/README.md), [ADR 0040](adrs/0040-practice-grounded-orchest
|
|
|
100
115
|
|
|
101
116
|
## Anti-patterns
|
|
102
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`).
|
|
103
119
|
- **Do not** spawn `decompose` and `hypothesis` in the same parallel `tasks` batch.
|
|
104
120
|
- **Do not** run `graphify query` in `decompose` when planning-context coverage is ok (ADR 0041).
|
|
105
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
|
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"project": "ultimate-pi",
|
|
4
|
+
"global_rules": {
|
|
5
|
+
".*": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
6
|
+
".md": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
7
|
+
".ts": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
8
|
+
".tsx": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
9
|
+
".mjs": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
10
|
+
".js": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
11
|
+
".json": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
12
|
+
".yaml": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
13
|
+
".yml": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
14
|
+
".toml": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
15
|
+
".py": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
16
|
+
".sh": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
17
|
+
".css": "regex:^[a-z]+(?:-[a-z]+)*$",
|
|
18
|
+
".html": "regex:^[a-z]+(?:-[a-z]+)*$"
|
|
19
|
+
},
|
|
20
|
+
"scoped_rules": [
|
|
21
|
+
{
|
|
22
|
+
"path": ".pi/harness/docs/adrs",
|
|
23
|
+
"rules": {
|
|
24
|
+
".md": "regex:^\\d{4}-[a-z-]+$|^template$"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"path": ".agents/skills",
|
|
29
|
+
"rules": {
|
|
30
|
+
".dir": "kebab-case",
|
|
31
|
+
".md": "regex:^SKILL\\.md$"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"path": "scripts",
|
|
36
|
+
"rules": {
|
|
37
|
+
".dir": "kebab-case"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"path": "docs",
|
|
42
|
+
"rules": {
|
|
43
|
+
".dir": "kebab-case"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"path": ".pi/scripts",
|
|
48
|
+
"rules": {
|
|
49
|
+
".dir": "snake_case"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"path": ".pi/agents",
|
|
54
|
+
"rules": {
|
|
55
|
+
".dir": "kebab-case"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"ignores": [
|
|
60
|
+
".git",
|
|
61
|
+
"node_modules",
|
|
62
|
+
"graphify-out",
|
|
63
|
+
"graphify-books-out",
|
|
64
|
+
"vendor",
|
|
65
|
+
"dist",
|
|
66
|
+
"build",
|
|
67
|
+
"coverage",
|
|
68
|
+
".web",
|
|
69
|
+
".cursor",
|
|
70
|
+
".github",
|
|
71
|
+
".agents",
|
|
72
|
+
".pi/npm",
|
|
73
|
+
".pi/harness/runs",
|
|
74
|
+
".pi/harness/debates",
|
|
75
|
+
".pi/harness/.lens",
|
|
76
|
+
".pi/wiki-search",
|
|
77
|
+
".cocoindex_code",
|
|
78
|
+
".sentrux",
|
|
79
|
+
".ls-lint",
|
|
80
|
+
".searxng",
|
|
81
|
+
".vault-meta",
|
|
82
|
+
".raw",
|
|
83
|
+
"raw",
|
|
84
|
+
"data",
|
|
85
|
+
"**/__pycache__/**",
|
|
86
|
+
"submissions",
|
|
87
|
+
"jobs",
|
|
88
|
+
"pl",
|
|
89
|
+
"**/*.png",
|
|
90
|
+
"**/*.jpg",
|
|
91
|
+
"**/*.jpeg",
|
|
92
|
+
"**/*.gif",
|
|
93
|
+
"**/*.webp",
|
|
94
|
+
"**/*.ico",
|
|
95
|
+
"**/*.svg",
|
|
96
|
+
"package-lock.json",
|
|
97
|
+
"pnpm-lock.yaml",
|
|
98
|
+
"yarn.lock",
|
|
99
|
+
"*.lock",
|
|
100
|
+
"README.md",
|
|
101
|
+
"**/README.md",
|
|
102
|
+
"SKILL.md",
|
|
103
|
+
"**/SKILL.md",
|
|
104
|
+
"CHANGELOG.md",
|
|
105
|
+
"LICENSE",
|
|
106
|
+
"AGENTS.md",
|
|
107
|
+
"CONTRIBUTING.md",
|
|
108
|
+
"THIRD_PARTY_NOTICES.md",
|
|
109
|
+
".env.example",
|
|
110
|
+
"skills-lock.json",
|
|
111
|
+
".fallow-baseline.json",
|
|
112
|
+
".graphify_detect.json",
|
|
113
|
+
".graphify_python",
|
|
114
|
+
".graphify_root",
|
|
115
|
+
".graphify_incremental.json",
|
|
116
|
+
".pi/SYSTEM.md",
|
|
117
|
+
".pi/PACKAGING.md",
|
|
118
|
+
"**/.*",
|
|
119
|
+
".pi/sounds",
|
|
120
|
+
".pi/harness/evals",
|
|
121
|
+
".pi/extensions/00-harness-project-control.ts",
|
|
122
|
+
"DOCS_BY_AUDIENCE.md",
|
|
123
|
+
"GLOSSARY.md",
|
|
124
|
+
"REPO_MAP.md",
|
|
125
|
+
"START_HERE.md",
|
|
126
|
+
"WORKFLOW_CHEAT_SHEET.md"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ultimate-pi.local/.pi/harness/specs/auto-commit.schema.json",
|
|
4
|
+
"title": "AutoCommitConfig",
|
|
5
|
+
"description": "Harness auto-commit: co-author trailers, message templates, branch/push hints.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": true,
|
|
8
|
+
"properties": {
|
|
9
|
+
"dryRun": { "type": "boolean" },
|
|
10
|
+
"coAuthor": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": false,
|
|
13
|
+
"required": ["login", "email"],
|
|
14
|
+
"properties": {
|
|
15
|
+
"login": { "type": "string", "minLength": 1 },
|
|
16
|
+
"email": { "type": "string", "minLength": 3 },
|
|
17
|
+
"required": { "type": "boolean" }
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"branch": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": true,
|
|
23
|
+
"properties": {
|
|
24
|
+
"strategy": { "type": "string" },
|
|
25
|
+
"protected": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "type": "string" }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"push": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": true,
|
|
34
|
+
"properties": {
|
|
35
|
+
"allowedRemotes": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": { "type": "string" }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"submodules": {
|
|
42
|
+
"type": "object",
|
|
43
|
+
"additionalProperties": true,
|
|
44
|
+
"properties": {
|
|
45
|
+
"ignore": { "type": "boolean" }
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"message": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"required": ["template", "coAuthorTrailer"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"template": { "type": "string", "minLength": 1 },
|
|
54
|
+
"templateNoScope": { "type": "string", "minLength": 1 },
|
|
55
|
+
"typeDefault": { "type": "string", "minLength": 1 },
|
|
56
|
+
"scopeDefault": { "type": "string" },
|
|
57
|
+
"bodySeparator": { "type": "string" },
|
|
58
|
+
"coAuthorTrailer": { "type": "string", "minLength": 1 },
|
|
59
|
+
"maxSubjectLength": { "type": "integer", "minimum": 20, "maximum": 200 }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ultimate-pi.local/.pi/harness/specs/ls-lint-manifest-proposal.schema.json",
|
|
4
|
+
"title": "LsLintManifestProposal",
|
|
5
|
+
"description": "Graphify-grounded proposal to evolve naming.manifest.json (intent layer). Chair applies after approval.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"change_class",
|
|
11
|
+
"summary",
|
|
12
|
+
"evidence",
|
|
13
|
+
"manifest_patch",
|
|
14
|
+
"adr_required",
|
|
15
|
+
"human_required"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"schema_version": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"const": "1.0.0"
|
|
21
|
+
},
|
|
22
|
+
"change_class": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": [
|
|
25
|
+
"none",
|
|
26
|
+
"tune_rule",
|
|
27
|
+
"add_scoped_rule",
|
|
28
|
+
"add_ignore",
|
|
29
|
+
"change_global"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"summary": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1
|
|
35
|
+
},
|
|
36
|
+
"evidence": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"additionalProperties": false,
|
|
41
|
+
"required": ["source", "ref", "summary"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"source": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"enum": ["graphify", "sg", "ls-lint", "plan", "manifest"]
|
|
46
|
+
},
|
|
47
|
+
"ref": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 1
|
|
50
|
+
},
|
|
51
|
+
"summary": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"minLength": 1
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"manifest_patch": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"description": "JSON Merge Patch (RFC 7396) ops against naming.manifest.json",
|
|
61
|
+
"additionalProperties": true
|
|
62
|
+
},
|
|
63
|
+
"adr_required": {
|
|
64
|
+
"type": "boolean"
|
|
65
|
+
},
|
|
66
|
+
"adr_draft": {
|
|
67
|
+
"type": "string"
|
|
68
|
+
},
|
|
69
|
+
"human_required": {
|
|
70
|
+
"type": "boolean"
|
|
71
|
+
},
|
|
72
|
+
"open_questions": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"items": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"minLength": 1
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ultimate-pi.local/.pi/harness/specs/ls-lint-signal.schema.json",
|
|
4
|
+
"title": "LsLintSignal",
|
|
5
|
+
"description": "Per-run ls-lint CLI observation for evaluator and harness-verify promotion.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"run_id",
|
|
11
|
+
"lint_pass",
|
|
12
|
+
"status",
|
|
13
|
+
"recorded_at"
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"schema_version": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"const": "1.0.0"
|
|
19
|
+
},
|
|
20
|
+
"run_id": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1
|
|
23
|
+
},
|
|
24
|
+
"lint_pass": {
|
|
25
|
+
"type": "boolean"
|
|
26
|
+
},
|
|
27
|
+
"violation_count": {
|
|
28
|
+
"type": "integer",
|
|
29
|
+
"minimum": 0
|
|
30
|
+
},
|
|
31
|
+
"status": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": ["pass", "fail", "skipped", "not_installed"]
|
|
34
|
+
},
|
|
35
|
+
"quality_signal_summary": {
|
|
36
|
+
"type": "string"
|
|
37
|
+
},
|
|
38
|
+
"recorded_at": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "date-time"
|
|
41
|
+
},
|
|
42
|
+
"phase": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"enum": ["execute", "evaluate", "review"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ultimate-pi.local/.pi/harness/specs/naming-manifest.schema.json",
|
|
4
|
+
"title": "NamingManifest",
|
|
5
|
+
"description": "Canonical harness source for .ls-lint.yml (filename and directory naming).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["schema_version", "project", "global_rules", "ignores"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"schema_version": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"const": "1.0.0"
|
|
13
|
+
},
|
|
14
|
+
"project": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"minLength": 1
|
|
17
|
+
},
|
|
18
|
+
"global_rules": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"additionalProperties": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"scoped_rules": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["path", "rules"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"path": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1
|
|
35
|
+
},
|
|
36
|
+
"rules": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 1
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"ignores": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://ultimate-pi.local/.pi/harness/specs/plan-task-clarification.schema.json",
|
|
4
|
+
"title": "PlanTaskClarification",
|
|
5
|
+
"description": "Upfront task contract before harness plan reconnaissance (Phase 0).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"status",
|
|
11
|
+
"source_task",
|
|
12
|
+
"clarified_task",
|
|
13
|
+
"success_definition",
|
|
14
|
+
"in_scope",
|
|
15
|
+
"out_of_scope",
|
|
16
|
+
"acceptance_checks_draft",
|
|
17
|
+
"assumptions",
|
|
18
|
+
"risk_level",
|
|
19
|
+
"unresolved_questions",
|
|
20
|
+
"clarification_rounds",
|
|
21
|
+
"task_input_hash"
|
|
22
|
+
],
|
|
23
|
+
"properties": {
|
|
24
|
+
"schema_version": { "type": "string", "const": "1.0.0" },
|
|
25
|
+
"status": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"enum": ["draft", "needs_user", "ready"]
|
|
28
|
+
},
|
|
29
|
+
"source_task": { "type": "string", "minLength": 1 },
|
|
30
|
+
"clarified_task": { "type": "string", "minLength": 1 },
|
|
31
|
+
"success_definition": { "type": "string", "minLength": 1 },
|
|
32
|
+
"in_scope": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": { "type": "string", "minLength": 1 }
|
|
35
|
+
},
|
|
36
|
+
"out_of_scope": {
|
|
37
|
+
"type": "array",
|
|
38
|
+
"items": { "type": "string", "minLength": 1 }
|
|
39
|
+
},
|
|
40
|
+
"acceptance_checks_draft": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"minItems": 1,
|
|
43
|
+
"items": { "type": "string", "minLength": 1 }
|
|
44
|
+
},
|
|
45
|
+
"assumptions": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"items": { "type": "string" }
|
|
48
|
+
},
|
|
49
|
+
"risk_level": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"enum": ["low", "med", "high"]
|
|
52
|
+
},
|
|
53
|
+
"constraints": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"properties": {
|
|
56
|
+
"hard": { "type": "array", "items": { "type": "string" } },
|
|
57
|
+
"soft": { "type": "array", "items": { "type": "string" } }
|
|
58
|
+
},
|
|
59
|
+
"additionalProperties": true
|
|
60
|
+
},
|
|
61
|
+
"unresolved_questions": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": { "type": "string" }
|
|
64
|
+
},
|
|
65
|
+
"clarification_rounds": { "type": "integer", "minimum": 0 },
|
|
66
|
+
"task_input_hash": { "type": "string", "minLength": 1 },
|
|
67
|
+
"evidence_refs": {
|
|
68
|
+
"type": "array",
|
|
69
|
+
"items": { "type": "string" }
|
|
70
|
+
},
|
|
71
|
+
"grounding": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"properties": {
|
|
74
|
+
"repo_mentions": {
|
|
75
|
+
"type": "array",
|
|
76
|
+
"items": { "type": "string" }
|
|
77
|
+
},
|
|
78
|
+
"urls": { "type": "array", "items": { "type": "string" } },
|
|
79
|
+
"tools_used": {
|
|
80
|
+
"type": "array",
|
|
81
|
+
"items": { "type": "string" }
|
|
82
|
+
},
|
|
83
|
+
"summary": { "type": "string" }
|
|
84
|
+
},
|
|
85
|
+
"additionalProperties": true
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|