softschema 0.1.2
Highlights
Breaking — public API renamed. A two-prefix naming convention now organizes the
public surface: Soft* for field-level authoring metadata and Schema* for
schema-side concepts.
| Old | New |
|---|---|
SField, SFieldMeta |
SoftField, SoftFieldMeta |
SoftschemaStatus |
SchemaStatus |
SoftschemaProfile |
SchemaProfile |
SoftschemaStage |
SchemaStage |
SoftschemaMetadata |
SchemaMetadata |
SoftschemaWarning |
SchemaWarning |
SoftschemaBinding |
Contract (with Contract.id instead of .contract_id) |
SoftschemaRegistry |
Contracts |
parse_softschema_metadata |
parse_schema_metadata |
contract_binding_missing structural error |
contract_unknown |
validate_artifact(..., binding=...) keyword and the binding= field on
ArtifactValidationResult are now contract= (this also changes the JSON output key
from softschema validate).
SoftField repositioned as optional and per-field. The new "Annotate Fields With
SoftField" playbook in the guide explains when SoftField pays off. Plain Pydantic
Field stays the default; reach for SoftField only when a specific consumer reads a
specific metadata key (template generators, owner-filtered prompts, tier-aware QA,
generated runbook sections).
Documentation rewrite. README now leads concept-first, with the soft/hard schema
contrast and a concrete promotion path. Doc links live inline where the doc is
mentioned rather than in a bottom "Docs" list. A Development and Contributing section
at the bottom points at docs/development.md.
Movie example expanded. Demonstrates the spec rule that softschema neither forbids
nor interprets additional top-level frontmatter keys: the example now carries a
top-level title: alongside softschema: and movie:. Validate commands updated to
pass --envelope movie since auto-inference cannot pick between multiple non-softschema
top-level keys. New tests cover both the coexistence and the disambiguation error.
Upgrade notes
Pre-1.0; no compatibility shims. Adopters update imports as listed above. The renames
are mechanical (a regex sweep covers most of it).