diff --git a/CHANGELOG.md b/CHANGELOG.md index 92c0067..52ca299 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,14 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), Not all v0.1.0-pre history is versioned separately; early drafting work was compressed into a single prerelease entry below. Subsequent releases are tracked individually. -## [Unreleased] +## [0.1.3] - 2026-07-25 + +Adopter-conformance release. Brings PubLedge to Obligation-First Level 2 by publishing the naming profile the spec has required since obligation-first 0.4.0, and picks up the Colorado ADMT obligation work. ### Added +- **Obligation-First naming profile** at `/.well-known/obligation-first-naming-profile.jsonld`, with the tamper-evidence sidecar at `/.well-known/obligation-first-naming-profile-manifest.txt`. EveryAILaw and AI Incident Law have published one since obligation-first 0.4.0; PubLedge had not, despite being the adopter whose `@id` grammar diverges most from the spec's opacity guidance, so there was nothing to check that divergence against. Generated in `build-extras.js` rather than hand-placed, because `docs/` is build output. Declarations are descriptive: each `void:uriRegexPattern` is verified against all 112 published records, and `crosswalks` states what each entity type actually supplies (Obligation and Determination supply none today). Proceeding and Allegation are absent because PubLedge mints neither. +- **`npm run check:of`** asserts the obligation-first checkout in use satisfies the profile's declared range, delegating to the spec's shared `check-adopter-of-version.mjs` so the rule is not reimplemented here. The profile declares `obligation-first >=0.4.0 <0.6.0`: PubLedge publishes no `ObligationCategory` records, so it has no reason to floor at 0.5.0 and rides that additive release unchanged. + - Six Colorado ADMT obligation records extracted from SB 26-189 (C.R.S. §§6-1-1702 through 6-1-1706) and mapped to the statute: developer documentation to deployer, pre-decision consumer notice, 30-day post-adverse explanation, data correction and human review, three-year record retention, and the 60-day cure period. Registry obligations 26 → 32; mappings 14 → 15. ### Changed +- `RELEASE_NOTES-v0.1.2.md` renamed to `RELEASE_NOTES-v0.1.3.md`; version strings synced across `package.json`, `server.json`, `MANIFEST.yaml`, `PROTOCOL.md`, `README.md`, `PROJECT_CONTEXT.md`, and the generated site footer. The npm publish and MCP registry update for `0.1.3` are a separate manual step and have not been performed. - Dropped the pre-release suffix from the protocol version: the spec is now `v0.1.2`, aligned with the stable MCP/npm package version. `RELEASE_NOTES-v0.1.2-pre.md` renamed to `RELEASE_NOTES-v0.1.2.md`. - Removed SB 26-189 from `verification.allowed_unmapped_instruments`; it is the operative Colorado statute, not a relationship-only chain member. The allowlist now states its admission rule and a per-entry reason, and `eval-verification-allowlist` asserts that operative instruments stay out of it. - Recorded the 2026-05 Colorado ingestion, the 2026-06/07 authority-response and release work, and this session in `ROADMAP.md`; corrected the registry totals attributed to the 2026-04-21 session. diff --git a/MANIFEST.yaml b/MANIFEST.yaml index 9e3c409..028f5e4 100644 --- a/MANIFEST.yaml +++ b/MANIFEST.yaml @@ -25,7 +25,7 @@ # - Workshop scratchpad (_workshop/) bundle: publedge -bundle_version: 0.1.2 +bundle_version: 0.1.3 bundle_date: 2026-07-21 description: > PubLedge open recordkeeping protocol for fact-specific written @@ -118,12 +118,12 @@ files: - path: server.json role: config - hash: sha256:3698c909e95ffbbb70241d1e95a82cfb0564b798d6839c84323b4a3501fcbd60 + hash: sha256:4cddf89b7f62d1bf3b465f12a5d35e9ca41738ef9cfbd75fb1437d7d56fdf2f0 note: server.json - path: package.json role: config - hash: sha256:b302af89e1876a34c59977b527f42eeec0aadfb444344f50598136af120dab1d + hash: sha256:2de16f11d7c171453132f2d663468c2e28b7d9ca225df8c607d7e51c3394b71b note: package.json - path: package-lock.json @@ -413,7 +413,7 @@ files: - path: CHANGELOG.md role: protocol - hash: sha256:4b972451b32637635736f51d62c50d659e36f0c44a53455ad9e57980f21893c9 + hash: sha256:6b30dd414bbe1a360c42384e31c472dcc6b04b1a1f67560ee0f68734c5acb2ff note: CHANGELOG.md - path: CONTRIBUTING.md @@ -433,18 +433,18 @@ files: - path: PROTOCOL.md role: protocol - hash: sha256:6105fb39fbf1a223a3d4a91b7c356086d4b9ee100da4aeaf1edbf042886e6330 + hash: sha256:f36278b7f6be632363f5ea2610bc126759d5cd4529af8475cbe39fda1cce9147 note: PROTOCOL.md - path: README.md role: protocol - hash: sha256:c2aff68749ef52c4ba9358014d6129633ed6b5735aa8a070ed577de845b538c6 + hash: sha256:c3cf9aacf2e15d527e3707f69053f7e8bf052a0710ef444ba7958225e2070e29 note: README.md - - path: RELEASE_NOTES-v0.1.2.md + - path: RELEASE_NOTES-v0.1.3.md role: release-notes hash: sha256:33a24fae7e95d96e7bdc8b88c63aebcf86290ea224e9e9498417506a06b07920 - note: RELEASE_NOTES-v0.1.2.md + note: RELEASE_NOTES-v0.1.3.md - path: ROADMAP.md role: protocol @@ -518,7 +518,7 @@ files: - path: scripts/build-extras.js role: tooling - hash: sha256:dbdc8f24ab7aa0ff3c6a58bcff6f78506dca066b8569feb21273db00e509ace7 + hash: sha256:0616e941907cf6fd8d63a6a4a0abd4e88904fd56a876e74af0a8514ed2fed26c note: scripts/build-extras.js - path: scripts/build.js @@ -531,6 +531,11 @@ files: hash: sha256:62d2f15099cf1c010af987cdb115737120f60a6acfb918ed08017b4486168860 note: scripts/check-links.js + - path: scripts/check-of-version.js + role: tooling + hash: sha256:050ecafec52063c2aa7bf9995492f6d37a066cece15400b1b4586288a3d16a7d + note: scripts/check-of-version.js + - path: scripts/eval-authority-response.js role: tooling hash: sha256:37f06d0c545ad3b1b49504ff67647debb66c6dafecf68143a4685d07cca0054d @@ -583,7 +588,7 @@ files: - path: scripts/eval-manifest-scope.js role: tooling - hash: sha256:1c1d77bd09c1757a0e4fa4f3f92a9af3e500d3960f584ee35f9f1baae5609494 + hash: sha256:aa159569beddc01d6125226c809bbb556afbfc326c5644460ead68954a12dde6 note: scripts/eval-manifest-scope.js - path: scripts/eval-mcp-contract.js @@ -723,7 +728,7 @@ files: - path: PROJECT_CONTEXT.md role: agent-guidance - hash: sha256:2a65d9036f9458e8c59b74decbdb010746975770c15e137eeb5d057d16089697 + hash: sha256:aa18f4b6ca18716d75726f8b9b45437bddc03edde42037c17dcddf95916ea1f8 note: PROJECT_CONTEXT.md - path: about/index.html diff --git a/PROJECT_CONTEXT.md b/PROJECT_CONTEXT.md index 98f240e..01b2807 100644 --- a/PROJECT_CONTEXT.md +++ b/PROJECT_CONTEXT.md @@ -53,7 +53,7 @@ registry through structured endpoints and the MCP server. ## Current status (2026-07) -Public and maintained. Spec at `v0.1.2`; MCP server published stable (npm + +Public and maintained. Spec at `v0.1.3`; MCP server published stable (npm + Official MCP Registry). PubLedge is the thin recordkeeping convention of the PAICE legal graph. Standalone product expansion is parked pending a concrete legal-graph, regulator, court, civic-body, or adopter demand signal. See diff --git a/PROTOCOL.md b/PROTOCOL.md index 66b6ee1..c72385c 100644 --- a/PROTOCOL.md +++ b/PROTOCOL.md @@ -1,10 +1,10 @@ --- "@type": "https://w3id.org/semanticarts/ns/ontology/gist/Specification" title: "PubLedge Protocol" -version: "0.1.2" +version: "0.1.3" license: "CC-BY-4.0" created: 2026-04-18 -modified: 2026-04-18 +modified: 2026-07-25 --- # PubLedge Protocol diff --git a/README.md b/README.md index 4afcf87..b490dfc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # PubLedge [](https://github.com/snapsynapse/publedge/actions/workflows/build.yml) -[](PROTOCOL.md) +[](PROTOCOL.md) [](data/examples/instruments/) [](LICENSE-CC-BY-4.0) [](LICENSE-APACHE) @@ -11,7 +11,7 @@ Open recordkeeping protocol for fact-specific written interpretations between tw Plain markdown with structured frontmatter. SHA-256 manifest checks provide source-to-manifest consistency. Bound to the [Semantic Arts gist](https://semanticarts.com/gist/) upper ontology so records from different authorities can be queried together. -**Public and maintained. Protocol specification v0.1.2; stable MCP server v0.1.2. Standalone product expansion is parked pending a concrete legal-graph or adopter demand signal.** +**Public and maintained. Protocol specification v0.1.3; stable MCP server v0.1.3. Standalone product expansion is parked pending a concrete legal-graph or adopter demand signal.** ## Who this is for diff --git a/RELEASE_NOTES-v0.1.2.md b/RELEASE_NOTES-v0.1.3.md similarity index 100% rename from RELEASE_NOTES-v0.1.2.md rename to RELEASE_NOTES-v0.1.3.md diff --git a/docs/.well-known/obligation-first-naming-profile-manifest.txt b/docs/.well-known/obligation-first-naming-profile-manifest.txt new file mode 100644 index 0000000..e0c2f5b --- /dev/null +++ b/docs/.well-known/obligation-first-naming-profile-manifest.txt @@ -0,0 +1,8 @@ +profile-path: /.well-known/obligation-first-naming-profile.jsonld +profile-version: 1.0.0 +profile-sha256: 5cc51c60365b0cdd2d4af01b3f042693f9ac0dc9df3c0738679e13a5f77d43b8 +profile-bytes: 1599 +adopter: https://publedge.org/ +spec: obligation-first +spec-version-range: >=0.4.0, <0.6.0 +canonical-url: https://publedge.org/.well-known/obligation-first-naming-profile.jsonld diff --git a/docs/.well-known/obligation-first-naming-profile.jsonld b/docs/.well-known/obligation-first-naming-profile.jsonld new file mode 100644 index 0000000..4bb561c --- /dev/null +++ b/docs/.well-known/obligation-first-naming-profile.jsonld @@ -0,0 +1,45 @@ +{ + "@context": "https://obligationfirst.org/v1/", + "@type": "of:NamingProfile", + "profileVersion": "1.0.0", + "appliesTo": "obligation-first >=0.4.0 <0.6.0", + "adopter": "https://publedge.org/", + "entities": { + "Authority": { + "void:uriSpace": "https://publedge.org/authority/", + "void:uriRegexPattern": "^https://publedge\\.org/authority/[a-z0-9-]+\\.json$", + "uriTemplate": "https://publedge.org/authority/{slug}.json", + "crosswalks": [ + "sameAs" + ] + }, + "Instrument": { + "void:uriSpace": "https://publedge.org/instrument/", + "void:uriRegexPattern": "^https://publedge\\.org/instrument/[a-z0-9-]+\\.json$", + "uriTemplate": "https://publedge.org/instrument/{slug}.json", + "crosswalks": [ + "citation" + ] + }, + "Term": { + "void:uriSpace": "https://publedge.org/term/", + "void:uriRegexPattern": "^https://publedge\\.org/term/[a-z0-9-]+\\.json$", + "uriTemplate": "https://publedge.org/term/{slug}.json", + "crosswalks": [ + "section" + ] + }, + "Obligation": { + "void:uriSpace": "https://publedge.org/obligation/", + "void:uriRegexPattern": "^https://publedge\\.org/obligation/[a-z0-9-]+\\.json$", + "uriTemplate": "https://publedge.org/obligation/{slug}.json", + "crosswalks": [] + }, + "Determination": { + "void:uriSpace": "https://publedge.org/determination/", + "void:uriRegexPattern": "^https://publedge\\.org/determination/[a-z0-9-]+\\.json$", + "uriTemplate": "https://publedge.org/determination/{slug}.json", + "crosswalks": [] + } + } +} diff --git a/docs/404.html b/docs/404.html index fa62bd6..2279010 100644 --- a/docs/404.html +++ b/docs/404.html @@ -119,7 +119,7 @@