Skip to content

Implement append functionality for claims.jsonl attestations#592

Closed
ralphbean wants to merge 4 commits intosigstore:mainfrom
ralphbean:append-to-claims-jsonl
Closed

Implement append functionality for claims.jsonl attestations#592
ralphbean wants to merge 4 commits intosigstore:mainfrom
ralphbean:append-to-claims-jsonl

Conversation

@ralphbean
Copy link
Copy Markdown

Implements the unified bundle layout from issue #587, where attestations accumulate in a single claims.jsonl file as the model moves through its lifecycle.

Changes

  • Signature write() now appends to existing claims.jsonl files instead of overwriting
  • Each signature is written as compact JSON on a single line (JSONL format)
  • Signature read() reads the last line (most recent attestation) for backward compatibility
  • Updated both sign_sigstore.py and sign_sigstore_pb.py implementations
  • Updated test helpers to handle JSONL format

Test-Driven Development

This was implemented using RED-GREEN-REFACTOR:

  • RED: Added test_append_to_existing_claims_jsonl that initially failed
  • GREEN: Implemented append functionality to make the test pass
  • REFACTOR: Updated existing tests to handle JSONL format

Example Usage

# First signing creates the file
model_signing.signing.sign("my-model", "claims.jsonl")

# Second signing appends to the file
model_signing.signing.sign("my-model", "claims.jsonl")

# File now contains two lines, each a complete sigstore bundle

This allows attestations to accumulate as models move through their lifecycle (training → registry → security review → production) without invalidating earlier signatures.

Builds on PR #591

Related to #587

This aligns with the OMS format conventions where claims.jsonl is the
standard filename for bundled attestations.

The default can still be overridden using the --signature CLI option.

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
Updated all examples in README.md, docs/demo.ipynb, and
docs/model_signing_format.md to reflect the new default signature
filename.

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
This implements the unified bundle layout from issue sigstore#587, where
attestations accumulate in a single claims.jsonl file as the model
moves through its lifecycle.

Changes:
- Signature write() now appends to existing claims.jsonl files
- Each signature is written as compact JSON on a single line (JSONL format)
- Signature read() reads the last line (most recent attestation)
- Updated both sign_sigstore.py and sign_sigstore_pb.py implementations
- Updated test helpers to handle JSONL format

Test-Driven Development:
- RED: Added test_append_to_existing_claims_jsonl that failed
- GREEN: Implemented append functionality to make test pass
- Updated existing tests to handle JSONL format

Related to sigstore#587

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
@ralphbean ralphbean requested review from a team as code owners December 17, 2025 22:27
Instead of parsing and re-encoding JSON, simply strip newlines from
the bundle.to_json() output. This achieves the same result (compact
JSON on a single line) with much simpler code.

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
@mihaimaruseac
Copy link
Copy Markdown
Member

Let's discuss these PRs (#592 and #591) on the next model signing SIG group. I'd like to have these merged before the next release, but we should make sure this is done in a backwards and forwards compatible way.

@mihaimaruseac mihaimaruseac added the discusion pending Label for PRs and Issues that we should discuss at a Model Signing SIG Meeting label Mar 30, 2026
@ralphbean
Copy link
Copy Markdown
Author

Dropping this. Will move everything in to #591.

@ralphbean ralphbean closed this Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discusion pending Label for PRs and Issues that we should discuss at a Model Signing SIG Meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants