Skip to content

revert(brand): take the tenant slug back out of the shell header - #32

Merged
satvikOS merged 1 commit into
mainfrom
revert/shell-slug-tag
Aug 17, 2026
Merged

revert(brand): take the tenant slug back out of the shell header#32
satvikOS merged 1 commit into
mainfrom
revert/shell-slug-tag

Conversation

@satvikOS

Copy link
Copy Markdown
Collaborator

I read "the tenant should have a Simon-OSE slug when logged in" as a visual tag and put a pill beside the wordmark. That was a misread.

The slug belongs in the URLplatform.tenurework.com/SimonOSE — as the tenant's own address, not as another badge inside a product whose sign-in page already names the institution three ways.

Reverting rather than leaving it in place: a decorative tag competes for the same meaning as the real thing, and the URL routing lands next.

I read "the tenant should have a Simon-OSE slug when logged in" as a visual
tag and put a pill next to the wordmark. That is not what was asked for: the
slug belongs in the URL — platform.tenurework.com/SimonOSE — as the tenant's
own address, not as another badge inside a product that already says whose it
is on the sign-in page.

Reverting rather than leaving it, because a decorative tag competes with the
real thing for the same meaning, and the URL work lands next.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@satvikOS
satvikOS merged commit ff7eec1 into main Aug 17, 2026
4 checks passed
@satvikOS
satvikOS deleted the revert/shell-slug-tag branch August 17, 2026 06:41
satvikOS added a commit that referenced this pull request Aug 25, 2026
…te that (#264)

MAIN IS RED AT c28c64e. Two PRs that were each green apart broke it together,
which is the shape CI cannot see: every branch is tested against the main that
existed when it ran, and neither #254 nor #256 could observe the other.

#254 made `recordAuditEvent` READ THE TENANT'S LAST ROW to chain this one to it,
and wrap that read-and-write in a transaction when handed the top-level client
(`audit-record.ts:653`). #256 landed two suites whose `@/lib/db` doubles were
written when a refusal wrote exactly one `auditEvent.create` and nothing else.
The result is `tx.auditEvent.findFirst is not a function`, thrown from inside the
capability guard, so a test asserting the refusal MESSAGE got a TypeError and the
server action returned "Something went wrong on our side".

This is the concrete form of the cost recorded in task #32: the second round trip
does not just add latency, it CHANGES THE CONTRACT every caller's double must
satisfy.

Three changes, all to the doubles, none to what the tests claim:

`auditEvent.findFirst` returning `null` — the honest answer. These fixtures have
no prior row, and an unchained first row is exactly what the production code
handles when a tenant's log is empty.

`$transaction` EXECUTES its callback instead of throwing. It was a tripwire
meaning "a refused action reaches no write", which was true when a refusal wrote
one row and is false now that a refusal legitimately opens a transaction to chain
its DENY row — so the tripwire was firing on the very row the gate exists to
write. The `budgetLine.create`/`.update` traps stay, so a written line still
fails the test loudly, which is the claim that actually matters.

The two positive cases now assert `["budgetLine.create"]` rather than
`["$transaction"]`. Not a weakening: the action reaches the real write and now
NAMES it, where "it got as far as opening a transaction" was the vaguer claim
that only held because the double threw before its callback ran.

Measured against the documented baselines: 3 failed suites / 5698 passed — the
same three stale-generated-client suites that fail on pristine main — and tsc at
307, the baseline exactly.

Co-authored-by: Claude <noreply@anthropic.com>
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.

1 participant