Commit Graph

95 Commits

Author SHA1 Message Date
lilleman 9fbda833d5 One home per fact: cut the copied rationale, and give the seam test room to mean something
CI / full-gate (push) Successful in 2m57s
2026-09-09 14:41:19 +02:00
lilleman 098359e298 Name the table's local after the class it applies, and let a broken chain show itself
CI / full-gate (push) Successful in 2m51s
2026-09-09 14:18:36 +02:00
lilleman 4ae9326741 Split the fill seam where ownership splits: the shell bounds, the page fills
CI / full-gate (push) Successful in 3m1s
2026-09-09 14:11:10 +02:00
lilleman 11ba843ab1 Name the bounded frame: fill:true on the shell, and the contract minor that ships it
CI / full-gate (push) Successful in 2m52s
2026-09-08 17:27:21 +02:00
lilleman 706abf1204 Scroll the document by default; a bounded region is a page's own opt-in
CI / full-gate (push) Successful in 2m46s
2026-09-07 07:57:33 +02:00
lilleman 18dc4f3136 Refuse an emailless identity where the session is minted, and rows the upstream should not have sent
CI / full-gate (push) Successful in 2m53s
2026-09-02 18:24:56 +02:00
lilleman 390ac5f112 Say where the one-gate rule applies, and record why allows stays open 2026-09-02 14:03:06 +02:00
lilleman 6a0d11d9d3 Name exactly one gate on every declaration, and own a shift by identity id 2026-09-02 14:00:04 +02:00
lilleman bf146c07e7 Bump the contract for the new gate, and close the ways it could read as open
CI / full-gate (push) Successful in 2m45s
2026-09-02 08:36:16 +02:00
lilleman 8da75b4ca7 Gate a route or nav node on a session, not only a permission
CI / full-gate (push) Successful in 3m6s
2026-09-02 07:36:08 +02:00
lilleman 0ad4c6b09c Say what the browser gives a popover trigger, and pin the part all engines can prove
CI / full-gate (push) Successful in 2m51s
Mirror / github-mirror (push) Successful in 3s
2026-08-26 09:10:46 +02:00
lilleman fa7cad1d65 Declare plugin settings in the manifest, resolve them from the environment 2026-08-23 13:17:03 +02:00
lilleman cbf55bebae Give each version mismatch its own remedy, and stop publishing a moving bare-major tag 2026-08-22 12:27:43 +02:00
lilleman 6c5eddf0c9 Accept the README-only gate skip, and say why it is safe 2026-08-22 11:58:28 +02:00
lilleman bfcf4ed072 Trim the prose to what is true now 2026-08-22 11:24:16 +02:00
lilleman d545445ea8 Release this as v0.2.0, and give the Hub overview its own job, token and template 2026-08-20 23:32:10 +02:00
lilleman c35ba3fb4e Make the plugin contract version the release version, and publish the Docker Hub overview from CI 2026-08-20 23:16:11 +02:00
lilleman 4b48bc2416 Scope Release-Bump to the surfaces that ship, and drop the inert package.json versions 2026-08-20 22:43:36 +02:00
lilleman ecf33733a1 Lift the pre-release freeze — releases resume and the plugin contract goes live 2026-08-20 22:02:29 +02:00
lilleman e0046e5068 Warn rather than refuse on a storage URL mismatch, and scrub the provisioning DSN before discovery 2026-08-19 01:03:40 +02:00
lilleman 5589472e25 Keep role re-assertion within a non-superuser provisioner's rights, and test the second boot 2026-08-19 00:44:49 +02:00
lilleman e66a8a3e89 Isolate the storage CI stack, prove least-privilege provisioning, drop the secret before discovery 2026-08-19 00:20:17 +02:00
lilleman 060535c8ab Confine the Postgres driver to bootstrap, bound plugin connections, and gate the storage DDL 2026-08-19 00:08:35 +02:00
lilleman c7013be2f0 Give a plugin a Postgres database of its own 2026-08-18 23:12:13 +02:00
lilleman 82af77356f Follow symlinked plugin folders, and keep a plugin .npmrc out of the image 2026-08-18 07:49:51 +02:00
lilleman 453058c67b Refuse a shadowing barrel copy, and record the packaging contract 2026-08-17 22:34:56 +02:00
lilleman af974cfa36 Let a plugin carry its own package.json and npm dependencies 2026-08-17 22:23:53 +02:00
lilleman a005acb93d Cut non-essential prose from docs and comments, and require the same of every future change
CI / full-gate (push) Successful in 2m38s
README loses the competitor comparison, the personas and the repeated philosophy; the
five near-identical E2E command blocks become a table plus one command, and the file
map a clause per entry. AGENTS.md keeps every decision but drops the narrative around
them. todo.md's completed items collapse to their task line — git holds the rest.

