Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# SPDX-License-Identifier: MPL-2.0
name: Bug / defect
description: A reproducible defect in THIS repository (a spec, script, reusable workflow, seed, config, or tool). Estate-wide defects belong in the estate register, not here — see docs/ISSUE-INTAKE-SPEC.adoc.
title: "<component>: <one-line defect>"
labels: [bug]
body:
- type: dropdown
id: scope
attributes:
label: Scope
description: "Where the actionable fix lives. Rules: scope:repo = fix touches a file in this repo; scope:estate = fix lives in other repos/org settings (then justify why it is filed here — usually this repo is the fix source)."
options:
- scope:repo (fix is in this repository)
- scope:estate (fix is estate-wide; this repo is the source)
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Evidence
description: "The command, its actual output, and the expected result. An issue without evidence is untriageable and will be closed."
placeholder: |
$ <exact command>
<actual output>
Expected: <what should happen>
validations:
required: true
- type: textarea
id: affected
attributes:
label: Affected
description: "File(s) and line(s) in this repository, and — if this repo is the propagation source — the estate population affected (count + how it was measured)."
validations:
required: true
- type: textarea
id: acceptance
attributes:
label: Acceptance criteria
placeholder: "- [ ] <verifiable condition>"
value: "- [ ] "
validations:
required: true
- type: input
id: wave
attributes:
label: Wave / umbrella (if part of a batch)
description: "Issue number of the meta:campaign umbrella this finding belongs to. Blank only if this is a standalone finding."
validations:
required: false
- type: input
id: dedup
attributes:
label: Related issues checked
description: "Issue numbers you searched before filing (deduplication obligation, Intake Spec Rule 2). 'searched: <terms>' is acceptable."
validations:
required: true
36 changes: 36 additions & 0 deletions .github/ISSUE_TEMPLATE/campaign.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# SPDX-License-Identifier: MPL-2.0
name: Campaign / wave umbrella
description: A multi-step or multi-repo effort. Per the Intake Spec (docs/ISSUE-INTAKE-SPEC.adoc), a wave of more than five findings MUST have exactly one umbrella like this, opened before the findings.
title: "[campaign] <name> (UMBRELLA)"
labels: [meta:campaign]
body:
- type: textarea
id: source
attributes:
label: Source of findings
description: "The audit/checkpoint documents this wave came from, by name and location. If an agent produced them, name the session. Duplicated or conflicting source documents must be reconciled here before findings are filed (Intake Spec Rule 8)."
validations:
required: true
- type: textarea
id: scope
attributes:
label: Scope and boundaries
description: "What is in the wave, what is explicitly out, and which repos/estates it touches. Estate-wide steps belong in the estate register; list them by pointer."
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps / acceptance criteria
placeholder: |
- [ ] Step 1 — <condition that closes it> (issue: #)
- [ ] Step 2 — <condition> (issue: #)
validations:
required: true
- type: textarea
id: stopconditions
attributes:
label: Stop / park conditions
description: "What would park this wave (owner ruling, cost, dependency) so it is parked deliberately rather than decaying silently."
validations:
required: false
7 changes: 7 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-License-Identifier: MPL-2.0
# Blank issues are disabled deliberately.
# Intake Spec (docs/ISSUE-INTAKE-SPEC.adoc) Rule 4: an issue that fits none of
# the templates (bug / decision / campaign) does not fit this repository.
# The blank form is how the 2026-09-22 unstructured bulk-filing shape becomes
# possible again; it is not an acceptable intake path.
blank_issues_enabled: false
44 changes: 44 additions & 0 deletions .github/ISSUE_TEMPLATE/decision.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# SPDX-License-Identifier: MPL-2.0
name: Decision / owner ruling
description: A point where work is blocked on an owner decision. The answer should be batchable — one reply resolves it.
title: "[decision] <one-line question>"
labels: [decision, status:needs-ruling]
body:
- type: textarea
id: question
attributes:
label: The question
description: "One question, answerable in one sentence."
validations:
required: true
- type: textarea
id: options
attributes:
label: Options
description: "Each option, with its cost and what it blocks."
placeholder: |
A) <option> — cost: <...> — unblocks: <...>
B) <option> — cost: <...> — unblocks: <...>
validations:
required: true
- type: textarea
id: recommendation
attributes:
label: Recommendation
description: "Which option and why. The owner may disagree; the point is to make the disagreement cheap."
validations:
required: true
- type: textarea
id: blocked
attributes:
label: What is blocked
description: "Issue numbers / estate work waiting on this ruling."
validations:
required: false
- type: input
id: register
attributes:
label: Register entry
description: "This decision MUST also be added to the open owner-decision register (the meta:umbrella + decision issue). Put the register issue number here."
validations:
required: true
149 changes: 89 additions & 60 deletions 0-canon/GOVERNANCE.adoc
Original file line number Diff line number Diff line change
@@ -1,60 +1,89 @@
== Governance

=== Overview

This project is governed by the following principles and structures to
ensure transparent, inclusive, and effective decision-making.

=== Roles and Responsibilities

==== Maintainers

