v0.1.3: Obligation-First Level 2 conformance - #2
Merged
Conversation
Obligation-First 0.4.0 made /.well-known/obligation-first-naming-profile.jsonld the standard for declaring an adopter's IRI scheme. EveryAILaw and AI Incident Law both publish one; PubLedge did not, despite being the adopter whose @id grammar diverges most from the spec's opacity guidance. Without a profile there is nothing to check that divergence against. The profile is generated in build-extras.js rather than hand-placed, because docs/ is build output. Declarations are descriptive, derived from what the records actually carry: the void:uriRegexPattern for each entity type is verified against all 112 published records, and the crosswalks list states what each type actually supplies (Obligation and Determination supply none today). PubLedge mints no Proceeding or Allegation records, so those types are absent rather than declared empty. Also adds check:of, a thin wrapper delegating to the shared version-check script in obligation-first, so a spec bump surfaces here instead of drifting. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Publishes the naming profile obligation-first has required since 0.4.0 and brings the repo to Level 2. Also picks up the Colorado ADMT obligation work that had accumulated in Unreleased. The profile declares "obligation-first >=0.4.0 <0.6.0" rather than pinning a minor. PubLedge publishes no ObligationCategory records, so it has no reason to floor at 0.5.0, and the range lets it ride that additive release instead of going red in lockstep with a change that does not affect it. Two eval gaps fixed, both surfaced by the bump rather than by review: - eval-manifest-scope hardcoded RELEASE_NOTES-v0.1.2.md in its canonical-source list, so renaming the file for a release would have made the eval assert a path that no longer exists. It now derives the filename from package.json. - scripts/check-of-version.js had no MANIFEST.yaml entry, so a tracked tooling file was outside the integrity manifest. Added. The docs/ churn is the generated site: the version string appears in every page footer, and eval-generated-tree-parity requires docs/ to match a clean build. npm publish and the MCP registry update for 0.1.3 are a separate manual step and have NOT been performed. server.json declares 0.1.3 because eval-discovery-contract requires it to match package.json. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
check:of skips when it cannot find obligation-first's shared checker. That is right for a developer without a sibling checkout and wrong in CI, where the spec is checked out on purpose: every-ai-law#357 saw the step report green while checking nothing, because the shared script was not yet on obligation-first main. CHECK_OF_REQUIRED=1 turns the skip into a failure. Default behavior is unchanged. PubLedge's own CI does not check obligation-first out today, so nothing here sets it yet; the flag exists so the wrappers stay identical across the three adopters and so a future federation job here can opt in. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The v0.1.3 bump and the CHECK_OF_REQUIRED change edited nine hashed files after their MANIFEST entries were written, so the CI hash gate failed on server.json, package.json, CHANGELOG.md, PROTOCOL.md, README.md, PROJECT_CONTEXT.md, and three scripts. Recomputed with scripts/validate-hashes.sh --update. I had added the scripts/check-of-version.js entry by hand earlier in this branch rather than through that script, which is what let the drift accumulate unnoticed locally: nothing in the default `npm run evals` path checks hashes, only CI does. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Publishes the naming profile obligation-first has required since 0.4.0, bringing PubLedge to Level 2. Also picks up the Colorado ADMT obligation work that had accumulated in
Unreleased.Order-independent with respect to snapsynapse/obligation-first#5 — the profile declares a range that spans both 0.4.x and 0.5.x, so this is green either way.
Why it was missing
EveryAILaw and AI Incident Law have published a naming profile since obligation-first 0.4.0. PubLedge had not, despite being the adopter whose
@idgrammar diverges most from the spec's opacity guidance —utah-mental-health-chatbot-disclosure-2026q2-...encodes jurisdiction and period in the slug. Without a profile there was nothing to check that divergence against.What it declares
Generated in
build-extras.jsrather than hand-placed, becausedocs/is build output.Declarations are descriptive, not aspirational. Each
void:uriRegexPatternis verified against all 112 published records, andcrosswalksstates what each entity type actually supplies — Obligation and Determination supply none today, and the profile says so rather than claiming otherwise. Proceeding and Allegation are absent because PubLedge mints neither.appliesToisobligation-first >=0.4.0 <0.6.0. PubLedge publishes noObligationCategoryrecords, so it has no reason to floor at 0.5.0 and rides that additive release unchanged. That is exactly what rangedappliesTowas added for.Two eval gaps, both surfaced by the version bump
eval-manifest-scopehardcodedRELEASE_NOTES-v0.1.2.mdin its canonical-source list, so renaming the file for a release would have made the eval assert a path that no longer exists. Now derived frompackage.json.scripts/check-of-version.jshad noMANIFEST.yamlentry, leaving a tracked tooling file outside the integrity manifest.Notes for review
The
docs/churn is the generated site: the version string appears in every page footer, andeval-generated-tree-parityrequiresdocs/to match a clean build.npm publishand the MCP registry update for 0.1.3 have NOT been performed.server.jsondeclares 0.1.3 becauseeval-discovery-contractrequires it to matchpackage.json, so until you publish, the registry claims a version npm does not have.Verification
npm run evalspasses all 19.npm run verify,validate,validate:of(112 records), andcheck:ofall green.🤖 Generated with Claude Code