From 71efaa2f9a37dcd0203fe6a4e077664dc493af93 Mon Sep 17 00:00:00 2001 From: kikashy Date: Thu, 22 Oct 2026 16:11:19 -0400 Subject: [PATCH 1/3] Record the Policy draft release decision State that the Policy companion ships at draft maturity while RFC 0023 remains Draft. Clarify governing-policy conflict refusal, base-profile source limits, and the open independently authored reader criterion in the companion, FAQ, RFC record, index, and changelog. Co-Authored-By: Codex Signed-off-by: kikashy --- CHANGELOG.md | 1 + FAQ.md | 8 +++- rfcs/0023-policy-companion.md | 69 +++++++++++++++++++---------------- rfcs/README.md | 9 +++-- spec/policy.md | 34 +++++++++++------ 5 files changed, 71 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d16c013..ce99086 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ here. ### Added +- Policy companion release decision (#211): ship it in v0.3.0 at draft maturity with RFC 0023 still Draft, refuse disagreements between governing-policy coverage records as `invalid-coverage` rather than rank policies, and leave the second independently authored reader open. - Dialect-owned data quality and typed research results (#170, #169): six closed deterministic conversions with recorded failures, three explicit reconciliation modes, presence/type/domain findings surfaced as unknown facts, transformation lineage, typed research result states, diff --git a/FAQ.md b/FAQ.md index 3eddfae..660511f 100644 --- a/FAQ.md +++ b/FAQ.md @@ -382,11 +382,15 @@ never imply. **Q46. Is JPS ready for production?** Yes. JPS at `0.2.0-draft` is in production use by adopters, through the pinned reference runtime, with a person accountable for every consequential outcome -(Q47). It is still a draft: pin the exact draft and the runtime release you verified, since +(Q48). It is still a draft: pin the exact draft and the runtime release you verified, since compatibility between drafts is not guaranteed and there is no certification programme yet. A pack decides; what acts on its disposition stays the adopter's own system. -**Q47. How would an enterprise adopt it safely?** Treat conformance as document hygiene, not a +**Q47. Can several policies govern one pack, and which one wins?** Several governing policies are +allowed. Their list order never makes one policy outrank another. If two coverage records disagree, +the Policy reader refuses the adoption as `invalid-coverage`; it never ranks them. + +**Q48. How would an enterprise adopt it safely?** Treat conformance as document hygiene, not a decision warrant; keep a human accountable for every consequential outcome; pin immutable specification releases and recorded checksums; and keep authorization in your own systems, since the specification explicitly refuses to model it. The [non-goals](docs/non-goals.md) and diff --git a/rfcs/0023-policy-companion.md b/rfcs/0023-policy-companion.md index 6b751d2..0aba590 100644 --- a/rfcs/0023-policy-companion.md +++ b/rfcs/0023-policy-companion.md @@ -1,20 +1,19 @@ # RFC 0023: Policy content and governing adoption -- Status: Accepted +- Status: Draft - Type: Standards track, companion at draft maturity - Created: 2026-10-17 - Issue: [#211](https://github.com/Judgment-Pack/judgment-pack-spec/issues/211) -This PR proposes acceptance at **draft maturity**, effective only when -[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merges after -required CI passes. Until then the default-branch RFC remains Review; this branch -records the status proposed for merge, not a completed adoption or publication. -On merge, [spec/policy.md](../spec/policy.md) defines the bounded Policy offline-reader -companion and the selected independent draft release route. The original proposal -and unresolved questions below remain informative design history; their current -draft dispositions are in [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). -No stable maturity, immutable release, consumer adoption or execution authority -follows from draft acceptance. The [candidate contract](policy-companion-contract/README.md) +The maintainer decided on 2026-10-22 that +[spec/policy.md](../spec/policy.md) ships in v0.3.0 as a companion at **draft +maturity** while this RFC remains Draft. The companion defines the bounded Policy +offline-reader class and the selected independent draft release route. The +original proposal and unresolved questions below remain informative design +history; their current draft dispositions are in +[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). No stable maturity, +immutable release, consumer adoption or execution authority follows from shipping +the draft companion. The [candidate contract](policy-companion-contract/README.md) remains archived proposed material with its original status and bytes. The historical [prototype](policy-companion-prototype/README.md) remains explicitly non-normative and byte-for-byte frozen at proposal `0.0.2`, baseline commit @@ -350,11 +349,12 @@ Exchange can publish reusable definitions only after its entry contract supports them; it does not store private tenant approvals. Demo and evaluator studies exercise these boundaries without becoming alternate production services. -Two plausible independently authored readers are a Runtime-backed local tool and -a separate organizational policy service validating exported bundles without Desk. -They would compare exact retained bytes and declared references and explicitly -decline live-authorization claims. Two language ports by this project's author -would not demonstrate independent authorship. That evidence is not available yet. +The Runtime's reader is the only reader currently counted toward the implementation +criterion. It and the repository's reference reader were both Codex-assisted, so +the second independently authored reader remains open. A Desk import path or a +reader in the Exchange would count if its authorship is separate; a same-team port +would not. Such readers compare exact retained bytes and declared references and +explicitly decline live-authorization claims. The first product path is single-admin local policy management. Its explicit review can be self-review; later team deployments can require another reviewer. @@ -364,9 +364,8 @@ is required by this RFC. ## Unresolved questions -1. Adoption/disposition of the exact proposed `1.0.0` selector, declared bounds and - closed reference/coverage grammar after public review; no released schema or - conformance class is assigned here. +1. RFC acceptance after immutable draft publication and independently authored + reader evidence. Shipping the companion at draft maturity does not close this. 2. Trust/signature/export profile for review assertions and cross-workspace adoption. 3. Reconciliation with RFC 0011's proposed pack currency registry without silently adopting it or treating offline membership as live authorization. @@ -375,29 +374,35 @@ is required by this RFC. 5. Host defaults for self-review versus independent review, quorum changes, role-revocation effects on old signatures, expiry/grace and scheduled publication. 6. Supported graph/composition closure and its owning execution contract. -7. Independent implementation evidence and any domain-format adapter demand. +7. The second independently authored reader and any domain-format adapter demand. -## Conditional draft disposition +## Draft release decision and acceptance criteria -On 2026-10-19 the maintainer directed: “Accept the bounded draft after CI; record -the limited public review”. The decision accepts the exact corrected `1.0.0` +The 2026-10-22 decision ships the exact corrected `1.0.0` content/reference/anchor/coverage grammar and bounds, Policy offline-reader scope -and independent draft release route **upon PR 218 merge after required CI**. -It explicitly accepts the limited public period for this bounded draft, without -claiming outside review or independently authored interoperability evidence. -The standing temporary different-vendor-review exception applies; the general -governance rule is unchanged. +and independent draft release route in v0.3.0 at draft maturity. RFC 0023 remains +Draft. Its acceptance criteria are: + +1. publish the immutable draft companion through its exact tag and + maintainer-published GitHub release, including the complete 124-row corpus; and +2. record a second reader authored independently of the Runtime reader that gives + the complete corpus the same results. + +The second criterion remains open. The repository and Runtime readers were both +Codex-assisted. A separately authored Desk import path or Exchange reader can +satisfy it; a same-team port cannot. This decision claims no outside review or +independently authored interoperability evidence. The standing temporary +different-vendor-review exception and the general governance rule are unchanged. The separate same-vendor review inspected tree `60b04d452efa49032a0cc7d3ac1e55a3900410a8`, committed unchanged as `7f118278e480d88e53e6a6be2fe084610a2bebf9`, and reported no material findings in [the complete PR record](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218#issuecomment-6273316525). -The final CI-fix/acceptance delta remains subject to the PR's bounded review and -required CI gates; that earlier report is not a review of an unidentified later -commit. [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual +That report did not establish independently authored implementation evidence. +[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual public history, exception, scope and deferred questions with reopening conditions. -Draft acceptance adopts only [the companion](../spec/policy.md) and the narrow +The release decision covers only [the companion](../spec/policy.md) and the narrow [publication route](../conformance/policy/1.0.0/PUBLICATION.md). The first independent release identifier is `policy-v1.0.0-draft.1`; naming it in this source branch does not establish publication. Only the exact tag and a maintainer-published diff --git a/rfcs/README.md b/rfcs/README.md index e37f64f..d91a3ac 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -70,7 +70,7 @@ stable feature requires two independent implementations and conformance cases. | [0019] | The Judgment Exchange — a shared place for dialects | Draft | Research line (see below) | | [0020] | The workflow | Draft | Specification (a proposed companion document; see below) | | [0022] | Reusable subgraphs contract — explicit encapsulation and reference binding | Draft | Research line (see below) | -| [0023](0023-policy-companion.md) | Policy content and governing adoption | Accepted (upon green CI and PR 218 merge) | Specification (draft Policy offline-reader companion); live governance remains host-owned | +| [0023](0023-policy-companion.md) | Policy content and governing adoption | Draft | Specification (companion ships at draft maturity; second independently authored reader remains open); live governance remains host-owned | | [0025](0025-core-escalation-routes.md) | Core escalation routes | Accepted design (#219); review pending | Specification (Core) | | [0026](0026-document-ceiling-profiles.md) | Document ceiling profiles | Accepted design (#232); review pending | Specification and companions | @@ -117,9 +117,10 @@ repository. RFC 0021 adds [named Dialect artifact identities](0021-dialect-artifact-identity.md) through exact `formatVersion` selectors, with unchanged historical formats and separate binding digests. -RFC 0023 has conditional maintainer approval for [the bounded Policy draft](../spec/policy.md), -effective upon required green CI and PR 218 merge. The default branch remains -Review until then; no immutable Policy release or consumer adoption is claimed. +RFC 0023 records the decision to ship [the bounded Policy companion](../spec/policy.md) +in v0.3.0 at draft maturity while the RFC remains Draft. Acceptance still requires +immutable companion publication and a second reader authored independently of the +Runtime reader; the latter remains open. No consumer adoption is claimed. [RFC 0026](0026-document-ceiling-profiles.md) records the accepted document ceiling profiles of issue #232. Core §4.1 owns the ceilings; extended companion readers remain future work. diff --git a/spec/policy.md b/spec/policy.md index 2bc95a7..9fdf699 100644 --- a/spec/policy.md +++ b/spec/policy.md @@ -2,16 +2,12 @@ ## Status and artifact scope -This is the Policy companion text proposed for acceptance at **draft maturity** -under [RFC 0023](../rfcs/0023-policy-companion.md). The maintainer authorized that -acceptance conditional on required CI passing and -[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merging. -Until merge the default-branch RFC remains Review; this branch's acceptance -wording describes the approved draft that takes effect upon that merge. It does -not claim a completed merge, immutable publication, stable maturity or consumer -adoption. - -Upon that merge, §§1–8 define the *Policy offline reader* companion class. They do not change Core `0.2.0-draft`, its schema, evaluator +This Policy companion ships in v0.3.0 at **draft maturity**. +[RFC 0023](../rfcs/0023-policy-companion.md) remains Draft until its acceptance +criteria are met. This status does not claim stable maturity, immutable companion +publication or consumer adoption. + +§§1–8 define the *Policy offline reader* companion class. They do not change Core `0.2.0-draft`, its schema, evaluator semantics, document corpus or evaluation corpus. The exact document selector is `formatVersion: "1.0.0"`; that identifies grammar, not stable maturity or a Spec release. Unsupported readers refuse it without legacy aliases. @@ -27,12 +23,22 @@ are staged in no released corpus until an exact independent Policy draft release No Policy offline-reader conformance claim is available before that release. The [publication plan](../conformance/policy/1.0.0/PUBLICATION.md) follows the -selected independent companion release route and records its conditional-merge -and separate publication gates. +selected independent companion release route and its separate publication gates. The first independent release identifier is `policy-v1.0.0-draft.1`. Its presence in a source branch does not establish publication: the exact tag and a maintainer-published GitHub release must both exist. Core `specVersion` remains unchanged. + +The 16-source maximum per Policy and the 16-`sourceRefs` maximum per section are +schema maxima and the `base` profile's values under +[RFC 0026](../rfcs/0026-document-ceiling-profiles.md). Format `1.0.0` does not +carry a `profile` member; the companion adopts that member only in its next +format version. The Runtime's reader is the only reader currently counted toward +RFC 0023's implementation criterion. It and the repository reader were both +Codex-assisted, so the second independently authored reader remains open. A Desk +import path or an Exchange reader counts if authored separately; a same-team port +does not. + The historical [prototype 0.0.2](../rfcs/policy-companion-prototype/README.md) and [proposed 1.0.0 candidate](../rfcs/policy-companion-contract/README.md) remain byte-for-byte unchanged. Their pins, the [promotion map](../conformance/policy/1.0.0/PROMOTION.md), @@ -177,6 +183,10 @@ in one adoption refuse rather than imply precedence. List order never establishe policy priority. Each Policy reference resolves its exact bytes, ID/version, optional canonical identity, selector, closed grammar, sources and sections. +Several governing policies may govern one Pack. Their list order never establishes +precedence. If coverage records under two governing policies disagree, the reader +refuses the adoption as `invalid-coverage`; it never ranks the policies. + Scope is either `{kind: "whole-policy"}` or `{kind: "sections", sectionIds, reviewBasis}`. A section list is nonempty, unique, at most 64 IDs and resolves only declared sections. The limited scope's retained From 84df7950be10b896d22cb31e051a3ef81c70833e Mon Sep 17 00:00:00 2001 From: kikashy Date: Thu, 22 Oct 2026 16:32:44 -0400 Subject: [PATCH 2/3] Leave the pinned Policy release unchanged Restore the Policy prose to its pinned bytes and keep RFC 0023 Accepted at draft maturity. Record the open independently authored reader criterion and the next-format profile and disagreement work in the RFC, index, FAQ, and changelog. Update the FAQ microdata count for the added question. Co-Authored-By: Codex Signed-off-by: kikashy --- CHANGELOG.md | 2 +- FAQ.md | 5 ++- rfcs/0023-policy-companion.md | 81 +++++++++++++++++++---------------- rfcs/README.md | 9 ++-- spec/policy.md | 34 ++++++--------- tests/test_site.py | 6 +-- 6 files changed, 67 insertions(+), 70 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2724b5f..1c2d273 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ here. ### Added -- Policy companion release decision (#211): ship it in v0.3.0 at draft maturity with RFC 0023 still Draft, refuse disagreements between governing-policy coverage records as `invalid-coverage` rather than rank policies, and leave the second independently authored reader open. +- Policy companion decision (#211): keep RFC 0023 Accepted at draft maturity and Policy 1.0.0 pinned, record its duplicate-identity and no-list-priority rules, and leave disagreement refusal and the second independently authored reader open. - RFC 0022 aligns reusable-subgraph bounds, routed handoff provenance, dialect-owned remapping and cross-installation packaging with the decisions on #129, #219, #232 and #170 (#233). - Dialect-owned data quality and typed research results (#170, #169): six closed deterministic diff --git a/FAQ.md b/FAQ.md index 660511f..15a2ef6 100644 --- a/FAQ.md +++ b/FAQ.md @@ -387,8 +387,9 @@ compatibility between drafts is not guaranteed and there is no certification pro decides; what acts on its disposition stays the adopter's own system. **Q47. Can several policies govern one pack, and which one wins?** Several governing policies are -allowed. Their list order never makes one policy outrank another. If two coverage records disagree, -the Policy reader refuses the adoption as `invalid-coverage`; it never ranks them. +allowed, and their list order never makes one policy outrank another. Repeating the same policy +identity refuses. This draft does not define whether disagreeing coverage records refuse; that rule +is planned for the companion's next format version in issue #244. **Q48. How would an enterprise adopt it safely?** Treat conformance as document hygiene, not a decision warrant; keep a human accountable for every consequential outcome; pin immutable diff --git a/rfcs/0023-policy-companion.md b/rfcs/0023-policy-companion.md index 0aba590..7aad801 100644 --- a/rfcs/0023-policy-companion.md +++ b/rfcs/0023-policy-companion.md @@ -1,19 +1,20 @@ # RFC 0023: Policy content and governing adoption -- Status: Draft +- Status: Accepted - Type: Standards track, companion at draft maturity - Created: 2026-10-17 - Issue: [#211](https://github.com/Judgment-Pack/judgment-pack-spec/issues/211) -The maintainer decided on 2026-10-22 that -[spec/policy.md](../spec/policy.md) ships in v0.3.0 as a companion at **draft -maturity** while this RFC remains Draft. The companion defines the bounded Policy -offline-reader class and the selected independent draft release route. The -original proposal and unresolved questions below remain informative design -history; their current draft dispositions are in -[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). No stable maturity, -immutable release, consumer adoption or execution authority follows from shipping -the draft companion. The [candidate contract](policy-companion-contract/README.md) +This PR proposes acceptance at **draft maturity**, effective only when +[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merges after +required CI passes. Until then the default-branch RFC remains Review; this branch +records the status proposed for merge, not a completed adoption or publication. +On merge, [spec/policy.md](../spec/policy.md) defines the bounded Policy offline-reader +companion and the selected independent draft release route. The original proposal +and unresolved questions below remain informative design history; their current +draft dispositions are in [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). +No stable maturity, immutable release, consumer adoption or execution authority +follows from draft acceptance. The [candidate contract](policy-companion-contract/README.md) remains archived proposed material with its original status and bytes. The historical [prototype](policy-companion-prototype/README.md) remains explicitly non-normative and byte-for-byte frozen at proposal `0.0.2`, baseline commit @@ -349,12 +350,11 @@ Exchange can publish reusable definitions only after its entry contract supports them; it does not store private tenant approvals. Demo and evaluator studies exercise these boundaries without becoming alternate production services. -The Runtime's reader is the only reader currently counted toward the implementation -criterion. It and the repository's reference reader were both Codex-assisted, so -the second independently authored reader remains open. A Desk import path or a -reader in the Exchange would count if its authorship is separate; a same-team port -would not. Such readers compare exact retained bytes and declared references and -explicitly decline live-authorization claims. +Two plausible independently authored readers are a Runtime-backed local tool and +a separate organizational policy service validating exported bundles without Desk. +They would compare exact retained bytes and declared references and explicitly +decline live-authorization claims. Two language ports by this project's author +would not demonstrate independent authorship. That evidence is not available yet. The first product path is single-admin local policy management. Its explicit review can be self-review; later team deployments can require another reviewer. @@ -362,10 +362,23 @@ Manual and chat actions must share the existing execution/context/approval/CAS boundaries. No feature-specific model loop, permission inference or retry service is required by this RFC. +## Open criteria + +The Runtime reader is the only implementation reader so far. It and the repository +reader were both Codex-assisted. The acceptance criterion asks for a second reader +authored independently and remains **OPEN**. The Desk's import path or an Exchange +reader counts if its authorship is separate; a same-team port does not. + +The 16-source maximum in Policy format `1.0.0` is a schema maximum and the `base` +profile's value under [RFC 0026](0026-document-ceiling-profiles.md). The companion +adopts the `profile` member only in its next format version, tracked by +[issue #244](https://github.com/Judgment-Pack/judgment-pack-spec/issues/244). + ## Unresolved questions -1. RFC acceptance after immutable draft publication and independently authored - reader evidence. Shipping the companion at draft maturity does not close this. +1. Adoption/disposition of the exact proposed `1.0.0` selector, declared bounds and + closed reference/coverage grammar after public review; no released schema or + conformance class is assigned here. 2. Trust/signature/export profile for review assertions and cross-workspace adoption. 3. Reconciliation with RFC 0011's proposed pack currency registry without silently adopting it or treating offline membership as live authorization. @@ -374,35 +387,29 @@ is required by this RFC. 5. Host defaults for self-review versus independent review, quorum changes, role-revocation effects on old signatures, expiry/grace and scheduled publication. 6. Supported graph/composition closure and its owning execution contract. -7. The second independently authored reader and any domain-format adapter demand. +7. Independent implementation evidence and any domain-format adapter demand. -## Draft release decision and acceptance criteria +## Conditional draft disposition -The 2026-10-22 decision ships the exact corrected `1.0.0` +On 2026-10-19 the maintainer directed: “Accept the bounded draft after CI; record +the limited public review”. The decision accepts the exact corrected `1.0.0` content/reference/anchor/coverage grammar and bounds, Policy offline-reader scope -and independent draft release route in v0.3.0 at draft maturity. RFC 0023 remains -Draft. Its acceptance criteria are: - -1. publish the immutable draft companion through its exact tag and - maintainer-published GitHub release, including the complete 124-row corpus; and -2. record a second reader authored independently of the Runtime reader that gives - the complete corpus the same results. - -The second criterion remains open. The repository and Runtime readers were both -Codex-assisted. A separately authored Desk import path or Exchange reader can -satisfy it; a same-team port cannot. This decision claims no outside review or -independently authored interoperability evidence. The standing temporary -different-vendor-review exception and the general governance rule are unchanged. +and independent draft release route **upon PR 218 merge after required CI**. +It explicitly accepts the limited public period for this bounded draft, without +claiming outside review or independently authored interoperability evidence. +The standing temporary different-vendor-review exception applies; the general +governance rule is unchanged. The separate same-vendor review inspected tree `60b04d452efa49032a0cc7d3ac1e55a3900410a8`, committed unchanged as `7f118278e480d88e53e6a6be2fe084610a2bebf9`, and reported no material findings in [the complete PR record](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218#issuecomment-6273316525). -That report did not establish independently authored implementation evidence. -[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual +The final CI-fix/acceptance delta remains subject to the PR's bounded review and +required CI gates; that earlier report is not a review of an unidentified later +commit. [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual public history, exception, scope and deferred questions with reopening conditions. -The release decision covers only [the companion](../spec/policy.md) and the narrow +Draft acceptance adopts only [the companion](../spec/policy.md) and the narrow [publication route](../conformance/policy/1.0.0/PUBLICATION.md). The first independent release identifier is `policy-v1.0.0-draft.1`; naming it in this source branch does not establish publication. Only the exact tag and a maintainer-published diff --git a/rfcs/README.md b/rfcs/README.md index d91a3ac..c33e135 100644 --- a/rfcs/README.md +++ b/rfcs/README.md @@ -70,7 +70,7 @@ stable feature requires two independent implementations and conformance cases. | [0019] | The Judgment Exchange — a shared place for dialects | Draft | Research line (see below) | | [0020] | The workflow | Draft | Specification (a proposed companion document; see below) | | [0022] | Reusable subgraphs contract — explicit encapsulation and reference binding | Draft | Research line (see below) | -| [0023](0023-policy-companion.md) | Policy content and governing adoption | Draft | Specification (companion ships at draft maturity; second independently authored reader remains open); live governance remains host-owned | +| [0023](0023-policy-companion.md) | Policy content and governing adoption | Accepted | Specification (companion at draft maturity; second independently authored reader criterion open); live governance remains host-owned | | [0025](0025-core-escalation-routes.md) | Core escalation routes | Accepted design (#219); review pending | Specification (Core) | | [0026](0026-document-ceiling-profiles.md) | Document ceiling profiles | Accepted design (#232); review pending | Specification and companions | @@ -117,10 +117,9 @@ repository. RFC 0021 adds [named Dialect artifact identities](0021-dialect-artifact-identity.md) through exact `formatVersion` selectors, with unchanged historical formats and separate binding digests. -RFC 0023 records the decision to ship [the bounded Policy companion](../spec/policy.md) -in v0.3.0 at draft maturity while the RFC remains Draft. Acceptance still requires -immutable companion publication and a second reader authored independently of the -Runtime reader; the latter remains open. No consumer adoption is claimed. +RFC 0023 is Accepted at draft maturity for [the bounded Policy companion](../spec/policy.md). +The Runtime reader is the only reader so far; the criterion for a second independently authored +reader remains open. No immutable Policy release or consumer adoption is claimed. [RFC 0026](0026-document-ceiling-profiles.md) records the accepted document ceiling profiles of issue #232. Core §4.1 owns the ceilings; extended companion readers remain future work. diff --git a/spec/policy.md b/spec/policy.md index 9fdf699..2bc95a7 100644 --- a/spec/policy.md +++ b/spec/policy.md @@ -2,12 +2,16 @@ ## Status and artifact scope -This Policy companion ships in v0.3.0 at **draft maturity**. -[RFC 0023](../rfcs/0023-policy-companion.md) remains Draft until its acceptance -criteria are met. This status does not claim stable maturity, immutable companion -publication or consumer adoption. - -§§1–8 define the *Policy offline reader* companion class. They do not change Core `0.2.0-draft`, its schema, evaluator +This is the Policy companion text proposed for acceptance at **draft maturity** +under [RFC 0023](../rfcs/0023-policy-companion.md). The maintainer authorized that +acceptance conditional on required CI passing and +[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merging. +Until merge the default-branch RFC remains Review; this branch's acceptance +wording describes the approved draft that takes effect upon that merge. It does +not claim a completed merge, immutable publication, stable maturity or consumer +adoption. + +Upon that merge, §§1–8 define the *Policy offline reader* companion class. They do not change Core `0.2.0-draft`, its schema, evaluator semantics, document corpus or evaluation corpus. The exact document selector is `formatVersion: "1.0.0"`; that identifies grammar, not stable maturity or a Spec release. Unsupported readers refuse it without legacy aliases. @@ -23,22 +27,12 @@ are staged in no released corpus until an exact independent Policy draft release No Policy offline-reader conformance claim is available before that release. The [publication plan](../conformance/policy/1.0.0/PUBLICATION.md) follows the -selected independent companion release route and its separate publication gates. +selected independent companion release route and records its conditional-merge +and separate publication gates. The first independent release identifier is `policy-v1.0.0-draft.1`. Its presence in a source branch does not establish publication: the exact tag and a maintainer-published GitHub release must both exist. Core `specVersion` remains unchanged. - -The 16-source maximum per Policy and the 16-`sourceRefs` maximum per section are -schema maxima and the `base` profile's values under -[RFC 0026](../rfcs/0026-document-ceiling-profiles.md). Format `1.0.0` does not -carry a `profile` member; the companion adopts that member only in its next -format version. The Runtime's reader is the only reader currently counted toward -RFC 0023's implementation criterion. It and the repository reader were both -Codex-assisted, so the second independently authored reader remains open. A Desk -import path or an Exchange reader counts if authored separately; a same-team port -does not. - The historical [prototype 0.0.2](../rfcs/policy-companion-prototype/README.md) and [proposed 1.0.0 candidate](../rfcs/policy-companion-contract/README.md) remain byte-for-byte unchanged. Their pins, the [promotion map](../conformance/policy/1.0.0/PROMOTION.md), @@ -183,10 +177,6 @@ in one adoption refuse rather than imply precedence. List order never establishe policy priority. Each Policy reference resolves its exact bytes, ID/version, optional canonical identity, selector, closed grammar, sources and sections. -Several governing policies may govern one Pack. Their list order never establishes -precedence. If coverage records under two governing policies disagree, the reader -refuses the adoption as `invalid-coverage`; it never ranks the policies. - Scope is either `{kind: "whole-policy"}` or `{kind: "sections", sectionIds, reviewBasis}`. A section list is nonempty, unique, at most 64 IDs and resolves only declared sections. The limited scope's retained diff --git a/tests/test_site.py b/tests/test_site.py index c003419..5f3edc8 100644 --- a/tests/test_site.py +++ b/tests/test_site.py @@ -643,9 +643,9 @@ def test_supported_microdata_mirrors_visible_content_without_scripts(self) -> No faq = (self.output / "faq" / "index.html").read_text(encoding="utf-8") self.assertIn('itemtype="https://schema.org/FAQPage"', faq) - self.assertEqual(faq.count('itemtype="https://schema.org/Question"'), 47) - self.assertEqual(faq.count('itemtype="https://schema.org/Answer"'), 47) - self.assertEqual(faq.count('itemprop="acceptedAnswer"'), 47) + self.assertEqual(faq.count('itemtype="https://schema.org/Question"'), 48) + self.assertEqual(faq.count('itemtype="https://schema.org/Answer"'), 48) + self.assertEqual(faq.count('itemprop="acceptedAnswer"'), 48) self.assertIn( '

