open-multi-agent-kit 0.79.3 → 0.80.2

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.
Files changed (128) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/MATURITY.md +2 -2
  3. package/README.md +86 -39
  4. package/ROADMAP.md +20 -17
  5. package/dist/brand/night-city.theme.json +122 -24
  6. package/dist/brand/rust-forge.theme.json +1 -1
  7. package/dist/commands/chat/native-root-loop.d.ts +27 -3
  8. package/dist/commands/chat/native-root-loop.js +370 -49
  9. package/dist/commands/dag.js +45 -0
  10. package/dist/commands/init/content.d.ts +1 -1
  11. package/dist/commands/init/content.js +3 -3
  12. package/dist/commands/init.js +3 -3
  13. package/dist/commands/verify.js +59 -1
  14. package/dist/contracts/dag.d.ts +9 -1
  15. package/dist/evidence/graph-ontology-relation-gate.d.ts +10 -0
  16. package/dist/evidence/graph-ontology-relation-gate.js +46 -0
  17. package/dist/evidence/headroom-replay-verifier.d.ts +19 -0
  18. package/dist/evidence/headroom-replay-verifier.js +86 -0
  19. package/dist/memory/local-graph-memory-store.d.ts +75 -0
  20. package/dist/memory/local-graph-memory-store.js +570 -0
  21. package/dist/orchestration/dag.d.ts +22 -1
  22. package/dist/orchestration/evidence-gate.js +12 -0
  23. package/dist/orchestration/executor.js +111 -15
  24. package/dist/orchestration/loop-controller-headroom.d.ts +6 -0
  25. package/dist/orchestration/loop-controller-headroom.js +33 -0
  26. package/dist/orchestration/scheduler.d.ts +2 -0
  27. package/dist/orchestration/scheduler.js +3 -0
  28. package/dist/orchestration/task-graph.d.ts +17 -0
  29. package/dist/orchestration/task-graph.js +38 -0
  30. package/dist/providers/codex-cli-runner.js +17 -2
  31. package/dist/runtime/agent-runtime.d.ts +32 -3
  32. package/dist/runtime/agent-runtime.js +20 -7
  33. package/dist/runtime/authority-matrix.d.ts +23 -0
  34. package/dist/runtime/authority-matrix.js +171 -0
  35. package/dist/runtime/chat-advisory-runtime.js +3 -0
  36. package/dist/runtime/codex-cli-runtime.js +2 -0
  37. package/dist/runtime/codex-runtime.d.ts +4 -1
  38. package/dist/runtime/codex-runtime.js +34 -12
  39. package/dist/runtime/context-broker-converter.js +32 -2
  40. package/dist/runtime/context-broker.js +18 -0
  41. package/dist/runtime/contracts/evidence.d.ts +52 -0
  42. package/dist/runtime/contracts/evidence.js +138 -1
  43. package/dist/runtime/contracts/shared.d.ts +27 -0
  44. package/dist/runtime/data-retention-gate.d.ts +42 -0
  45. package/dist/runtime/data-retention-gate.js +123 -0
  46. package/dist/runtime/deepseek-runtime.d.ts +5 -1
  47. package/dist/runtime/deepseek-runtime.js +13 -7
  48. package/dist/runtime/external-cli-adapter.js +20 -7
  49. package/dist/runtime/freedomd-evidence-envelope.d.ts +57 -0
  50. package/dist/runtime/freedomd-evidence-envelope.js +110 -0
  51. package/dist/runtime/freedomd-exception.d.ts +32 -0
  52. package/dist/runtime/freedomd-exception.js +95 -0
  53. package/dist/runtime/freedomd-incidents.d.ts +23 -0
  54. package/dist/runtime/freedomd-incidents.js +103 -0
  55. package/dist/runtime/freedomd-policy.d.ts +35 -0
  56. package/dist/runtime/freedomd-policy.js +114 -0
  57. package/dist/runtime/freedomd-router.d.ts +66 -0
  58. package/dist/runtime/freedomd-router.js +433 -0
  59. package/dist/runtime/headroom-aware-loop-decision.d.ts +21 -0
  60. package/dist/runtime/headroom-aware-loop-decision.js +67 -0
  61. package/dist/runtime/headroom-loop-risk.d.ts +19 -0
  62. package/dist/runtime/headroom-loop-risk.js +43 -0
  63. package/dist/runtime/headroom-policy.d.ts +14 -1
  64. package/dist/runtime/headroom-policy.js +74 -12
  65. package/dist/runtime/kimi-api-runtime.d.ts +4 -1
  66. package/dist/runtime/kimi-api-runtime.js +35 -11
  67. package/dist/runtime/kimi-print-runtime.js +21 -0
  68. package/dist/runtime/kimi-wire-protocol-runtime.js +17 -1
  69. package/dist/runtime/local-llm-runtime.d.ts +5 -1
  70. package/dist/runtime/local-llm-runtime.js +14 -23
  71. package/dist/runtime/private-stderr.d.ts +13 -0
  72. package/dist/runtime/private-stderr.js +69 -0
  73. package/dist/runtime/prompt-envelope.d.ts +1 -1
  74. package/dist/runtime/provider-sovereignty.d.ts +81 -0
  75. package/dist/runtime/provider-sovereignty.js +285 -0
  76. package/dist/runtime/runtime-backed-task-runner.d.ts +1 -0
  77. package/dist/runtime/runtime-backed-task-runner.js +282 -10
  78. package/dist/runtime/runtime-bootstrap.d.ts +12 -0
  79. package/dist/runtime/runtime-bootstrap.js +54 -11
  80. package/dist/runtime/runtime-failure-classifier.d.ts +15 -0
  81. package/dist/runtime/runtime-failure-classifier.js +107 -0
  82. package/dist/runtime/runtime-health-probes.d.ts +30 -0
  83. package/dist/runtime/runtime-health-probes.js +102 -0
  84. package/dist/runtime/runtime-router.d.ts +6 -2
  85. package/dist/runtime/runtime-router.js +575 -53
  86. package/dist/runtime/structured-compaction.d.ts +107 -0
  87. package/dist/runtime/structured-compaction.js +414 -0
  88. package/dist/runtime/tool-dispatch-contracts.d.ts +7 -5
  89. package/dist/runtime/tool-dispatch-contracts.js +15 -4
  90. package/dist/runtime/tool-plane.d.ts +1 -1
  91. package/dist/runtime/tool-plane.js +49 -1
  92. package/dist/runtime/worker-manifest.js +1 -1
  93. package/dist/schema/evidence-bundle.schema.d.ts +8 -8
  94. package/dist/schema/proof-bundle.schema.d.ts +2 -2
  95. package/dist/util/hash.d.ts +2 -0
  96. package/dist/util/hash.js +13 -0
  97. package/dist/util/session.js +5 -4
  98. package/docs/2026-06-16/critical-issues.md +19 -0
  99. package/docs/2026-06-16/improvements.md +15 -0
  100. package/docs/2026-06-16/init-checklist.md +25 -0
  101. package/docs/2026-06-16/plan.md +20 -0
  102. package/docs/2026-06-17/critical-issues.md +19 -0
  103. package/docs/2026-06-17/improvements.md +15 -0
  104. package/docs/2026-06-17/init-checklist.md +25 -0
  105. package/docs/2026-06-17/plan.md +20 -0
  106. package/docs/ARCHITECTURE_ANALYSIS_CODEGRAPH.md +2 -1
  107. package/docs/GSTACK_MIGRATION.md +1 -1
  108. package/docs/algorithm-hardening-playbook.md +219 -0
  109. package/docs/claims.md +1 -1
  110. package/docs/getting-started.md +1 -1
  111. package/docs/native-root-runtime-hardening.md +42 -32
  112. package/docs/post-0793-hardening-roadmap.md +123 -0
  113. package/docs/provider-maturity.md +18 -16
  114. package/docs/versioning.md +3 -3
  115. package/docs/what-is-omk.md +1 -1
  116. package/package.json +8 -4
  117. package/readmeasset/.npmignore +2 -0
  118. package/readmeasset/ASSET_INDEX.md +2 -0
  119. package/readmeasset/ASSET_PROVENANCE.md +40 -20
  120. package/readmeasset/omk-adaptorch-ouroboros-supermemory.svg +1 -1
  121. package/readmeasset/omk-control-surfaces.svg +1 -1
  122. package/readmeasset/omk-core-loop.svg +1 -1
  123. package/readmeasset/omk-freedomd-control-plane.svg +59 -0
  124. package/readmeasset/omk-freedomd-control-plane.webp +0 -0
  125. package/readmeasset/omk-init-control-loop.svg +1 -1
  126. package/readmeasset/omk-logo-mark.svg +1 -1
  127. package/readmeasset/omk-parallel-subagents.svg +1 -1
  128. package/readmeasset/omk-release-assertions.svg +1 -1
