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
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,11 @@ docs/*
!docs/integration/**
!docs/formal/
!docs/formal/**
!docs/triage/
!docs/triage/**
# …but the generated PR-#7 stack patches are derived artefacts: regenerate
# with docs/triage/pr7-split/make-stacks.sh instead of committing them.
docs/triage/pr7-split/patches/*.patch

# Test + benchmark run artifacts (not the committed fixtures/baselines)
frontend/tests/results/
Expand Down
222 changes: 222 additions & 0 deletions docs/triage/2026-09-26-notification-backlog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,222 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->

# Notification-backlog triage — 2026-09-26

Request: clear the [GitHub notifications][notif] backlog — finish chores,
close issues, resolve unmergeable PRs, and split huge PRs into mergeable,
comprehensible pieces.

Caveat first: the Arena bot token cannot read the personal
`/notifications` page (API: `403 Resource not accessible by
integration`), so this triage reconstructs the backlog from public repo
state instead: all open PRs/issues on the fork
(`hyperpolymath/MetaManifold-WebUI`) and the parent
(`JoshuaJewell/MetaManifold-WebUI`), plus Actions health. If a
notification is not covered below, point at it and it gets triaged next.

Note: the owner merged fork PR #75 **during this triage** (09:47 UTC);
the report was updated to match. Fork open PRs are now **zero**.

## TL;DR

| Item | Verdict |
|------|---------|
| Fork PR #73 (338 files, conflicting) | **Closed by this triage** — wrong-base duplicate of parent #7 |
| Fork PR #75 (71 files, ILR bases) | **Merged by the owner during triage** (09:47 UTC) → fork issue #20 auto-closed. Post-merge verification still owed (below) |
| Parent PRs #8, #10, #11 (300+ files, conflicting) | **Close them** (owner click — bot has no parent write access; commands in `pr7-split/RUNBOOK.md`). Head branches deleted, real deltas already on fork `main` |
| Parent PR #7 (319 files, clean) | **Keep.** Split into 14 verified stacks: `pr7-split/` (`STACKS.md`, `RUNBOOK.md`, `make-stacks.sh`) |
| CI on the fork | **Broken repo-wide since 2026-09-25 22:19 UTC** — every file-based workflow `startup_failure`s with zero jobs, including the #75 merge commit. Settings/platform-side; owner action required (runbook appendix 2) |
| Fork issues (12 open; #20 closed by the #75 merge) | **All remaining stay open** — verified one by one (epic gate, recorded deferrals). Closing any of them now would contradict recorded owner decisions |
| Branch `arena/01a0db67` (no PR) | **Deleted at owner's request** — content preserved in `docs/triage/db67-rescue/` (stale docs branch, not DOI-deleting — see report) |
| Parent issue #12 (owner memo) | Awaits the addressee's eyes; summarised below, not closed |
| Dependabot Updates on fork `main` | **Two consecutive failures** (`36210545146`, `36233872771`); re-run once CI is fixed |

## Actions taken by this triage

1. **Closed fork PR #73** with an explanatory comment ([comment][c73]):
same head branch (`feat/stipple-typed-studies-ui` @ `eab8ea0`) is open
upstream as parent #7 where it is CLEAN; the fork-side PR rendered as
338-file / +65k whole-tree noise after the fork's `git-filter-repo`
rewrite severed the merge base back to the initial commit, and was
CONFLICTING. Branch untouched; nothing lost.
2. Recovered the three **deleted head commits** of parent PRs #8/#10/#11
by SHA from the fork (`f451f1c0`, `c0be9516`, `b46aee09`) and proved
their content is already on fork `main` (`git cherry` patch-identical:
`6c29b53b`, ancestor, `0ef5eee`). Wrote the close comments + commands
for the owner (bot is `403` on the parent).
3. Built the **parent-#7 split kit** (`docs/triage/pr7-split/`): 14
disjoint stacks covering all 319 files, verified to reproduce the
branch tree byte-for-byte, with per-stack review guide and runbook.
4. Diagnosed the **CI outage** (evidence below) to a settings/platform
cause with owner fix steps.
5. Audited all open fork issues against merged work: #20 closed by the
#75 merge; none of the rest qualifies for closure (details below).
6. Merged the #75 merge commit into this branch, resolving the one
`.gitignore` clash (kept both sides: `docs/formal/` + `docs/triage/`).

## The huge PRs, explained

All four 300+ file PRs are the same disease with different prognoses.
On ~2026-09-24/25 fork `main` was rewritten with `git-filter-repo`
(~260 MiB of dead blobs stripped; HEAD tree byte-identical — see the
parent #7 description). The rewrite severed every merge base back to the
initial commit, so any branch diffed against the "wrong" base renders as
a whole-tree diff:

- **Parent #7** (319 files, +22,662/−404): branch is `upstream/main` + 3
commits, so the diff is REAL and the PR is CLEAN. Genuinely large →
split kit provided.
- **Fork #73** (338 files, +65,571/−22): same branch against rewritten
fork `main` → noise + conflicts → closed as duplicate.
- **Parent #8/#10/#11** (~315–345 files, ~+60k): branches cut from
fork `main`, PR'd at upstream `main` (July snapshot) → noise; real
deltas were 2/0/1 commits, all now on fork `main`; branches deleted
→ close.

## Fork PR #75 — merged during triage (verification owed)

`feat(analysis): PhILR, SBP and balance-dendrogram ILR bases`
(`e2adbb9`, 71 files, +6,918/−78) was merged by the owner at 09:47 UTC
with CI `startup_failure` and CodeFactor FAILURE — i.e. the PR's own
"Closes #20 once CI is green" condition was bypassed, and fork issue
#20 auto-closed. That is the owner's call to make; the owed follow-up:

1. Once CI runs again, confirm the `CI` + `DOI publication contracts`
lanes pass on the merge commit — the PR author never executed Julia
in their sandbox, so CI is the first real execution of the new tests,
reference implementation and benchmarks.
2. Check whether the CodeFactor FAILURE flagged anything actionable in
the merged code.
3. Re-run Dependabot Updates (failed twice on `main`).

## CI outage — evidence

- Since 2026-09-25 22:19 UTC, **100% of file-based workflow runs** end
`startup_failure` with **zero jobs**: `CI`, `DOI publication
contracts`, `Stipple UI contracts` — on `main` pushes, PRs, bot and
Dependabot actors alike (e.g. runs `36210930780`, `36210537997`,
`36196688881`, and the #75 merge runs `36233864893`/`36233864472`).
- The break is **not the workflow files**: `ui.yml` last ran green on
2026-09-21, is unchanged since, and fails identically now. All
workflows report `active`. Before 22:19 the same files executed jobs
(red, but running).
- Dynamic (non-file) workflows still run: CodeQL succeeds on the same
commits; Dependabot Updates jobs execute (and fail on their own
merits).
- A previous session saw the UI banner: *"Actor is not allowed to
trigger Actions workflows"*; `gh run rerun` is refused
("workflow file may be broken" — GitHub's stock message for
un-rerunnable startup failures).
- A sibling probe branch (`arena/01a0db23`, "probe whether file-based
workflows can start here") also startup-fails.

Conclusion: settings- or platform-side block on starting file-based
workflows. Owner steps: read the exact banner on any failed run,
check Settings → Actions → General on both repos, push a no-op commit
from a human account to discriminate actor-block vs global break, and
escalate to GitHub Support if humans fail too. Full steps in
`pr7-split/RUNBOOK.md` appendix 2. **Everything merge-gated waits on
this**: any #7 stack PRs, Dependabot, and post-merge verification of #75.

## Issues — why the remaining 12 stay open

| # | Issue | Why it stays open |
|---|-------|-------------------|
| 1 | Validated Julia statistics layer (epic) | 14-item acceptance gate ending in *independent review + explicit owner approval*; the issue text says closing it administratively does not open the symbolic gate |
| 2 | BLOCKED symbolic-engine gate | Blocked by #1 by recorded owner decision; it is the gate, not work |
| 3 | Exact statistics (Fisher/exact-NB/permutation) | Recorded owner *decision* to defer (catalogue item 4, excluded from v1); code shows only refusal/doc mentions |
| 4 | Symbolic engine for formulae | Deferred; gated by #1/#2 |
| 5 | ANCOM-BC / ALDEx2 / Songbird | Deferred; no implementation merged |
| 6 | CladeCumulus phylogenetic integration | Deferred; `clade_cumulus.jl` exists on the PR branch, not merged |
| 7 | Full Evidence Mode | Deferred; PR #74 added only a minimal DOI publication page + launcher |
| 8 | Zenodo integration | PR #74 says explicitly "No issue is being closed by this PR" — needs live sandbox acceptance + baselines first |
| 17 | Multinomial / Dirichlet-Multinomial | Deferred roadmap item, no PR |
| 18 | Occupancy / ZINB / hurdle models | Deferred roadmap item, no PR |
| 19 | Constrained ordinations | Deferred roadmap item, no PR |
| 21 | Advanced zero handling | Deferred roadmap item, no PR (PR #75 shares Agda groundwork with it) |

Closed during this triage: **#20** (by the #75 merge). Previously
closed issues (#9–#16, e.g. #9 AnalysisConfig v1) stay closed.

## Flag (resolved): branch `arena/01a0db67-metamanifold-webui`

**Update: deleted on 2026-09-26 at the owner's request; content preserved
in `docs/triage/db67-rescue/`** (`deleted-branch.patch` recreates the
branch tree byte-for-byte; restore commands in that directory's
`README.md`). Branch head at deletion: `d94ecd4e99dbda819fdc0fe1913d5caaabca414a`.

Correction to the first triage note: this branch did **not** actively
delete the DOI subsystem. It was three docs commits on the pre-DOI base
`e33e10f`, so diffed against current `main` it merely *appeared* to
delete `src/doi/*` and the ILR work (base-difference noise — a GitHub
3-way merge would not have reverted PR #74/#75). Its genuine content was
a BerryWiki wiki (`docs/wikis/`, 33 pages), `README.adoc`/`EXPLAINME.adoc`,
the autolink spec, and prose updates to `CHANGELOG`/`CONTRIBUTING`/`NOTICE`
— plus a `README.md` deletion and 32 wiki pages missing SPDX headers,
which were the real landmines and the reason for closing it.

Also already gone: the merged PR #75 branch (`arena/01a0db2e`) was
auto-deleted on merge. Still open and deliberately untouched: the CI
probe branch `arena/01a0db23` (unmerged, no PR — needs its own decision)
and `feat/stipple-typed-studies-ui` (live as parent PR #7).

## Parent issue #12 (owner memo, 0 comments)

"Notice to Project Owner: Comprehensive Review & Roadmap Status
(2026-09-25)" — a long plain-English memo addressed to the project
owner explaining the fork's work (fake-number removal, real models,
refuse-to-guess, the four parent PRs). It is FYI, not actionable, and
needs the *addressee's* eyes before closing — left open deliberately.

## Suggested order of operations for the owner

1. Fix CI (runbook appendix 2) — unblocks everything.
2. Close parent #8/#10/#11 (one command each, runbook appendix 1).
3. Decide parent #7: Option A merge-as-is (review via `STACKS.md`) or
Option B stacked PRs (`RUNBOOK.md`).
4. ~~Decide `arena/01a0db67`~~ — done: branch deleted, content preserved
in `docs/triage/db67-rescue/`. Remaining: decide the CI probe branch
`arena/01a0db23` (unmerged, no PR).
5. Read parent #12, then close it.
6. Post-merge verification of #75 once CI runs (Julia tests, CodeFactor
findings, Dependabot re-run).

[notif]: https://github.com/notifications
[c73]: https://github.com/hyperpolymath/MetaManifold-WebUI/pull/73#issuecomment-5845153601
[p7]: https://github.com/JoshuaJewell/MetaManifold-WebUI/pull/7

## Sweep 2 (same day, ~10:30 UTC) — leftovers the bot could still clear

1. **Kit PR #76: MERGEABLE**, CodeQL + CodeFactor green, semgrep pending.
No CI/DOI checks report (outage). Ready whenever the owner is.
2. **CodeFactor on the #75 merge: 3 × "Complex Method" notices, style
only** — `IlrBasisInputs.tsx:39`, `analysis_config.ts:143`,
`AnalysisConfigEditor.tsx:21` (run `108381688702`). Not correctness
blockers: refactor-or-accept during post-merge verification.
3. **Dependabot: API rerun refused too** ("cannot be rerun" stock
message), so both `main` failures wait on an owner UI re-run or the
next Dependabot cycle after CI is fixed.
4. **Probe branch `arena/01a0db23`: KEEP — do not delete.** True delta is
14 files, +2,896/−2, all additive, SPDX-clean: the issue-#21 Agda
proofs + `golden.json` fixture, the KYAML pilot (`KYAML.jl`, gate,
docs), and the spent CI probe. Landing notes for whoever opens its
PR: `proofs/agda/README.md` will add/add-conflict with #75's copy
(merge contents by hand); `test/runtests.jl` needs the one-line
kyaml include re-applied next to #75's; `*.agdai` would duplicate
(harmless, tidy it); drop `ci-probe.yml` (probe answered); note its
`EXPLAINME.adoc` differs from the db67 copy archived in
`docs/triage/db67-rescue/`.
5. **Parent #12: §4 walkthrough + §5 Option B are now stale** — they
describe #8/#10/#11 as small reviewable PRs, but those have deleted
branches and render as whole-tree noise. Draft correction for the
owner to paste as a comment (bot is 403 on the parent):

> Correction (26 Sept triage): PRs #8, #10 and #11 no longer have
> live branches and cannot be reviewed or merged as §4 describes —
> their real changes (2/0/1 commits) are already on the fork's
> `main`, so they should be closed, not reviewed. Please review #7
> instead (a 14-part review guide now exists on the fork at
> `docs/triage/pr7-split/STACKS.md`). §5 Option B is therefore
> obsolete; options A, C and D stand as written.
54 changes: 54 additions & 0 deletions docs/triage/db67-rescue/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<!--
SPDX-License-Identifier: CC-BY-SA-4.0
-->

# Deleted branch `arena/01a0db67` — content preserved here

On 2026-09-26 the owner asked for this branch to be **closed (deleted)**
during the notification-backlog triage. Before deletion its full content
was preserved in this directory so nothing is lost:

- `deleted-branch.patch` (260 KB): the branch's true delta
(`e33e10f..d94ecd4`, 41 files, +4,138/−691), verified to recreate the
branch tree byte-for-byte.
- `deleted-branch-files.txt`: the file list (`A`/`M`/`D` per file).

## What the branch was

Three docs commits on top of `e33e10f` (fork `main` before the DOI and
ILR merges): a BerryWiki-format wiki (`docs/wikis/`, 33 pages),
`README.adoc` + `EXPLAINME.adoc`, the autolink specification
(`docs/integration/autolink-references.md`), a `.gitignore` negation for
`docs/wikis/`, and prose updates to `CHANGELOG.md`, `CONTRIBUTING.md`
and `NOTICE` (third-party table + acknowledgements). It also deleted
`README.md`, intending the `.adoc` pair to replace it.

## Correction to the first triage note

The first version of this triage's report called this branch
"DOI-deleting". That overstated it: diffed against *current* `main` the
branch *appears* to delete `src/doi/*` and the ILR work, but that is
base-difference noise — the branch predates those merges
(`git-filter-repo` era base `e33e10f`), so it never contained them. A
GitHub 3-way merge would **not** have reverted PR #74/#75. The genuine
landmines were the `README.md` deletion and the 32 wiki pages missing
SPDX headers (which would fail `scripts/check-spdx.sh`).

## Restore (if ever wanted)

```sh
git fetch https://github.com/hyperpolymath/MetaManifold-WebUI.git \
arena/01a0dd12-metamanifold-webui
git checkout FETCH_HEAD -- docs/triage/db67-rescue
git checkout -b restore/db67 e33e10f
git apply --index docs/triage/db67-rescue/deleted-branch.patch
git commit -m "restore: db67 docs branch content"
```

Before merging a restore: rebase onto current `main`, decide
`README.md` vs `README.adoc` (keep both until decided), and add
`SPDX-License-Identifier: CC-BY-SA-4.0` headers to the wiki pages
(the `_Sidebar.md` file is generated upstream — its header needs to
come from the generator, or the file needs a gate exemption).

Branch head SHA at deletion: `d94ecd4e99dbda819fdc0fe1913d5caaabca414a`.
41 changes: 41 additions & 0 deletions docs/triage/db67-rescue/deleted-branch-files.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
M .gitignore
M CHANGELOG.md
M CONTRIBUTING.md
A EXPLAINME.adoc
M NOTICE
A README.adoc
D README.md
A docs/integration/autolink-references.md
A docs/wikis/Deep-Dives--Advanced-Functionality.md
A docs/wikis/Deep-Dives--Compositional-Statistics.md
A docs/wikis/Deep-Dives--Design-Progression.md
A docs/wikis/Deep-Dives--Epistemic-Status.md
A docs/wikis/Deep-Dives--Exact-Arithmetic.md
A docs/wikis/Deep-Dives--Maximum-Likelihood.md
A docs/wikis/Deep-Dives--Type-Theory-Meets-Statistics.md
A docs/wikis/Deep-Dives.md
A docs/wikis/Developers--Architecture-Tour.md
A docs/wikis/Developers--Extending-the-Pipeline.md
A docs/wikis/Developers--REST-API.md
A docs/wikis/Developers--Statistics-Internals.md
A docs/wikis/Developers--Testing-and-Benchmarks.md
A docs/wikis/Developers--Type-System.md
A docs/wikis/Developers.md
A docs/wikis/Home.md
A docs/wikis/Maintainers--Compliance-and-Estate.md
A docs/wikis/Maintainers--Operator-Track.md
A docs/wikis/Maintainers--Releases-and-Distribution.md
A docs/wikis/Maintainers--Steward-Track.md
A docs/wikis/Maintainers.md
A docs/wikis/README.md
A docs/wikis/Status-and-Roadmap.md
A docs/wikis/Users--Analysis-and-Statistics-Today.md
A docs/wikis/Users--Configuration-Reference.md
A docs/wikis/Users--Exploring-Results.md
A docs/wikis/Users--For-Academics.md
A docs/wikis/Users--For-Lab-Professionals.md
A docs/wikis/Users--Install-and-First-Run.md
A docs/wikis/Users--Troubleshooting.md
A docs/wikis/Users--Your-First-Study.md
A docs/wikis/Users.md
A docs/wikis/_Sidebar.md
Loading
Loading