Skip to content

docs(schema): remove em dashes from Trust Record descriptions - #228

Merged
imran-siddique merged 1 commit into
mainfrom
fix/schema-description-em-dashes
Aug 27, 2026
Merged

docs(schema): remove em dashes from Trust Record descriptions#228
imran-siddique merged 1 commit into
mainfrom
fix/schema-description-em-dashes

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

House style is no em dashes in anything we publish. These two sentences are published three times over: in the normative schema, in the copy packaged with the SDK, and at the $id URL agentrust-io.com serves, which is what a validator fetches when it follows a Trust Record's schema reference.

The change

Before After
A TRACE v0.2 Trust Record — hardware-attested governance evidence… A TRACE v0.2 Trust Record: hardware-attested governance evidence…
Confirmation key (RFC 8747) — binds the Trust Record to the TEE-held signing key. Confirmation key (RFC 8747) that binds the Trust Record to the TEE-held signing key.

Rewritten rather than repunctuated, so neither reads like a dash was swapped for a colon and left dangling.

Files: schema/trace-claim.json (normative), src/agentrust_trace/schema/trace-v0.2.json (packaged, guarded by test_validate.py), and src/agentrust_trace/schema/trace-v0.1.json, which carries the identical two sentences. Leaving v0.1 behind means the next person greps, finds a hit, and cannot tell whether it was missed or deliberate.

Description text only. No constraint, property, required list or $id moves. Nothing that validates today stops validating.

Why this one goes first

agentrust-io.github.io serves schema/trace-v0.2.json, and its schema-parity workflow byte-compares that file against trace-spec/schema/trace-claim.json on every PR and daily. The published copy cannot be cleaned until this lands. The site PR re-syncs it immediately afterwards.

Note on two local failures

test_safe_integer_range::test_every_schema_in_the_repository_is_classified and the delegation-link generator fixture test fail on Windows before this change as well: _schemas_on_disk() compares os.sep-joined paths against forward-slash literals. Green on Linux CI, untouched here, and worth a separate fix.

🤖 Generated with Claude Code

https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak

House style is no em dashes in anything we publish, and these two sentences
are published three times over: in the normative schema, in the copy packaged
with the SDK, and at the $id URL agentrust-io.com serves, which is what a
validator fetches when it follows a Trust Record's schema reference.

Two strings, rewritten rather than repunctuated:

  "A TRACE v0.2 Trust Record — hardware-attested governance evidence"
  "A TRACE v0.2 Trust Record: hardware-attested governance evidence"

  "Confirmation key (RFC 8747) — binds the Trust Record to the TEE-held key"
  "Confirmation key (RFC 8747) that binds the Trust Record to the TEE-held key"

The v0.1 packaged schema carries the identical two sentences and is cleaned in
the same change. Leaving one behind means the next person greps, finds a hit,
and cannot tell whether it was missed or deliberate.

Description text only. No constraint, property, required list or $id moves, so
nothing that validates today stops validating.

This is a prerequisite: agentrust-io.github.io serves schema/trace-v0.2.json
and its schema-parity workflow byte-compares that file against
trace-spec/schema/trace-claim.json. The published copy cannot be cleaned until
this lands, and the site PR re-syncs it immediately afterwards.

Unrelated, and pre-existing on a clean tree: test_safe_integer_range and the
delegation-link generator fixture test fail locally on Windows because
_schemas_on_disk() compares os.sep-joined paths against forward-slash
literals. Green on Linux CI, untouched here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak
@imran-siddique
imran-siddique requested a review from a team as a code owner August 27, 2026 15:08
@imran-siddique
imran-siddique merged commit 86895c3 into main Aug 27, 2026
8 checks passed
@imran-siddique
imran-siddique deleted the fix/schema-description-em-dashes branch August 27, 2026 15:09
imran-siddique added a commit to agentrust-io/agentrust-io.github.io that referenced this pull request Aug 27, 2026
… one (#40)

* style: remove every em dash from the site, and guard against the next one

The no-em-dash rule was already house style. The site carried twenty-six
occurrences anyway, across seven files, and the reason is visible in where they
were hiding: a page title, an image alt attribute, a JSON data file, two source
comments, and four loading placeholders. None of those are places prose review
looks.

Twenty-four em dashes and two en dashes, rewritten rather than repunctuated, so
none of them reads like a dash was swapped for a colon and left dangling:

  "Marketplace - Build with..."      -> "Marketplace: Build with..."
  "Toolkit-from framework adapters"  -> "Toolkit, from framework adapters"
  "Terminal 1 - leave running"       -> "Terminal 1: leave running"
  "every agent action - signed by"   -> "every agent action, signed by"
  "Name A-Z" / "Name Z-A"            -> "Name A to Z" / "Name Z to A"

The four in the Marketplace hero were not prose. They are the placeholder shown
while the catalog loads, where an em dash stood in for a number that has not
arrived yet. Replaced with an ellipsis, which reads as "still loading" rather
than as punctuation.

data/adoption.json was not in the original sweep because it arrived in #38
while this was in progress, which is the argument for the check rather than
against it.

tools/check-dashes.js runs in CI on every PR. It builds its offender table from
code points rather than literals, because a checker containing the characters
it bans reports itself, and the fix somebody reaches for at that point is an
exemption for the checker. schema/ is exempt, deliberately: those files are
byte-for-byte mirrors of trace-spec enforced by schema-parity, so a dash there
is an upstream fix followed by a re-sync, and failing CI here for something CI
here cannot act on only teaches people to ignore it.

The same workflow now runs marketplace/marketplace.test.js, which covers the
escaping and URL-scheme guards added in #31 after the catalog was found to be
rendered from remote JSON without them. It was never wired to a workflow, so it
has been passing or failing unobserved since.

schema/trace-v0.2.json is re-synced from trace-spec rather than hand-edited,
because schema-parity is a byte comparison and a partially-updated mirror is
not a mirror. That pulls in more than the two descriptions: the published copy
had already drifted, and the scheduled parity check has been RED since
2026-08-24. Anything fetching the canonical $id URL to validate a Trust Record
has since been validating against a schema missing $defs/canonicalizableValue,
the safe-integer maxima on iat, and the references block. The re-sync fixes
that too. Upstream: agentrust-io/trace-spec#228.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak

* fix(schema): re-sync the two revocation mirrors as well

The parity job guards three published schemas as a set, and all three had
drifted. Cleaning only trace-v0.2.json left the job red for the other two,
which is both a broken check and a half-fix: the revocation schemas are
published at the same $id pattern and fetched by the same verifiers.

The drift is three "maximum": 9007199254740991 constraints, the safe-integer
bounds upstream added alongside the ones in trace-v0.2.json. Until now the
published copies accepted revocation records carrying integers no JSON parser
round-trips reliably.

No dashes in either file, which is why the original sweep did not reach them.
Re-synced from upstream rather than hand-patched, for the reason in the
previous commit: parity is a byte comparison and a partially-updated mirror is
not a mirror. Both $id values verified unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NL8o3PXq6kfs2SdmBv6ak

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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