Maintainers are responsible for: - Reviewing and merging pull requests -
Managing releases and versioning - Ensuring code quality and standards -
Triaging issues and bug reports - Community engagement and support

==== Contributors

Contributors are expected to: - Follow the code of conduct - Submit
well-documented pull requests - Write tests for new functionality -
Maintain existing tests - Update documentation as needed

=== Decision Making

==== Minor Changes

* Can be made by any maintainer
* Include bug fixes, documentation updates, dependency updates

==== Major Changes

* Require discussion in issues or pull requests
* Include new features, architectural changes, API changes
* Need approval from at least 2 maintainers

==== Breaking Changes

* Require RFC (Request for Comments) process
* Need approval from majority of maintainers
* Must include migration guide

=== Code of Conduct

All participants are expected to follow our Code of Conduct. Violations
can be reported to the maintainers.

=== Communication

* *Issues*: For bug reports and feature requests
* *Discussions*: For questions and general discussion
* *Pull Requests*: For code contributions

=== Licensing

All contributions are made under the terms of the repository’s LICENSE
file. By submitting a pull request, you agree to license your
contributions accordingly.

'''''

_Last updated: 2026-07-18_
// SPDX-License-Identifier: CC-BY-SA-4.0
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
= Governance
:author: Jonathan D.A. Jewell (hyperpolymath)
:revnumber: 2.0.0
:revdate: 2026-09-24
:toc:
:icons: font

[NOTE]
====
v2.0.0 replaces a generic placeholder (v1) that did not describe this estate
and carried a broken document tail. The placeholder said, for example, that
major changes "need approval from at least 2 maintainers" — a statement that
is not true of a single-owner estate and that contradicted the constitution.
Authority for this document is derived from the
link:constitution/README.adoc[Constitutional District], which it summarises
for orientation and does not supersede.
====

== What governs this repository

This repository is the standards host of the Hyperpolymath estate: it holds
the constitutional district, the RSR (Repository Standard) canon, the
machine-readable format definitions, and the reusable CI/CD and security
workflows that the estate consumes.

* The *constitutional district* (link:constitution/README.adoc[0-canon/constitution/])
is the highest estate-level authority. It states what may govern: authority
classes and precedence, the assurance constitution, the contribution
constitution, exceptions and ANCHORs, known tensions, and the change
procedure.
* *Normative standards* (the RSR tree, the format trees, the policies under
`docs/`) govern within constitutional bounds.
* *Implementation* (scripts, reusable workflows, gates) may enforce rules
but cannot create them.

Where this document and the constitution differ, the constitution wins.

== Roles

*Owner*::
The estate is single-owner (hyperpolymath). The owner holds the authority
classes the constitution assigns to the estate: rulings on `status:needs-ruling`
matters, ANCHOR usage, licence and scope decisions, and changes to this
document and the canon.

*Maintainers*::
There are no separate maintainers. The owner may delegate scoped, revocable
permissions via repository rulesets and branch protection; delegation is
recorded in the rulesets, not in this document.

*Agents and automation*::
Agents and bots act under the owner's authority and under the constraints of
link:constitution/CONTRIBUTION-CONSTITUTION.adoc[Contribution Constitution]
and `0-AI-MANIFEST.a2ml`. Automation may open issues only under the contract
in link:../docs/ISSUE-INTAKE-SPEC.adoc[Issue Intake Specification] Rule 6.

== Decision making

* *Constitutional changes* — via link:constitution/CHANGE-PROCEDURE.adoc[Change
Procedure]; they identify what they supersede.
* *Normative standard changes* — proposal in an issue or PR, reviewed against
the precedence test (link:constitution/AUTHORITY-AND-PRECEDENCE.adoc[Authority
and Precedence]); a change that contradicts a higher class is a recorded
contradiction, not a silent amendment.
* *Local changes* (docs, scripts, config) — normal PR review; required checks
on `main` are the mechanical floor.
* *Owner rulings* — batched in the owner-decision register; a decision
template issue names the register entry so one reply resolves a batch.

== Communication

* *Issues* — one issue, one actionable defect, correct scope, per the
link:../docs/ISSUE-INTAKE-SPEC.adoc[Issue Intake Specification]. Estate-wide
findings live in the estate register, not here.
* *Pull requests* — the only path by which a change reaches `main` on the
protected branches.
* *Evidence* — claims in this repository that assert current state must
carry their evidence (command + output, or the run that produced them).
A number without a measurement method is a comment, not a claim.

== Licensing

This repository is licensed under MPL-2.0 (see `LICENSE`). Constitutional and
RSR canon documents carry CC-BY-SA-4.0 headers per the estate licence axis.
`LICENSES/` and the REUSE sidecars keep the per-file record; a file that cannot
carry a header needs its sidecar (see the open REUSE findings in the issue
tracker) — the record is part of the standard, not optional furniture.
2 changes: 1 addition & 1 deletion 0-canon/rsr/LANGUAGE-POLICY.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
:revdate: 2026-09-22
:toc: left
:icons: font
:source-repo: https://github.com/hyperpolymath/cccp
:source-repo: https://github.com/hyperpolymath/standards

[NOTE]
====
Expand Down
Loading