Skip to content

Commit ebe60f2

Browse files
arena-ai-coding-agent[bot]hyperpolymatharena-agent
authored
triage: ULTRAPLAN 2026-09-24 — issue-influx root cause, intake spec, templates, canon fixes (#1046)
The issue tracker doubled overnight on 2026-09-22 (91 issues in a day). This PR resolves the situation at the source rather than cosmetically: ## Diagnosis (full detail in `ULTRAPLAN-2026-09-24.adoc`) - The explosion was a **filing-model failure**, not a bot malfunction: an AI-assisted estate audit filed one issue per finding, with no dedup against the 95-issue existing backlog, no scope filter (≈1/3 of the wave is estate-wide work that does not live in this repo), and no umbrella. - The automated detectors (lockfile-drift / settings-drift) are working as designed (one tracking issue each) and were ruled out. - `0-canon/GOVERNANCE.adoc` was a broken AI-generated placeholder describing a governance model that does not exist in this single-owner estate. ## Changes - **`ULTRAPLAN-2026-09-24.adoc`** — the durable record: census, timeline, root-cause analysis, the complete 193-issue classified backlog, spec reconciliation status, ranked next actions. - **`docs/ISSUE-INTAKE-SPEC.adoc` v1.0.0** — the missing intake rules: one issue / one defect / correct scope; dedup obligation; wave-umbrella rule; mandatory templates; automation contract; no silent closes. - **`.github/ISSUE_TEMPLATE/`** — bug / decision / campaign templates; blank form disabled. - **`0-canon/GOVERNANCE.adoc` v2.0.0** — rewritten against the actual Constitutional District. - **`0-canon/rsr/LANGUAGE-POLICY.adoc`** — `:source-repo:` cccp → standards (closes #927). - **`rhodium-standard-repositories/.github/workflows/language-policy.yml`** — line-116 "replacement: Deno" → Bun per the 2026-09-22 ruling (closes #920 in this repo). - **`scripts/triage-2026-09-24-apply.sh`** — idempotent owner-run script applying the live actions the agent token cannot (it lacks `issues:write`): labels all open issues (estate classifier + curated dispositions), closes 10 issues with evidence comments (#956 fixed by #1034; #637/#709/#715 absorbed into #787; #784 answered by #968; #808 subsumed by #913 with evidence preserved; #708 fixed; #658 superseded by the 2026-09-22 ruling; #920/#927 fixed here), and sets the optimised description + topics. ## After merge ``` bash scripts/triage-2026-09-24-apply.sh # DRY_RUN=1 first, if preferred ``` Then the ranked actions in ULTRAPLAN part 8 (decision batch #787 first). Co-authored-by: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
1 parent c56f4ec commit ebe60f2

10 files changed

Lines changed: 2314 additions & 62 deletions

File tree

‎.github/ISSUE_TEMPLATE/bug.yml‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
name: Bug / defect
3+
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.
4+
title: "<component>: <one-line defect>"
5+
labels: [bug]
6+
body:
7+
- type: dropdown
8+
id: scope
9+
attributes:
10+
label: Scope
11+
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)."
12+
options:
13+
- scope:repo (fix is in this repository)
14+
- scope:estate (fix is estate-wide; this repo is the source)
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: evidence
19+
attributes:
20+
label: Evidence
21+
description: "The command, its actual output, and the expected result. An issue without evidence is untriageable and will be closed."
22+
placeholder: |
23+
$ <exact command>
24+
<actual output>
25+
Expected: <what should happen>
26+
validations:
27+
required: true
28+
- type: textarea
29+
id: affected
30+
attributes:
31+
label: Affected
32+
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)."
33+
validations:
34+
required: true
35+
- type: textarea
36+
id: acceptance
37+
attributes:
38+
label: Acceptance criteria
39+
placeholder: "- [ ] <verifiable condition>"
40+
value: "- [ ] "
41+
validations:
42+
required: true
43+
- type: input
44+
id: wave
45+
attributes:
46+
label: Wave / umbrella (if part of a batch)
47+
description: "Issue number of the meta:campaign umbrella this finding belongs to. Blank only if this is a standalone finding."
48+
validations:
49+
required: false
50+
- type: input
51+
id: dedup
52+
attributes:
53+
label: Related issues checked
54+
description: "Issue numbers you searched before filing (deduplication obligation, Intake Spec Rule 2). 'searched: <terms>' is acceptable."
55+
validations:
56+
required: true
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
name: Campaign / wave umbrella
3+
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.
4+
title: "[campaign] <name> (UMBRELLA)"
5+
labels: [meta:campaign]
6+
body:
7+
- type: textarea
8+
id: source
9+
attributes:
10+
label: Source of findings
11+
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)."
12+
validations:
13+
required: true
14+
- type: textarea
15+
id: scope
16+
attributes:
17+
label: Scope and boundaries
18+
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."
19+
validations:
20+
required: true
21+
- type: textarea
22+
id: steps
23+
attributes:
24+
label: Steps / acceptance criteria
25+
placeholder: |
26+
- [ ] Step 1 — <condition that closes it> (issue: #)
27+
- [ ] Step 2 — <condition> (issue: #)
28+
validations:
29+
required: true
30+
- type: textarea
31+
id: stopconditions
32+
attributes:
33+
label: Stop / park conditions
34+
description: "What would park this wave (owner ruling, cost, dependency) so it is parked deliberately rather than decaying silently."
35+
validations:
36+
required: false

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Blank issues are disabled deliberately.
3+
# Intake Spec (docs/ISSUE-INTAKE-SPEC.adoc) Rule 4: an issue that fits none of
4+
# the templates (bug / decision / campaign) does not fit this repository.
5+
# The blank form is how the 2026-09-22 unstructured bulk-filing shape becomes
6+
# possible again; it is not an acceptable intake path.
7+
blank_issues_enabled: false
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
name: Decision / owner ruling
3+
description: A point where work is blocked on an owner decision. The answer should be batchable — one reply resolves it.
4+
title: "[decision] <one-line question>"
5+
labels: [decision, status:needs-ruling]
6+
body:
7+
- type: textarea
8+
id: question
9+
attributes:
10+
label: The question
11+
description: "One question, answerable in one sentence."
12+
validations:
13+
required: true
14+
- type: textarea
15+
id: options
16+
attributes:
17+
label: Options
18+
description: "Each option, with its cost and what it blocks."
19+
placeholder: |
20+
A) <option> — cost: <...> — unblocks: <...>
21+
B) <option> — cost: <...> — unblocks: <...>
22+
validations:
23+
required: true
24+
- type: textarea
25+
id: recommendation
26+
attributes:
27+
label: Recommendation
28+
description: "Which option and why. The owner may disagree; the point is to make the disagreement cheap."
29+
validations:
30+
required: true
31+
- type: textarea
32+
id: blocked
33+
attributes:
34+
label: What is blocked
35+
description: "Issue numbers / estate work waiting on this ruling."
36+
validations:
37+
required: false
38+
- type: input
39+
id: register
40+
attributes:
41+
label: Register entry
42+
description: "This decision MUST also be added to the open owner-decision register (the meta:umbrella + decision issue). Put the register issue number here."
43+
validations:
44+
required: true

