@polderlabs/bizar-omp 0.6.7 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +8 -8
  2. package/dist/cli/doctor.d.ts +4 -4
  3. package/dist/cli/update-ink.d.ts +2 -1
  4. package/dist/cli/update-ink.d.ts.map +1 -1
  5. package/dist/core/acceptance.d.ts.map +1 -1
  6. package/dist/core/acceptance.js +17 -3
  7. package/dist/core/acceptance.js.map +1 -1
  8. package/dist/core/recovery.d.ts.map +1 -1
  9. package/dist/core/recovery.js +52 -3
  10. package/dist/core/recovery.js.map +1 -1
  11. package/dist/core/redaction.d.ts +22 -0
  12. package/dist/core/redaction.d.ts.map +1 -0
  13. package/dist/core/redaction.js +103 -0
  14. package/dist/core/redaction.js.map +1 -0
  15. package/dist/core/transitions.d.ts +3 -2
  16. package/dist/core/transitions.d.ts.map +1 -1
  17. package/dist/core/transitions.js +34 -8
  18. package/dist/core/transitions.js.map +1 -1
  19. package/dist/core/types.d.ts +33 -1
  20. package/dist/core/types.d.ts.map +1 -1
  21. package/dist/extension.d.ts +14 -3
  22. package/dist/extension.d.ts.map +1 -1
  23. package/dist/extension.js +92 -36
  24. package/dist/extension.js.map +1 -1
  25. package/dist/omp/compatibility.d.ts +5 -5
  26. package/dist/omp/compatibility.d.ts.map +1 -1
  27. package/dist/omp/compatibility.js +2 -2
  28. package/dist/omp/compatibility.js.map +1 -1
  29. package/dist/omp/dispatch-admission.d.ts +4 -1
  30. package/dist/omp/dispatch-admission.d.ts.map +1 -1
  31. package/dist/omp/dispatch-admission.js +2 -2
  32. package/dist/omp/dispatch-admission.js.map +1 -1
  33. package/dist/omp/result-reconciliation.js +1 -1
  34. package/dist/omp/result-reconciliation.js.map +1 -1
  35. package/dist/omp/rpc.d.ts +4 -1
  36. package/dist/omp/rpc.d.ts.map +1 -1
  37. package/dist/services/candidate-verify.d.ts +34 -0
  38. package/dist/services/candidate-verify.d.ts.map +1 -0
  39. package/dist/services/candidate-verify.js +141 -0
  40. package/dist/services/candidate-verify.js.map +1 -0
  41. package/dist/storage/journal.d.ts.map +1 -1
  42. package/dist/storage/journal.js +6 -21
  43. package/dist/storage/journal.js.map +1 -1
  44. package/dist/storage/lease.d.ts +16 -0
  45. package/dist/storage/lease.d.ts.map +1 -0
  46. package/dist/storage/lease.js +236 -0
  47. package/dist/storage/lease.js.map +1 -0
  48. package/dist/storage/repository-identity.d.ts.map +1 -1
  49. package/dist/storage/repository-identity.js +1 -0
  50. package/dist/storage/repository-identity.js.map +1 -1
  51. package/dist/storage/resources.d.ts.map +1 -1
  52. package/dist/storage/resources.js +49 -22
  53. package/dist/storage/resources.js.map +1 -1
  54. package/dist/tools/integrate.d.ts.map +1 -1
  55. package/dist/tools/integrate.js +66 -23
  56. package/dist/tools/integrate.js.map +1 -1
  57. package/dist/tools/verify.d.ts.map +1 -1
  58. package/dist/tools/verify.js +43 -32
  59. package/dist/tools/verify.js.map +1 -1
  60. package/dist/tools/workflow.d.ts +12 -2
  61. package/dist/tools/workflow.d.ts.map +1 -1
  62. package/dist/tools/workflow.js +54 -7
  63. package/dist/tools/workflow.js.map +1 -1
  64. package/docs/compatibility/baseline.json +9 -8
  65. package/docs/compatibility/supported-surfaces.json +2 -1
  66. package/docs/releases/0.6.8.md +11 -0
  67. package/docs/releases/native-stable.md +1 -1
  68. package/docs/releases/npm-publishing.md +1 -1
  69. package/docs/releases/support-matrix.md +1 -1
  70. package/package.json +2 -2
  71. package/schemas/evidence-record.schema.json +29 -3
  72. package/schemas/workflow-run.schema.json +10 -3
  73. package/skills/bizar-omp/SKILL.md +2 -1
  74. package/skills/omp-native-development/SKILL.md +1 -1
  75. package/skills/omp-native-development/references/accuracy-and-versioning.md +1 -1
  76. package/skills/omp-native-development/references/source-manifest.json +3 -3
  77. package/optional/openkan/index.ts +0 -3
