Skip to content

The page a person actually uses, and what pressing every button found - #31

Merged
FlagshipDev merged 1 commit into
mainfrom
publish/2026-08-14-0b2d6b6
Aug 14, 2026
Merged

The page a person actually uses, and what pressing every button found#31
FlagshipDev merged 1 commit into
mainfrom
publish/2026-08-14-0b2d6b6

Conversation

@FlagshipDev

Copy link
Copy Markdown
Contributor

Three days of work on the half an operator looks at. Two decisions, twenty-one
items, and three defects that only turned up by using the thing.

A project is the axis (DR-0027)

The page grouped by feature: one page holding every project's errors, another
holding every project's advisories. That is a wall at two projects and unusable
at ten, and it is not how anybody works — you work on a client, not on a column.
Each project now has its own five views, and the feature pages that spanned
projects are gone.

The row is the subject (DR-0028)

The dependency view was 11,330 px, 12.6 screens, 2,830 words and 26 folds for
twenty-six packages, with the outcome of an upgrade six screens away from the
advisory it answers. One package is now one row carrying every version of it that
is pinned, grouped by what can be done about it: 1,634 px.

The same decision applied to the two views opened daily, where it found two
contradictions nothing was testing. The front door said Nothing needs you in
its headline and 2 waiting on you in the row two lines below — both numbers
right, one name for them wrong. And the rail counted findings while the view it
linked to counted packages.

One measurement in that item falsified its own gate: the instance report got 3%
taller, and the gate said it would shrink. Recorded rather than chased —
DR-0028 is about what a page is made of, not how tall it is.

The button DR-0026 always described

DR-0026 says an instance may try an upgrade and may not open one — open stays a
button somebody presses
. The button had nowhere to press: the process that
renders the page refuses to hold a credential that can push, and the files a
clean verification produced were thrown away on the way out. So forty-one green
verdicts sat on a page correctly telling the reader nothing had been opened.

The verification now keeps what passed — the files and the commit it ran at — the
page writes down that a person asked, and the dispatcher opens it. The two
processes stay apart; nothing crossed to make this work.

Three defects found by using it, not by reading

Clicking. An operator clicked a link and got {"detail":"Not Found"}. Three
broken relative URLs, and seven dead forms on a project's settings — every
administration control there posted into a 404. A dead link announces itself; a
dead button does not. The guard that existed for exactly this walked a
hand-written tuple of seven paths and had never been told about the five views
per project added since.

Pressing. Nothing had ever submitted a form and looked at what came back. A
POST answers with a document too, at the URL the form posted to, and eight of
thirty-five buttons answered with navigation that 404'd — a document built for one
URL served at another. The worst one was not a link: rotate-secret printed a
single character
of the new webhook secret and type-checked, so pressing it
stopped the tracker's webhook and left nothing to replace it with.

Asking. opened_where was written when a pull request was opened and never
read back, so a merged one kept asking for a review that had happened and one a
person closed without merging displayed their explicit "no" as work they owed,
for ever. The error half has had that watcher since item 121; this is the same
split, one noun along.

Also

A red baseline is measured once per project instead of once per upgrade — fifty
identical your suite was already failing verdicts in an hour became one. A
published version older than the one you pin is not a fix you can take. A
verification cleans up after itself. The page says what it is doing while the
four minutes pass.

Every test in here was verified by reintroducing the defect it covers.
ruff check ., mypy . and 2,320 tests are green in this tree.

Signed-off-by: Javier Miralles Rancaño 68760931+FlagshipDev@users.noreply.github.com

Three days of work on the half an operator looks at. Two decisions, twenty-one
items, and three defects that only turned up by using the thing.

## A project is the axis (DR-0027)

The page grouped by *feature*: one page holding every project's errors, another
holding every project's advisories. That is a wall at two projects and unusable
at ten, and it is not how anybody works — you work on a client, not on a column.
Each project now has its own five views, and the feature pages that spanned
projects are gone.

## The row is the subject (DR-0028)

The dependency view was **11,330 px, 12.6 screens, 2,830 words and 26 folds** for
twenty-six packages, with the outcome of an upgrade six screens away from the
advisory it answers. One package is now one row carrying every version of it that
is pinned, grouped by what can be done about it: **1,634 px**.

The same decision applied to the two views opened daily, where it found two
contradictions nothing was testing. The front door said **Nothing needs you** in
its headline and *2 waiting on you* in the row two lines below — both numbers
right, one name for them wrong. And the rail counted findings while the view it
linked to counted packages.

One measurement in that item falsified its own gate: the instance report got 3%
*taller*, and the gate said it would shrink. Recorded rather than chased —
DR-0028 is about what a page is made of, not how tall it is.

## The button DR-0026 always described

DR-0026 says an instance may try an upgrade and may not open one — *open stays a
button somebody presses*. The button had nowhere to press: the process that
renders the page refuses to hold a credential that can push, and the files a
clean verification produced were thrown away on the way out. So forty-one green
verdicts sat on a page correctly telling the reader nothing had been opened.

The verification now keeps what passed — the files and the commit it ran at — the
page writes down that a person asked, and the dispatcher opens it. The two
processes stay apart; nothing crossed to make this work.

## Three defects found by using it, not by reading

**Clicking.** An operator clicked a link and got `{"detail":"Not Found"}`. Three
broken relative URLs, and *seven dead forms* on a project's settings — every
administration control there posted into a 404. A dead link announces itself; a
dead button does not. The guard that existed for exactly this walked a
hand-written tuple of seven paths and had never been told about the five views
per project added since.

**Pressing.** Nothing had ever submitted a form and looked at what came back. A
`POST` answers with a document too, at the URL the form posted to, and eight of
thirty-five buttons answered with navigation that 404'd — a document built for one
URL served at another. The worst one was not a link: `rotate-secret` printed **a
single character** of the new webhook secret and type-checked, so pressing it
stopped the tracker's webhook and left nothing to replace it with.

**Asking.** `opened_where` was written when a pull request was opened and never
read back, so a merged one kept asking for a review that had happened and one a
person closed without merging displayed their explicit "no" as work they owed,
for ever. The error half has had that watcher since item 121; this is the same
split, one noun along.

## Also

A red baseline is measured once per project instead of once per upgrade — fifty
identical *your suite was already failing* verdicts in an hour became one. A
published version older than the one you pin is not a fix you can take. A
verification cleans up after itself. The page says what it is doing while the
four minutes pass.

Every test in here was verified by reintroducing the defect it covers.
`ruff check .`, `mypy .` and 2,320 tests are green in this tree.

Signed-off-by: Javier Miralles Rancaño <68760931+FlagshipDev@users.noreply.github.com>
Comment thread hullwork/main.py
shown = view(session, settings, slug, acting=acting, **answered) # type: ignore[operator]
if shown is None:
raise HTTPException(status_code=404)
return HTMLResponse(shown, headers=page.HEADERS)
Comment thread hullwork/main.py
Comment on lines +1332 to +1338
page.instance(
session,
settings,
error_reporting=_reporting_enabled,
acting=acting,
said=said,
),
Comment thread hullwork/main.py
shown = page.item(session, settings, item_id, acting=acting, said=said)
if shown is None: # pragma: no cover - it existed a line ago
raise HTTPException(status.HTTP_404_NOT_FOUND, "Not Found")
return HTMLResponse(shown, headers=page.HEADERS)
@FlagshipDev
FlagshipDev merged commit fb655b0 into main Aug 14, 2026
4 checks passed
@FlagshipDev
FlagshipDev deleted the publish/2026-08-14-0b2d6b6 branch August 14, 2026 08:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants