You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Server provenance: are issued_at and tool_count decided by value? #485
Follow-up to #404, as promised there. Section 3.2.2's "What counts as an integer" decides by value which numbers are integers for the safe-integer range, and _canonical_bytes applies that to provenance records. It does not say which provenance members are typed integer. spec/server-provenance-v1.md (and v2, which keeps v1's members) describes issued_at as "Unix seconds when this record was signed" and tool_catalog.tool_count as "Number of tools", with no type. provenance.py checks both by Python type and refuses issued_at written 1760000000.0, while the same value in a Trust Record's iat is accepted.
Two ways to settle it:
Type both as integer in v1 (and so v2) and decide them by value, as iat is.
Keep them type-based and say so in v1, so a second implementation knows to refuse the float spelling.
@chernistry option 1, by value. §3.2.2 already gives the reason: RFC 8785 signs the value, so a verifier deciding by spelling refuses records another verifier accepts over the same signed bytes, and the provenance record is canonicalized under that section.
Please open the PR: both members typed integer in server-provenance-v1.md (v2 inherits them), provenance.py deciding them by value with the bool and range guards kept, and vectors in pairs, 1760000000.0 accepted beside 1760000000.5 refused. I will carry the spec sentence as a maintainer correction, and leave CHANGELOG.md out.
Activity
github-actions commentedon Oct 12, 2026
🟡 Contributor Check: MEDIUM
Automated check by AgenTrust Contributor Check.
imran-siddique commentedon Oct 12, 2026
@chernistry option 1, by value. §3.2.2 already gives the reason: RFC 8785 signs the value, so a verifier deciding by spelling refuses records another verifier accepts over the same signed bytes, and the provenance record is canonicalized under that section.
Please open the PR: both members typed integer in
server-provenance-v1.md(v2 inherits them),provenance.pydeciding them by value with the bool and range guards kept, and vectors in pairs,1760000000.0accepted beside1760000000.5refused. I will carry the spec sentence as a maintainer correction, and leaveCHANGELOG.mdout.