', faq ) From b028d1ae221fc0eef5d7b655363802f0fdb6712e Mon Sep 17 00:00:00 2001 From: kikashy Date: Thu, 22 Oct 2026 16:41:18 -0400 Subject: [PATCH 3/3] Correct the Policy acceptance presentation State RFC 0023's completed acceptance at draft maturity in the RFC, repository overview, and published page metadata. Remove the obsolete open adoption question and conditional disposition, retain the independent-reader criterion, and update site assertions for the accepted presentation. Co-Authored-By: Codex Signed-off-by: kikashy --- README.md | 2 +- rfcs/0023-policy-companion.md | 52 ++++++++++++++++------------------- tests/test_site.py | 13 ++++----- web/build.py | 8 +++--- 4 files changed, 35 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index fb5370a..8f4374a 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ reproducing its corpus version, its results, or its every-row statement. | [`conformance/witness/`](https://github.com/Judgment-Pack/judgment-pack-spec/tree/main/conformance/witness) | 54 checkpoint witness vectors, staged until the next `specVersion` (in no corpus) | | [`spec/dialect.md`](spec/dialect.md) | Normative prose for the preparation-verifier class, a companion document beside Core | | [Dialect vectors][staged-dialect] | 47 dialect vectors; staged (see below) | -| [`spec/policy.md`](spec/policy.md) | Policy draft approved upon required green CI and PR 218 merge; publication requires its exact Policy tag and a maintainer-published GitHub release; [124 agreement vectors](conformance/policy/1.0.0/README.md) and [versioned schemas](schema/policy/1.0.0/) | +| [`spec/policy.md`](spec/policy.md) | Policy companion accepted at draft maturity; publication requires its exact Policy tag and a maintainer-published GitHub release; [124 agreement vectors](conformance/policy/1.0.0/README.md) and [versioned schemas](schema/policy/1.0.0/) | | [`TESTING.md`](TESTING.md) | A 10–15 minute external testing exercise | | [`VERSIONING.md`](VERSIONING.md) | Release and compatibility policy | | [`CHANGELOG.md`](CHANGELOG.md) | Draft and published change history | diff --git a/rfcs/0023-policy-companion.md b/rfcs/0023-policy-companion.md index 7aad801..c23deb6 100644 --- a/rfcs/0023-policy-companion.md +++ b/rfcs/0023-policy-companion.md @@ -5,21 +5,20 @@ - Created: 2026-10-17 - Issue: [#211](https://github.com/Judgment-Pack/judgment-pack-spec/issues/211) -This PR proposes acceptance at **draft maturity**, effective only when -[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merges after -required CI passes. Until then the default-branch RFC remains Review; this branch -records the status proposed for merge, not a completed adoption or publication. -On merge, [spec/policy.md](../spec/policy.md) defines the bounded Policy offline-reader -companion and the selected independent draft release route. The original proposal -and unresolved questions below remain informative design history; their current -draft dispositions are in [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). -No stable maturity, immutable release, consumer adoption or execution authority -follows from draft acceptance. The [candidate contract](policy-companion-contract/README.md) +RFC 0023 is Accepted at **draft maturity**. Required CI passed and +[PR 218](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218) merged, +completing that process disposition. [spec/policy.md](../spec/policy.md) defines +the bounded Policy offline-reader companion and the selected independent draft +release route. The original proposal and unresolved questions below remain +informative design history; their current draft dispositions are in +[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md). Acceptance at draft +maturity establishes no stable maturity, immutable release, consumer adoption or +execution authority. The [candidate contract](policy-companion-contract/README.md) remains archived proposed material with its original status and bytes. The historical [prototype](policy-companion-prototype/README.md) remains explicitly non-normative and byte-for-byte frozen at proposal `0.0.2`, baseline commit `8a56a95d555c17640d2db4984363b779536b3c2a`. Host integration guidance below names separate -product responsibilities; acceptance of this RFC would not adopt those products' +product responsibilities; acceptance of this RFC does not adopt those products' protocols on their behalf. ## Summary @@ -167,7 +166,7 @@ consumers. A clause implemented through scope, exception or fallback can referen that actual element without inventing a dummy rule or a manual process. Informational sources are separate and do not create governing dependencies. -Scope and coverage are declarations to be reviewed, not a language for conditional +Scope and coverage are declarations to be reviewed, not a language for runtime authorization. Validation cannot prove that an organization declared every applicable policy or that an interpretation is correct. @@ -376,25 +375,23 @@ adopts the `profile` member only in its next format version, tracked by ## Unresolved questions -1. Adoption/disposition of the exact proposed `1.0.0` selector, declared bounds and - closed reference/coverage grammar after public review; no released schema or - conformance class is assigned here. -2. Trust/signature/export profile for review assertions and cross-workspace adoption. -3. Reconciliation with RFC 0011's proposed pack currency registry without silently +1. Trust/signature/export profile for review assertions and cross-workspace adoption. +2. Reconciliation with RFC 0011's proposed pack currency registry without silently adopting it or treating offline membership as live authorization. -4. First real sync provider and its demonstrable revision/lifecycle/freshness +3. First real sync provider and its demonstrable revision/lifecycle/freshness semantics; document-read support alone is insufficient. -5. Host defaults for self-review versus independent review, quorum changes, +4. Host defaults for self-review versus independent review, quorum changes, role-revocation effects on old signatures, expiry/grace and scheduled publication. -6. Supported graph/composition closure and its owning execution contract. -7. Independent implementation evidence and any domain-format adapter demand. +5. Supported graph/composition closure and its owning execution contract. +6. Independent implementation evidence and any domain-format adapter demand. -## Conditional draft disposition +## Accepted draft disposition On 2026-10-19 the maintainer directed: “Accept the bounded draft after CI; record -the limited public review”. The decision accepts the exact corrected `1.0.0` +the limited public review”. Required CI passed and PR 218 merged, completing +acceptance at draft maturity. The decision accepts the exact corrected `1.0.0` content/reference/anchor/coverage grammar and bounds, Policy offline-reader scope -and independent draft release route **upon PR 218 merge after required CI**. +and independent draft release route. It explicitly accepts the limited public period for this bounded draft, without claiming outside review or independently authored interoperability evidence. The standing temporary different-vendor-review exception applies; the general @@ -404,12 +401,11 @@ The separate same-vendor review inspected tree `60b04d452efa49032a0cc7d3ac1e55a3900410a8`, committed unchanged as `7f118278e480d88e53e6a6be2fe084610a2bebf9`, and reported no material findings in [the complete PR record](https://github.com/Judgment-Pack/judgment-pack-spec/pull/218#issuecomment-6273316525). -The final CI-fix/acceptance delta remains subject to the PR's bounded review and -required CI gates; that earlier report is not a review of an unidentified later -commit. [ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual +That report did not establish independently authored implementation evidence. +[ADOPTION.md](../conformance/policy/1.0.0/ADOPTION.md) records the actual public history, exception, scope and deferred questions with reopening conditions. -Draft acceptance adopts only [the companion](../spec/policy.md) and the narrow +Acceptance at draft maturity adopts only [the companion](../spec/policy.md) and the narrow [publication route](../conformance/policy/1.0.0/PUBLICATION.md). The first independent release identifier is `policy-v1.0.0-draft.1`; naming it in this source branch does not establish publication. Only the exact tag and a maintainer-published diff --git a/tests/test_site.py b/tests/test_site.py index 5f3edc8..acc46f9 100644 --- a/tests/test_site.py +++ b/tests/test_site.py @@ -260,9 +260,9 @@ def test_dialect_companion_document_is_published(self) -> None: def test_policy_promotion_prose_is_discoverable_and_raw_artifacts_stay_staged(self) -> None: page = self.output / "spec/policy/index.html" document = page.read_text(encoding="utf-8") - self.assertIn("Draft companion — conditional acceptance", document) + self.assertIn("Accepted at draft maturity", document) self.assertIn("Policy offline-reader class", document) - self.assertIn("default-branch RFC remains Review", document) + self.assertIn("No Policy offline-reader conformance claim is available before that release", document) self._assert_nothing_published_under("conformance/policy") self.assertFalse((self.output / "artifacts/schema/policy").exists()) for name in ("common", "policy", "governing-adoption", "fixture", "vectors"): @@ -271,13 +271,12 @@ def test_policy_promotion_prose_is_discoverable_and_raw_artifacts_stay_staged(se published = self.output / "schema/policy/1.0.0" / f"{name}.schema.json" self.assertEqual(published.read_bytes(), source.read_bytes()) - def test_policy_draft_acceptance_is_conditional_with_source_only_archives(self) -> None: + def test_policy_is_accepted_at_draft_maturity_with_source_only_archives(self) -> None: page = self.output / "rfcs" / "0023-policy-companion" / "index.html" document = page.read_text(encoding="utf-8") - self.assertIn('Draft companion — conditional acceptance', document) - self.assertIn("This PR proposes acceptance", document) - self.assertIn("required CI passes", document) - self.assertIn("Until then the default-branch RFC remains Review", document) + self.assertIn('Accepted at draft maturity', document) + self.assertIn("completing that process disposition", document) + self.assertIn("No Policy conformance claim is available before", document) self.assertIn("blob/main/rfcs/0023-policy-companion.md", document) self.assertIn("View current source", document) self.assertIn( diff --git a/web/build.py b/web/build.py index 40d3af6..cedb08d 100644 --- a/web/build.py +++ b/web/build.py @@ -359,9 +359,9 @@ def archive(self) -> str: "spec/policy.md", PurePosixPath("spec/policy/index.html"), "Policy content and governing adoption", - "Policy draft approved conditional on required green CI and PR 218 merge; immutable content and exact governing adoption, with no published conformance claim.", + "Policy companion accepted at draft maturity; immutable content and exact governing adoption, with no published conformance claim.", "spec", - "Draft companion — conditional acceptance", + "Accepted at draft maturity", source_ref="main", ), Page( @@ -712,9 +712,9 @@ def archive(self) -> str: "rfcs/0023-policy-companion.md", PurePosixPath("rfcs/0023-policy-companion/index.html"), "RFC 0023: Policy content and governing adoption", - "Review proposal for immutable policy content and exact governing adoption, with a proposed draft 1.0.0 contract, a frozen non-normative prototype and unresolved trust and live governance contracts.", + "Accepted standards-track RFC at draft maturity for immutable policy content and exact governing adoption, with unpublished draft artifacts and unresolved trust and live governance contracts.", "proposals", - "Draft companion — conditional acceptance", + "Accepted at draft maturity", source_ref="main", ), Page(