Comments lose restatement, README duplication and history ("used to", "originally",
dated notes). AGENTS.md gains a Prose discipline section making this a standing pass on
every change rather than a one-off cleanup.

src/compose.test.ts now expects 6 documented E2E run commands, not 10, since the README
states the command once instead of per suite.
2026-08-05 23:41:12 +02:00
lilleman 78f5f72151 Correct the artifacts upgrade runbook and the bootstrap exception's stated reason
CI / full-gate (push) Successful in 2m39s
2026-08-05 22:46:05 +02:00
lilleman 1cf34a0d45 Harden the artifact-ownership guards and document the root-owned upgrade trap
CI / full-gate (push) Successful in 2m38s
2026-08-05 22:40:36 +02:00
lilleman 073ec294e9 Run the E2E runner as the invoking user so its artifacts aren't root-owned
CI / full-gate (push) Successful in 2m37s
2026-08-05 22:25:17 +02:00
lilleman e8b91ecd09 Compress AGENTS.md and add a standing rule to trim it on every edit
CI / full-gate (push) Successful in 2m34s
Mirror / github-mirror (push) Successful in 3s
2026-08-05 21:52:56 +02:00
lilleman ab5c24deb7 Cut the node_modules prose to one home each; drop a stray tracked file
CI / full-gate (push) Successful in 2m38s
2026-08-05 19:52:09 +02:00
lilleman 3d3313c0ee Document the shadowing risk and the leftover dir; close two holes in the mount guard
CI / full-gate (push) Successful in 2m38s
2026-08-05 19:17:07 +02:00
lilleman bcf4d7fb1f Install deps above WORKDIR so no root-owned node_modules lands in the checkout
CI / full-gate (push) Successful in 2m45s
2026-08-05 18:18:49 +02:00
lilleman 2852722873 Record the stale-copy trap as accepted until the apiVersion freeze lifts
CI / full-gate (push) Successful in 2m41s
Mirror / github-mirror (push) Successful in 3s
2026-08-05 18:00:38 +02:00
lilleman 45b16824f1 Point a failed discovery at the stale plugins/ copy, and document upgrading
CI / full-gate (push) Successful in 2m39s
2026-08-05 17:52:43 +02:00
lilleman 38ebe40398 Never fail the boot on operator env; drop unusable ADMIN_PERMISSIONS with a warning
CI / full-gate (push) Successful in 2m40s
2026-08-05 17:36:04 +02:00
lilleman 1787754781 Extend the read-only treatment to OAuth2 clients and write-intent GETs 2026-08-05 15:38:56 +02:00
lilleman 765f349007 Model the read/write split in the UI: read-only views, self-revoke and inherited-grant guards 2026-08-05 15:38:37 +02:00
lilleman 29d654c012 Permissions are a fixed list from plugin code; grant them on Users and Groups 2026-08-05 15:38:21 +02:00
lilleman fb4382be9d Enforce the permission-name rule at discovery, for every plugin 2026-08-05 15:38:00 +02:00
lilleman 27fee5f8a3 Permission names are <resource>:<action>, replacing the catch-all admin permission 2026-08-05 15:37:39 +02:00
lilleman 690d67728b Watch what a beforeAll logs, and record where each message came from
CI / full-gate (push) Successful in 2m48s
2026-08-05 11:15:37 +02:00
lilleman e808f87fbd Fail an E2E test on anything the browser logs, in all three engines
CI / full-gate (push) Successful in 2m51s
2026-08-05 11:00:25 +02:00
lilleman e5bdc15262 Prune deleted tags on the GitHub mirror so it stops advertising dropped versions
CI / full-gate (push) Successful in 2m40s
Mirror / github-mirror (push) Successful in 7s
2026-08-05 10:42:39 +02:00
lilleman 2fb5e695e1 Record the docs-skip and no-release decisions, and blind the guard to comments
CI / full-gate (push) Successful in 2m42s
2026-08-05 10:34:46 +02:00
lilleman cfeee10fa8 Wrap each popover menu and give it a caller-named id
CI / full-gate (push) Successful in 2m43s
2026-08-05 01:58:11 +02:00
lilleman 5d9bdebf59 Close the popup menus on an outside click, via the popover API
CI / full-gate (push) Successful in 2m40s
2026-08-05 01:37:58 +02:00
lilleman 2b09635ed5 Hold the one-verb rule in AGENTS.md instead of a unit test
CI / full-gate (push) Successful in 2m38s
Mirror / github-mirror (push) Successful in 6s
2026-08-05 00:52:09 +02:00