‎0-canon/GOVERNANCE.adoc‎

Lines changed: 89 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,89 @@
1-
== Governance
2-
3-
=== Overview
4-
5-
This project is governed by the following principles and structures to
6-
ensure transparent, inclusive, and effective decision-making.
7-
8-
=== Roles and Responsibilities
9-
10-
==== Maintainers
11-
12-
Maintainers are responsible for: - Reviewing and merging pull requests -
13-
Managing releases and versioning - Ensuring code quality and standards -
14-
Triaging issues and bug reports - Community engagement and support
15-
16-
==== Contributors
17-
18-
Contributors are expected to: - Follow the code of conduct - Submit
19-
well-documented pull requests - Write tests for new functionality -
20-
Maintain existing tests - Update documentation as needed
21-
22-
=== Decision Making
23-
24-
==== Minor Changes
25-
26-
* Can be made by any maintainer
27-
* Include bug fixes, documentation updates, dependency updates
28-
29-
==== Major Changes
30-
31-
* Require discussion in issues or pull requests
32-
* Include new features, architectural changes, API changes
33-
* Need approval from at least 2 maintainers
34-
35-
==== Breaking Changes
36-
37-
* Require RFC (Request for Comments) process
38-
* Need approval from majority of maintainers
39-
* Must include migration guide
40-
41-
=== Code of Conduct
42-
43-
All participants are expected to follow our Code of Conduct. Violations
44-
can be reported to the maintainers.
45-
46-
=== Communication
47-
48-
* *Issues*: For bug reports and feature requests
49-
* *Discussions*: For questions and general discussion
50-
* *Pull Requests*: For code contributions
51-
52-
=== Licensing
53-
54-
All contributions are made under the terms of the repository’s LICENSE
55-
file. By submitting a pull request, you agree to license your
56-
contributions accordingly.
57-
58-
'''''
59-
60-
_Last updated: 2026-07-18_
1+
// SPDX-License-Identifier: CC-BY-SA-4.0
2+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
= Governance
4+
:author: Jonathan D.A. Jewell (hyperpolymath)
5+
:revnumber: 2.0.0
6+
:revdate: 2026-09-24
7+
:toc:
8+
:icons: font
9+
10+
[NOTE]
11+
====
12+
v2.0.0 replaces a generic placeholder (v1) that did not describe this estate
13+
and carried a broken document tail. The placeholder said, for example, that
14+
major changes "need approval from at least 2 maintainers" — a statement that
15+
is not true of a single-owner estate and that contradicted the constitution.
16+
Authority for this document is derived from the
17+
link:constitution/README.adoc[Constitutional District], which it summarises
18+
for orientation and does not supersede.
19+
====
20+
21+
== What governs this repository
22+
23+
This repository is the standards host of the Hyperpolymath estate: it holds
24+
the constitutional district, the RSR (Repository Standard) canon, the
25+
machine-readable format definitions, and the reusable CI/CD and security
26+
workflows that the estate consumes.
27+
28+
* The *constitutional district* (link:constitution/README.adoc[0-canon/constitution/])
29+
is the highest estate-level authority. It states what may govern: authority
30+
classes and precedence, the assurance constitution, the contribution
31+
constitution, exceptions and ANCHORs, known tensions, and the change
32+
procedure.
33+
* *Normative standards* (the RSR tree, the format trees, the policies under
34+
`docs/`) govern within constitutional bounds.
35+
* *Implementation* (scripts, reusable workflows, gates) may enforce rules
36+
but cannot create them.
37+
38+
Where this document and the constitution differ, the constitution wins.
39+
40+
== Roles
41+
42+
*Owner*::
43+
The estate is single-owner (hyperpolymath). The owner holds the authority
44+
classes the constitution assigns to the estate: rulings on `status:needs-ruling`
45+
matters, ANCHOR usage, licence and scope decisions, and changes to this
46+
document and the canon.
47+
48+
*Maintainers*::
49+
There are no separate maintainers. The owner may delegate scoped, revocable
50+
permissions via repository rulesets and branch protection; delegation is
51+
recorded in the rulesets, not in this document.
52+
53+
*Agents and automation*::
54+
Agents and bots act under the owner's authority and under the constraints of
55+
link:constitution/CONTRIBUTION-CONSTITUTION.adoc[Contribution Constitution]
56+
and `0-AI-MANIFEST.a2ml`. Automation may open issues only under the contract
57+
in link:../docs/ISSUE-INTAKE-SPEC.adoc[Issue Intake Specification] Rule 6.
58+
59+
== Decision making
60+
61+
* *Constitutional changes* — via link:constitution/CHANGE-PROCEDURE.adoc[Change
62+
Procedure]; they identify what they supersede.
63+
* *Normative standard changes* — proposal in an issue or PR, reviewed against
64+
the precedence test (link:constitution/AUTHORITY-AND-PRECEDENCE.adoc[Authority
65+
and Precedence]); a change that contradicts a higher class is a recorded
66+
contradiction, not a silent amendment.
67+
* *Local changes* (docs, scripts, config) — normal PR review; required checks
68+
on `main` are the mechanical floor.
69+
* *Owner rulings* — batched in the owner-decision register; a decision
70+
template issue names the register entry so one reply resolves a batch.
71+
72+
== Communication
73+
74+
* *Issues* — one issue, one actionable defect, correct scope, per the
75+
link:../docs/ISSUE-INTAKE-SPEC.adoc[Issue Intake Specification]. Estate-wide
76+
findings live in the estate register, not here.
77+
* *Pull requests* — the only path by which a change reaches `main` on the
78+
protected branches.
79+
* *Evidence* — claims in this repository that assert current state must
80+
carry their evidence (command + output, or the run that produced them).
81+
A number without a measurement method is a comment, not a claim.
82+
83+
== Licensing
84+
85+
This repository is licensed under MPL-2.0 (see `LICENSE`). Constitutional and
86+
RSR canon documents carry CC-BY-SA-4.0 headers per the estate licence axis.
87+
`LICENSES/` and the REUSE sidecars keep the per-file record; a file that cannot
88+
carry a header needs its sidecar (see the open REUSE findings in the issue
89+
tracker) — the record is part of the standard, not optional furniture.

‎0-canon/rsr/LANGUAGE-POLICY.adoc‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
:revdate: 2026-09-22
88
:toc: left
99
:icons: font
10-
:source-repo: https://github.com/hyperpolymath/cccp
10+
:source-repo: https://github.com/hyperpolymath/standards
1111

1212
[NOTE]
1313
====

0 commit comments

Comments
 (0)