@@ -1,7 +1,9 @@
1
- import { acceptWorkItem, addWorkItem, completeRun, transition } from "../core/transitions.js";
1
+ import { readyWorkItems } from "../services/readiness.js";
2
+ import { acceptWorkItem, addWorkItem, completeRun, freezeObjective, transition } from "../core/transitions.js";
2
3
  import { requireFreshEvidence } from "../core/evidence.js";
3
- import { classifyRoute } from "../core/policies.js";
4
4
  import { ContractError } from "../core/errors.js";
5
+ import { classifyRoute } from "../core/policies.js";
6
+ import { canonicalSpecHash } from "../core/acceptance.js";
5
7
  import { assertOwner } from "../core/recovery.js";
6
8
  import { startObjective } from "../omp/lifecycle.js";
7
9
  import { workingTreeDigest } from "../storage/repository-identity.js";
@@ -26,6 +28,20 @@ export function runWorkflow(binding, action, params) {
26
28
  binding.journal.append(result.event, `transition:${state.run.runId}:${state.run.revision}:${to}`, state.revision);
27
29
  return result.run;
28
30
  }
31
+ if (action === "amend-objective") {
32
+ const proposed = params.objective;
33
+ const objective = freezeObjective(proposed);
34
+ const reason = String(params.reason ?? "").trim();
35
+ const by = params.by === "check-spec" ? "check-spec" : "criterion";
36
+ if (!reason)
37
+ throw new ContractError("A reason is required to amend the objective");
38
+ if (!objective || !objective.objective.trim() || objective.acceptanceCriteria.length === 0)
39
+ throw new ContractError("A complete amended objective is required");
40
+ const existing = by === "check-spec" ? state.run.objective.checkSpecs?.map(spec => spec.id) ?? state.run.objective.verificationPlan : state.run.objective.criteria?.map(criterion => criterion.id) ?? [];
41
+ const amended = by === "check-spec" ? objective.checkSpecs?.map(spec => spec.id) ?? objective.verificationPlan : objective.criteria?.map(criterion => criterion.id) ?? [];
42
+ binding.journal.append({ type: "objective.amended", runId: state.run.runId, objective, by, added: amended.filter(id => !existing.includes(id)), removed: existing.filter(id => !amended.includes(id)), reason }, `objective-amended:${state.run.runId}:${state.run.revision}`, state.revision);
43
+ return binding.journal.snapshot().run;
44
+ }
29
45
  if (action === "cancel") {
30
46
  const reason = String(params.reason ?? "operator cancellation");
31
47
  binding.journal.append({ type: "run.cancelled", runId: state.run.runId, reason }, `cancel:${state.run.runId}:${state.run.revision}`, state.revision);
@@ -42,11 +58,42 @@ export function runWorkflow(binding, action, params) {
42
58
  const evidenceIds = params.evidenceIds;
43
59
  if (!Array.isArray(evidenceIds))
44
60
  throw new ContractError("Evidence IDs are required to accept work");
45
- requireFreshEvidence(state.evidence, evidenceIds, workingTreeDigest(binding.cwd));
61
+ const targetDigest = workingTreeDigest(binding.cwd);
62
+ const item = state.run.workItems.find(candidate => candidate.id === workItemId);
63
+ if (!item)
64
+ throw new ContractError(`Unknown work item: ${workItemId}`);
65
+ if (item.lifecycle !== "settled")
66
+ throw new ContractError(`Work item must be settled before acceptance (current: ${item.lifecycle})`);
67
+ // R006: require candidate binding + CheckSpec contract enforcement.
68
+ const dispatches = state.dispatches.filter(intent => intent.workItemId === workItemId);
69
+ const dispatch = dispatches.filter(intent => intent.candidateId && intent.candidateTree).at(-1);
70
+ if (!dispatch)
71
+ throw new ContractError("Work item has no recorded dispatch");
72
+ if (dispatch.status !== "settled")
73
+ throw new ContractError(`Work item dispatch must be settled (current: ${dispatch.status})`);
74
+ if (!dispatch.candidateId || !dispatch.candidateTree)
75
+ throw new ContractError("Settled dispatch must reference a candidate");
76
+ requireFreshEvidence(state.evidence, evidenceIds, targetDigest, { candidateId: dispatch.candidateId, candidateTree: dispatch.candidateTree });
77
+ const acceptedRecords = state.evidence.filter(record => evidenceIds.includes(record.id));
78
+ const specsById = new Map((state.run.objective.checkSpecs ?? []).map(spec => [spec.id, spec]));
79
+ if (specsById.size > 0) {
80
+ for (const record of acceptedRecords) {
81
+ if (!record.checkSpecHash)
82
+ throw new ContractError(`Evidence ${record.id} lacks a checkSpecHash; cannot be accepted under CheckSpec contract`);
83
+ const spec = specsById.get(record.checkId);
84
+ if (!spec)
85
+ throw new ContractError(`Evidence checkId "${record.checkId}" is not admitted in the objective CheckSpec contract`);
86
+ if (canonicalSpecHash(spec) !== record.checkSpecHash)
87
+ throw new ContractError(`Evidence ${record.id} does not match the admitted CheckSpec for ${spec.id}`);
88
+ }
89
+ }
90
+ const checkSpecHashes = acceptedRecords.map(record => record.checkSpecHash ?? "");
46
91
  const next = acceptWorkItem(state.run, workItemId);
47
- const item = next.workItems.find(candidate => candidate.id === workItemId);
48
- binding.journal.append({ type: "work-item.upserted", runId: next.runId, item }, `work-accepted:${next.runId}:${item.id}:${item.revision}`, state.revision);
49
- return item;
92
+ const accepted = next.workItems.find(candidate => candidate.id === workItemId);
93
+ const receipt = { workItemId, workRevision: item.revision, dispatchId: dispatch.id, candidateId: dispatch.candidateId, candidateTree: dispatch.candidateTree, evidenceIds: [...evidenceIds], checkSpecHashes, policyRevision: state.run.objective.policyRevision ?? "admission", targetDigest };
94
+ binding.journal.append({ type: "work-item.upserted", runId: next.runId, item: accepted }, `work-accepted:${next.runId}:${workItemId}:${accepted.revision}`, state.revision);
95
+ binding.journal.append({ type: "acceptance.recorded", runId: next.runId, receipt }, `acceptance:${next.runId}:${workItemId}:${accepted.revision}`, state.revision + 1);
96
+ return receipt;
50
97
  }
51
98
  if (action === "complete") {
52
99
  if (state.integrations.some(attempt => attempt.outcome === "unknown-outcome") || state.dispatches.some(intent => !["settled", "rejected"].includes(intent.status)))
@@ -59,7 +106,7 @@ export function runWorkflow(binding, action, params) {
59
106
  return result.run;
60
107
  }
61
108
  if (action === "next")
62
- return state.run.workItems.find(item => item.lifecycle === "pending") ?? null;
109
+ return readyWorkItems(state.run.workItems)[0] ?? null;
63
110
  throw new ContractError(`Unknown workflow action: ${action}`);
64
111
  }
65
112
  //# sourceMappingURL=workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/tools/workflow.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "researchDate": "2026-09-21",
3
+ "researchDate": "2026-09-22",
4
4
  "bizarReference": {
5
5
  "repository": "../BizarHarness",
6
6
  "commit": "e13aa131bdcd368548118464f0da1bace302e64b",
@@ -8,17 +8,18 @@
8
8
  },
9
9
  "omp": {
10
10
  "repository": "https://github.com/can1357/oh-my-pi",
11
- "testedVersion": "18.2.7",
12
- "testedCommit": "d716bcf60ab0a2e7ece1fdf382c0d143fef1f307",
11
+ "testedVersion": "18.2.8",
12
+ "testedCommit": "5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c",
13
13
  "previouslyQualifiedVersions": [
14
14
  "18.2.4",
15
15
  "18.2.5",
16
- "18.2.6"
16
+ "18.2.6",
17
+ "18.2.7"
17
18
  ],
18
19
  "researchedMainCommit": "dbf3afad4894bde827d90f965e77b3fe1c5a95e5",
19
- "releaseVersionSeenInResearch": "18.2.7",
20
- "releaseCommitSeenInResearch": "d716bcf60ab0a2e7ece1fdf382c0d143fef1f307",
21
- "qualification": "The npm package was tested at 18.2.7 with integrity sha512-lVNXaRv5US4DTa79djiicoL3Mil284nKiZLReMd2j7XcwfVI2Bnx9yy0UQ1NevbhF/e0LtQ+fk6OSgEy9N3tew==; 18.2.6 remains a separately qualified compatibility version. Package version alone does not prove source commit identity."
20
+ "releaseVersionSeenInResearch": "18.2.8",
21
+ "releaseCommitSeenInResearch": "5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c",
22
+ "qualification": "The npm package was tested at 18.2.8 with integrity sha512-I8JXVNLJb8PfGS6mRGSKNq73+EX+R/GoaRBoMj8HTtOiwF112QXH72UP2klTwoCiR2gTsACbAIWjD0JdrR3A3g==; 18.2.7 remains a separately qualified compatibility version. Package version alone does not prove source commit identity."
22
23
  },
23
24
  "bun": {
24
25
  "minimum": "1.3.14",
@@ -26,7 +27,7 @@
26
27
  },
27
28
  "package": {
28
29
  "name": "@polderlabs/bizar-omp",
29
- "version": "0.6.7",
30
+ "version": "0.6.8",
30
31
  "integrity": "computed by npm pack in CI",
31
32
  "extensionEntry": "dist/extension.js"
32
33
  }
@@ -15,7 +15,8 @@
15
15
  "dry-run migration"
16
16
  ],
