Skip to content

v0.8.0: Identifier objects and Identifiers service schema#42

Merged
titusz merged 4 commits into
mainfrom
v0.8.0
Jun 4, 2026
Merged

v0.8.0: Identifier objects and Identifiers service schema#42
titusz merged 4 commits into
mainfrom
v0.8.0

Conversation

@titusz

@titusz titusz commented Jun 4, 2026

Copy link
Copy Markdown
Member

Summary

Adds the Identifier objects feature (Issue #41) for the 0.8.0 development cycle: typed external identifiers alongside the existing bare-string form, plus a new registry-discoverable Identifiers service schema.

New schemas

  • Identifiers standalone service schema (exported as iscc_schema.Identifiers) for registry/gateway responses listing an asset's external identifiers, with an optional iscc subject binding.
  • Identifier item model (scheme, code, optional scope, optional primary) for constructing typed identifier objects.

Core metadata (IsccMeta)

  • Widened identifier from str | list[str] to accept a typed Identifier object or a mixed list of strings and objects. Legacy string forms remain valid.
  • Identifier objects are bare when nested in IsccMeta or Identifiers — no nested @context, $schema, or @type is emitted.
  • Empty-string entries inside identifier lists are rejected (minLength: 1 on the string branches).

Service metadata

  • Added optional iscc to standalone GenAI, aligning it with TDM and Identifiers as subject-bearing service records.
  • All Service objects are now forward-compatible with extension fields (additionalProperties: true), including standalone and inline GenAI (flipped from false).
  • Preserve falsy extension-field values on Service objects (0.0, [], {}, "", false are no longer normalized away).
  • recover_context(..., schema="<name>-<version>.json") now works with bare versioned standalone schema names.

All derived artifacts (Pydantic models, JSON Schema, JSON-LD context, docs) were regenerated via poe all.

Test plan

  • uv run poe test — 249 passed, 1 skipped
  • uv run poe all is idempotent (no source/artifact drift)
  • New tests: test_service_identifier.py, test_service_identifiers.py, test_service_genai.py

titusz added 4 commits June 3, 2026 07:06
Start the 0.8.0 development cycle. The version-pinned archive filenames
mean the build writes new *-0.8.0 artifacts and leaves the released
0.7.0 archives untouched.

- Bump version in pyproject.toml, iscc_schema/__init__.py, uv.lock
- Update hardcoded version assertion in test_iscc_api.py
- Add '0.8.0 - Unreleased' CHANGELOG heading
- Regenerate models, JSON Schema, JSON-LD context, and docs via poe all
- Add version-pinned 0.8.0 schema/context archives
Implement Issue #41. Introduce typed external identifiers alongside the
existing bare-string form and a registry-discoverable Identifiers service
record.

Schemas:
- Add the standalone Identifiers service schema (exported as
  iscc_schema.Identifiers) for registry/gateway responses listing an
  asset's external identifiers, with an optional iscc subject binding.
- Add the Identifier item model (scheme, code, optional scope, optional
  primary) for constructing typed identifier objects.
- Widen IsccMeta.identifier from str | list[str] to accept a typed
  Identifier object or a mixed list of strings and objects; legacy string
  forms remain valid. Reject empty-string entries (minLength: 1).
- Identifier objects are bare when nested in IsccMeta or Identifiers: no
  nested @context, $schema, or @type is emitted.

Service metadata:
- Add optional iscc to standalone GenAI, aligning it with TDM and
  Identifiers as a subject-bearing service record.
- Make all Service objects forward-compatible with extension fields
  (additionalProperties: true), including standalone and inline GenAI.
- Preserve falsy extension-field values on Service objects, so 0.0, [],
  {}, "", and false are no longer normalized away.
- Make recover_context(..., schema="<name>-<version>.json") work with
  bare versioned standalone schema names.

Regenerate models, JSON Schema, JSON-LD context, and docs via poe all.
Replace the 0.8.0 "Unreleased" heading with the release date, add a
changelog note for the published JSON Schema identifier-array validation
tightening, and regenerate the docs changelog. Cuts the v0.8.0 release.
@titusz titusz merged commit 10e8677 into main Jun 4, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant