This page is the public schema-status companion to the contract docs. It compares the current schema files to the Beta contract direction and explains what is already aligned, what remains transitional, and what still needs a true Beta schema freeze.
| File | Purpose |
|---|---|
| schema/logit.v1.schema.json | Versioned v0.1 global-config contract. |
| schema/logit.v2.schema.json | Current named-LOGIT registry schema. |
| schema/logit.schema.json | Legacy/general schema alias retained in the repo. |
The repo already has a meaningful v2 schema. The main Beta problem is not “there is no schema.” The real problem is that the schema still carries both portable contract fields and several migration/compatibility aliases at the same time.
That means the current state is:
| Area | Current state |
|---|---|
| Named registries | Supported through defaults plus logits. |
| Version marker | version: "0.2" is defined. |
| Level vocabulary | Current public levels are enumerated. |
| Path-mode vocabulary | file and directory are enumerated. |
| Sink vocabulary | console, file, network, and database are enumerated. |
| JSON versus text | format currently validates text and json. |
| Rotation object | Present with maxBytes and maxFiles variants. |
| Retention object | Present with record, age, and byte-style controls. |
| Redaction object | Present for Python reference behavior. |
| Buffering object | Present for Python reference behavior. |
| Failure policy object | Present for Python reference behavior. |
| Unknown-key rejection | additionalProperties: false is used aggressively, which is good for catching drift. |
The v2 schema currently accepts both canonical and compatibility names such as:
localPath and local_pathoutputDirectory and output_directorypathMode and path_moderemotePath and remote_pathdatabasePath and database_pathfailurePolicy and failure_policyThis is practical for migration, but it means the schema is still serving two purposes at once:
The v2 schema still accepts older field names like:
file_locationnetwork_file_locationdatabase_locationThat is helpful for Alpha compatibility, but Beta still needs a clearer answer to “which names should new docs teach by default?”
The schema includes:
redactionbufferingfailurePolicyThose are real and valuable, but they are not yet portable across all bindings. So the schema currently models both:
That is acceptable for now, but the Beta freeze needs clearer status rules for what is required versus binding-specific.
| Concern | v0.1 schema | v0.2 schema | Audit note |
|---|---|---|---|
| Global versus named loggers | Single global config | Named registry with defaults | v2 is clearly the long-term direction. |
| File output field | file_location |
path, localPath, aliases |
v2 is more flexible but still more permissive than final Beta likely should be. |
| Remote output field | network_file_location |
remotePath, aliases |
Alpha remote-path baseline is represented. |
| Database store | none | databasePath and retention fields |
v2 carries Python reference retained-store behavior. |
| Advanced runtime controls | none | buffering, failure policy, redaction | Useful, but not yet universal. |
These areas are already in good shape relative to the public contract:
LOGIT registriesThese areas are real, but still need Beta cleanup:
These areas still need dedicated Beta decisions:
logit.beta.schema.json successor or evolve logit.v2.schema.jsonIf you are writing new config today, prefer:
localPathoutputDirectorypathModeremotePathdatabasePathlevelsinksformatmetadatarotationretentionTreat these as compatibility or migration names rather than primary teaching vocabulary:
local_pathoutput_directorypath_moderemote_pathdatabase_pathfile_locationnetwork_file_locationdatabase_locationThe remaining schema-hardening work is pretty concrete:
Even before the final schema freeze, the current state is already useful:
The goal of this audit is not to pretend the schema freeze is done. The goal is to make the current state legible so Beta work can proceed without guesswork.