17
17
  "qualified": [
18
- "OMP 18.2.7 / release commit d716bcf60ab0a2e7ece1fdf382c0d143fef1f307",
18
+ "OMP 18.2.8 / release commit 5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c",
19
+ "OMP 18.2.7 compatibility regression",
19
20
  "OMP 18.2.6 compatibility regression",
20
21
  "OMP 18.2.5 compatibility regression",
21
22
  "OMP 18.2.4 compatibility regression",
@@ -0,0 +1,11 @@
1
+ # 0.6.8
2
+
3
+ ## Highlights
4
+
5
+ - Qualifies the plugin against OMP 18.2.8 at release commit 5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c.
6
+ - Keeps OMP 18.2.7 as a separately tested compatibility version.
7
+ - Updates CI, release qualification, installation diagnostics, and the native-development skill fingerprint.
8
+
9
+ ## Validation
10
+
11
+ This release was qualified through the local OMP harness (`npm run verify:omp`). When CI is available, the `omp-compatibility` workflow verifies the packed install path. Because this repository is private and CI may be billing-blocked at the org level, the operator override path is the documented fallback: bump the version in `package.json`, run `npm pack --ignore-scripts`, publish with `NPM_CONFIG_PROVENANCE=false npm publish --ignore-scripts`, then tag the merge SHA and create the GitHub release.
@@ -1,3 +1,3 @@
1
1
  # Native release policy
2
2
 
3
- The package is releasable when typecheck, tests, packed-install qualification, and documentation checks pass against the supported OMP/Bun baseline. A GitHub release is created from an exact `v<version>` tag; npm publication uses trusted publishing. See npm-publishing.md for setup and 0.6.7.md for the current release notes. A passing release gate does not imply every native provider or worker route has been tested.
3
+ The package is releasable when typecheck, tests, packed-install qualification, and documentation checks pass against the supported OMP/Bun baseline. A GitHub release is created from an exact `v<version>` tag; npm publication uses trusted publishing. See npm-publishing.md for setup and 0.6.8.md for the current release notes. A passing release gate does not imply every native provider or worker route has been tested.
@@ -7,7 +7,7 @@ Configure the package's npm **Trusted Publisher** as:
7
7
  | Field | Value |
8
8
  | --- | --- |
9
9
  | Provider | GitHub Actions |
10
- | Organization or user | `PolderLabsVOF` |
10
+ | Organization or user | `PolderLabs` |
11
11
  | Repository | `BizarHarness-OMP` |
12
12
  | Workflow filename | `release.yml` |
13
13
  | Environment | Leave blank |
@@ -4,7 +4,7 @@
4
4
  | --- | --- |
5
5
  | Node | 22.x and 24.x in CI |
6
6
  | Bun | 1.3.14 compatibility job |
7
- | OMP | 18.2.7 at release commit `d716bcf60ab0a2e7ece1fdf382c0d143fef1f307`; 18.2.6 remains regression-qualified |
7
+ | OMP | 18.2.8 at release commit `5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c`; 18.2.7 remains regression-qualified |
8
8
  | Install | `npx --yes @polderlabs/bizar-omp setup` is the supported full install; `omp plugin install <package-spec>` is extension-only and `omp plugin link <checkout>` is for development |
9
9
  | Security | Trusted in-process extension; native task isolation required for managed editing |
10
10
  | Workflow state | Journal v2 validation, candidate-bound acceptance, bounded inspection/projection, and offline evidence bundles are locally qualified; v1 state remains legacy input |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polderlabs/bizar-omp",
3
- "version": "0.6.7",
3
+ "version": "0.7.0",
4
4
  "description": "Native oh-my-pi engineering workflow extension with typed evidence and serialized integration.",
5
5
  "type": "module",
6
6
  "engines": {
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "repository": {
52
52
  "type": "git",
53
- "url": "https://github.com/PolderLabsVOF/BizarHarness-OMP.git"
53
+ "url": "https://github.com/PolderLabs/BizarHarness-OMP.git"
54
54
  },
55
55
  "license": "MIT",
56
56
  "publishConfig": {
@@ -1,16 +1,42 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/PolderLabsVOF/BizarHarness-OMP/schemas/evidence-record.schema.json",
3
+ "$id": "https://github.com/PolderLabs/BizarHarness-OMP/schemas/evidence-record.schema.json",
4
4
  "title": "Bizar OMP evidence record",
5
5
  "type": "object",
6
- "required": ["id", "runId", "type", "checkId", "result", "targetDigest", "stale", "provenance"],
6
+ "required": ["id", "runId", "type", "checkId", "result", "targetDigest", "recordedAt", "stale", "checkSpecHash", "evaluatorHash", "provenance"],
7
7
  "properties": {
8
8
  "id": { "type": "string" },
9
9
  "runId": { "type": "string" },
10
10
  "type": { "enum": ["test", "lint", "typecheck", "review", "research", "worker", "git", "manual"] },
11
+ "checkId": { "type": "string" },
11
12
  "result": { "enum": ["passed", "failed", "blocked", "cancelled", "unknown"] },
13
+ "command": { "type": "array", "items": { "type": "string" } },
14
+ "cwd": { "type": "string" },
15
+ "exitCode": { "type": "integer" },
12
16
  "targetDigest": { "type": "string", "minLength": 1 },
13
- "stale": { "type": "boolean" }
17
+ "inputDigests": { "type": "object", "additionalProperties": { "type": "string" } },
18
+ "stdout": { "type": "string" },
19
+ "stderr": { "type": "string" },
20
+ "artifactHashes": { "type": "array", "items": { "type": "string" } },
21
+ "checkSpecHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
22
+ "evaluatorHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
23
+ "attemptGeneration": { "type": "integer", "minimum": 1 },
24
+ "candidateId": { "type": "string" },
25
+ "candidateTree": { "type": "string" },
26
+ "recordedAt": { "type": "string", "format": "date-time" },
27
+ "stale": { "type": "boolean" },
28
+ "provenance": {
29
+ "type": "object",
30
+ "required": ["producer", "source", "observedAt"],
31
+ "properties": {
32
+ "producer": { "type": "string" },
33
+ "source": { "type": "string" },
34
+ "observedAt": { "type": "string", "format": "date-time" },
35
+ "buildId": { "type": "string" },
36
+ "runId": { "type": "string" },
37
+ "reviewRevision": { "type": "integer" }
38
+ }
39
+ }
14
40
  },
15
41
  "additionalProperties": true
16
42
  }
@@ -1,16 +1,23 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/PolderLabsVOF/BizarHarness-OMP/schemas/workflow-run.schema.json",
3
+ "$id": "https://github.com/PolderLabs/BizarHarness-OMP/schemas/workflow-run.schema.json",
4
4
  "title": "Bizar OMP workflow run",
5
5
  "type": "object",
6
- "required": ["schemaVersion", "runId", "projectId", "objectiveHash", "revision", "phase"],
6
+ "required": ["schemaVersion", "runId", "projectId", "objectiveHash", "revision", "phase", "nativeSessionId"],
7
7
  "properties": {
8
8
  "schemaVersion": { "const": 1 },
9
9
  "runId": { "type": "string", "pattern": "^run_" },
10
10
  "projectId": { "type": "string", "minLength": 1 },
11
11
  "objectiveHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
12
12
  "revision": { "type": "integer", "minimum": 0 },
13
- "phase": { "enum": ["created", "orienting", "researching", "planning", "ready", "executing", "integrating", "verifying", "reviewing", "complete", "blocked", "failed", "cancelled"] }
13
+ "phase": { "enum": ["created", "orienting", "researching", "planning", "ready", "executing", "integrating", "verifying", "reviewing", "complete", "blocked", "failed", "cancelled"] },
14
+ "nativeSessionId": { "type": "string" },
15
+ "owner": { "type": "string" },
16
+ "candidateId": { "type": "string" },
17
+ "candidateTree": { "type": "string" },
18
+ "criteria": { "type": "array", "items": { "type": "object" } },
19
+ "reviewSpec": { "type": "object" },
20
+ "checkSpecs": { "type": "array", "items": { "type": "object" } }
14
21
  },
15
22
  "additionalProperties": true
16
23
  }
@@ -17,7 +17,8 @@ Use the native Bizar tools for the typed lifecycle:
17
17
 
18
18
  - `bizar_workflow` starts, inspects, transitions, and completes a workflow only when required checks and accepted work are satisfied.
19
19
  - `bizar_verify` runs a host-observed check and records its result against the current target.
20
- - `bizar_evidence` lists or records evidence and exposes stale or missing proof.
20
+ - `bizar_evidence` queries recorded evidence and freshness; unobserved or stale evidence never counts as passing. Evidence is recorded only through `bizar_verify`, `bizar_candidate_verify`, reviews, and journaled integration events.
21
+ - `bizar_candidate_verify` materializes an exact candidate patch in a disposable workspace, runs a frozen CheckSpec there, and records candidate-bound evidence.
21
22
  - `bizar_integrate` admits scoped changes through Bizar's serialized integration path.
22
23
 
23
24
  An accepted task, a planned change, or a successful tool call is not completion. Completion requires fresh evidence for the current tree, no unresolved work or integrations, and explicit workflow completion.
@@ -9,7 +9,7 @@ Treat this skill as a source-grounded engineering procedure, not an assertion of
9
9
 
10
10
  ## Establish the target before implementing
11
11
 
12
- Read [accuracy-and-versioning.md](references/accuracy-and-versioning.md) first. The current qualification target is `can1357/oh-my-pi` v18.2.7 at commit `d716bcf60ab0a2e7ece1fdf382c0d143fef1f307`; OMP 18.2.6, 18.2.5, and 18.2.4 remain separately tested compatibility versions. The bundled research corpus remains pinned to main commit `dbf3afad4894bde827d90f965e77b3fe1c5a95e5`, dated 2026-09-17, and must not be presented as the current release source.
12
+ Read [accuracy-and-versioning.md](references/accuracy-and-versioning.md) first. The current qualification target is `can1357/oh-my-pi` v18.2.8 at commit `5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c`; OMP 18.2.6, 18.2.5, and 18.2.4 remain separately tested compatibility versions. The bundled research corpus remains pinned to main commit `dbf3afad4894bde827d90f965e77b3fe1c5a95e5`, dated 2026-09-17, and must not be presented as the current release source.
13
13
 
14
14
  Record the developer's actual OMP package version, lockfile/integrity, source commit when available, Bun version, execution mode, profile, cwd, and relevant settings. Never print secrets. Verify the exact exports and behavior of that target, rather than assuming these snapshots apply unchanged. A missing environment or unrun test means UNKNOWN or NOT RUN, never PASS.
15
15
 
@@ -18,7 +18,7 @@ Separate five kinds of statement: DOCUMENTED, SOURCE-OBSERVED, TESTED, PROPOSED
18
18
 
19
19
  ## Target fingerprint
20
20
 
21
- Current qualification target: `v18.2.7@d716bcf60ab0a2e7ece1fdf382c0d143fef1f307`, npm integrity `sha512-lVNXaRv5US4DTa79djiicoL3Mil284nKiZLReMd2j7XcwfVI2Bnx9yy0UQ1NevbhF/e0LtQ+fk6OSgEy9N3tew==`.
21
+ Current qualification target: `v18.2.8@5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c`, npm integrity `sha512-I8JXVNLJb8PfGS6mRGSKNq73+EX+R/GoaRBoMj8HTtOiwF112QXH72UP2klTwoCiR2gTsACbAIWjD0JdrR3A3g==`.
22
22
  Previous compatibility targets: `v18.2.6@78b753124d11f8dd3ae73e2524125890ff7c977e`, `v18.2.5@37273117021129e96bd05d8277b140ec3fd61990` and `v18.2.4@1c0303b1f2ec515cbf4b44a9a49d68a029531aac`.
23
23
  Research source: `can1357/oh-my-pi@dbf3afad4894bde827d90f965e77b3fe1c5a95e5`; it remains a source/documentation corpus pin, not a claim about the current package release. Compare artifacts/commits, not just a semver string.
24
24
 
@@ -5,9 +5,9 @@
5
5
  "reference_date": "2026-09-17",
6
6
  "docs_tree_sha": "c0055f49ceb172ff6da9490cf74773e9b187966b",
7
7
  "current_qualification": {
8
- "tag": "v18.2.7",
9
- "commit": "d716bcf60ab0a2e7ece1fdf382c0d143fef1f307",
10
- "npm_integrity": "sha512-lVNXaRv5US4DTa79djiicoL3Mil284nKiZLReMd2j7XcwfVI2Bnx9yy0UQ1NevbhF/e0LtQ+fk6OSgEy9N3tew==",
8
+ "tag": "v18.2.8",
9
+ "commit": "5e0fc867f8a58dfe8812b5e99b2e7b6a0313da6c",
10
+ "npm_integrity": "sha512-I8JXVNLJb8PfGS6mRGSKNq73+EX+R/GoaRBoMj8HTtOiwF112QXH72UP2klTwoCiR2gTsACbAIWjD0JdrR3A3g==",
11
11
  "qualification": "Runtime-qualified by the Bizar packed-install contract; the bundled docs/source inventory remains pinned to the research commit below."
12
12
  },
13
13
  "comparison_release": {
@@ -1,3 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- export function openkanCommand(args: string[]) { if (args.some(arg => arg.startsWith("--" ) && arg.includes("storage"))) throw new Error("OpenKan storage internals are not a supported adapter surface"); return ["ok", ...args]; }
3
- export async function runOpenKan(args: string[], cwd: string): Promise<{ code: number; stdout: string; stderr: string }> { const argv = openkanCommand(args); return new Promise(resolve => { const child = spawn(argv[0], argv.slice(1), { cwd, stdio: ["ignore", "pipe", "pipe"] }); let stdout = ""; let stderr = ""; child.stdout.on("data", data => { stdout += data; }); child.stderr.on("data", data => { stderr += data; }); child.on("close", code => resolve({ code: code ?? 1, stdout, stderr })); }); }