Skip to content

Change default signature filename to claims.jsonl#591

Open
ralphbean wants to merge 3 commits intosigstore:mainfrom
ralphbean:change-default-signature-filename
Open

Change default signature filename to claims.jsonl#591
ralphbean wants to merge 3 commits intosigstore:mainfrom
ralphbean:change-default-signature-filename

Conversation

@ralphbean
Copy link
Copy Markdown

@ralphbean ralphbean commented Dec 17, 2025

Summary

  • Change default signature filename from model.sig to claims.jsonl to align with OMS bundled attestation conventions (see How do we recommend that OMS signatures and other attestations be named in a model repository? #587)
  • Add backward-compatible signature format support — both legacy model.sig (single JSON) and new claims.jsonl (JSONL) formats are supported during a deprecation period
  • New SignatureFormat enum and format detection auto-detects file format based on extension and content
  • JSONL append semantics — writing to claims.jsonl appends new claims; legacy .sig overwrites with a deprecation warning
  • Verification iterates claims newest-to-oldest, succeeding on the first match
  • Updated all documentation (README, demo notebook, format spec) to reflect the new default
  • The previous default can still be used via the --signature CLI option

Test plan

  • New format_compat_test.py covers format detection, deprecation warnings, and JSONL append behavior
  • Verify model_signing sign produces claims.jsonl by default
  • Verify model_signing verify reads both model.sig and claims.jsonl
  • Verify --signature model.sig override still works

Relates to #587

🤖 Generated with Claude Code

Copy link
Copy Markdown
Member

@mihaimaruseac mihaimaruseac left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that for a period we should support both model.sig (with just the signature) and claims.jsonl (which can contain anything).


More important though, I think we should signal in README and everywhere else that claims.jsonl is appended to (#592 is a step in that direction, but verification should still iterate over all claims to find which one can be verified rather than just the last?)

I'll look more over these over the break / in the new year.

@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 ralphbean force-pushed the change-default-signature-filename branch from 11ed8c3 to 7cc9dca Compare April 9, 2026 19:53
ralphbean added a commit to ralphbean/model-transparency that referenced this pull request Apr 9, 2026
Documents approach to address review feedback on PR sigstore#591 regarding:
- Backward compatibility support for model.sig during transition
- Multi-claim verification strategy for claims.jsonl files

The design covers format detection, deprecation warnings, and
verification logic that iterates through all claims to find one
that verifies successfully.

Assisted-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
@ralphbean ralphbean force-pushed the change-default-signature-filename branch from 7cc9dca to 48092db Compare April 9, 2026 20:50
ralphbean and others added 2 commits April 9, 2026 17:23
Update the CLI default and all documentation examples to use claims.jsonl
as the default signature filename, aligning with the OMS format convention
for bundled attestations. The default can still be overridden with --signature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
Support both legacy model.sig (single JSON) and new claims.jsonl (JSONL)
formats during a deprecation period:

- Add SignatureFormat enum and format detection functions
- Add read_all() to iterate over all claims in JSONL files
- JSONL write appends; legacy .sig overwrites with deprecation warning
- Verification tries each claim newest-to-oldest, succeeds on first match
- Add design document and tests for format detection, deprecation
  warnings, and JSONL append behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
@ralphbean ralphbean force-pushed the change-default-signature-filename branch from 48092db to ce8d43b Compare April 9, 2026 21:24
Signing now reports whether the signature file was created or appended
to. Verification with multi-claim JSONL files now reports which line
matched.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Ralph Bean <rbean@redhat.com>
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