governance: final consultation draft, two-level status model - #279
governance: final consultation draft, two-level status model#279artvana wants to merge 4 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Membership is Supporter and Partner. Steward described a commitment (no custody of user data, operating where the data lives) that the register had no way to check independently of Verified Operator, which it converted on anyway. - §4.3 deleted. §4's closing "Membership carries no fee at any level" is kept — it closes the section, not the Steward entry. - §0 "What membership is" named the range by its endpoints, the upper one being Steward. It now names the two levels. - §8 timeline: "Verified Operator and confirmed Steward open" becomes "Verified Operator opens". §1.1's LF Decentralized Trust Labs Stewards are a different body and are untouched. Nothing else in the repo or the site source referred to Steward membership or to holding no custody of user data. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NECjjZbYWNTzq3bu7nuiDP Signed-off-by: Art A <129354338+artvana@users.noreply.github.com>
Replaces GOVERNANCE.md in full. Status becomes two levels. Conformant is automated: the submission passes the admissions check and validates, no human judgement, and it confers no membership. Verified is reviewed. Official Source and the recognition route are gone, and with them the "Identified" naming; Steward membership is gone, so membership is Supporter and Partner, and Partner now requires a Verified status rather than any status. Authority is stated once, the same way throughout. The technical committee reviews pull requests and recommends; it merges nothing. The steering committee changes the specification and grants status by majority vote, and the Chair merges. In phase 2 no steering committee exists, so the maintainers merge on the committee's adopted recommendation with no discretion to do otherwise. Carried forward from the merged #267, which the supplied draft predated: the unnumbered "Pre" row and the four-stages wording in §2, "3. Full" rather than "3. Elected", and §0's sentence recording that the Vana Foundation started the project and that PDPP is a community specification owned, governed and managed by the community. §5.7's "until PDP-Connect holds a legal home" was already in the new draft. apps/site-blume-spike/content/governance.md is generated from the root document by that spike's own sync-canonical-content.mjs and had gone stale at the pre-consultation draft, so it still carried the board, Official Source, Steward and the recognition route. Regenerated. Its two stale specification copies are left alone: they are the same generator's output but a separate drift. The only remaining "Steward" in either copy is §1.1's LF Decentralized Trust Labs Stewards, a different body. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NECjjZbYWNTzq3bu7nuiDP Signed-off-by: Art A <129354338+artvana@users.noreply.github.com>
a1e0fe5 to
f3f1036
Compare
§5.5 gains two paragraphs. Update rights: a declaration may be updated only by the account that submitted it or one listed in the declaration's own maintainers field, and a pull request from any other account is returned at the admissions check. Every new version passes the automated check whatever status level it carries, and a Verified declaration whose new version widens scope returns to review. Archival: the technical committee may recommend archiving a declaration with low or no usage, against a threshold and measurement published before any archival is proposed, with 30 days' notice to the accountable party. An archived declaration stays readable, is marked archived, is not presented by default, and does not affect grants already issued against it. The accountable party reinstates it by submitting a new version. §5.8 Change is restated to match: every version passes the automated check before publication, and widening scope is what additionally returns through the route by which the status was obtained. Appendix A gains item 8a, so the submitter check is enforced at the step that returns submissions rather than only stated in §5.5. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NECjjZbYWNTzq3bu7nuiDP Signed-off-by: Art A <129354338+artvana@users.noreply.github.com>
Generated from the root GOVERNANCE.md by that spike's own sync-canonical-content.mjs. Regenerated in the same commit series as the root edit so it does not drift again. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NECjjZbYWNTzq3bu7nuiDP Signed-off-by: Art A <129354338+artvana@users.noreply.github.com>
OWNER-DECISION: normative. Three new requirements in Core; two documents demoted out of the normative set. Not ratified. Source: owner scope addendum 2026-09-02 ~17:40, item B; text taken from the sibling audit at local/SPEC-SURFACE-AUDIT-0902.md (inserts A, B and C of its section 1.5). The audit is read-only analysis by a separate lane; this commit applies its proposed text, it does not re-derive it. Art wants v0.1.0's normative surface to be the core spec alone. The audit traced what actually depends on the two companion documents and found the load-bearing residue is about 200 words. Applied here: 1. Equivocation, into Section 5 Versioning and snapshots. Core already said declaration_version is opaque with no implied ordering; it never said what happens when the SAME version label later carries DIFFERENT content. That is the security property -- it is what stops a publisher swapping content under a label an authorization server already consented against -- and it was the single genuine gap. Now a MUST. 2. Source acceptance, as a new Section 6 subsection. Core described what a selection request contains, never what it may not name. The rule that a client cannot introduce a source authority, declaration location, or revision during authorization is enforced fail-closed in the reference implementation's PAR path today; Core now states it. 3. Publisher attribution, replacing two dangling pointers. Core deferred twice to "discovery and trust policy" -- a document that, after Art's #279 removes Official Source, has zero inbound references anywhere in the repository. The rule is now stated where the field is defined. Both companion documents are relabelled Informative in their root status lines, and both header sidecars gain the Informative callout they never had, so the site stops rendering them beside Core with no visible status distinction. WHAT THIS DELIBERATELY DOES NOT DO: The Collection Profile is NOT moved to data-connectors tonight, on the audit's recommendation and for a reason worth repeating: a manifest written to its published bindings table is rejected by the reference implementation's own validator (the spec publishes `browser_automation`; the validator accepts `browser` and hard-rejects unknown keys; 0 of 45 shipping manifests use the published name). Moving a known-wrong contract into the repo whose authors are its primary readers ships the defect to exactly the people most likely to follow it. Reclassify now, refresh, then move something true. The three extension profiles are left alone. They are already allowlisted in ratified OpenSpec governance, CI-enforced, status-labelled, and required not to be depended on by Core. They are the pattern, not the problem. README.md and the site rail's grouping are NOT touched here, though both are stale in exactly this respect. Art's open #283 makes those same edits. Duplicating them guarantees a conflict and gains nothing. The slug list keeps a comment explaining why it was left unrestructured. Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
OWNER-DECISION: normative. Three new requirements in Core; two documents demoted out of the normative set. Not ratified. Source: owner scope addendum 2026-09-02 ~17:40, item B; text taken from the sibling audit at local/SPEC-SURFACE-AUDIT-0902.md (inserts A, B and C of its section 1.5). The audit is read-only analysis by a separate lane; this commit applies its proposed text, it does not re-derive it. Art wants v0.1.0's normative surface to be the core spec alone. The audit traced what actually depends on the two companion documents and found the load-bearing residue is about 200 words. Applied here: 1. Equivocation, into Section 5 Versioning and snapshots. Core already said declaration_version is opaque with no implied ordering; it never said what happens when the SAME version label later carries DIFFERENT content. That is the security property -- it is what stops a publisher swapping content under a label an authorization server already consented against -- and it was the single genuine gap. Now a MUST. 2. Source acceptance, as a new Section 6 subsection. Core described what a selection request contains, never what it may not name. The rule that a client cannot introduce a source authority, declaration location, or revision during authorization is enforced fail-closed in the reference implementation's PAR path today; Core now states it. 3. Publisher attribution, replacing two dangling pointers. Core deferred twice to "discovery and trust policy" -- a document that, after Art's #279 removes Official Source, has zero inbound references anywhere in the repository. The rule is now stated where the field is defined. Both companion documents are relabelled Informative in their root status lines, and both header sidecars gain the Informative callout they never had, so the site stops rendering them beside Core with no visible status distinction. WHAT THIS DELIBERATELY DOES NOT DO: The Collection Profile is NOT moved to data-connectors tonight, on the audit's recommendation and for a reason worth repeating: a manifest written to its published bindings table is rejected by the reference implementation's own validator (the spec publishes `browser_automation`; the validator accepts `browser` and hard-rejects unknown keys; 0 of 45 shipping manifests use the published name). Moving a known-wrong contract into the repo whose authors are its primary readers ships the defect to exactly the people most likely to follow it. Reclassify now, refresh, then move something true. The three extension profiles are left alone. They are already allowlisted in ratified OpenSpec governance, CI-enforced, status-labelled, and required not to be depended on by Core. They are the pattern, not the problem. README.md and the site rail's grouping are NOT touched here, though both are stale in exactly this respect. Art's open #283 makes those same edits. Duplicating them guarantees a conflict and gains nothing. The slug list keeps a comment explaining why it was left unrestructured. Assisted-by: AI Signed-off-by: Tim Nunamaker <tnunamak@gmail.com>
|
@tnunamak @annakaz — three PRs are open and they interlock. Review in this order, please. 1. #279, governance final consultation draftReplaces
2. #283, consolidate normative scope into CoreStacked on #279's branch, so it needs #279 first. Retarget it at
One thing to look at: Discovery and Trust keeps its 3. #313, the new siteIndependent of the other two on the branch graph, but coupled in content: Seven routes on the four-intent structure:
The PR body lists every config value still on a placeholder. Each one renders as a visible bracketed placeholder until set, so nothing guessed ships as fact. The two that need a decision from us are the interim controller name and the general contact address. Where the prototype and the design export disagreed, the resolutions are listed in the PR body. The one worth a second opinion: ChecksAll three pass |
|
Superseded by #285, merged to main as 99fcca3. This PR's commits were carried into that stack with authorship preserved (as #307 for the governance model and #308 for the normative-scope consolidation), with the follow-on changes recorded in the stack's decision rows. Closing without merge so the history has one path. |
Final consultation draft. Two-level status model (Conformant automated, Verified reviewed). Steward removed. Partner requires Verified. Technical committee recommends; steering committee changes the specification and grants; Chair merges. Phase 2: maintainers merge on recommendation, no discretion. Source declarations: update rights restricted to submitter or listed maintainers, automated check on every version, committee may recommend archival of unused declarations with published threshold and 30 days' notice.
Replaces the root
GOVERNANCE.mdin full. This PR opened as the Steward removal alone; the final draft supersedes and contains it.Carried forward from #267
The supplied draft predated #267, so three edits already on
mainwere re-applied on top of it rather than reverted:Prerow and the "four stages" wording3. Fullrather than3. Elected§5.7's "until PDP-Connect holds a legal home" was already present in the new draft.
Stale references
Grepped the repo and site source for
Official Source,Steward,recognition route,Identified,boardandcommittee decides.apps/site-blume-spike/content/governance.md— generated from the root document by that spike's ownscripts/sync-canonical-content.mjs, and stale at the pre-consultation draft, so it still carried the board, Official Source, Steward and the recognition route. Regenerated. Its two stale specification copies are the same generator's output but a separate drift, and are left alone.recognition routeand a status namedIdentifiedappear nowhere in the repo. TheIdentifiedgrep hits are the TypeScript type namesIdentifiedActionandIdentifiedTargetRegistrationInputin the reference implementation.committee decidessurvives twice inGOVERNANCE.md, both correct under the new model: "the steering committee decides on the recommendation by majority vote and the Chair merges".Stewardsurvives once per copy, as §1.1's LF Decentralized Trust Labs Stewards — a different body, which approves entry to the Labs programme.boardandOfficial Sourcesurvive only indocs/community/working-sessions/2026-08-26-session-4-governance-membership-conformance.md, dated minutes recording what was discussed at that session. Left as the historical record.The site renders
GOVERNANCE.mdrather than restating it, so no site copy named the statuses or the bodies.Source declarations: update rights and archival
maintainersfield; a pull request from any other account is returned at the admissions check. Every new version passes the automated check whatever status level it carries, and a Verified declaration whose new version widens scope returns to review under §5.8.apps/site-blume-spike/content/governance.mdis regenerated from the root document in the same series, so the spike copy does not drift again.Note on rendering:
8a.is not a valid CommonMark ordered-list marker (the marker must be digits followed by.or)), so it renders as a paragraph directly under item 8 rather than as an indented list item. The text reads as intended. Say the word if you would rather it were indented as a continuation of item 8, or renumbered so the list carries it.Checks
spec:checkpasses.pnpm --dir apps/site types:check,test(202 passed, 0 failed),check(0 errors; the 4suppressions/unusedwarnings are pre-existing) andbuildall pass, with/governanceand/principlesprerendering. Thesync-spec-docsheader parser reads the new draft's status block unchanged — the labels are the same — andsrc/generated/spec-front-matter.tsstill resolves the governance rail card.Verified on the served production build that
/governancereturns 200 and renders noOfficial Source, norecognitionand noIdentified; that Conformant, the Partner-requires-Verified rule, "Chair merges" and the phase-2 no-discretion clause are all present; and that thePrerow, "four stages",3. Fulland the §0 sentence survived the replacement.Assisted-by: AI
🤖 Generated with Claude Code
https://claude.ai/code/session_01NECjjZbYWNTzq3bu7nuiDP