20 KiB
Comprehension history
2026-10-31T00:16:02Z, PR #181 at 56ff987, against eed1050
Ruling: better
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | same | better | same | better | better |
| Inherited architect | same | better | same | better | better |
Mid A, decided by:
- Self-sufficiency, Locality:
public/css/styles.css:24:root: the comment above the hex palette says why a colour must not be oklch(), where a colour is edited - Locality:
src/ui/stylesheet-floor.test.ts:11declares no oklch() colour: a colour edit that breaks the browser floor fails a test instead of an old engine
Inherited architect, decided by:
- Self-sufficiency, Locality:
public/css/styles.css:24:root: the comment above the hex palette says why a colour must not be oklch(), where a colour is edited - Locality:
src/ui/stylesheet-floor.test.ts:11declares no oklch() colour: a red gate explains the symptom in the file it lands on - Self-sufficiency:
README.md:1027"Two browser floors": the colour rule now sits beside the floor rule
2026-10-31T00:43:19Z, PR #182 at 19987ba, against 3e70768
Ruling: better
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | better | better | better | better | better |
| Inherited architect | better | better | better | better | better |
Mid A, decided by:
- Navigation, Shape, Self-sufficiency, Overall:
public/css/auth.css:1auth.css: about 120 lines of rules for markup no view renders are gone, so a cold reader no longer rules them out first - Locality, Self-sufficiency, Overall:
public/css/styles.css:31--on-accent: the text colour on the accent is one token where four hard-coded#fffstood - Self-sufficiency, Navigation, Overall:
public/css/styles.css:287@supports not selector(:has(a)): the nav comment, the partial's header and the rule all say the tree folds only where:has()works - Locality:
public/css/styles.css:241@supports selector(:has(a)): the nav-fold behaviour now sits in two blocks about 50 lines apart, the second order-dependent; the comment names it
Inherited architect, decided by:
- Navigation, Shape, Overall:
public/css/auth.css:1auth.css: the false:targetbanner and the phantom state machine are gone, so every selector left names something a view emits - Self-sufficiency, Overall:
views/partials/nav-tree.ejs:4nav-tree.ejs: the header andpublic/css/styles.css:194now say the branch folds only where:has()works; the old text was untrue on old engines - Locality, Overall:
public/css/styles.css:31--l-on-accent: one token feeds.btn-primary,.page-btn[aria-current]and.brand-mark - Locality:
public/css/styles.css:287@supports not selector(:has(a)): its.nav-discrule sits about 85 lines from the nav rules it overrides, andstylesheet-floor.test.tsguards the order for.theme-switchonly - Self-sufficiency:
src/ui/stylesheet-contrast.test.ts:29stylesheet-contrast.test.ts: the darker badge colours now have a stated 4.5:1 reason someone can find
2026-10-31T01:09:38Z, PR #183 at 0f20b38, against 364b047
Ruling: better
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | same | same | same | better | better |
| Inherited architect | same | better | same | better | better |
Mid A, decided by:
- Self-sufficiency, Overall:
public/css/styles.css:1App Shell Template header: the falselight-dark()bullet is gone, so no reader has to work out which of two comments is lying - Self-sufficiency, Overall:
public/css/styles.css:687@supports selector(:has(a))in@media (max-width: 860px): the guard and its comment say what an engine without:has()gets, without opening the CHANGELOG
Inherited architect, decided by:
- Self-sufficiency, Overall:
public/css/styles.css:5Architectureheader: the falselight-dark()bullet is gone, so the header no longer contradicts the TOKENS comment - Locality, Self-sufficiency, Overall:
public/css/styles.css:687@supports selector(:has(a))in@media (max-width: 860px): the guard and its comment put the dependency of the open state on:has()where an editor would change it
2026-10-31T01:19:49Z, PR #184 at af157c9, against bb8e6bc
Ruling: better
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | better | same | same | better | better |
| Inherited architect | better | better | same | better | better |
Mid A, decided by:
- Self-sufficiency, Navigation, Overall:
public/css/styles.css:12TOKENSheader comment: says all three theme rules need:has(), names the engines without it and points to the@supports not selector(:has(a))block, where the old text called the swaps "rock-solid" - Navigation, Self-sufficiency, Overall:
README.md:214## Glossary: defines host, plugin, manifest, chrome, nav fragment, permission name, system plugin and denylist and links each to its home section - Self-sufficiency:
README.md:815Plugin dependencies: the scale bullet states the plugin count the per-plugin dependency design assumes
Inherited architect, decided by:
- Self-sufficiency, Locality, Overall:
public/css/styles.css:121. TOKENScomment: an editor of the theme mapping learns of the distant:has()fallback from the comment, where the old text said the swap could not fail - Navigation, Self-sufficiency, Overall:
README.md:214## Glossary: a cold reader reaches "chrome" or "denylist" and their home sections in one hop - Self-sufficiency:
README.md:815### Plugin dependencies: the scale bullet gives the plugin count the dependency design assumes
2026-10-31T07:26:19Z, PR #187 at 10152d2, against b336dee
Ruling: better
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | same | same | better | better | better |
| Inherited architect | same | same | better | better | better |
Mid A, decided by:
- Self-sufficiency, Overall:
e2e-tests/mock-oidc.ts:18idToken: the helpers' signatures now say whatres,nonceand thecodesmap hold - Self-sufficiency:
e2e-tests/proxy.ts:14toKratos:(path: string): booleanshows the routing predicate's contract - Self-sufficiency:
e2e-tests/tsconfig.json:2extends: the specs are held to the host's strict flags, and the Dockerfile comment explains the path link - Shape, Overall:
src/ui/icons.ts:4ICON_NAMES: the comment "the icons the UI actually references" is true again
Inherited architect, decided by:
- Self-sufficiency, Overall:
e2e-tests/mock-oidc.ts:18b64: typed helpers replace a trace through thecreateServercallback - Self-sufficiency:
e2e-tests/proxy.ts:14toKratos: the predicate's contract is readable on its own line - Self-sufficiency:
e2e-tests/Dockerfile:11COPY tsconfig.json: the relativeextendspath works in the checkout and in the image, and a comment names the link - Shape, Overall:
src/ui/icons.ts:4ICON_NAMES: the registry matches its description, with no dead ids
2026-10-31T12:28:23Z, PR #200 at 3592a30, against a8a9744
Ruling: same
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Mid A | better | better | better | same | better |
| Inherited architect | worse | worse | better | same | same |
| Maintainability senior | same | same | better | same | same |
| Junior A | better | better | better | better | better |
Mid A, decided by:
- Navigation, Locality, Shape:
src/ui/chrome.ts:74shellUser: the deletedbuildShellContextandbuildDashboardModelleft two shell models side by side, and now every page reads onechrome - Locality, Shape:
src/auth/routes.ts:58flowFailure: a named unit shared byflowPageandcodeFlowSubmit, where the oldflowPageheld the whole error ladder inline - Shape:
src/auth/kratos-public.ts:117submitFlow: takes a flow type and id instead of an action URL, and the Referer quirk is explained where it applies - Locality:
src/http/static.ts:93versioned: reads the module-levelhashesmap, so an asset href depends on what an earlier request hashed - Navigation, Shape:
src/ui/stylesheet-floor.ts:30floorViolations: a 249-line regex walker that only tests use sits insrc/ui/beside runtime modules, though the README now points straight at it
Inherited architect, decided by:
- Navigation:
public/css/styles.css:25:root: the old comment next to the palette answered the 3am question and the new text drops it - Navigation:
src/ui/stylesheet-floor.ts:1floorViolations: its header never says an unsupported value in a custom property blanks everyvar()reading it, so a cold reader walks the regex walker to find the cause - Navigation, Shape:
src/ui/stylesheet-floor.ts:12import: test-only tooling that pulls a devDependency sits beside runtime modules and is missing from the README file map - Locality:
src/http/static.ts:64hashes: a module-level map shared by everypublicAssets()instance makes a fresh href depend on request history elsewhere - Locality:
src/http/app.ts:188renderPage:assetHrefis appended last at three render sites, and only a comment keeps a fourth from emitting unversioned hrefs - Shape:
src/ui/chrome.ts:74shellUser: removes the second shell model that duplicatedPageChrome - Shape:
src/auth/routes.ts:58flowFailure: one named unit shared byflowPageandcodeFlowSubmit, each handler reads in a screen
Maintainability senior, decided by:
- Shape, Locality:
src/ui/chrome.ts:74shellUser: the deletedShellModelleft two shapes for the same chrome, and now the shell has one input and one builder - Shape, Locality:
src/auth/routes.ts:58flowFailure: the oldflowPagemixed about 60 lines of error mapping withreturn_tohandling, and nowflowReturnToandflowFailureread on their own - Locality:
src/http/static.ts:64hashes: a hidden module-level cache filled by two readers, andassetHrefis merged by hand at three render sites - Shape, Navigation:
src/ui/stylesheet-floor.ts:119positive: a 249-line regex walker that only a test uses sits among runtime view modules
Junior A, decided by:
- Navigation, Self-sufficiency:
src/ui/stylesheet-floor.ts:1floorViolations: the README's "Two browser floors" points here and the header lists what is checked, where the base had a prose rule and a hand-written regex test - Shape, Locality:
src/ui/chrome.ts:74shellUser: one shell view model replacesShellModelbesidePageChrome, and its helpers sit beside their only caller - Shape, Locality:
src/auth/routes.ts:58flowFailure: named units replace about 60 inline lines inflowPage, andcodeFlowSubmitreuses them - Self-sufficiency:
src/auth/kratos-admin.ts:68createRecoveryCode: the comment no longer claims Kratos mails the link - Locality:
src/http/static.ts:64hashes: a module-level mutable map backs asset versioning, hidden state the base didn't have
2026-10-31T12:30:19Z, PR #200 at 3592a30
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Junior A | 7 | 6 | 6.5 | 6.5 | 6.5 |
| Mid A | 7 | 6 | 6.5 | 6.5 | 6.5 |
| Maintainability senior | 7 | 6 | 6.5 | 6.5 | 6.5 |
| Inherited architect | 7 | 5.5 | 5.5 | 7.5 | 6.5 |
| Mean | 7.00 | 5.88 | 6.25 | 6.75 | 6.50 |
Junior A, hardest first:
- Locality, Overall:
src/ui/stylesheet-floor.ts:119positive: a regex-built@supportsevaluator whose header says what it enforces but not how it decides a guard names a feature - Locality, Overall:
src/http/app.ts:185handleRequest: about 165 lines in one closure where each stage reads state an earlier stage set - Self-sufficiency:
src/auth/routes.ts:58flowFailure: its 4xx branches can't fire fromcodeFlowSubmitbecausesubmitFlowthrows only on 5xx, and the call site doesn't say so
Mid A, hardest first:
- Locality, Overall:
src/ui/stylesheet-floor.ts:119positive: a hand-written CSS walker with three regex passes per declaration, opaque at line level - Locality, Overall:
src/http/app.ts:185handleRequest: a fixed order of about 15 stages that nothing in the code enforces - Self-sufficiency, Shape:
src/auth/login.ts:40readPermissions: the comment names the tuple#memberswhere the code usesgranted - Locality:
src/auth/routes.ts:121codeFlowSubmit: one idea split acrossflow-view.ts,routes.tsandkratos-public.ts
Maintainability senior, hardest first:
- Locality, Overall:
src/http/app.ts:185handleRequest: a 167-line closure of complexity 43 whose order across closure state nothing names as a contract - Self-sufficiency, Locality:
src/auth/routes.ts:58flowFailure: on the submit path every 4xx branch is dead and nothing at the call site says which can fire - Locality:
src/ui/stylesheet-floor.ts:119positive: the one module whose correctness can't be checked by reading - Self-sufficiency:
src/auth/bootstrap.ts:31permissionTuple: the comment says#memberswhile the code writesgranted
Inherited architect, would restructure first:
- Shape, Navigation:
src/auth/flow-view.ts:152formAction: the flow-to-route mapping has two homes, here androutes.ts, so a code flow's route and its form target are decided in different files - Shape, Navigation:
src/ui/stylesheet-floor.ts:30floorViolations: a CSS linter that never runs at runtime sits among the runtime view helpers - Locality, Shape:
src/http/app.ts:185handleRequest: a level of its own insidecreateApp - Shape:
src/http/builtin-routes.ts:23matchBuiltinRoute: holds no routes, because the table is inline inapp.ts:176andbuildAuthRoutes
2026-10-31T12:30:27Z, PR #200 rerun at 3592a30
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Junior A | 7 | 5.5 | 6 | 6.5 | 6 |
| Mid A | 7 | 6 | 6.5 | 6.5 | 6.5 |
| Maintainability senior | 7 | 5.5 | 6 | 6.5 | 6 |
| Inherited architect | 7 | 6 | 6 | 6.5 | 6.5 |
| Mean | 7.00 | 5.75 | 6.13 | 6.50 | 6.25 |
Junior A, hardest first:
- Locality, Overall:
src/ui/stylesheet-floor.ts:119positive: a regex-built CSS walker that stayed opaque without tracing it by hand - Locality, Overall:
src/http/app.ts:185handleRequest: about 320 lines of interdependent locals, with a fixed stage order that only a top-to-bottom read shows - Self-sufficiency, Shape:
src/auth/login.ts:40completeLogin: the header says#memberswhere the code usesgranted
Mid A, hardest first:
- Locality, Overall:
src/http/app.ts:185handleRequest: about 165 lines of order-dependent stages, withrenderPagereassigned partway - Locality, Overall:
src/ui/stylesheet-floor.ts:119positive: how it decides a guard names a feature stayed opaque - Self-sufficiency, Shape:
src/auth/bootstrap.ts:31seedPermissions: the comment says#memberswhere the code usesgranted
Maintainability senior, hardest first:
- Locality, Overall:
src/http/app.ts:185handleRequest: about 167 lines and complexity 43 in a fixed order nobody states - Locality, Overall:
src/ui/stylesheet-floor.ts:119positive: a hand-rolled regex CSS walker, partly opaque - Locality, Shape:
src/plugin-host/plugin.ts:126RESERVED_PLUGIN_IDS: a hand-kept mirror of the host's path segments that has already drifted, as it omitserror - Self-sufficiency, Shape:
src/auth/login.ts:40readPermissions: the comment says#memberswhere the code usesgranted
Inherited architect, would restructure first:
- Locality, Overall:
src/http/app.ts:185handleRequest: the most concerns and the highest complexity, already grandfathered, and every request-wide concern lands in it - Shape, Navigation:
src/ui/stylesheet-floor.ts:15FLOOR: the 3am rule's home is a test-only module underui/ - Shape:
src/auth/routes.ts:275buildAuthRoutes: the 19-modulesrc/auth/mixes six concerns, and this file withflow-view.tsis where the next flow lands
2026-10-31T13:06:16Z, PR #202 at 8e73d16
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Junior A | 7 | 6 | 6.5 | 6.5 | 6.5 |
| Mid A | 7 | 6 | 6 | 6.5 | 6.5 |
| Maintainability senior | 7 | 6 | 6 | 6.5 | 6.5 |
| Inherited architect | 6.5 | 6 | 6 | 6.5 | 6.5 |
| Mean | 6.88 | 6.00 | 6.13 | 6.50 | 6.50 |
Junior A, hardest first:
- Locality, Overall:
src/http/app.ts:185handleRequest: about 165 lines in a fixed order that only a top-to-bottom read shows - Self-sufficiency, Shape:
src/auth/login.ts:40readPermissions: the comment says#memberswhere the code usesgranted - Self-sufficiency:
src/plugin-host/settings.ts:35SettingsOf: nested conditional types that need the charter's rule to decode
Mid A, hardest first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: complexity 43 inside the 318-linecreateAppclosure, andswitchBasereadsbuiltinRoutesdeclared 60 lines later - Locality, Shape:
src/ui/stylesheet-floor.ts:119positive: a regex CSS walker whose how stayed opaque - Self-sufficiency:
src/auth/bootstrap.ts:31permissionTuple: the comment says#memberswhere the code usesgranted
Maintainability senior, hardest first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: 167 lines and complexity 43 mixing twelve concerns whose order no type expresses - Locality:
src/ui/stylesheet-floor.ts:119positive: a hand-rolled regex CSS scanner traced by hand - Self-sufficiency:
src/auth/gate.ts:13allows: an empty gate is allowed, and the reason lives only in AGENTS.md
Inherited architect, would restructure first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: the largest hub, where every request-wide concern lands - Shape, Navigation:
src/auth/routes.ts:275buildAuthRoutes: the 19-modulesrc/auth/mixes four concerns with no sub-folder - Shape, Navigation:
src/ui/stylesheet-floor.ts:30floorViolations: test tooling sits among the runtime UI modules
2026-10-31T13:06:21Z, PR #202 rerun at 8e73d16
| Seat | Navigation | Locality | Shape | Self-sufficiency | Overall |
|---|---|---|---|---|---|
| Junior A | 7 | 5.5 | 6 | 6 | 6 |
| Mid A | 7 | 6 | 6 | 6 | 6.5 |
| Maintainability senior | 7 | 6 | 6 | 6 | 6.5 |
| Inherited architect | 7 | 5.5 | 6 | 7 | 6.5 |
| Mean | 7.00 | 5.75 | 6.00 | 6.25 | 6.38 |
Junior A, hardest first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: closures over request state in a 318-linecreateApp, and it stayed opaque - Self-sufficiency:
src/auth/routes.ts:58flowFailure: the Kratos status semantics live outside the repo - Self-sufficiency, Shape:
src/auth/login.ts:45readPermissions: the comment says#memberswhere the code usesgranted
Mid A, hardest first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: one pipeline whose steps mutate what later steps read - Locality:
src/ui/stylesheet-floor.ts:119positive: traced by hand - Self-sufficiency, Shape:
src/auth/login.ts:45readPermissions: the comment says#memberswhere the code usesgranted
Maintainability senior, hardest first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: an unstated, load-bearing step order in shared closure state - Locality:
src/ui/stylesheet-floor.ts:119positive: a hand-rolled CSS scanner built on lookbehind regexes - Self-sufficiency, Shape:
src/auth/bootstrap.ts:31permissionTuple: the comment is false on the security-relevant path
Inherited architect, would restructure first:
- Locality, Shape, Overall:
src/http/app.ts:185handleRequest: stage order lives only in line order, in a grandfathered complexity-43 function - Shape, Navigation:
src/auth/routes.ts:275buildAuthRoutes: 19 flat modules insrc/auth/, and the next flow lands here - Shape, Navigation:
src/ui/stylesheet-floor.ts:15FLOOR: the 3am rule's home is a test-only module underui/