@@ -7,12 +7,12 @@ export declare const EvidenceBundleArtifactSchema: z.ZodObject<{
7
7
  }, "strip", z.ZodTypeAny, {
8
8
  sha256: string;
9
9
  path: string;
10
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
10
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
11
11
  required?: boolean | undefined;
12
12
  }, {
13
13
  sha256: string;
14
14
  path: string;
15
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
15
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
16
16
  required?: boolean | undefined;
17
17
  }>;
18
18
  export declare const EvidenceBundleSchema: z.ZodObject<{
@@ -43,12 +43,12 @@ export declare const EvidenceBundleSchema: z.ZodObject<{
43
43
  }, "strip", z.ZodTypeAny, {
44
44
  sha256: string;
45
45
  path: string;
46
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
46
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
47
47
  required?: boolean | undefined;
48
48
  }, {
49
49
  sha256: string;
50
50
  path: string;
51
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
51
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
52
52
  required?: boolean | undefined;
53
53
  }>, "many">;
54
54
  verifier: z.ZodObject<{
@@ -120,7 +120,7 @@ export declare const EvidenceBundleSchema: z.ZodObject<{
120
120
  artifacts: {
121
121
  sha256: string;
122
122
  path: string;
123
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
123
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
124
124
  required?: boolean | undefined;
125
125
  }[];
126
126
  verifier: {
@@ -129,12 +129,12 @@ export declare const EvidenceBundleSchema: z.ZodObject<{
129
129
  checkedAt?: string | undefined;
130
130
  };
131
131
  commit: string;
132
+ changedFiles: string[];
132
133
  redaction: {
133
134
  summary: string;
134
135
  applied: boolean;
135
136
  leakedSecretPatterns?: string[] | undefined;
136
137
  };
137
- changedFiles: string[];
138
138
  runtimeVersion: string;
139
139
  model?: string | undefined;
140
140
  nodeId?: string | undefined;
@@ -162,7 +162,7 @@ export declare const EvidenceBundleSchema: z.ZodObject<{
162
162
  artifacts: {
163
163
  sha256: string;
164
164
  path: string;
165
- kind?: "review" | "file" | "diff" | "log" | "custom" | "metric" | undefined;
165
+ kind?: "diff" | "review" | "file" | "log" | "custom" | "metric" | undefined;
166
166
  required?: boolean | undefined;
167
167
  }[];
168
168
  verifier: {
@@ -171,12 +171,12 @@ export declare const EvidenceBundleSchema: z.ZodObject<{
171
171
  checkedAt?: string | undefined;
172
172
  };
173
173
  commit: string;
174
+ changedFiles: string[];
174
175
  redaction: {
175
176
  summary: string;
176
177
  applied: boolean;
177
178
  leakedSecretPatterns?: string[] | undefined;
178
179
  };
179
- changedFiles: string[];
180
180
  runtimeVersion: string;
181
181
  model?: string | undefined;
182
182
  nodeId?: string | undefined;
@@ -96,6 +96,7 @@ export declare const ProofBundleSchema: z.ZodObject<{
96
96
  }, "strip", z.ZodTypeAny, {
97
97
  runId: string;
98
98
  schemaVersion: "omk.proof-bundle.v1";
99
+ providerPolicy: string;
99
100
  commit: string;
100
101
  title: string;
101
102
  files: {
@@ -112,7 +113,6 @@ export declare const ProofBundleSchema: z.ZodObject<{
112
113
  inspectJson?: string | undefined;
113
114
  diffPatch?: string | undefined;
114
115
  };
115
- providerPolicy: string;
116
116
  omkVersion: string;
117
117
  verdict: "failed" | "partial" | "passed";
118
118
  runtimeVersion: "v1.2";
@@ -123,6 +123,7 @@ export declare const ProofBundleSchema: z.ZodObject<{
123
123
  }, {
124
124
  runId: string;
125
125
  schemaVersion: "omk.proof-bundle.v1";
126
+ providerPolicy: string;
126
127
  commit: string;
127
128
  title: string;
128
129
  files: {
@@ -139,7 +140,6 @@ export declare const ProofBundleSchema: z.ZodObject<{
139
140
  inspectJson?: string | undefined;
140
141
  diffPatch?: string | undefined;
141
142
  };
142
- providerPolicy: string;
143
143
  omkVersion: string;
144
144
  verdict: "failed" | "partial" | "passed";
145
145
  runtimeVersion: "v1.2";
@@ -0,0 +1,2 @@
1
+ export declare function sha256Hex(value: string): string;
2
+ export declare function sha256FileSync(path: string): string | undefined;
@@ -0,0 +1,13 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ export function sha256Hex(value) {
4
+ return createHash("sha256").update(value, "utf-8").digest("hex");
5
+ }
6
+ export function sha256FileSync(path) {
7
+ try {
8
+ return createHash("sha256").update(readFileSync(path)).digest("hex");
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ }
@@ -1,6 +1,7 @@
1
- import { writeFile, readdir, readFile } from "fs/promises";
1
+ import { writeFile, readdir, readFile, mkdir } from "fs/promises";
2
2
  import { join } from "path";
3
- import { getRunPath, getOmkPath, pathExists, ensureDir, validateRunId } from "./fs.js";
3
+ import { getOmkPath, pathExists, validateRunId } from "./fs.js";
4
+ import { getRunArtifactPath, getRunPath } from "./run-store.js";
4
5
  export function createOmkSessionId(prefix = "session") {
5
6
  const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
6
7
  return `${prefix}-${timestamp}-${process.pid}`;
@@ -14,7 +15,7 @@ export function createOmkSessionEnv(projectRoot, sessionId) {
14
15
  export async function ensureSessionDir(runId) {
15
16
  const sanitized = validateRunId(runId);
16
17
  const dir = getRunPath(sanitized);
17
- await ensureDir(dir);
18
+ await mkdir(dir, { recursive: true });
18
19
  return dir;
19
20
  }
20
21
  export async function writeSessionMeta(runId, meta) {
@@ -30,7 +31,7 @@ export async function writeSessionMeta(runId, meta) {
30
31
  }
31
32
  export async function readSessionMeta(runId) {
32
33
  const sanitized = validateRunId(runId);
33
- const metaPath = join(getRunPath(sanitized), "session.json");
34
+ const metaPath = getRunArtifactPath(sanitized, "session.json");
34
35
  if (!(await pathExists(metaPath)))
35
36
  return null;
36
37
  try {
@@ -0,0 +1,19 @@
1
+ # 2026-06-16 Critical Issues
2
+
3
+ ## Critical Init Status
4
+
5
+ ### Missing critical artifacts
6
+ - `.omk/hooks/pre-shell-guard.sh` — destructive shell guard
7
+ - `.omk/hooks/protect-secrets.sh` — secret write guard
8
+
9
+
10
+ ## Critical Artifacts Present
11
+ - ✅ `AGENTS.md` — top-level operating contract
12
+ - ✅ `.kimi/AGENTS.md` — Kimi-specific operating rules
13
+ - ✅ `.omk/config.toml` — OMK project runtime settings
14
+ - ✅ `.omk/agents/root.yaml` — root coordinator agent
15
+ - ✅ `.kimi/mcp.json` — Kimi project MCP registry
16
+ - ✅ `.omk/memory/graph-state.json` — local ontology graph database
17
+
18
+ ## Escalation Rule
19
+ - Treat missing shell/secret guards, root agent config, MCP registry, or ontology graph as critical until restored.
@@ -0,0 +1,15 @@
1
+ # 2026-06-16 Improvements
2
+
3
+ ## Current Improvement Backlog
4
+ ### Optional init/support artifacts to add or refresh
5
+ - None detected.
6
+
7
+ ### Critical init artifacts currently blocking reliable chat startup
8
+ - `.omk/hooks/pre-shell-guard.sh` — destructive shell guard
9
+ - `.omk/hooks/protect-secrets.sh` — secret write guard
10
+
11
+
12
+ ## Suggested Focus
13
+ - Keep `omk chat` startup idempotent and non-destructive.
14
+ - Prefer local graph memory for default ontology state.
15
+ - Keep generated daily docs small, dated, and safe to edit by hand.
@@ -0,0 +1,25 @@
1
+ # 2026-06-16 Required Init Checklist
2
+
3
+ **Run ID:** chat-2026-06-15T18-37-32-586Z-3029826
4
+ **Ontology graph:** `.omk/memory/graph-state.json`
5
+
6
+ ## Required Artifacts
7
+ - ✅ `AGENTS.md` — critical; top-level operating contract
8
+ - ✅ `.kimi/AGENTS.md` — critical; Kimi-specific operating rules
9
+ - ✅ `DESIGN.md` — support; design/brand source of truth
10
+ - ✅ `.omk/config.toml` — critical; OMK project runtime settings
11
+ - ✅ `.omk/agents/root.yaml` — critical; root coordinator agent
12
+ - ✅ `.kimi/mcp.json` — critical; Kimi project MCP registry
13
+ - ✅ `.omk/mcp.json` — support; legacy OMK MCP fallback
14
+ - ✅ `.omk/lsp.json` — support; bundled TypeScript/Python LSP config
15
+ - 🚨 `.omk/hooks/pre-shell-guard.sh` — critical; destructive shell guard
16
+ - 🚨 `.omk/hooks/protect-secrets.sh` — critical; secret write guard
17
+ - ✅ `.omk/memory/graph-state.json` — critical; local ontology graph database
18
+ - ✅ `.kimi/skills` — support; Kimi skill directory
19
+ - ✅ `.agents/skills` — support; portable skill directory
20
+
21
+ ## Recovery Command
22
+ ```bash
23
+ omk init
24
+ omk doctor
25
+ ```
@@ -0,0 +1,20 @@
1
+ # 2026-06-16 OMK Chat Plan
2
+
3
+ **Run ID:** chat-2026-06-15T18-37-32-586Z-3029826
4
+ **Generated by:** omk chat bootstrap
5
+
6
+ ## Purpose
7
+ - Start every chat with a dated workspace for planning, issue triage, and verification evidence.
8
+ - Keep ontology-backed memory available before the root coordinator starts.
9
+ - Make required init state visible without overwriting user-authored docs.
10
+
11
+ ## Today Plan
12
+ 1. Review `init-checklist.md` and resolve missing critical init artifacts first.
13
+ 2. Use `improvements.md` as the active improvement backlog.
14
+ 3. Use `critical-issues.md` for blocking defects, safety risks, and verification gaps.
15
+ 4. Record command evidence before claiming work is complete.
16
+
17
+ ## Stop Condition
18
+ - Critical init artifacts are present.
19
+ - Ontology graph exists at `.omk/memory/graph-state.json`.
20
+ - Any new code/docs changes have explicit verification evidence.
@@ -0,0 +1,19 @@
1
+ # 2026-06-17 Critical Issues
2
+
3
+ ## Critical Init Status
4
+
5
+ ### Missing critical artifacts
6
+ - `.omk/hooks/pre-shell-guard.sh` — destructive shell guard
7
+ - `.omk/hooks/protect-secrets.sh` — secret write guard
8
+
9
+
10
+ ## Critical Artifacts Present
11
+ - ✅ `AGENTS.md` — top-level operating contract
12
+ - ✅ `.kimi/AGENTS.md` — Kimi-specific operating rules
13
+ - ✅ `.omk/config.toml` — OMK project runtime settings
14
+ - ✅ `.omk/agents/root.yaml` — root coordinator agent
15
+ - ✅ `.kimi/mcp.json` — Kimi project MCP registry
16
+ - ✅ `.omk/memory/graph-state.json` — local ontology graph database
17
+
18
+ ## Escalation Rule
19
+ - Treat missing shell/secret guards, root agent config, MCP registry, or ontology graph as critical until restored.
@@ -0,0 +1,15 @@
1
+ # 2026-06-17 Improvements
2
+
3
+ ## Current Improvement Backlog
4
+ ### Optional init/support artifacts to add or refresh
5
+ - None detected.
6
+
7
+ ### Critical init artifacts currently blocking reliable chat startup
8
+ - `.omk/hooks/pre-shell-guard.sh` — destructive shell guard
9
+ - `.omk/hooks/protect-secrets.sh` — secret write guard
10
+
11
+
12
+ ## Suggested Focus
13
+ - Keep `omk chat` startup idempotent and non-destructive.
14
+ - Prefer local graph memory for default ontology state.
15
+ - Keep generated daily docs small, dated, and safe to edit by hand.
@@ -0,0 +1,25 @@
1
+ # 2026-06-17 Required Init Checklist
2
+
3
+ **Run ID:** chat-2026-06-16T16-55-04-572Z-1984054
4
+ **Ontology graph:** `.omk/memory/graph-state.json`
5
+
6
+ ## Required Artifacts
7
+ - ✅ `AGENTS.md` — critical; top-level operating contract
8
+ - ✅ `.kimi/AGENTS.md` — critical; Kimi-specific operating rules
9
+ - ✅ `DESIGN.md` — support; design/brand source of truth
10
+ - ✅ `.omk/config.toml` — critical; OMK project runtime settings
11
+ - ✅ `.omk/agents/root.yaml` — critical; root coordinator agent
12
+ - ✅ `.kimi/mcp.json` — critical; Kimi project MCP registry
13
+ - ✅ `.omk/mcp.json` — support; legacy OMK MCP fallback
14
+ - ✅ `.omk/lsp.json` — support; bundled TypeScript/Python LSP config
15
+ - 🚨 `.omk/hooks/pre-shell-guard.sh` — critical; destructive shell guard
16
+ - 🚨 `.omk/hooks/protect-secrets.sh` — critical; secret write guard
17
+ - ✅ `.omk/memory/graph-state.json` — critical; local ontology graph database
18
+ - ✅ `.kimi/skills` — support; Kimi skill directory
19
+ - ✅ `.agents/skills` — support; portable skill directory
20
+
21
+ ## Recovery Command
22
+ ```bash
23
+ omk init
24
+ omk doctor
25
+ ```
@@ -0,0 +1,20 @@
1
+ # 2026-06-17 OMK Chat Plan
2
+
3
+ **Run ID:** chat-2026-06-16T16-55-04-572Z-1984054
4
+ **Generated by:** omk chat bootstrap
5
+
6
+ ## Purpose
7
+ - Start every chat with a dated workspace for planning, issue triage, and verification evidence.
8
+ - Keep ontology-backed memory available before the root coordinator starts.
9
+ - Make required init state visible without overwriting user-authored docs.
10
+
11
+ ## Today Plan
12
+ 1. Review `init-checklist.md` and resolve missing critical init artifacts first.
13
+ 2. Use `improvements.md` as the active improvement backlog.
14
+ 3. Use `critical-issues.md` for blocking defects, safety risks, and verification gaps.
15
+ 4. Record command evidence before claiming work is complete.
16
+
17
+ ## Stop Condition
18
+ - Critical init artifacts are present.
19
+ - Ontology graph exists at `.omk/memory/graph-state.json`.
20
+ - Any new code/docs changes have explicit verification evidence.
@@ -2,7 +2,8 @@
2
2
 
3
3
  > 분석일: 2026-05-25
4
4
  > 도구: CodeGraph (SQLite 기반 코드 의존성 그래프)
5
- > 대상: /home/yu/open_multi-agent_kit (open-multi-agent-kit v1.1.18)
5
+ > 대상: /home/yu/open_multi-agent_kit (open-multi-agent-kit@0.79.3, runtime contract family v1.2, pre-1.0)
6
+ > 최신화: 2026-06-15 — release truth, authority/evidence gates, health-aware routing, and spec-kit docs refreshed.
6
7
 
7
8
  ---
8
9
 
@@ -1,7 +1,7 @@
1
1
  # External Multi-Agent Stack → OMK Migration Guide
2
2
 
3
3
  > Generic migration path from any external multi-agent orchestration stack (e.g., gstack, custom frameworks) to OMK.
4
- > OMK v1.1.18+ with externalized skill presets.
4
+ > OMK `open-multi-agent-kit@0.79.3` (`v1.2` runtime contract family, `pre-1.0`) with externalized skill presets, scoped MCP/skills/hooks, evidence gates, and provider-neutral runtime routing.
5
5
 
6
6
  ## Why Migrate to OMK
7
7
 
@@ -0,0 +1,219 @@
1
+ # OMK Algorithm Hardening Playbook
2
+
3
+ > How to evolve OMK's runtime algorithms safely, contract-first, and with evidence.
4
+
5
+ ## 1. Principles
6
+
7
+ ### 1.1 Change contracts before code
8
+
9
+ When hardening an algorithm, start with:
10
+
11
+ 1. Type/interface changes (e.g., `AgentTask.safety`, `RuntimeHealthVectorV2`).
12
+ 2. Unit tests that express the new contract in isolation.
13
+ 3. Adapter updates to satisfy the compiler.
14
+ 4. Integration tests.
15
+ 5. Documentation updates.
16
+
17
+ This order catches contract violations at compile time rather than at runtime.
18
+
19
+ ### 1.2 Declare, observe, then verify
20
+
21
+ For evidence gates:
22
+
23
+ - **Declare**: node/task says what evidence kinds are required.
24
+ - **Observe**: after execution, extract actual observations from stdout, metadata, artifacts.
25
+ - **Verify**: compare observations against declarations.
26
+
27
+ A declaration is never proof.
28
+
29
+ ### 1.3 Runtime-mode authority
30
+
31
+ Authority is not provider identity. It is `(provider, runtimeMode)`:
32
+
33
+ ```text
34
+ kimi:api → read, review (advisory)
35
+ kimi:cli → read, write, patch, shell, merge, review (authority)
36
+ deepseek:api → read, review (advisory)
37
+ codex:cli → read, plan, review (advisory unless explicit policy)
38
+ ```
39
+
40
+ Any code path that selects a runtime must consult this matrix.
41
+
42
+ ### 1.4 Fail-closed defaults
43
+
44
+ - Unknown health → route with penalty or block.
45
+ - Missing evidence → exit 78.
46
+ - Advisory runtime asked to write/shell/merge → exit 78.
47
+ - Low-confidence risk → downgrade to `ask`.
48
+
49
+ ### 1.5 Preserve backward compatibility
50
+
51
+ - Do not remove old fields until the full phase is released.
52
+ - Use optional/new fields first, then deprecate.
53
+ - Keep existing smoke tests passing.
54
+
55
+ ## 2. Step-by-step hardening loop
56
+
57
+ ### Step 0 — Isolate the concern
58
+
59
+ Pick one algorithm concern per phase:
60
+
61
+ - evidence semantics
62
+ - health probes
63
+ - authority matrix
64
+ - prompt privacy
65
+ - audit graph
66
+
67
+ Do not mix two concerns in one diff.
68
+
69
+ ### Step 1 — Specify the contract
70
+
71
+ Write the LaTeX/TypeScript contract first. Example:
72
+
73
+ ```ts
74
+ // Before changing implementations, add the new contract.
75
+ export interface AgentTaskSafety {
76
+ readonly risk: string;
77
+ readonly approvalPolicy: string;
78
+ readonly sandboxMode: string;
79
+ readonly evidenceRequired: boolean;
80
+ readonly authorityMode: string;
81
+ }
82
+ ```
83
+
84
+ ### Step 2 — Add isolated tests
85
+
86
+ Create a new test file that fails before implementation:
87
+
88
+ ```text
89
+ test/evidence-v2-declared-vs-observed.test.mjs
90
+ test/health-vector-tri-state.test.mjs
91
+ test/authority-matrix-kimi-api-advisory.test.mjs
92
+ ```
93
+
94
+ ### Step 3 — Implement behind a flag when possible
95
+
96
+ For large changes, use an environment flag:
97
+
98
+ ```ts
99
+ const evidenceModelV2 = process.env.OMK_EVIDENCE_MODEL === "v2";
100
+ ```
101
+
102
+ This lets you merge incrementally without breaking existing paths.
103
+
104
+ ### Step 4 — Update adapters incrementally
105
+
106
+ For each runtime adapter:
107
+
108
+ 1. Make it compile with the new contract.
109
+ 2. Add a focused test for that adapter.
110
+ 3. Move to the next adapter.
111
+
112
+ ### Step 5 — Integrate and remove flag
113
+
114
+ Once all adapters and tests pass:
115
+
116
+ 1. Default the flag to the new behavior.
117
+ 2. Add a revert path.
118
+ 3. Run full quality gates.
119
+
120
+ ### Step 6 — Document and release-gate
121
+
122
+ - Update `docs/provider-maturity.md`, `docs/native-root-runtime-hardening.md`.
123
+ - Add the new behavior to `release:check` or a dedicated smoke script.
124
+ - Update `CHANGELOG.md`.
125
+
126
+ ## 3. Parallel subagent orchestration
127
+
128
+ When spawning parallel workers (when the tool is available):
129
+
130
+ ### 3.1 Decompose by concern, not by file
131
+
132
+ Each worker owns one concern end-to-end:
133
+
134
+ - evidence worker: contract + tests + runtime-backed + DAG executor
135
+ - health worker: vector v2 + adapters + scoring
136
+ - authority worker: matrix + resolver + docs + smoke
137
+
138
+ ### 3.2 Grant least privilege
139
+
140
+ | Worker | Authority | Allowed paths | Blocked paths |
141
+ |--------|-----------|---------------|---------------|
142
+ | evidence | write-scoped | `src/runtime/contracts/evidence.ts`, `src/runtime/runtime-backed-task-runner.ts`, `src/orchestration/executor.ts`, `test/evidence-*.mjs` | secrets, env files |
143
+ | health | write-scoped | `src/runtime/contracts/shared.ts`, `src/runtime/runtime-router.ts`, `src/runtime/*-runtime.ts`, `test/health-*.mjs` | secrets, env files |
144
+ | authority | write-scoped | `src/runtime/authority-matrix.ts`, `src/runtime/runtime-bootstrap.ts`, `src/runtime/runtime-router.ts`, `docs/provider-maturity.md`, `test/authority-*.mjs` | secrets, env files |
145
+
146
+ ### 3.3 Shared read-only reviewers
147
+
148
+ Run reviewer/QA/security lanes in parallel after implementation lanes:
149
+
150
+ - `omk-reviewer`: diff review, type safety
151
+ - `omk-tester`: test matrix, release gate
152
+ - `omk-security`: secret exposure, authority boundary
153
+
154
+ ### 3.4 Synthesis gate
155
+
156
+ Do not merge until:
157
+
158
+ 1. Every lane produced evidence.
159
+ 2. `npm run check` passes.
160
+ 3. `npm run release:check` passes.
161
+ 4. New negative tests pass.
162
+ 5. Documentation is updated.
163
+
164
+ ## 4. Regression prevention
165
+
166
+ ### 4.1 Test hierarchy
167
+
168
+ 1. **Contract tests**: pure functions, no IO.
169
+ 2. **Adapter tests**: runtime mocks, no live provider calls.
170
+ 3. **Integration tests**: local CLI with `--dry-run`.
171
+ 4. **Smoke tests**: real provider only in CI with ephemeral keys.
172
+
173
+ ### 4.2 Required negative tests
174
+
175
+ For every new gate, add a negative test:
176
+
177
+ - Evidence declared but not observed → blocked.
178
+ - Health fail → runtime excluded or penalized.
179
+ - Advisory runtime asked for write → exit 78.
180
+ - Private prompt leaked to public node → redaction/failure.
181
+
182
+ ### 4.3 Durable checkpoints
183
+
184
+ Before each phase:
185
+
186
+ ```bash
187
+ git branch phase-<N>-<concern>
188
+ npm run check
189
+ npm run test
190
+ ```
191
+
192
+ After each phase:
193
+
194
+ ```bash
195
+ npm run check
196
+ npm run release:check
197
+ git commit -m "feat(<concern>): <phase N> hardening"
198
+ ```
199
+
200
+ ## 5. When to stop
201
+
202
+ Stop a phase and ask for guidance when:
203
+
204
+ - A contract change would break public CLI behavior.
205
+ - A runtime adapter cannot satisfy the new contract without a large refactor.
206
+ - `npm run check` fails and the fix is not local.
207
+ - A lane would need to write files outside its granted scope.
208
+
209
+ ## 6. Checklist
210
+
211
+ - [ ] Contract specified in TypeScript/LaTeX
212
+ - [ ] Isolated failing tests added
213
+ - [ ] Implementation behind flag or in isolated file
214
+ - [ ] All adapters updated incrementally
215
+ - [ ] Negative tests added
216
+ - [ ] Documentation updated
217
+ - [ ] Quality gates pass
218
+ - [ ] Evidence artifacts recorded
219
+ - [ ] Result artifact written
package/docs/claims.md CHANGED
@@ -66,7 +66,7 @@ Evidence:
66
66
 
67
67
  ## Claim: OMK is a stable 1.x release
68
68
 
69
- Status: not claimed. Current source version is `0.78.9` (`pre-1.0`); `v1.2` is a runtime contract family.
69
+ Status: not claimed. Current source version is `0.80.2` (`pre-1.0`); `v1.2` is a runtime contract family.
70
70
 
71
71
  Evidence:
72
72
  - [versioning](versioning.md)
@@ -1,6 +1,6 @@
1
1
  # Getting Started
2
2
 
3
- Source release target: `open-multi-agent-kit@0.79.3`. Treat npm latest claims as valid only after registry verification and release gates pass.
3
+ Source release target: `open-multi-agent-kit@0.80.2`. Treat npm latest claims as valid only after registry verification and release gates pass.
4
4
 
5
5
  ## Prerequisites
6
6