@kontextmind/kxm 0.6.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/.claude-plugin/marketplace.json +19 -0
- package/.kxm/README.md +14 -0
- package/.kxm/assets/README.md +5 -0
- package/.kxm/assets/retrospectives/README.md +5 -0
- package/.kxm/config/README.md +5 -0
- package/.kxm/config/agents.json +43 -0
- package/.kxm/config/env.example +56 -0
- package/.kxm/config/update.example.yaml +9 -0
- package/.kxm/config/workflows/fix.json +160 -0
- package/.kxm/config/workflows/jira-development.json +116 -0
- package/.kxm/config/workflows/provenance-quorum.json +150 -0
- package/.kxm/config/workflows/v04-dogfood.json +72 -0
- package/CHANGELOG.md +465 -0
- package/LICENSE +21 -0
- package/README.md +306 -0
- package/SECURITY.md +72 -0
- package/docs/README.md +48 -0
- package/docs/agent-communication-envelopes-and-gates.md +553 -0
- package/docs/architecture.md +242 -0
- package/docs/assignment-runner.md +241 -0
- package/docs/configuration.md +361 -0
- package/docs/continuous-improvement.md +114 -0
- package/docs/getting-started.md +253 -0
- package/docs/kxm-handbook.md +1090 -0
- package/docs/operations.md +205 -0
- package/docs/provenance-gates.md +291 -0
- package/docs/skills.md +45 -0
- package/docs/templates/README.md +95 -0
- package/docs/templates/adr.md +88 -0
- package/docs/templates/architecture.md +120 -0
- package/docs/templates/bug-fix.md +109 -0
- package/docs/templates/feature.md +108 -0
- package/docs/templates/handoff.md +72 -0
- package/docs/templates/postmortem.md +77 -0
- package/docs/templates/research.md +100 -0
- package/docs/templates/review.md +85 -0
- package/docs/templates/runbook.md +73 -0
- package/docs/templates/test-plan.md +87 -0
- package/docs/templates/test-report.md +72 -0
- package/docs/test-matrix.md +121 -0
- package/docs/troubleshooting.md +249 -0
- package/docs/vnext/README.md +62 -0
- package/docs/vnext/architecture.md +185 -0
- package/docs/vnext/effects-and-recovery.md +172 -0
- package/docs/vnext/lifecycles.md +235 -0
- package/docs/vnext/migration.md +220 -0
- package/docs/vnext/routing.md +184 -0
- package/docs/vnext/synchronization.md +172 -0
- package/docs/vnext/terminology.md +240 -0
- package/docs/vnext/validation.md +335 -0
- package/docs/webhook-workflows.md +240 -0
- package/docs/workflow-guide.md +1150 -0
- package/examples/README.md +102 -0
- package/examples/provenance-workflow.json +40 -0
- package/examples/requester.ts +30 -0
- package/examples/reviewer-agent.ts +29 -0
- package/examples/roundtrip.ts +46 -0
- package/examples/vnext/.kxm/agents/coordinator.yaml +16 -0
- package/examples/vnext/.kxm/agents/critic-1.yaml +16 -0
- package/examples/vnext/.kxm/agents/critic-2.yaml +15 -0
- package/examples/vnext/.kxm/agents/critic-3.yaml +15 -0
- package/examples/vnext/.kxm/agents/implementer.yaml +15 -0
- package/examples/vnext/.kxm/agents/planner.yaml +13 -0
- package/examples/vnext/.kxm/agents/reproducer.yaml +15 -0
- package/examples/vnext/.kxm/agents/reviewer.yaml +15 -0
- package/examples/vnext/.kxm/gates.yaml +8 -0
- package/examples/vnext/.kxm/models/critic-claude.yaml +11 -0
- package/examples/vnext/.kxm/models/critic-gemini.yaml +11 -0
- package/examples/vnext/.kxm/models/critic-grok.yaml +12 -0
- package/examples/vnext/.kxm/models/implementation.yaml +14 -0
- package/examples/vnext/.kxm/models/primary.yaml +17 -0
- package/examples/vnext/.kxm/prices.yaml +111 -0
- package/examples/vnext/.kxm/project/env.yaml +7 -0
- package/examples/vnext/.kxm/project.yaml +32 -0
- package/examples/vnext/.kxm/repo/repo.yaml +8 -0
- package/examples/vnext/.kxm/workflows/default.yaml +92 -0
- package/examples/vnext/.kxm/workflows/fix.yaml +376 -0
- package/examples/vnext/.kxm/workflows/improve.yaml +57 -0
- package/examples/vnext/README.md +53 -0
- package/examples/vnext/records/assignment-result-recorded.json +63 -0
- package/examples/vnext/records/assignment-result.json +46 -0
- package/examples/vnext/records/context-candidate.json +42 -0
- package/examples/vnext/records/delivery-manifest.json +66 -0
- package/examples/vnext/records/effect-uncertainty-resolved-sync.json +67 -0
- package/examples/vnext/records/effect-uncertainty-resolved.json +62 -0
- package/examples/vnext/records/run-created.json +54 -0
- package/examples/vnext/records/sync-event.json +65 -0
- package/examples/vnext/repositories/api/.kxm/repo/env.yaml +7 -0
- package/examples/vnext/repositories/api/.kxm/repo/repo.yaml +8 -0
- package/examples/vnext/repositories/web/.kxm/repo/repo.yaml +8 -0
- package/examples/workflow-signal.ts +63 -0
- package/package.json +129 -0
- package/plugins/kxm/.claude-plugin/plugin.json +73 -0
- package/plugins/kxm/.mcp.json +19 -0
- package/plugins/kxm/README.md +93 -0
- package/plugins/kxm/dist/cli.js +42853 -0
- package/plugins/kxm/dist/client.js +416 -0
- package/plugins/kxm/dist/core.js +1823 -0
- package/plugins/kxm/dist/extension.js +3797 -0
- package/plugins/kxm/dist/mcp-server.js +17104 -0
- package/plugins/kxm/dist/runtime.js +23361 -0
- package/plugins/kxm/dist/server.js +13640 -0
- package/plugins/kxm/dist/vnext-runtime-supervisor.js +21109 -0
- package/plugins/kxm/package.json +12 -0
- package/plugins/kxm/skills/kxm/SKILL.md +97 -0
- package/plugins/kxm/skills/kxm/references/protocol.md +103 -0
- package/plugins/kxm/skills/kxm-session/SKILL.md +53 -0
- package/plugins/kxm/src/arbiter.ts +355 -0
- package/plugins/kxm/src/artifacts-exist.ts +62 -0
- package/plugins/kxm/src/autocomplete.ts +236 -0
- package/plugins/kxm/src/cli.ts +3707 -0
- package/plugins/kxm/src/client.ts +614 -0
- package/plugins/kxm/src/commands.ts +1063 -0
- package/plugins/kxm/src/config.ts +290 -0
- package/plugins/kxm/src/context/providers.ts +101 -0
- package/plugins/kxm/src/context-packet.ts +332 -0
- package/plugins/kxm/src/context.ts +499 -0
- package/plugins/kxm/src/core.ts +6 -0
- package/plugins/kxm/src/database.ts +563 -0
- package/plugins/kxm/src/diagnostics.ts +184 -0
- package/plugins/kxm/src/envelope.ts +118 -0
- package/plugins/kxm/src/extension.ts +895 -0
- package/plugins/kxm/src/external-effects.ts +299 -0
- package/plugins/kxm/src/github-watch.ts +255 -0
- package/plugins/kxm/src/hub-binding.ts +160 -0
- package/plugins/kxm/src/hub.ts +2502 -0
- package/plugins/kxm/src/improve.ts +383 -0
- package/plugins/kxm/src/inbox.ts +10 -0
- package/plugins/kxm/src/kxm-install-kind.ts +113 -0
- package/plugins/kxm/src/kxm-update-config.ts +39 -0
- package/plugins/kxm/src/kxm-update.ts +238 -0
- package/plugins/kxm/src/local-snapshot.ts +406 -0
- package/plugins/kxm/src/logger.ts +198 -0
- package/plugins/kxm/src/mcp-server.ts +143 -0
- package/plugins/kxm/src/memory.ts +385 -0
- package/plugins/kxm/src/nous-pi.ts +287 -0
- package/plugins/kxm/src/nous-provider.ts +729 -0
- package/plugins/kxm/src/price-calc.ts +87 -0
- package/plugins/kxm/src/prices.ts +121 -0
- package/plugins/kxm/src/protocol.ts +172 -0
- package/plugins/kxm/src/recovery.ts +211 -0
- package/plugins/kxm/src/redact.ts +26 -0
- package/plugins/kxm/src/retrospective.ts +400 -0
- package/plugins/kxm/src/routing.ts +830 -0
- package/plugins/kxm/src/runtime.ts +9 -0
- package/plugins/kxm/src/server.ts +117 -0
- package/plugins/kxm/src/session-work.ts +571 -0
- package/plugins/kxm/src/session.ts +184 -0
- package/plugins/kxm/src/skills.ts +535 -0
- package/plugins/kxm/src/state.ts +326 -0
- package/plugins/kxm/src/store.ts +637 -0
- package/plugins/kxm/src/studio-layout.ts +268 -0
- package/plugins/kxm/src/suggest.ts +162 -0
- package/plugins/kxm/src/task-manager.ts +244 -0
- package/plugins/kxm/src/telemetry.ts +116 -0
- package/plugins/kxm/src/tui.ts +1046 -0
- package/plugins/kxm/src/vnext-bindings.ts +403 -0
- package/plugins/kxm/src/vnext-config.ts +1646 -0
- package/plugins/kxm/src/vnext-engine-artifacts.ts +86 -0
- package/plugins/kxm/src/vnext-engine-command.ts +533 -0
- package/plugins/kxm/src/vnext-engine-compile.ts +722 -0
- package/plugins/kxm/src/vnext-engine-evidence.ts +273 -0
- package/plugins/kxm/src/vnext-engine-fold.ts +1400 -0
- package/plugins/kxm/src/vnext-engine-gate-records.ts +583 -0
- package/plugins/kxm/src/vnext-engine-plan.ts +717 -0
- package/plugins/kxm/src/vnext-engine.ts +2458 -0
- package/plugins/kxm/src/vnext-gate-hash.ts +10 -0
- package/plugins/kxm/src/vnext-harness.ts +1142 -0
- package/plugins/kxm/src/vnext-init.ts +430 -0
- package/plugins/kxm/src/vnext-migrate.ts +1848 -0
- package/plugins/kxm/src/vnext-oneshot-producer.ts +424 -0
- package/plugins/kxm/src/vnext-permission.ts +936 -0
- package/plugins/kxm/src/vnext-pi-producer.ts +628 -0
- package/plugins/kxm/src/vnext-repair.ts +1094 -0
- package/plugins/kxm/src/vnext-runtime-owner.ts +320 -0
- package/plugins/kxm/src/vnext-runtime-store.ts +1560 -0
- package/plugins/kxm/src/vnext-runtime-supervisor.ts +586 -0
- package/plugins/kxm/src/vnext-runtime.ts +663 -0
- package/plugins/kxm/src/vnext-template.ts +247 -0
- package/plugins/kxm/src/wiki.ts +313 -0
- package/plugins/kxm/src/workflow.ts +1548 -0
- package/schemas/vnext/README.md +46 -0
- package/schemas/vnext/agent.schema.json +40 -0
- package/schemas/vnext/assignment-result.schema.json +66 -0
- package/schemas/vnext/backup-manifest.schema.json +89 -0
- package/schemas/vnext/candidate.schema.json +109 -0
- package/schemas/vnext/common.schema.json +422 -0
- package/schemas/vnext/context-candidate.schema.json +76 -0
- package/schemas/vnext/context-packet.schema.json +192 -0
- package/schemas/vnext/delivery-manifest.schema.json +159 -0
- package/schemas/vnext/environment.schema.json +66 -0
- package/schemas/vnext/gate-registry.schema.json +109 -0
- package/schemas/vnext/handoff-manifest.schema.json +146 -0
- package/schemas/vnext/init-operation.schema.json +61 -0
- package/schemas/vnext/local-repository-bindings.schema.json +30 -0
- package/schemas/vnext/memory-record.schema.json +45 -0
- package/schemas/vnext/migration-decision.schema.json +26 -0
- package/schemas/vnext/migration-plan.schema.json +123 -0
- package/schemas/vnext/migration-receipt.schema.json +52 -0
- package/schemas/vnext/model.schema.json +42 -0
- package/schemas/vnext/permission-diff.schema.json +57 -0
- package/schemas/vnext/prices.schema.json +115 -0
- package/schemas/vnext/project.schema.json +85 -0
- package/schemas/vnext/repository.schema.json +24 -0
- package/schemas/vnext/run-event.schema.json +460 -0
- package/schemas/vnext/session-brief.schema.json +153 -0
- package/schemas/vnext/sync-event.schema.json +234 -0
- package/schemas/vnext/template-provenance.schema.json +38 -0
- package/schemas/vnext/workflow.schema.json +248 -0
- package/scripts/assignment-run.d.mts +354 -0
- package/scripts/assignment-run.mjs +4451 -0
- package/scripts/build-runtime.mjs +56 -0
- package/scripts/check-generated.mjs +77 -0
- package/scripts/check-versions.mjs +34 -0
- package/scripts/emit-codex-artifacts.d.mts +9 -0
- package/scripts/emit-codex-artifacts.mjs +91 -0
- package/scripts/harness-run.d.mts +83 -0
- package/scripts/harness-run.mjs +2095 -0
- package/scripts/kxm-hub.mjs +105 -0
- package/scripts/kxm-publish-npm.mjs +327 -0
- package/scripts/kxm-release-github.mjs +472 -0
- package/scripts/kxm-runtime-supervisor.mjs +7 -0
- package/scripts/kxm-worker.mjs +1127 -0
- package/scripts/kxm.mjs +27 -0
- package/scripts/roster-policy.d.mts +20 -0
- package/scripts/roster-policy.mjs +161 -0
- package/scripts/smoke-multi-pi.mjs +479 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
|
|
3
|
+
"name": "kxm",
|
|
4
|
+
"description": "KXM: headless multi-agent orchestration and live operator dashboard",
|
|
5
|
+
"owner": {
|
|
6
|
+
"name": "KontextMind",
|
|
7
|
+
"url": "https://github.com/kontextmind"
|
|
8
|
+
},
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "kxm",
|
|
12
|
+
"source": "./plugins/kxm",
|
|
13
|
+
"description": "Durable workflows, peer agents, and kxm tui",
|
|
14
|
+
"version": "0.6.0",
|
|
15
|
+
"category": "development",
|
|
16
|
+
"tags": ["kxm", "multi-agent", "workflows", "mcp"]
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
}
|
package/.kxm/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# KontextMind workspace
|
|
2
|
+
|
|
3
|
+
`.kxm` is the canonical home for repository-local Pi Mesh configuration, logs, assets, and runtime state.
|
|
4
|
+
|
|
5
|
+
| Directory | Contents | Git policy |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `config/` | Reviewable workflow and harness configuration without secrets | Tracked |
|
|
8
|
+
| `logs/` | Hub, worker, and agent process logs | Ignored except documentation |
|
|
9
|
+
| `assets/` | Durable workflow inputs and outputs that belong to this workspace | Track intentionally; generated content is ignored |
|
|
10
|
+
| `state/` | SQLite and other restart-recovery state | Ignored except documentation |
|
|
11
|
+
|
|
12
|
+
Secrets remain in environment variables or an approved secret manager. Do not put tokens, webhook secrets, credentials, or private prompt dumps anywhere under `.kxm/config`.
|
|
13
|
+
|
|
14
|
+
All directory defaults derive from `.kxm`. Set `KXM_WORKSPACE_DIR` to relocate the complete workspace or use a specific path override when an operator-managed volume requires it.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Workspace assets
|
|
2
|
+
|
|
3
|
+
Store durable workflow inputs and outputs here when they belong with the repository: approved prompt templates, sanitized fixtures, diagrams, exported reports, or evidence manifests.
|
|
4
|
+
|
|
5
|
+
Commit intentional reusable assets. Put transient or machine-generated artifacts under `generated/`; that directory is ignored by Git. Never store credentials, raw private webhook payloads, or unrestricted production logs here.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Workflow retrospectives
|
|
2
|
+
|
|
3
|
+
`kxm workflow export` writes bounded Markdown and JSON here.
|
|
4
|
+
|
|
5
|
+
Exported files are proposals. Review them before changing workflow policy, gates, or harness configuration. Do not commit live run exports that may contain private engineering context.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Workspace configuration
|
|
2
|
+
|
|
3
|
+
Store reviewable, repository-specific harness and workflow configuration here. `env.example` documents supported environment settings. `workflows/` contains the complete Jira development lifecycle, the v0.4 dogfood workflow, and the provenance/quorum workflow used by parser and evidence-policy tests.
|
|
4
|
+
|
|
5
|
+
Configuration files may reference secret environment-variable names such as `JIRA_WEBHOOK_SECRET`; they must never contain the secret values. Set `KXM_WEBHOOK_WORKFLOWS_FILE` to the chosen workflow file.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "kxm.agents.v1",
|
|
3
|
+
"project": "kxm",
|
|
4
|
+
"host": "local",
|
|
5
|
+
"agents": [
|
|
6
|
+
{
|
|
7
|
+
"name": "grok",
|
|
8
|
+
"kind": "agent",
|
|
9
|
+
"driver": "ai",
|
|
10
|
+
"model": "xai/grok-4.6",
|
|
11
|
+
"thinking": "xhigh",
|
|
12
|
+
"purpose": "Sole writer; independent critic of kxm CLI and envelopes"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "fable",
|
|
16
|
+
"kind": "agent",
|
|
17
|
+
"driver": "ai",
|
|
18
|
+
"model": "anthropic/claude-fable-5-1",
|
|
19
|
+
"thinking": "xhigh",
|
|
20
|
+
"purpose": "Independent critic: architecture and permissions"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "gpt-sol",
|
|
24
|
+
"kind": "agent",
|
|
25
|
+
"driver": "ai",
|
|
26
|
+
"model": "openai-codex/gpt-5.6-sol",
|
|
27
|
+
"thinking": "xhigh",
|
|
28
|
+
"purpose": "Independent critic: CLI contracts and documentation"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "kimi",
|
|
32
|
+
"kind": "agent",
|
|
33
|
+
"driver": "ai",
|
|
34
|
+
"model": "kimi-coding/kimi-for-coding",
|
|
35
|
+
"thinking": "max",
|
|
36
|
+
"purpose": "Independent critic: mapping gaps and portability"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"ownership": {
|
|
40
|
+
"writeAgent": "grok",
|
|
41
|
+
"peerAgents": ["fable", "gpt-sol", "kimi"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
KXM_HOST=127.0.0.1
|
|
2
|
+
KXM_PORT=7331
|
|
3
|
+
KXM_AUTH_TOKEN=replace-with-a-long-random-token
|
|
4
|
+
KXM_WORKSPACE_DIR=.kxm
|
|
5
|
+
# KXM_CONFIG_DIR=.kxm/config
|
|
6
|
+
# KXM_LOGS_DIR=.kxm/logs
|
|
7
|
+
# KXM_ASSETS_DIR=.kxm/assets
|
|
8
|
+
# KXM_STATE_DIR=.kxm/state
|
|
9
|
+
# KXM_DATA_PATH=.kxm/state/kxm.db
|
|
10
|
+
# KXM_LOG_PATH=.kxm/logs/kxm-hub.jsonl
|
|
11
|
+
KXM_PROJECT_TOKENS={"my-project":"replace-with-a-project-token"}
|
|
12
|
+
KXM_MESSAGE_TTL_MS=86400000
|
|
13
|
+
KXM_MESSAGE_RETENTION_MS=604800000
|
|
14
|
+
KXM_RATE_LIMIT_MAX=600
|
|
15
|
+
KXM_RATE_LIMIT_WINDOW_MS=60000
|
|
16
|
+
KXM_WEBHOOK_WORKFLOWS_FILE=.kxm/config/workflows/jira-development.json
|
|
17
|
+
JIRA_WEBHOOK_SECRET=replace-with-a-high-entropy-webhook-secret
|
|
18
|
+
WORKFLOW_SIGNAL_SECRET=replace-with-a-separate-callback-secret
|
|
19
|
+
|
|
20
|
+
# Client / Pi extension settings
|
|
21
|
+
KXM_SERVER_URL=http://127.0.0.1:7331
|
|
22
|
+
KXM_PROJECT=my-project
|
|
23
|
+
KXM_AGENT_NAME=planner
|
|
24
|
+
KXM_AGENT_PURPOSE=Plans work and reviews architecture
|
|
25
|
+
|
|
26
|
+
# Long-lived headless Pi worker
|
|
27
|
+
KXM_WORKDIR=C:\path\to\project
|
|
28
|
+
KXM_WORKER_CONTINUE=true
|
|
29
|
+
# Opt in after reviewing the fresh scoped-history upgrade behavior:
|
|
30
|
+
# workflow = stable default Pi session plus one session per durable workflow run
|
|
31
|
+
# KXM_WORKER_SESSION_ISOLATION=workflow
|
|
32
|
+
# KXM_WORKER_MAX_RUN_SESSIONS=128
|
|
33
|
+
# KXM_WORKER_INITIAL_CONTINUE=false
|
|
34
|
+
# KXM_WORKER_LOG_PATH=.kxm/logs/kxm-worker-planner.jsonl
|
|
35
|
+
# KXM_AGENT_LOG_PATH=.kxm/logs/pi-agent-planner.log
|
|
36
|
+
# KXM_WORKER_MAX_RESTARTS=20
|
|
37
|
+
# KXM_WORKER_MODEL=provider/model
|
|
38
|
+
# KXM_WORKER_FALLBACK_MODELS=provider/fallback-one,provider/fallback-two
|
|
39
|
+
# KXM_WORKER_PROVIDER_RETRY_MS=60000
|
|
40
|
+
# KXM_WORKER_TOOL_TIMEOUT_MS=1860000
|
|
41
|
+
# KXM_WORKER_ACTIVATION_TIMEOUT_MS=60000
|
|
42
|
+
# KXM_WORKER_TOOLS=read,grep,find,ls,kxm_fanout,kxm_workflow_get
|
|
43
|
+
# KXM_WORKER_EXTENSION_PATHS=plugins/kxm/src/extension.ts;C:\path\to\provider\extension.ts
|
|
44
|
+
# KXM_WORKER_SKILL_PATHS=plugins/kxm/skills/kxm
|
|
45
|
+
|
|
46
|
+
# Optional proposed-improvement telemetry classification override: cli or project
|
|
47
|
+
# KXM_IMPROVE_TARGET=project
|
|
48
|
+
|
|
49
|
+
# Opt-in Nous Pi providers (unset = no fetch, no registration)
|
|
50
|
+
# KXM_NOUS_PROVIDERS=direct
|
|
51
|
+
# KXM_NOUS_PROVIDERS=proxy
|
|
52
|
+
# KXM_NOUS_PROVIDERS=direct,proxy
|
|
53
|
+
# NOUS_API_KEY=
|
|
54
|
+
# KXM_NOUS_PROXY_URL=http://127.0.0.1:8645/v1
|
|
55
|
+
# KXM_NOUS_DISCOVERY_TIMEOUT_MS=5000
|
|
56
|
+
# KXM_NOUS_CATALOG_FILE=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Copy this file to the per-user state root. kxm never reads a project
|
|
2
|
+
# .kxm/update.yaml (it prints a warning and continues). Locations:
|
|
3
|
+
# Windows: %LOCALAPPDATA%\KXM\update.yaml
|
|
4
|
+
# macOS: ~/Library/Application Support/KXM/update.yaml
|
|
5
|
+
# Linux: ${XDG_STATE_HOME:-~/.local/state}/kxm/update.yaml
|
|
6
|
+
# Override the state root with an absolute KXM_STATE_HOME for tests.
|
|
7
|
+
schema: kxm.update.v1
|
|
8
|
+
auto: false
|
|
9
|
+
source: github
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "fix",
|
|
4
|
+
"source": "generic",
|
|
5
|
+
"project": "kxm",
|
|
6
|
+
"target": "coordinator",
|
|
7
|
+
"secretEnv": "FIX_WEBHOOK_SECRET",
|
|
8
|
+
"signalSecretEnv": "WORKFLOW_SIGNAL_SECRET",
|
|
9
|
+
"delivery": "followUp",
|
|
10
|
+
"maxTransitions": 28,
|
|
11
|
+
"reproOracle": { "stageId": "repro-review", "evidenceKey": "repro" },
|
|
12
|
+
"planHash": { "stageId": "final-plan", "evidenceKey": "plan" },
|
|
13
|
+
"requirePlanHash": ["implement", "local-verify", "delivery"],
|
|
14
|
+
"promptTemplate": "Bug report: {{task}}\n\nRun the /fix workflow: two-phase reproduction before any production edit, approved plan before implementation, bounded rework on failure. The confirmed reproduction is an immutable oracle.\n\nHard rules: (1) The oracle must invoke the diagnosis-named production callables on the reporter path — a sibling API or newer stack is invalid even if it fails. (2) After repro_invalidated, rewrite the draft against that named seam; never checkpoint blocked because the previous seam was wrong or because a method news its own DbContext. (3) Search existing test hosts (controller fixtures, HttpContext helpers, TransactionScope, read-only call against existing data) before declaring a seam untestable.",
|
|
15
|
+
"stages": [
|
|
16
|
+
{
|
|
17
|
+
"id": "intake",
|
|
18
|
+
"label": "Intake",
|
|
19
|
+
"area": "workflow",
|
|
20
|
+
"instructions": "Classify the bug report: expected vs actual behavior, affected surface, severity, and reproduction hints. Record a journal 'plan' entry with the classification. If the report is not actionable, checkpoint with outcome 'blocked'.",
|
|
21
|
+
"requiredEvidence": ["classification"],
|
|
22
|
+
"maxAttempts": 2,
|
|
23
|
+
"on": { "passed": "repro-explore", "blocked": "$terminal" }
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "repro-explore",
|
|
27
|
+
"label": "Repro explore (read-only)",
|
|
28
|
+
"area": "implementation",
|
|
29
|
+
"instructions": "Read and search only: locate the bug, note prior reproductions, test conventions, and similar incidents via kxm context. No source or test edits. Produce a diagnosis that names the exact production callables on the reporter path (handler, data method, or rendered component), root-cause hypothesis, expected/actual behavior, reproduction strategy, reference tests in existing area folders, and target assertions. Secondary surfaces (other API versions, other tabs) are notes only — they are not substitute oracles. Record the diagnosis with journal category 'hypothesis'.",
|
|
30
|
+
"requiredEvidence": ["diagnosis"],
|
|
31
|
+
"maxAttempts": 3,
|
|
32
|
+
"on": { "passed": "repro-write", "blocked": "$terminal" }
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "repro-write",
|
|
36
|
+
"label": "Repro write (tests only)",
|
|
37
|
+
"area": "implementation",
|
|
38
|
+
"instructions": "Write and execute the failing reproduction. Tests and test helpers only — production and configuration stay byte-for-byte unchanged. Every target assertion must call the diagnosis-named production handler, production seam, or rendered production component and fail for the reported reason rather than compilation/setup. A sibling API, newer stack, or 'also used by some admins' handler is invalid even if it fails. A method that news its own DbContext is not grounds for blocked: use existing test hosts (controller fixtures, HttpContext helpers, TransactionScope so a new context still rolls back) or a read-only call against existing data with no seed. After repro_invalidated, write a new draft against the named seam; do not checkpoint outcome blocked because the previous draft was the wrong seam. Checkpoint failed (outcome failed) to consume an attempt and rewrite. blocked is only when the ticket is not a code defect. Cite evidence key 'repro' with every test path, sha256, exact command, and failed/passed counts. This is a reviewable draft; it is not immutable until independent repro-review passes.",
|
|
39
|
+
"requiredEvidence": ["repro"],
|
|
40
|
+
"maxAttempts": 3,
|
|
41
|
+
"on": { "passed": "repro-review", "failed": "repro-write", "blocked": "$terminal" }
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "repro-review",
|
|
45
|
+
"label": "Independent reproduction review",
|
|
46
|
+
"area": "gates",
|
|
47
|
+
"instructions": "Before the oracle is captured, send the diagnosis, test files/hashes, exact failing results, and production/config git status to both independent critics. They must verify production coupling to the diagnosis-named reporter-path seam (a sibling API is invalid), full expected-behavior coverage, failure causality, immutability feasibility, and absence of production/config edits. Caller-authored evidence cannot satisfy peer review. If either critic finds an omission or invalid test, checkpoint status 'failed' with outcome 'repro_invalidated' and return to repro-write. Only unanimous validation may pass; cite the unchanged draft under evidence key 'repro'. Passing this stage captures the immutable oracle.",
|
|
48
|
+
"requiredEvidence": ["repro", "review"],
|
|
49
|
+
"maxAttempts": 3,
|
|
50
|
+
"evidencePolicies": {
|
|
51
|
+
"review": {
|
|
52
|
+
"kind": "peer-reply",
|
|
53
|
+
"minProducers": 2,
|
|
54
|
+
"eligibleAgents": ["critic-1", "critic-2"],
|
|
55
|
+
"acceptedStatuses": ["replied"]
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"on": { "passed": "plan", "repro_invalidated": "repro-write", "blocked": "$terminal" }
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "plan",
|
|
62
|
+
"label": "Plan",
|
|
63
|
+
"area": "workflow",
|
|
64
|
+
"instructions": "Using the diagnosis and the confirmed reproduction, write the implementation plan: changed files, approach, risks, and how the reproduction proves the fix. Cite evidence key 'plan' with the plan artifact path and content hash.",
|
|
65
|
+
"requiredEvidence": ["plan"],
|
|
66
|
+
"maxAttempts": 3,
|
|
67
|
+
"on": { "passed": "critics", "blocked": "$terminal" }
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "critics",
|
|
71
|
+
"label": "Independent critics",
|
|
72
|
+
"area": "gates",
|
|
73
|
+
"instructions": "Two independent critics review the plan for correctness, scope creep, and risk. Both must reply through the mesh; caller-authored evidence cannot satisfy this policy. If the plan is invalidated, checkpoint with outcome 'plan_invalidated'.",
|
|
74
|
+
"requiredEvidence": ["critique"],
|
|
75
|
+
"maxAttempts": 3,
|
|
76
|
+
"evidencePolicies": {
|
|
77
|
+
"critique": {
|
|
78
|
+
"kind": "peer-reply",
|
|
79
|
+
"minProducers": 2,
|
|
80
|
+
"eligibleAgents": ["critic-1", "critic-2"],
|
|
81
|
+
"acceptedStatuses": ["replied"]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"on": { "passed": "final-plan", "plan_invalidated": "plan", "blocked": "$terminal" }
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "final-plan",
|
|
88
|
+
"label": "Final plan",
|
|
89
|
+
"area": "workflow",
|
|
90
|
+
"instructions": "Fold critic feedback into the final plan. Re-cite evidence key 'plan' with the final artifact path and content hash. The hash of this stage's plan evidence becomes the approved plan hash required by implementation.",
|
|
91
|
+
"requiredEvidence": ["plan"],
|
|
92
|
+
"maxAttempts": 2,
|
|
93
|
+
"on": { "passed": "approval", "plan_invalidated": "plan", "blocked": "$terminal" }
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "approval",
|
|
97
|
+
"label": "Human approval",
|
|
98
|
+
"area": "security",
|
|
99
|
+
"instructions": "Human operator approves the plan. Cite evidence key 'signoff' with the approver identity and approval reference. A 'rejected' outcome routes back to planning; this stage cannot be bypassed by any transition.",
|
|
100
|
+
"requiredEvidence": ["signoff"],
|
|
101
|
+
"maxAttempts": 8,
|
|
102
|
+
"on": { "passed": "implement", "rejected": "plan", "blocked": "$terminal" }
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "implement",
|
|
106
|
+
"label": "Implement",
|
|
107
|
+
"area": "implementation",
|
|
108
|
+
"instructions": "Implement the approved plan. The reproduction oracle is immutable: local verification must fail before the fix and pass after it. Cite evidence keys 'diff' and 'repro' (same value as the oracle).",
|
|
109
|
+
"requiredEvidence": ["diff"],
|
|
110
|
+
"maxAttempts": 4,
|
|
111
|
+
"on": { "passed": "local-verify", "blocked": "$terminal" }
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "local-verify",
|
|
115
|
+
"label": "Local verify",
|
|
116
|
+
"area": "gates",
|
|
117
|
+
"instructions": "Run the repo-defined gates: unit, lint, typecheck, build, and the confirmed reproduction test. Cite evidence key 'gates' with per-gate results. 'implementation_failure' reworks implementation; 'plan_invalidated' routes back to planning rather than expanding scope.",
|
|
118
|
+
"requiredEvidence": ["gates"],
|
|
119
|
+
"maxAttempts": 4,
|
|
120
|
+
"on": {
|
|
121
|
+
"passed": "delivery",
|
|
122
|
+
"implementation_failure": "implement",
|
|
123
|
+
"plan_invalidated": "plan",
|
|
124
|
+
"blocked": "$terminal"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "delivery",
|
|
129
|
+
"label": "Delivery",
|
|
130
|
+
"area": "workflow",
|
|
131
|
+
"instructions": "Create and push the branch and merge request with the reproduction, plan, and diff references. Delivery never auto-merges: CI and review outcomes are watched in the next stage.",
|
|
132
|
+
"requiredEvidence": ["mr"],
|
|
133
|
+
"maxAttempts": 2,
|
|
134
|
+
"on": { "passed": "ci-watch", "blocked": "$terminal" }
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "ci-watch",
|
|
138
|
+
"label": "CI and review watch",
|
|
139
|
+
"area": "gates",
|
|
140
|
+
"instructions": "Watch required CI checks and review status. On failure, checkpoint with outcome 'failure' to rework through bounded transitions. On success, continue to human acceptance.",
|
|
141
|
+
"requiredEvidence": ["ci"],
|
|
142
|
+
"maxAttempts": 6,
|
|
143
|
+
"on": {
|
|
144
|
+
"passed": "ready-for-human-acceptance",
|
|
145
|
+
"failure": "implement",
|
|
146
|
+
"blocked": "$terminal"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"id": "ready-for-human-acceptance",
|
|
151
|
+
"label": "Ready for human acceptance",
|
|
152
|
+
"area": "workflow",
|
|
153
|
+
"instructions": "Summarize the fix: reproduction (immutable oracle), approved plan hash, diff, gate results, CI outcome, and the full claim-to-evidence trail from the run journal. Checkpoint 'passed' to complete the run; a human performs final acceptance outside the workflow.",
|
|
154
|
+
"requiredEvidence": ["summary"],
|
|
155
|
+
"maxAttempts": 2,
|
|
156
|
+
"on": { "passed": "$terminal", "blocked": "$terminal" }
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
]
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "jira-development",
|
|
4
|
+
"source": "jira",
|
|
5
|
+
"project": "product",
|
|
6
|
+
"target": "coordinator",
|
|
7
|
+
"secretEnv": "JIRA_WEBHOOK_SECRET",
|
|
8
|
+
"signalSecretEnv": "WORKFLOW_SIGNAL_SECRET",
|
|
9
|
+
"event": "jira:issue_updated",
|
|
10
|
+
"filter": {
|
|
11
|
+
"path": "issue.fields.status.name",
|
|
12
|
+
"equals": "In Progress"
|
|
13
|
+
},
|
|
14
|
+
"delivery": "followUp",
|
|
15
|
+
"ttlMs": 604800000,
|
|
16
|
+
"promptTemplate": "Take ownership of Jira issue {{issue.key}} — {{issue.fields.summary}}.\n\nDescription:\n{{issue.fields.description}}\n\nIssue URL: {{issue.self}}\n\nUse the kxm workflow tools as the durable record. Preserve Jira issue {{issue.key}} as the correlation key. Only perform push, merge, or Jira mutations when the current harness permissions and repository policy authorize them.",
|
|
17
|
+
"stages": [
|
|
18
|
+
{
|
|
19
|
+
"id": "intake",
|
|
20
|
+
"area": "workflow",
|
|
21
|
+
"label": "Intake and ownership",
|
|
22
|
+
"instructions": "Validate the webhook context, repository, scope, permissions, and acceptance criteria. Confirm that the issue is actually In Progress.",
|
|
23
|
+
"requiredEvidence": ["issue key", "acceptance criteria", "repository and branch", "authorization boundary"],
|
|
24
|
+
"maxAttempts": 2
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "reproduce",
|
|
28
|
+
"area": "implementation",
|
|
29
|
+
"label": "Reproduce the issue",
|
|
30
|
+
"instructions": "Reproduce the defect before changing production code. Prefer a deterministic failing automated test and capture environment details.",
|
|
31
|
+
"requiredEvidence": ["reproduction steps", "observed failure", "expected behavior", "failing test or diagnostic artifact"],
|
|
32
|
+
"maxAttempts": 3
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "plan-moa",
|
|
36
|
+
"area": "workflow",
|
|
37
|
+
"label": "Plan with single-agent or three-agent mixture of agents",
|
|
38
|
+
"instructions": "For simple work, produce one plan. For ambiguous or high-risk work, ask three strong planning peers independently, compare assumptions and tradeoffs, record contradictions, and synthesize the best evidence-backed plan.",
|
|
39
|
+
"requiredEvidence": ["candidate plans", "contradictions and resolutions", "selected plan", "ownership boundaries"],
|
|
40
|
+
"maxAttempts": 3
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "plan-review",
|
|
44
|
+
"area": "workflow",
|
|
45
|
+
"label": "Review the plan",
|
|
46
|
+
"instructions": "Have an independent reviewer challenge correctness, security, migration, test, and rollback assumptions. Revise the plan when findings are material.",
|
|
47
|
+
"requiredEvidence": ["review findings", "accepted and rejected feedback", "revised plan"],
|
|
48
|
+
"maxAttempts": 3
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "implementation",
|
|
52
|
+
"area": "implementation",
|
|
53
|
+
"label": "Implementation",
|
|
54
|
+
"instructions": "Implement the reviewed plan with explicit file ownership. Keep changes focused and preserve unrelated user work.",
|
|
55
|
+
"requiredEvidence": ["changed paths", "implementation decisions", "tests added or updated"],
|
|
56
|
+
"maxAttempts": 3
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "local-gates",
|
|
60
|
+
"area": "gates",
|
|
61
|
+
"label": "Local code checks",
|
|
62
|
+
"instructions": "Run the repository-defined lint, build/typecheck, security scan, and Playwright suite. A warning or failure must be recorded, corrected, and rerun; do not downgrade a gate silently.",
|
|
63
|
+
"requiredEvidence": ["lint result", "build or typecheck result", "security result", "Playwright result"],
|
|
64
|
+
"maxAttempts": 5
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "repository-gates",
|
|
68
|
+
"area": "gates",
|
|
69
|
+
"label": "Repository and CodeRabbit gates",
|
|
70
|
+
"instructions": "Reproduce required repository checks locally where possible. Address CodeRabbit or equivalent review findings by evidence and rerun affected gates.",
|
|
71
|
+
"requiredEvidence": ["repository gate results", "review findings", "resolutions or justified dismissals"],
|
|
72
|
+
"maxAttempts": 5
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "documentation",
|
|
76
|
+
"area": "documentation",
|
|
77
|
+
"label": "Documentation",
|
|
78
|
+
"instructions": "Update user, operator, architecture, changelog, and test-matrix material affected by the change.",
|
|
79
|
+
"requiredEvidence": ["documentation paths", "behavior and operational changes", "examples updated"],
|
|
80
|
+
"maxAttempts": 3
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "push-watch",
|
|
84
|
+
"area": "gates",
|
|
85
|
+
"label": "Push, open review, and watch",
|
|
86
|
+
"instructions": "When authorized, push the branch and open or update the review. Call kxm_workflow_wait with commit, pull-request, and resolved-warning evidence, then watch the example `ci` check with `kxm gate github watch --run-id <id> --stage-id push-watch --signal-key <key> --repo <owner/name> --pr <n> --required ci` so the durable wait receives exact `github.check:ci` evidence. Replace `ci` in this template and command with the repository's real required check names. Record every warning or failure, fix it, push again, and continue watching until required checks pass.",
|
|
87
|
+
"requiredEvidence": ["commit", "pull request", "resolved warnings and failures", "github.check:ci"],
|
|
88
|
+
"maxAttempts": 10
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "merge",
|
|
92
|
+
"area": "security",
|
|
93
|
+
"label": "Merge",
|
|
94
|
+
"instructions": "Merge only when approvals, required checks, branch policy, and user authorization permit it. Capture the resulting merge commit.",
|
|
95
|
+
"requiredEvidence": ["approval state", "required checks", "merge commit"],
|
|
96
|
+
"maxAttempts": 3
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "jira-update",
|
|
100
|
+
"area": "workflow",
|
|
101
|
+
"label": "Update Jira",
|
|
102
|
+
"instructions": "Update the Jira issue through an authorized integration with the outcome, implementation and test evidence, pull request, merge commit, and any follow-up risk. Transition it according to team policy.",
|
|
103
|
+
"requiredEvidence": ["Jira transition", "Jira comment or fields", "links to pull request and merge"],
|
|
104
|
+
"maxAttempts": 3
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "retrospective",
|
|
108
|
+
"area": "workflow",
|
|
109
|
+
"label": "Continuous-improvement retrospective",
|
|
110
|
+
"instructions": "Review the run journal. Turn recurring errors, contradictions, delays, flaky gates, and harness friction into an evidence-linked improvement backlog. Do not apply policy changes automatically.",
|
|
111
|
+
"requiredEvidence": ["lessons by area", "prioritized improvements", "owner or next action", "success measure"],
|
|
112
|
+
"maxAttempts": 3
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
]
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "kxm-provenance",
|
|
4
|
+
"source": "generic",
|
|
5
|
+
"project": "kxm-provenance",
|
|
6
|
+
"target": "provenance-coordinator",
|
|
7
|
+
"secretEnv": "KXM_V04_WORKFLOW_SECRET",
|
|
8
|
+
"signalSecretEnv": "KXM_V04_SIGNAL_SECRET",
|
|
9
|
+
"event": "extension.provenance_requested",
|
|
10
|
+
"delivery": "followUp",
|
|
11
|
+
"ttlMs": 604800000,
|
|
12
|
+
"promptTemplate": "Deliver issue {{issue}} for {{repository}}: provenance-bound peer evidence and quorum workflow gates.\n\nIssue URL: {{issueUrl}}\nProject board: {{projectBoard}}\n\nYou are the sole code writer. Ask provenance-grok and provenance-gemini independently for research, plans, and final review through pi-mesh. Bind every claimed peer result to its durable message ID in the run record. Record plans, decisions, contradictions, errors, and lessons under .kxm. Keep the issue and project board current. The user authorizes branch-local implementation, tests, documentation, commits, pushes, pull requests, CI monitoring, and merge only after all required checks and independent review pass. Preserve backward compatibility and never claim exactly-once execution.",
|
|
13
|
+
"stages": [
|
|
14
|
+
{
|
|
15
|
+
"id": "research",
|
|
16
|
+
"area": "workflow",
|
|
17
|
+
"label": "Independent research",
|
|
18
|
+
"instructions": "Ask provenance-grok and provenance-gemini independently to analyze issue 22 and the current workflow, message, persistence, CLI, MCP, retrospective, and migration contracts. Send each request with workflowContext for this run, research stage, the matching required-evidence key, and the current one-based attempt. At checkpoint, cite the replied message IDs through evidenceRefs. Capture agreements, contradictions, threat cases, and acceptance criteria in a research synthesis under .kxm/assets.",
|
|
19
|
+
"requiredEvidence": [
|
|
20
|
+
"Grok message ID and replied result",
|
|
21
|
+
"Gemini message ID and replied result",
|
|
22
|
+
"current-state trace",
|
|
23
|
+
"contradictions and resolutions",
|
|
24
|
+
"acceptance criteria"
|
|
25
|
+
],
|
|
26
|
+
"evidencePolicies": {
|
|
27
|
+
"Grok message ID and replied result": {
|
|
28
|
+
"kind": "peer-reply",
|
|
29
|
+
"minProducers": 1,
|
|
30
|
+
"eligibleAgents": ["provenance-grok"],
|
|
31
|
+
"acceptedStatuses": ["replied"]
|
|
32
|
+
},
|
|
33
|
+
"Gemini message ID and replied result": {
|
|
34
|
+
"kind": "peer-reply",
|
|
35
|
+
"minProducers": 1,
|
|
36
|
+
"eligibleAgents": ["provenance-gemini"],
|
|
37
|
+
"acceptedStatuses": ["replied"]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"maxAttempts": 3
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "plan",
|
|
44
|
+
"area": "workflow",
|
|
45
|
+
"label": "Reviewed architecture plan",
|
|
46
|
+
"instructions": "Ask both peers for independent implementation plans using one shared workflowContext bound to this run, plan stage, the independent-plan-message-IDs requirement, and the current attempt. Synthesize a backward-compatible schema for evidence type, producer identity or role, quorum, terminal state, message binding, and explicit degraded policy. Define persistence and migration, validation boundaries, all affected interfaces, tests, documentation, rollout, and rollback. Cite both replied message IDs through evidenceRefs.",
|
|
47
|
+
"requiredEvidence": [
|
|
48
|
+
"independent plan message IDs",
|
|
49
|
+
"selected schema and invariants",
|
|
50
|
+
"migration and compatibility",
|
|
51
|
+
"security boundaries",
|
|
52
|
+
"test and rollout plan"
|
|
53
|
+
],
|
|
54
|
+
"evidencePolicies": {
|
|
55
|
+
"independent plan message IDs": {
|
|
56
|
+
"kind": "peer-reply",
|
|
57
|
+
"minProducers": 2,
|
|
58
|
+
"eligibleAgents": ["provenance-grok", "provenance-gemini"],
|
|
59
|
+
"acceptedStatuses": ["replied"]
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"maxAttempts": 3
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "implement",
|
|
66
|
+
"area": "implementation",
|
|
67
|
+
"label": "Implementation",
|
|
68
|
+
"instructions": "Implement the reviewed plan as the sole writer. Verify peer evidence against durable hub state and unique producers. Pending, expired, cancelled, duplicated, wrong-run, wrong-stage, or coordinator-authored substitute evidence must not satisfy a peer quorum. Permit degradation only through an explicit journaled policy branch. Preserve readable legacy string evidence and keep Pi, MCP, webhook, CLI, retrospective, documentation, and generated bundles aligned.",
|
|
69
|
+
"requiredEvidence": [
|
|
70
|
+
"changed paths",
|
|
71
|
+
"schema and migration",
|
|
72
|
+
"verification logic",
|
|
73
|
+
"interface parity",
|
|
74
|
+
"tests and documentation"
|
|
75
|
+
],
|
|
76
|
+
"maxAttempts": 6
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "local-gates",
|
|
80
|
+
"area": "gates",
|
|
81
|
+
"label": "Complete local gates",
|
|
82
|
+
"instructions": "Run the complete repository validation gate, generated-artifact check, strict Claude marketplace validation, package inspection, and isolated packed CLI/hub smoke on supported Node engines. Record and resolve every warning or failure.",
|
|
83
|
+
"requiredEvidence": [
|
|
84
|
+
"test and coverage results",
|
|
85
|
+
"typecheck and docs lint",
|
|
86
|
+
"generated artifacts",
|
|
87
|
+
"Claude validation",
|
|
88
|
+
"package and engine smoke"
|
|
89
|
+
],
|
|
90
|
+
"maxAttempts": 5
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "review",
|
|
94
|
+
"area": "gates",
|
|
95
|
+
"label": "Independent implementation review",
|
|
96
|
+
"instructions": "Give Grok and Gemini the actual diff and ask them independently to review provenance integrity, authorization, uniqueness, correlation, migration, degradation visibility, interface parity, tests, portability, and documentation. Send each request with workflowContext bound to this run, review stage, its matching review requirement, and the current attempt; cite both replied message IDs through evidenceRefs. Resolve every material finding and rerun affected gates.",
|
|
97
|
+
"requiredEvidence": [
|
|
98
|
+
"Grok review message ID",
|
|
99
|
+
"Gemini review message ID",
|
|
100
|
+
"accepted and rejected findings",
|
|
101
|
+
"resolved findings",
|
|
102
|
+
"rerun gates"
|
|
103
|
+
],
|
|
104
|
+
"evidencePolicies": {
|
|
105
|
+
"Grok review message ID": {
|
|
106
|
+
"kind": "peer-reply",
|
|
107
|
+
"minProducers": 1,
|
|
108
|
+
"eligibleAgents": ["provenance-grok"],
|
|
109
|
+
"acceptedStatuses": ["replied"]
|
|
110
|
+
},
|
|
111
|
+
"Gemini review message ID": {
|
|
112
|
+
"kind": "peer-reply",
|
|
113
|
+
"minProducers": 1,
|
|
114
|
+
"eligibleAgents": ["provenance-gemini"],
|
|
115
|
+
"acceptedStatuses": ["replied"]
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"maxAttempts": 5
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "delivery",
|
|
122
|
+
"area": "gates",
|
|
123
|
+
"label": "Deliver and watch",
|
|
124
|
+
"instructions": "Commit and push the reviewed increment, open a pull request closing issue 22, add it to Project 3, and watch every required GitHub check. Merge only when all required checks pass and the evidence verifier confirms the independent-review quorum.",
|
|
125
|
+
"requiredEvidence": [
|
|
126
|
+
"commit",
|
|
127
|
+
"pull request",
|
|
128
|
+
"green required checks",
|
|
129
|
+
"verified peer quorum",
|
|
130
|
+
"merge and project status"
|
|
131
|
+
],
|
|
132
|
+
"maxAttempts": 5
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "retrospective",
|
|
136
|
+
"area": "workflow",
|
|
137
|
+
"label": "Continuous-improvement retrospective",
|
|
138
|
+
"instructions": "Export and review the durable retrospective. Record timing, contradictions, errors, degraded paths, manual interventions, and measurable follow-ups. Separate verified peer evidence from coordinator synthesis and do not silently promote proposed policy.",
|
|
139
|
+
"requiredEvidence": [
|
|
140
|
+
"retrospective Markdown",
|
|
141
|
+
"retrospective JSON",
|
|
142
|
+
"evidence provenance audit",
|
|
143
|
+
"review decision",
|
|
144
|
+
"remaining backlog"
|
|
145
|
+
],
|
|
146
|
+
"maxAttempts": 3
|
|
147
|
+
}
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
]
|