Skip to content

Latest commit

 

History

History
104 lines (81 loc) · 6.4 KB

migration.md

File metadata and controls

104 lines (81 loc) · 6.4 KB

Research lexical migration

This repository contains four lexical/search packages migrated from the Relojban poetry research checkout at accepted source ref 7a05516b5d429f3184eaf6a2bde2fd9c5d12e9bf. The migration preserves the source archive, record identity encoding, proposal hash domain, search policy IDs, query JSON, and relojban-search executable name. It changes package identities and workspace paths.

Package Path
vlajmaji-lexicon crates/lexicon
vlajmaji-store crates/store
vlajmaji-search crates/search
vlajmaji-cli crates/cli

The search workspace now resolves bauske-phonology from the sibling repository at ../bauske/crates/phonology. Its package and Rust library identities were renamed in the Bauske migration; phonological behavior and the relojban-search executable remain unchanged. A standalone V checkout must have the Bauske sibling at that path to build.

The source corpus and its acquisition records remain in the Relojban poetry research checkout. Synthetic tests run by default. The complete corpus integration test is explicitly ignored by default and requires RELOJBAN_RESEARCH_ROOT pointing to that checkout. Run it from this repository with:

RELOJBAN_RESEARCH_ROOT="/Users/oubiwann/Library/Application Support/ChatGPT-Profiles/personal/codex-home/.chatgpt-projects/g-p-6a8c72d334048191887d4e00472f8430/relojban-poetics" cargo +1.98.0 test --locked -p vlajmaji-lexicon --test contract full_corpus_import_reconciles_all_input_populations -- --ignored --exact

The corpus importer accepts a research root and output archive path:

cargo +1.98.0 run --locked -p vlajmaji-lexicon --example import_corpus -- "/Users/oubiwann/Library/Application Support/ChatGPT-Profiles/personal/codex-home/.chatgpt-projects/g-p-6a8c72d334048191887d4e00472f8430/relojban-poetics" "/tmp/vlajmaji-corpus-replay.archive"

Historical E02/E03 manifests and probes remain unchanged records of Arc02 runs against the original source baseline 7a05516b5d429f3184eaf6a2bde2fd9c5d12e9bf. Replaying those historical commands requires a separate checkout of that baseline; the old source paths no longer exist in the current R checkout. The renamed V build, CLI and explicitly gated corpus command documented here are the active commands for this destination.

The preserved corpus archive used for migration checks has SHA-256 4e5c30e978bde631349e1107599f3ef9738c1f63257ba280e146d2256c7cef5a and is 28,320,417 bytes. This identifies the replay oracle, not a copied corpus distribution.

Current workspace commands use the renamed package names and preserved CLI binary:

cargo +1.98.0 build --locked --workspace
cargo +1.98.0 run --locked -p vlajmaji-cli -- build <ARCHIVE> <STORE>
cargo +1.98.0 run --locked -p vlajmaji-cli -- info <STORE>
cargo +1.98.0 run --locked -p vlajmaji-cli -- search <STORE> --query '{"operation":"exact","spelling":"farvi"}'

The source-to-destination package/path map and historical replay locations are recorded in R's research/vlajmaji-migration.md; the subsequent phonology namespace migration is recorded in research/bauske-migration.md.

The initial V README description and its existing LICENSE and .gitignore are preserved as starting repository materials. Only V's preexisting LICENSE is the destination repository notice. R has no projectwide license selection, and none of the moved source files is an originating Apache notice file. This migration does not declare the source code relicensed and adds no inferred Cargo license metadata.

0.2.0 development command

The migration and 0.1.0 command identities above are historical. Starting with the 0.2.0 development cycle, the CLI binary is vlajmaji. Package names and archive/search identities remain unchanged. make build installs the current debug binary to ./bin/vlajmaji; the Cargo commands above also select this renamed binary automatically.

Versioned in-memory dictionary model

The S02 model/adapter is documented in dictionary-model.md, with its candidate standards correspondence and explicit gaps in dictionary-standards-map.md. To adapt an accepted legacy archive, construct the current SourceRegistry, provide the source-aware DictionaryMetadata rather than asking the adapter to infer it, call Dictionary::from_legacy_archive with the exact archive bytes, and serialize/reload with Dictionary::to_json_bytes / Dictionary::from_json_bytes. The exact old archive remains attached and is validated as a subset. Relational persistence is documented below; grouped lookup is a later slice.

Relational dictionary store

The S03 DictionaryStore is a distinct immutable persistence format; it does not replace or migrate the searchable schema-1 SqliteStore. To rebuild from an existing legacy search store, keep its directory intact and use a different fresh destination:

  1. Open the old store with SqliteStore::open and obtain its exact archive_bytes().
  2. Construct the validated SourceRegistry and DictionaryMetadata explicitly from the source-aware records already accepted by the model. The adapter does not assign missing lexical identities or infer source claims.
  3. Call Dictionary::from_legacy_archive(&archive, registry, metadata), then DictionaryStore::create("new-dictionary-store", &dictionary).
  4. Drop the returned store, reopen it with DictionaryStore::open, and request DictionaryStoreVerificationCheck::All to validate the read-only snapshot and complete relational projection.

The old SQLite store and archive are read-only inputs to this procedure. The accepted legacy archive may omit model-only opaque records; such records are not synthesized during rebuild. See the schema-1 field map and lifecycle guide and the dictionary_store public example.

Local jbotci export normalization

The S01 import_jbotci_export API accepts complete raw and metadata byte captures plus explicit expected hashes. It validates before returning a model, retains ordered native fields and duplicate keys, and excludes unsupported rows without discarding their raw source. jbotci-import writes a fresh canonical dictionary file; jbotci-check validates without writes and can compare a release. The jbotci import guide documents the exact field map, metadata grammar, source-notice limitation, pinned hashes, and replay example. Data acquisition and redistribution are outside this local adapter.