Migrate from 0.54 to the 1.0 preview
This guide covers upgrading from 0.54 or an earlier 1.0 Beta to the current preview on npm’s next tag. Beta iteration continues; these are the current migration boundaries, not an API freeze or an RC release plan.
npm install --global oh-my-knowledge@next
omk --versionUse a disposable project or back up both the project .omk/ directory and ~/.oh-my-knowledge/ before trying the preview. To return to the stable channel, run npm install --global oh-my-knowledge@latest.
Upgrade from Beta.13 to Beta.14
The library, artifact authoring, ongoing revision, and change review require 1.0.0-beta.14 or later. The website's SDK screenshots come from a main-source acceptance run, not Beta.13. Check omk --version after installing, then follow the knowledge maintenance workflow; local reading makes no model call.
This release includes BREAKING-CLI, BREAKING-SCHEMA, and BREAKING-COMPARABILITY changes merged after Beta.13:
- Back up the explicitly selected knowledge directory, project
.omk/, and machine~/.oh-my-knowledge/. The knowledge directory may be elsewhere; backing up only global state is insufficient. - Remove retired commands and fields:
list,promote,rollback,eval --no-evidence, andobserve --feedback/--no-feedback. Existing managed records are preserved but not read; see the final section of this guide. - Do not treat old extraction output as the current structure: Beta.14 entity history is v2 and extraction runs are v4. Old entity history v1, run v3, and other old formats are not read, resumed, or migrated. Old knowledge v2 content remains readable, but its old entity-analysis binding is unavailable. Choose a new empty knowledge directory, extract again from original logs, and review manually. Extraction calls a model; review transmission scope and runtime first. Original files remain, and new entities do not take over old knowledge bindings automatically. See the entity extraction contracts.
- Give new measurements a new identity: Beta.14 extraction uses
knowledge-extraction-v14. Prompt bytes, admission semantics, and run identities changed; historical reports and scores are not recomputed, and incompatible old and new results cannot form one comparison. Reproduce historical results with their frozen baseline. Existing quality reports do not establish overall quality for the new version.
The maintenance path supports sources, precise revisions, and retained history. It does not automatically prove dynamic SDK effects, time saved, or cross-agent reuse benefits.
Gold limitation: omk eval gold init still creates a generic scaffold; align real sample IDs manually. Gold comparison reports human/judge agreement and post-hoc reliability without changing an existing run’s release decision. See the CLI migration selectors below.
The Beta.14 identities above describe that published release. Current main has later extraction and review capabilities with different identities and storage boundaries; use the capability tiers and current generated contract before following current-main commands. A main merge is not a release, and the historical instructions above do not supply a migration for later formats.
1. Start a new evidence history
The preview uses the domain-oriented storage v2 layout. It does not read, move, delete, or convert the earlier layout. Existing data remains on disk but is invisible to the new readers.
- New project records live under
.omk/eval/,.omk/doctor/,.omk/observe/,.omk/backups/, and.omk/state/. - Machine-level data uses the same domains under
~/.oh-my-knowledge/. - Evaluation runs are authenticated Core bundles addressed by
runId; their canonical report isreport.json. - Reports created by 0.54 cannot be resumed, opened in the new Studio, compared with Gold, or used by
omk evolve. Keep 0.54 installed separately if you need to inspect them. - Observation inbox containers still use schema v2, but their embedded
observe-experiencereport must use schema v3. Experience v2 reports are no longer converted; inbox readers skip the containing file without modifying it. Re-ingest the original trace withomk observe ingest <trace-dir>to create a current report.
Do not copy scores from an old report into the new layout. Re-run the evaluation so the sealed plan, lineage, Runtime identity, and decision evidence are produced together. See the Core persistence contracts and storage layout v2 for the full boundary.
2. Create a new eval-samples document
The preview uses the strict omk.eval-sample-set/v3 contract. Earlier sample documents are not read or converted. Generate a new document with omk init or omk sample, then review its criteria and weights before using it as evidence.
Each rubric is a map of independently judged dimensions. Every dimension contains one criterion and a positive weight; weights within a sample must sum to 1. Keep exactly one canonical eval-samples.json or eval-samples.yaml in each auto-discovery scope.
Validate the result before a paid run:
omk eval --dry-run --samples eval-samples.yaml \
--control code-review-v1 --treatment code-review-v2See the eval sample format and its published JSON Schema for the complete v2 contract.
3. Re-check external URL inputs
Real URLs in sample prompt or context are now resolved before execution, and the resolved bytes are sealed into the Evaluation Definition. Resolution fails closed instead of silently leaving the URL as literal text.
- Configure an MCP resolver for private or authenticated documents.
- HTTP resolution accepts constrained, textual UTF-8 content on standard protocol ports.
urlPatternsentries are exact hostnames or*.hostnamewildcards, not path or query substrings.- Use RFC example domains when a URL is intentionally literal documentation text.
Runs that previously measured a real URL as literal text are not directly comparable with runs that measure its resolved content. Start a new comparison series after migration.
4. Update CLI automation
Remove --no-cache from commands and noCache from eval.yaml. Product evaluations already disable Execution and Evaluation caches; the removed options have no replacement. The existing --resume contract is unchanged. Old config fields are rejected with a removal hint.
omk initstill creates three low-cost starter cases. Useomk init --samples 20for the larger first-party starter set; review or replace it before treating it as release evidence.omk initno longer overwrites scaffold files unless--forceis explicit.- Studio and evaluation previews no longer stop an existing OMK listener on a port conflict. Choose a free port or stop the old service. To replace a verified OMK service deliberately, run
omk studio --port <port> --takeoverwith the same--hostwhen applicable. Startup distinguishes the bound address from the local URL and same-family network interface candidates; candidates do not guarantee network reachability. See the Studio CLI reference. omk eval --resumeaccepts a CorerunId, not a report path.omk eval gold compareaccepts a CorerunIdand requires explicit--target,--evaluator, and--metricselectors. Pass an optional--minimum-alphaonly when your domain has chosen a reliability threshold; the post-hoc assessment uses the confidence-interval lower bound and never changes the release verdict.omk evolveno longer accepts the former diagnostic, sample-repair, report-reuse, holdout, significance, or test-split switches. Candidate acceptance and source write-back are governed by the Core decision; run an independent release validation set outside the authoring loop.
Check the current CLI reference rather than copying 0.54 flags into scripts.
5. Update embedded Node.js hosts
The published API is ESM-only on Node.js 22 or newer. Imports are restricted to the package export map; oh-my-knowledge/dist/* is private.
- The
oh-my-knowledge/package.jsonexport is removed, with no replacementversionexport. Remove imports of this metadata; record dependency versions through your package manager or lockfile instead.omk --versionremains available for CLI diagnostics. - Use
oh-my-knowledgefor the ordinaryevaluate()andcheckExecutor()façade, Runtime assembly, builders, and lifecycle SPI. - Replace the fixed
{ executor, control, treatment, evaluator }call with{ dataset, variants, evaluators, comparisons, analyses, experiment, policy }. Bind execution and config undervariant.execution, sampling underexperiment.sampling, and statistical requests inanalyses[]. An optionaldecisionselects an analysis byanalysisId. Pass run options such asrunId,signal, andonEventas the second argument; old shapes are not read. - Move former package-root Core imports to
oh-my-knowledge/eval-core; use that subpath for Engine construction, staged execution, admission, verification, comparability, Series, and Core JSON Schemas. - Import
createEvaluationEngineonly fromoh-my-knowledge/eval-core. UserunEvaluationfromoh-my-knowledgefor a standard complete run over preassembled inputs. - Use
oh-my-knowledge/mcporoh-my-knowledge/dsh-pluginfor those integration surfaces. - Replace synchronous
require()with ESM imports or dynamicimport(). - Engine Runtime assembly now uses binding resolvers that return the resolution and configured port together.
- Series Analysis and Decision Runtimes open run-scoped sessions with
openRun()anddispose(); Series runs require arunIdand return a terminal status union.
Use the Runtime API reference for service integration and the Core API reference for advanced staged integration.
Measurement boundary
The migration preserves the frozen evaluator prompts, five scoring layers, comparison-family Bootstrap formula, Krippendorff alpha point formula, and length-debias toggle semantics. Agreement interval v2 intentionally adopts Krippendorff's fixed-expected-disagreement reliability bootstrap; v1 remains available only for exact replay. The migration does not preserve artifact schemas, storage paths, digests, Runtime identities, or the interpretation of unresolved external URLs. Compare only runs that the new Core marks compatible; do not splice old and new score histories manually.
Managed lifecycle removal (BREAKING-CLI)
The list, promote, and rollback commands, the eval option --no-evidence, and the observe options --feedback / --no-feedback have been removed without aliases or compatibility entry points. Remove these calls from scripts and use doctor and eval results and reports to decide subsequent actions. File restoration and deployment belong to your version-control and release workflows. omk install now only installs; it no longer registers a lifecycle. Studio managed-history pages and /api/managed have also been removed.
Existing files under .omk/governance/managed/ or OMK_HOME/governance/managed/ remain on disk untouched. The new version does not read, rewrite, migrate, or automatically delete them. Archive the original JSON yourself if needed; installed skills do not need reinstalling. Core evaluation artifacts, content identities, and measurement semantics are unchanged.
Install command surface (BREAKING-CLI)
omk install installs only skills. Omit --kind or use --kind skill; prompt, agent, and workflow are rejected with exit code 2 before source resolution or any installation, including for the built-in omk-agent-skill.
Replace --to all with --to codex. The only target values are auto (the default, detects a Codex/AGENTS directory) and codex (installs there without prior detection). Comma-separated target lists are also rejected with exit code 2. Use --dest <dir> for a custom skill root. No alias for all or target lists is retained.
Previously installed skills and historical metadata remain untouched and do not need reinstalling. Explicit installation still follows the existing --force, --dry-run, and source/target overlap protections. This changes CLI validation, not artifact formats or measurement semantics.