Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Identifiersstandalone service schema (exported asiscc_schema.Identifiers) for registry/gateway responses listing an asset's external identifiers, with an optionalisccsubject binding.Identifieritem model (scheme,code, optionalscope, optionalprimary) for constructing typed identifier objects.Core metadata (
IsccMeta)identifierfromstr | list[str]to accept a typedIdentifierobject or a mixed list of strings and objects. Legacy string forms remain valid.IsccMetaorIdentifiers— no nested@context,$schema, or@typeis emitted.identifierlists are rejected (minLength: 1on the string branches).Service metadata
isccto standaloneGenAI, aligning it withTDMandIdentifiersas subject-bearing service records.additionalProperties: true), including standalone and inlineGenAI(flipped fromfalse).0.0,[],{},"",falseare 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 skippeduv run poe allis idempotent (no source/artifact drift)test_service_identifier.py,test_service_identifiers.py,test_service_genai.py