Repository navigation
27 Anatomy.Reading
The anatomy page publishes the source of this site as it is on disk, every workspace member parsed on every build. It shows every folder and file, its statistics, its syntax tree, its definitions and their calls, and the problems the parser found.
Canonical: https://banes-lab.com/anatomy
Source trees, walks and definitions
This section covers what the rest of the page is made of. This tab is the one part of the page I wrote, and everything else, every panel, every number and the whole tree tab, comes out of the build, which parsed every source file of every published tree, built the call graph, ran the diagnoses and laid every syntax node on a grid. The page renders that output by shape, as described in derived state on the methodology page. The totals across every tree, then each tree on its own line, are shown in the measurements, and the edges between the site's containers in A1·b the import graph.
A page that describes a codebase is prose about the codebase, and prose has no mechanism that makes it wrong when the codebase changes. An architecture page names three containers and the tree holds four, the fourth added the week after the page was written, and every reader of the page reasons about a tree that no longer exists. A description written by hand is a second copy of the tree, and a second copy disagrees with the first from the day one of them moves.
For this reason a page about a system is derived from the system in the same build that renders it, since otherwise it is only a claim. The derivation is published rather than a description of it, so the page can only be as wrong as the build that produced it. In practice, every number on this page is a measurement taken at build time. The tree tab shows the source as it sits on disk, and each file there shows its walk, its definitions and its source. Where a number here disagrees with the tree on disk, the tree is right and this page is stale.
To check this, pick any file on the tree tab and open the same file on disk. The definitions, the line count and the imports on the page match the file, or the page was not derived from it. The page describes the source on its trees and nothing beyond them. Vendor rule text, backups, binaries and rendered media are listed by name and not shown.
The measurements are the same ones the quality tooling reads, namely how many definitions the parser found, how many call edges it resolved between them, how many calls it could not resolve, and the diagnoses it ran. A call the parser cannot resolve is counted and never guessed, so the resolution rate is a measured fraction and not a hope.
The import graph folds every import a file makes to the container that owns the imported file, so an edge is a container reaching into another container, counted. Which way those edges may run is described in the direction axis on the architecture page, and this graph shows which way they do run.
A1·a the measurements
Files 5576
Lines of code 1404357
Definitions 35874
Exported 18296
Callable 11548
Call edges 11360
Unresolved calls 2362
Resolution rate 0.83
Highest in-degree 210
Highest out-degree 53
isolated flow 26955
leaf flow 3629
entry flow 2722
relay flow 2568
Findings no anomalies
Bane's Lab Site 554 files, 5211 definitions
GovLab Extension Host 229 files, 3671 definitions
Bane's Lab Build Scripts 325 files, 3944 definitions
Bane's Lab Content 97 files, 1175 definitions
Coordination Surface 391 files, 5195 definitions
Bane's Lab Deploy 46 files, 780 definitions
Bane's Lab Server 59 files, 998 definitions
Bane's Lab Social Share 643 files, 794 definitions
Codebase Testing 1587 files, 183 definitions
GovLab Constants 12 files, 85 definitions
GovLab Context 291 files, 1865 definitions
GovLab Docs 234 files, 3166 definitions
GovLab Patterns 148 files, 1678 definitions
GovLab Pipeline 37 files, 348 definitions
GovLab Quality 597 files, 5103 definitions
GovLab Stats 72 files, 496 definitions
Argv Contract 14 files, 66 definitions
Canonical Write 11 files, 44 definitions
Code Parse 69 files, 173 definitions
Content Fingerprint 13 files, 41 definitions
GovLab Paths 15 files, 45 definitions
Project Scripts 96 files, 696 definitions
Secrets 28 files, 117 definitions
Configs 8 files, 0 definitions
A1·b the import graph
flowchart LR
n_configuration["configuration"]
n_core["core"]
n_domain["domain"]
n_presentation["presentation"]
n_runtime["runtime"]
n_types["types"]
n_configuration -- 195 imports --> n_core
n_configuration -- 28 imports --> n_domain
n_configuration -- 111 imports --> n_types
n_core -- 65 imports --> n_configuration
n_core -- 121 imports --> n_types
n_domain -- 109 imports --> n_configuration
n_domain -- 58 imports --> n_core
n_domain -- 95 imports --> n_types
n_presentation -- 246 imports --> n_configuration
n_presentation -- 205 imports --> n_core
n_presentation -- 37 imports --> n_domain
n_presentation -- 122 imports --> n_types
n_runtime -- 1 import --> n_configuration
n_runtime -- 8 imports --> n_core
n_runtime -- 1 import --> n_domain
n_runtime -- 7 imports --> n_presentation
n_runtime -- 2 imports --> n_types
The four parts named in a system is a graph on the architecture page are each measured here. The components are the definitions, the relations are the call edges between them, the schema is the set of diagnoses the parser can run, and the propagation is the fan-in every definition carries. The shape of the whole is shown in B1·a structure, and the order in which it runs in B1·b logical flow.
Every definition carries an in-degree and an out-degree, and the two decide its flow class. An entry has callees and no callers, a leaf has callers and no callees, a relay has both, and an isolated definition has neither. The flow classes are counted per file, per folder and for the whole tree, so a container that is mostly leaves and a container that is mostly relays read differently before a single file is opened.
The split between the two charts is the one described in definitions own what, code owns how. The structure is what exists and how it is arranged, and the logical flow is what calls what when it runs. Both are read from the same syntax trees, so they cannot disagree with each other, only with a tree that has moved since the build.
B1·a structure
flowchart LR
n_root["root · 554 files"]
n_configuration["configuration · 167 files"]
n_core["core · 156 files"]
n_domain["domain · 43 files"]
n_presentation["presentation · 139 files"]
n_runtime["runtime · 2 files"]
n_types["types · 40 files"]
n_root --> n_configuration
n_root --> n_core
n_root --> n_domain
n_root --> n_presentation
n_root --> n_runtime
n_root --> n_types
n_configuration_constants["constants · 38 files · infrastructure"]
n_configuration_icons["icons · 28 files · infrastructure"]
n_configuration_strings["strings · 101 files · product"]
n_configuration --> n_configuration_constants
n_configuration --> n_configuration_icons
n_configuration --> n_configuration_strings
n_core_analyzers["analyzers · 4 files · processing"]
n_core_assets["assets · 5 files · infrastructure"]
n_core_buses["buses · 1 file · infrastructure"]
n_core_converters["converters · 11 files · processing"]
n_core_factories["factories · 2 files · infrastructure"]
n_core_generated["generated · 74 files"]
n_core_ids["ids · 33 files · infrastructure"]
n_core_loaders["loaders · 5 files · infrastructure"]
n_core_matchers["matchers · 3 files · processing"]
n_core_normalizers["normalizers · 3 files · processing"]
n_core_observers["observers · 5 files · application"]
n_core_predicates["predicates · 4 files · infrastructure"]
n_core_registries["registries · 3 files · infrastructure"]
n_core_reporters["reporters · 1 file · operations"]
n_core_resolvers["resolvers · 1 file · infrastructure"]
n_core_stores["stores · 1 file · application"]
n_core --> n_core_analyzers
n_core --> n_core_assets
n_core --> n_core_buses
n_core --> n_core_converters
n_core --> n_core_factories
n_core --> n_core_generated
n_core --> n_core_ids
n_core --> n_core_loaders
n_core --> n_core_matchers
n_core --> n_core_normalizers
n_core --> n_core_observers
n_core --> n_core_predicates
n_core --> n_core_registries
n_core --> n_core_reporters
n_core --> n_core_resolvers
n_core --> n_core_stores
n_domain_converters["converters · 37 files · processing"]
n_domain_loaders["loaders · 4 files · infrastructure"]
n_domain_registries["registries · 2 files · infrastructure"]
n_domain --> n_domain_converters
n_domain --> n_domain_loaders
n_domain --> n_domain_registries
n_presentation_components["components · 21 files · product"]
n_presentation_effects["effects · 5 files · product"]
n_presentation_generated["generated · 1 file"]
n_presentation_records["records · 13 files · domain"]
n_presentation_renderers["renderers · 33 files · product"]
n_presentation_styles["styles · 36 files · product"]
n_presentation_timers["timers · 1 file · runtime"]
n_presentation_tokens["tokens · 9 files · product"]
n_presentation_views["views · 12 files · product"]
n_presentation_widgets["widgets · 8 files · product"]
n_presentation --> n_presentation_components
n_presentation --> n_presentation_effects
n_presentation --> n_presentation_generated
n_presentation --> n_presentation_records
n_presentation --> n_presentation_renderers
n_presentation --> n_presentation_styles
n_presentation --> n_presentation_timers
n_presentation --> n_presentation_tokens
n_presentation --> n_presentation_views
n_presentation --> n_presentation_widgets
n_runtime_coordinators["coordinators · 1 file · application"]
n_runtime_entrypoints["entrypoints · 1 file · runtime"]
n_runtime --> n_runtime_coordinators
n_runtime --> n_runtime_entrypoints
B1·b logical flow
---
config:
layout: elk
---
flowchart TD
accTitle: anatomy flow: anatomy
accDescr: entry to exit call flow with branches, hooks, and teardown
aimOf_4f14c0["aimOf"]
anatomyRecord_777bfa["anatomyRecord"]
anchor_3f2242[["anchor"]]
appendChildren_465e2c["appendChildren"]
applyAttributes_186f0e["applyAttributes"]
attachHome_74edef["attachHome"]
attachLearningMap_2b8293["attachLearningMap"]
attachPrerequisites_3c28b3["attachPrerequisites"]
attachSearchToggle_5b2542["attachSearchToggle"]
backdrop_147b1f[["backdrop"]]
bar_5663b1[["bar"]]
bindRail_22b93d["bindRail"]
bracketedAt_7864f9["bracketedAt"]
button_41ff9c[["button"]]
cameraFit_2ac18b["cameraFit"]
cancel_1980a6["cancel"]
cellOf_754424["cellOf"]
centredTop_59bb46["centredTop"]
chapterOf_3ef030["chapterOf"]
chunkKeyOf_1df68b["chunkKeyOf"]
citedPanelOf_2a178b["citedPanelOf"]
clearChildren_6214ed["clearChildren"]
close_6094d4["close"]
closeButton_7f249e[["closeButton"]]
container_6778f7[["container"]]
copyrightText_5c1111["copyrightText"]
countUp_24a966["countUp"]
createAnchorLink_1dad9f["createAnchorLink"]
createBackdrop_2462c7["createBackdrop"]
createChapterPanel_5a10f3["createChapterPanel"]
createCloseButton_3a4300["createCloseButton"]
createDialog_2c0d08["createDialog"]
createElement_66e0a5["createElement"]
createFilterBox_2f3a5a["createFilterBox"]
createLink_1ceb1c["createLink"]
declarationOf_460c7b["declarationOf"]
declarations_1e73ce[["declarations"]]
declareStyle_eca53a["declareStyle"]
details_768a94[["details"]]
document_2367c9[["document"]]
ease_4ba3ac["ease"]
easeOut_6a60fc["easeOut"]
edgeNode_577cb7["edgeNode"]
element_52d001[["element"]]
emitEvent_5872bb["emitEvent"]
entryY_1248a9["entryY"]
event_7e559a[["event"]]
existing_52546b[["existing"]]
expand_515dea["expand"]
fetchPayload_25514b["fetchPayload"]
field_7e6091[["field"]]
fragmentOf_4aa345["fragmentOf"]
framedOf_776b5b["framedOf"]
geometry_1cfe8f[["geometry"]]
glideBack_3ecd34["glideBack"]
graphRelations_4eabe1["graphRelations"]
held_22dd2c[["held"]]
hide_3be2ab["hide"]
iconButton_95a2eb["iconButton"]
input_7e99c8[["input"]]
isBox_b89abf["isBox"]
isDashed_536c88["isDashed"]
isGeometry_284176["isGeometry"]
isNamed_1abe41["isNamed"]
isRecord_786bbe["isRecord"]
isStaticRender_1b5a95["isStaticRender"]
item_22ddf7[["item"]]
jumpTo_450a97["jumpTo"]
labeledRow_1bc7a4["labeledRow"]
layoutLearning_1ce1d7["layoutLearning"]
light_32ae7f["light"]
lightRequired_677481["lightRequired"]
link_22df6e[["link"]]
listeners_777c1d[["listeners"]]
listPages_404b8d["listPages"]
loadContent_697f3a["loadContent"]
LOADERS_817ff1[["LOADERS"]]
loadPayload_48806f["loadPayload"]
loadReference_577c63["loadReference"]
loadReferences_525842["loadReferences"]
main_22dfd8[["main"]]
markActive_4eb13b["markActive"]
MARKS_7c85e8[["MARKS"]]
marksOf_749574["marksOf"]
measurable_6242e0["measurable"]
metaRow_6184e7["metaRow"]
meter_7edd4a[["meter"]]
midpoint_4189b3["midpoint"]
missingElement_37255f["missingElement"]
mountCite_3afc0d["mountCite"]
mountCopyright_521dc4["mountCopyright"]
mountHome_6d9756["mountHome"]
mountMenu_5267ed["mountMenu"]
mountOverlay_7eb685["mountOverlay"]
n1038_18d5ef["hook mouseover"]
n1042_354d15{"ternary"}
n1054_43f9b0["hook addEventListener"]
n1058_16cd0d{"if"}
n1091_18d5f0["hook mouseout"]
n1143_18d5f4["hook focusin"]
n1155_103975[["targetOf"]]
n1194_18d5f4["hook focusout"]
n1203_6a5187["open"]
n1207_1039af[["loadRecords"]]
n1301_ba0a41["hook click"]
n1419_2e1c3d[["unsubscribe"]]
n1441_6e6f3e[["dispose"]]
n1442_2e1c3e[["search"]]
n1577_354d2b[["remove"]]
n1666_300144[["load"]]
n2038_405c04[["overlay"]]
n217_30489f["textContent"]
n2351_1042c3[["loadGraph"]]
n2425_405c15["hook keydown"]
n2621_234fbc["value"]
n3147_404fe1[["disarm"]]
n3383_12497d["lit"]
n3721_16ce43["hook scroll"]
n3787_16ce44["hook resize"]
n4620_124a15["hook visibilitychange"]
n504_2188db[["onQuery"]]
n6407_75dbbd[["detach"]]
n649_615175[["listener"]]
n687_5a4974["className"]
n7150_405213[["panel"]]
n847_2abee5["nonce"]
node_22e09f[["node"]]
nodes_7ef49a[["nodes"]]
nonceOf_6da68b["nonceOf"]
numberAt_6e4b0e["numberAt"]
observeCounts_4d0a7a["observeCounts"]
observer_5badff[["observer"]]
observeRail_1d1679["observeRail"]
onSearchPage_4c169e["onSearchPage"]
open_22e130[["open"]]
open_2dfad1["open"]
openButton_17f1f3[["openButton"]]
openSheet_3705e2["openSheet"]
paceAt_81f08c["paceAt"]
pageFromPath_2db7a5["pageFromPath"]
pagePath_6a23cf["pagePath"]
pages_7f112a[["pages"]]
panelsOf_71a107["panelsOf"]
parent_613c92[["parent"]]
pathOnly_51b45b["pathOnly"]
pause_53df21["pause"]
payloadOfHref_41a2d4["payloadOfHref"]
payloadPath_24424e["payloadPath"]
performance_77d011[["performance"]]
pixelsOfLength_15d356["pixelsOfLength"]
placedOf_7cbf55["placedOf"]
placeStops_1faa57["placeStops"]
plainMarkdown_6d94a3["plainMarkdown"]
play_300633["play"]
principleOf_40a4f5["principleOf"]
progress_34f224["progress"]
queryPath_1faaaf["queryPath"]
queryValue_fa617a["queryValue"]
rail_22e296[["rail"]]
railMeter_a4f1a1["railMeter"]
reportFailure_67cb78["reportFailure"]
requestResults_10d1bf["requestResults"]
response_32345c[["response"]]
reveal_162fc2["reveal"]
root_22e2d2[["root"]]
routeMap_11e87d["routeMap"]
samplesOf_1544f7["samplesOf"]
scroller_226541["scroller"]
scrollToId_3385d5["scrollToId"]
sectionsOf_1e21c4["sectionsOf"]
segmentsOf_16cbe6["segmentsOf"]
settle_2bce80["settle"]
settleAfter_7a0574["settleAfter"]
shell_7f4b43[["shell"]]
shiftBlock_640182["shiftBlock"]
shortestOf_622bda["shortestOf"]
showButtons_697b49["showButtons"]
showField_c9dcae["showField"]
sideFor_451ea2["sideFor"]
sizes_7f4c28[["sizes"]]
spansOf_325ee6["spansOf"]
specOf_3f76de["specOf"]
style_7f522d[["style"]]
subscribeEvent_3e8bde["subscribeEvent"]
tabFromPath_4562e8["tabFromPath"]
target_6a913c[["target"]]
teardown_980b37["teardown"]
TOOLTIPRELATIONS_51898b[["TOOLTIP_RELATIONS"]]
touchTargetOf_410c9f["touchTargetOf"]
travel_7108f0["travel"]
ts_423ccd["anatomy"]
viewOf_4a8ab7["viewOf"]
widestOf_45d12d["widestOf"]
window_721f3d[["window"]]
wire_780a91["wire"]
z_more["plus 152 more"]
aimOf_4f14c0 --> n1042_354d15
anatomyRecord_777bfa --> n1042_354d15
anatomyRecord_777bfa --> n1058_16cd0d
anatomyRecord_777bfa --> n1155_103975
anatomyRecord_777bfa --> n1207_1039af
appendChildren_465e2c -->|append| parent_613c92
applyAttributes_186f0e -->|setAttribute| element_52d001
attachHome_74edef --> n1441_6e6f3e
attachHome_74edef --> observeCounts_4d0a7a
attachHome_74edef --> observeRail_1d1679
attachLearningMap_2b8293 --> aimOf_4f14c0
attachLearningMap_2b8293 --> cameraFit_2ac18b
attachLearningMap_2b8293 -->|addEventListener| document_2367c9
attachLearningMap_2b8293 -->|removeEventListener| document_2367c9
attachLearningMap_2b8293 --> ease_4ba3ac
attachLearningMap_2b8293 --> framedOf_776b5b
attachLearningMap_2b8293 -->|getPointAtLength| geometry_1cfe8f
attachLearningMap_2b8293 -->|getTotalLength| geometry_1cfe8f
attachLearningMap_2b8293 --> glideBack_3ecd34
attachLearningMap_2b8293 --> light_32ae7f
attachLearningMap_2b8293 --> marksOf_749574
attachLearningMap_2b8293 --> n1058_16cd0d
attachLearningMap_2b8293 -.->|writes| n3383_12497d
attachLearningMap_2b8293 ==>|visibilitychange| n4620_124a15
attachLearningMap_2b8293 --> numberAt_6e4b0e
attachLearningMap_2b8293 -->|disconnect| observer_5badff
attachLearningMap_2b8293 -->|observe| observer_5badff
attachLearningMap_2b8293 --> paceAt_81f08c
attachLearningMap_2b8293 --> pause_53df21
attachLearningMap_2b8293 -->|now| performance_77d011
attachLearningMap_2b8293 --> play_300633
attachLearningMap_2b8293 --> settle_2bce80
attachLearningMap_2b8293 --> spansOf_325ee6
attachLearningMap_2b8293 --> touchTargetOf_410c9f
attachLearningMap_2b8293 --> widestOf_45d12d
attachPrerequisites_3c28b3 --> hide_3be2ab
attachPrerequisites_3c28b3 --> lightRequired_677481
attachPrerequisites_3c28b3 ==>|addEventListener| n1054_43f9b0
attachPrerequisites_3c28b3 --> n6407_75dbbd
attachPrerequisites_3c28b3 -->|addEventListener| target_6a913c
attachPrerequisites_3c28b3 -->|removeEventListener| target_6a913c
attachSearchToggle_5b2542 -->|replaceChildren| bar_5663b1
attachSearchToggle_5b2542 --> cancel_1980a6
attachSearchToggle_5b2542 -->|addEventListener| closeButton_7f249e
attachSearchToggle_5b2542 --> createFilterBox_2f3a5a
attachSearchToggle_5b2542 -->|addEventListener| field_7e6091
attachSearchToggle_5b2542 -->|focus| field_7e6091
attachSearchToggle_5b2542 --> iconButton_95a2eb
attachSearchToggle_5b2542 ==>|addEventListener| n1054_43f9b0
attachSearchToggle_5b2542 --> n1058_16cd0d
attachSearchToggle_5b2542 ==>|click| n1301_ba0a41
attachSearchToggle_5b2542 --> n1419_2e1c3d
attachSearchToggle_5b2542 -.->|writes| n2621_234fbc
attachSearchToggle_5b2542 -->|addEventListener| openButton_17f1f3
attachSearchToggle_5b2542 --> queryValue_fa617a
attachSearchToggle_5b2542 --> requestResults_10d1bf
attachSearchToggle_5b2542 --> showButtons_697b49
attachSearchToggle_5b2542 --> showField_c9dcae
attachSearchToggle_5b2542 --> subscribeEvent_3e8bde
bindRail_22b93d -->|addEventListener| main_22dfd8
bindRail_22b93d -->|removeEventListener| main_22dfd8
bindRail_22b93d -->|progress| meter_7edd4a
bindRail_22b93d -->|refresh| meter_7edd4a
bindRail_22b93d --> n1042_354d15
bindRail_22b93d --> n1058_16cd0d
bindRail_22b93d ==>|scroll| n3721_16ce43
bindRail_22b93d ==>|resize| n3787_16ce44
bindRail_22b93d -->|disconnect| sizes_7f4c28
bindRail_22b93d -->|observe| sizes_7f4c28
bindRail_22b93d -->|addEventListener| window_721f3d
bindRail_22b93d -->|removeEventListener| window_721f3d
bracketedAt_7864f9 --> n1042_354d15
bracketedAt_7864f9 --> n1058_16cd0d
cameraFit_2ac18b --> n1042_354d15
cameraFit_2ac18b --> n1058_16cd0d
cameraFit_2ac18b --> shortestOf_622bda
cameraFit_2ac18b --> widestOf_45d12d
cancel_1980a6 --> n1058_16cd0d
cancel_1980a6 --> n3147_404fe1
cellOf_754424 --> n1058_16cd0d
centredTop_59bb46 -->|getBoundingClientRect| main_22dfd8
centredTop_59bb46 -->|getBoundingClientRect| target_6a913c
chapterOf_3ef030 --> n1042_354d15
chapterOf_3ef030 --> n1058_16cd0d
chapterOf_3ef030 --> plainMarkdown_6d94a3
chapterOf_3ef030 --> principleOf_40a4f5
chapterOf_3ef030 --> sectionsOf_1e21c4
chunkKeyOf_1df68b --> n1042_354d15
chunkKeyOf_1df68b --> n1058_16cd0d
citedPanelOf_2a178b -->|getElementById| document_2367c9
citedPanelOf_2a178b -->|getAttribute| link_22df6e
citedPanelOf_2a178b --> n1042_354d15
citedPanelOf_2a178b -->|closest| node_22e09f
clearChildren_6214ed -->|replaceChildren| parent_613c92
close_6094d4 -->|removeEventListener| document_2367c9
close_6094d4 -.->|remove| n1577_354d2b
close_6094d4 --> teardown_980b37
countUp_24a966 --> easeOut_6a60fc
countUp_24a966 --> n1058_16cd0d
countUp_24a966 -.->|writes| n217_30489f
countUp_24a966 -->|now| performance_77d011
createAnchorLink_1dad9f --> createElement_66e0a5
createAnchorLink_1dad9f -->|preventDefault| event_7e559a
createAnchorLink_1dad9f --> jumpTo_450a97
createAnchorLink_1dad9f -->|addEventListener| link_22df6e
createAnchorLink_1dad9f ==>|click| n1301_ba0a41
createAnchorLink_1dad9f --> specOf_3f76de
createBackdrop_2462c7 -->|addEventListener| backdrop_147b1f
createBackdrop_2462c7 --> createElement_66e0a5
createBackdrop_2462c7 --> emitEvent_5872bb
createBackdrop_2462c7 --> n1058_16cd0d
createBackdrop_2462c7 ==>|click| n1301_ba0a41
createChapterPanel_5a10f3 --> labeledRow_1bc7a4
createChapterPanel_5a10f3 --> metaRow_6184e7
createChapterPanel_5a10f3 --> n1042_354d15
createCloseButton_3a4300 -->|addEventListener| button_41ff9c
createCloseButton_3a4300 --> createElement_66e0a5
createCloseButton_3a4300 --> emitEvent_5872bb
createCloseButton_3a4300 ==>|click| n1301_ba0a41
createDialog_2c0d08 --> createCloseButton_3a4300
createDialog_2c0d08 --> createElement_66e0a5
createElement_66e0a5 --> appendChildren_465e2c
createElement_66e0a5 --> applyAttributes_186f0e
createElement_66e0a5 -->|createElement| document_2367c9
createElement_66e0a5 --> n1058_16cd0d
createElement_66e0a5 -.->|writes| n217_30489f
createElement_66e0a5 -.->|writes| n687_5a4974
createFilterBox_2f3a5a --> createElement_66e0a5
createFilterBox_2f3a5a -->|addEventListener| input_7e99c8
createFilterBox_2f3a5a ==>|addEventListener| n1054_43f9b0
createFilterBox_2f3a5a --> n504_2188db
createLink_1ceb1c --> createAnchorLink_1dad9f
createLink_1ceb1c --> n1058_16cd0d
createLink_1ceb1c --> pageFromPath_2db7a5
declarationOf_460c7b -->|get| declarations_1e73ce
declarationOf_460c7b -->|set| declarations_1e73ce
declarationOf_460c7b --> n1058_16cd0d
declarationOf_460c7b -->|insertRule| open_22e130
declarationOf_460c7b --> openSheet_3705e2
declareStyle_eca53a --> declarationOf_460c7b
edgeNode_577cb7 --> createLink_1ceb1c
edgeNode_577cb7 --> n1042_354d15
emitEvent_5872bb -->|get| listeners_777c1d
emitEvent_5872bb --> n649_615175
entryY_1248a9 --> n1042_354d15
entryY_1248a9 --> n1058_16cd0d
expand_515dea -->|dispatchEvent| details_768a94
expand_515dea --> n1058_16cd0d
expand_515dea -.->|writes| n1203_6a5187
fetchPayload_25514b --> n1058_16cd0d
fetchPayload_25514b --> reportFailure_67cb78
fetchPayload_25514b -->|json| response_32345c
fragmentOf_4aa345 --> n1042_354d15
framedOf_776b5b --> isGeometry_284176
framedOf_776b5b --> isRecord_786bbe
framedOf_776b5b --> measurable_6242e0
framedOf_776b5b --> n1042_354d15
framedOf_776b5b --> n1058_16cd0d
glideBack_3ecd34 --> ease_4ba3ac
glideBack_3ecd34 --> n1058_16cd0d
graphRelations_4eabe1 --> chunkKeyOf_1df68b
graphRelations_4eabe1 --> n1042_354d15
graphRelations_4eabe1 --> n2351_1042c3
graphRelations_4eabe1 -->|has| TOOLTIPRELATIONS_51898b
hide_3be2ab --> cancel_1980a6
hide_3be2ab --> clearChildren_6214ed
hide_3be2ab --> lightRequired_677481
hide_3be2ab -.->|remove| n1577_354d2b
iconButton_95a2eb --> createElement_66e0a5
isBox_b89abf --> isRecord_786bbe
isDashed_536c88 --> isRecord_786bbe
isGeometry_284176 --> isRecord_786bbe
jumpTo_450a97 --> scrollToId_3385d5
labeledRow_1bc7a4 --> createElement_66e0a5
layoutLearning_1ce1d7 --> cellOf_754424
layoutLearning_1ce1d7 --> entryY_1248a9
layoutLearning_1ce1d7 --> placeStops_1faa57
layoutLearning_1ce1d7 --> shiftBlock_640182
layoutLearning_1ce1d7 --> sideFor_451ea2
light_32ae7f --> n1058_16cd0d
light_32ae7f -.->|writes| n3383_12497d
lightRequired_677481 -->|get| nodes_7ef49a
listPages_404b8d -->|all| pages_7f112a
loadContent_697f3a --> anatomyRecord_777bfa
loadContent_697f3a --> chapterOf_3ef030
loadContent_697f3a --> fragmentOf_4aa345
loadContent_697f3a --> loadPayload_48806f
loadContent_697f3a --> loadReferences_525842
loadContent_697f3a --> n1042_354d15
loadContent_697f3a --> n1058_16cd0d
loadContent_697f3a --> payloadOfHref_41a2d4
loadPayload_48806f --> fetchPayload_25514b
loadPayload_48806f -->|delete| held_22dd2c
loadPayload_48806f -->|get| held_22dd2c
loadPayload_48806f -->|set| held_22dd2c
loadPayload_48806f --> n1058_16cd0d
loadReference_577c63 --> graphRelations_4eabe1
loadReference_577c63 --> loadContent_697f3a
loadReference_577c63 --> n1058_16cd0d
loadReferences_525842 -->|get| LOADERS_817ff1
loadReferences_525842 --> n1042_354d15
loadReferences_525842 --> n1666_300144
markActive_4eb13b -->|getAttribute| item_22ddf7
markActive_4eb13b -->|setAttribute| item_22ddf7
markActive_4eb13b --> n1042_354d15
marksOf_749574 --> n1058_16cd0d
marksOf_749574 --> samplesOf_1544f7
measurable_6242e0 --> isBox_b89abf
measurable_6242e0 --> isDashed_536c88
metaRow_6184e7 --> createElement_66e0a5
metaRow_6184e7 --> edgeNode_577cb7
metaRow_6184e7 --> n1058_16cd0d
midpoint_4189b3 -->|getBoundingClientRect| element_52d001
mountCite_3afc0d --> citedPanelOf_2a178b
mountCite_3afc0d -->|addEventListener| document_2367c9
mountCite_3afc0d -->|removeEventListener| document_2367c9
mountCite_3afc0d ==>|mouseover| n1038_18d5ef
mountCite_3afc0d ==>|mouseout| n1091_18d5f0
mountCite_3afc0d ==>|focusin| n1143_18d5f4
mountCite_3afc0d ==>|focusout| n1194_18d5f4
mountCite_3afc0d -.->|remove| n1577_354d2b
mountCopyright_521dc4 -->|replaceChildren| container_6778f7
mountCopyright_521dc4 --> copyrightText_5c1111
mountCopyright_521dc4 -.->|writes| n217_30489f
mountHome_6d9756 --> n1042_354d15
mountHome_6d9756 --> n1419_2e1c3d
mountHome_6d9756 --> n1441_6e6f3e
mountHome_6d9756 --> subscribeEvent_3e8bde
mountHome_6d9756 --> wire_780a91
mountMenu_5267ed --> attachSearchToggle_5b2542
mountMenu_5267ed -->|replaceChildren| container_6778f7
mountMenu_5267ed --> createElement_66e0a5
mountMenu_5267ed --> listPages_404b8d
mountMenu_5267ed --> markActive_4eb13b
mountMenu_5267ed --> n1419_2e1c3d
mountMenu_5267ed -->|dispose| n1442_2e1c3e
mountMenu_5267ed -.->|dispose| n1442_2e1c3e
mountMenu_5267ed --> subscribeEvent_3e8bde
mountOverlay_7eb685 --> close_6094d4
mountOverlay_7eb685 --> n1058_16cd0d
mountOverlay_7eb685 --> n1441_6e6f3e
mountOverlay_7eb685 --> open_2dfad1
mountOverlay_7eb685 --> subscribeEvent_3e8bde
nonceOf_6da68b -->|querySelector| document_2367c9
nonceOf_6da68b --> n1042_354d15
numberAt_6e4b0e --> n1042_354d15
observeCounts_4d0a7a --> countUp_24a966
observeCounts_4d0a7a -->|unobserve| held_22dd2c
observeCounts_4d0a7a --> n1058_16cd0d
observeCounts_4d0a7a -->|disconnect| observer_5badff
observeCounts_4d0a7a -->|observe| observer_5badff
observeCounts_4d0a7a -->|querySelectorAll| root_22e2d2
observeRail_1d1679 --> bindRail_22b93d
observeRail_1d1679 -->|getElementById| document_2367c9
observeRail_1d1679 --> n1058_16cd0d
observeRail_1d1679 --> railMeter_a4f1a1
observeRail_1d1679 -->|querySelector| root_22e2d2
observeRail_1d1679 -->|querySelectorAll| root_22e2d2
onSearchPage_4c169e --> pageFromPath_2db7a5
open_2dfad1 --> createBackdrop_2462c7
open_2dfad1 --> createDialog_2c0d08
open_2dfad1 --> createElement_66e0a5
open_2dfad1 -->|addEventListener| document_2367c9
open_2dfad1 ==>|keydown| n2425_405c15
open_2dfad1 --> reveal_162fc2
openSheet_3705e2 --> createElement_66e0a5
openSheet_3705e2 --> isStaticRender_1b5a95
openSheet_3705e2 --> n1058_16cd0d
openSheet_3705e2 -.->|writes| n847_2abee5
openSheet_3705e2 --> nonceOf_6da68b
paceAt_81f08c --> n1042_354d15
pageFromPath_2db7a5 --> segmentsOf_16cbe6
pagePath_6a23cf --> n1042_354d15
panelsOf_71a107 --> createChapterPanel_5a10f3
panelsOf_71a107 --> n1042_354d15
pathOnly_51b45b --> n1042_354d15
payloadOfHref_41a2d4 --> pageFromPath_2db7a5
payloadOfHref_41a2d4 --> payloadPath_24424e
payloadOfHref_41a2d4 --> tabFromPath_4562e8
payloadPath_24424e --> n1042_354d15
pixelsOfLength_15d356 --> n1042_354d15
pixelsOfLength_15d356 --> n1058_16cd0d
placedOf_7cbf55 --> n1042_354d15
placedOf_7cbf55 -->|querySelector| shell_7f4b43
placeStops_1faa57 --> n1042_354d15
plainMarkdown_6d94a3 --> bracketedAt_7864f9
plainMarkdown_6d94a3 -->|has| MARKS_7c85e8
plainMarkdown_6d94a3 --> n1042_354d15
plainMarkdown_6d94a3 --> n1058_16cd0d
play_300633 --> n1058_16cd0d
play_300633 -->|now| performance_77d011
principleOf_40a4f5 --> n1058_16cd0d
principleOf_40a4f5 --> plainMarkdown_6d94a3
progress_34f224 --> declareStyle_eca53a
progress_34f224 -->|getBoundingClientRect| main_22dfd8
progress_34f224 --> n1058_16cd0d
progress_34f224 -->|getBoundingClientRect| rail_22e296
queryPath_1faaaf --> pagePath_6a23cf
railMeter_a4f1a1 -->|getBoundingClientRect| anchor_3f2242
railMeter_a4f1a1 --> declareStyle_eca53a
railMeter_a4f1a1 -->|getBoundingClientRect| main_22dfd8
railMeter_a4f1a1 --> midpoint_4189b3
railMeter_a4f1a1 --> n1058_16cd0d
railMeter_a4f1a1 --> progress_34f224
railMeter_a4f1a1 -->|getBoundingClientRect| rail_22e296
requestResults_10d1bf --> emitEvent_5872bb
requestResults_10d1bf --> n1058_16cd0d
requestResults_10d1bf --> onSearchPage_4c169e
requestResults_10d1bf --> queryPath_1faaaf
reveal_162fc2 --> cancel_1980a6
reveal_162fc2 --> clearChildren_6214ed
reveal_162fc2 --> expand_515dea
reveal_162fc2 --> hide_3be2ab
reveal_162fc2 --> loadReference_577c63
reveal_162fc2 --> n1058_16cd0d
reveal_162fc2 -->|append| n7150_405213
reveal_162fc2 --> panelsOf_71a107
reveal_162fc2 -->|closest| target_6a913c
reveal_162fc2 -->|querySelectorAll| target_6a913c
routeMap_11e87d ==>|click| n1301_ba0a41
routeMap_11e87d -->|addEventListener| shell_7f4b43
routeMap_11e87d -->|removeEventListener| shell_7f4b43
samplesOf_1544f7 -->|getPointAtLength| geometry_1cfe8f
scroller_226541 -->|getElementById| document_2367c9
scrollToId_3385d5 -->|getElementById| document_2367c9
scrollToId_3385d5 --> n1058_16cd0d
scrollToId_3385d5 --> reveal_162fc2
scrollToId_3385d5 --> scroller_226541
scrollToId_3385d5 --> settleAfter_7a0574
scrollToId_3385d5 --> travel_7108f0
sectionsOf_1e21c4 --> n1042_354d15
sectionsOf_1e21c4 --> n1058_16cd0d
segmentsOf_16cbe6 --> pathOnly_51b45b
settle_2bce80 --> cancel_1980a6
settle_2bce80 --> glideBack_3ecd34
settle_2bce80 --> n1058_16cd0d
settle_2bce80 --> paceAt_81f08c
settleAfter_7a0574 -->|addEventListener| main_22dfd8
settleAfter_7a0574 -->|removeEventListener| main_22dfd8
settleAfter_7a0574 ==>|addEventListener| n1054_43f9b0
settleAfter_7a0574 --> n1058_16cd0d
settleAfter_7a0574 --> travel_7108f0
settleAfter_7a0574 -->|setTimeout| window_721f3d
shortestOf_622bda --> n1042_354d15
showButtons_697b49 -->|replaceChildren| bar_5663b1
showButtons_697b49 --> cancel_1980a6
showField_c9dcae -->|replaceChildren| bar_5663b1
showField_c9dcae -->|focus| field_7e6091
showField_c9dcae -.->|writes| n2621_234fbc
spansOf_325ee6 --> n1058_16cd0d
specOf_3f76de --> n1042_354d15
subscribeEvent_3e8bde -->|add| existing_52546b
subscribeEvent_3e8bde -->|delete| existing_52546b
subscribeEvent_3e8bde --> isNamed_1abe41
subscribeEvent_3e8bde -->|get| listeners_777c1d
subscribeEvent_3e8bde -->|set| listeners_777c1d
subscribeEvent_3e8bde --> n1058_16cd0d
subscribeEvent_3e8bde --> n649_615175
tabFromPath_4562e8 --> segmentsOf_16cbe6
teardown_980b37 -.->|remove| n1577_354d2b
teardown_980b37 -->|remove| n2038_405c04
teardown_980b37 -.->|remove| n2038_405c04
touchTargetOf_410c9f --> n1042_354d15
touchTargetOf_410c9f --> pixelsOfLength_15d356
touchTargetOf_410c9f -->|getPropertyValue| style_7f522d
travel_7108f0 --> centredTop_59bb46
travel_7108f0 -->|scrollTo| main_22dfd8
travel_7108f0 --> n1058_16cd0d
ts_423ccd -->|getElementById| document_2367c9
ts_423ccd --> missingElement_37255f
ts_423ccd --> mountCite_3afc0d
ts_423ccd --> mountCopyright_521dc4
ts_423ccd --> mountHome_6d9756
ts_423ccd --> mountMenu_5267ed
ts_423ccd --> mountOverlay_7eb685
ts_423ccd --> n1058_16cd0d
ts_423ccd --> n1441_6e6f3e
viewOf_4a8ab7 --> layoutLearning_1ce1d7
viewOf_4a8ab7 --> n1042_354d15
viewOf_4a8ab7 --> n1058_16cd0d
viewOf_4a8ab7 --> placedOf_7cbf55
viewOf_4a8ab7 -->|querySelector| shell_7f4b43
wire_780a91 --> attachHome_74edef
wire_780a91 --> attachLearningMap_2b8293
wire_780a91 --> attachPrerequisites_3c28b3
wire_780a91 -->|querySelector| main_22dfd8
wire_780a91 --> n1042_354d15
wire_780a91 --> n1058_16cd0d
wire_780a91 --> n1441_6e6f3e
wire_780a91 --> routeMap_11e87d
wire_780a91 --> viewOf_4a8ab7
classDef kCollab stroke:#7a5c1e,stroke-width:2px;
classDef kEntry stroke:#2f6f4f,stroke-width:2px;
classDef kGate stroke:#8a3324,stroke-width:2px;
classDef kHook stroke:#3a5a8a,stroke-width:2px;
classDef kMethod stroke:#555555,stroke-width:2px;
classDef kState stroke:#5a3a8a,stroke-width:2px;
class anchor_3f2242,backdrop_147b1f,bar_5663b1,button_41ff9c,closeButton_7f249e,container_6778f7,declarations_1e73ce,details_768a94,document_2367c9,element_52d001,event_7e559a,existing_52546b,field_7e6091,geometry_1cfe8f,held_22dd2c,input_7e99c8,item_22ddf7,link_22df6e,listeners_777c1d,LOADERS_817ff1,main_22dfd8,MARKS_7c85e8,meter_7edd4a,n1155_103975,n1207_1039af,n1419_2e1c3d,n1441_6e6f3e,n1442_2e1c3e,n1577_354d2b,n1666_300144,n2038_405c04,n2351_1042c3,n3147_404fe1,n504_2188db,n6407_75dbbd,n649_615175,n7150_405213,node_22e09f,nodes_7ef49a,observer_5badff,open_22e130,openButton_17f1f3,pages_7f112a,parent_613c92,performance_77d011,rail_22e296,response_32345c,root_22e2d2,shell_7f4b43,sizes_7f4c28,style_7f522d,target_6a913c,TOOLTIPRELATIONS_51898b,window_721f3d kCollab;
class ts_423ccd kEntry;
class n1042_354d15,n1058_16cd0d kGate;
class n1038_18d5ef,n1054_43f9b0,n1091_18d5f0,n1143_18d5f4,n1194_18d5f4,n1301_ba0a41,n2425_405c15,n3721_16ce43,n3787_16ce44,n4620_124a15 kHook;
class aimOf_4f14c0,anatomyRecord_777bfa,appendChildren_465e2c,applyAttributes_186f0e,attachHome_74edef,attachLearningMap_2b8293,attachPrerequisites_3c28b3,attachSearchToggle_5b2542,bindRail_22b93d,bracketedAt_7864f9,cameraFit_2ac18b,cancel_1980a6,cellOf_754424,centredTop_59bb46,chapterOf_3ef030,chunkKeyOf_1df68b,citedPanelOf_2a178b,clearChildren_6214ed,close_6094d4,copyrightText_5c1111,countUp_24a966,createAnchorLink_1dad9f,createBackdrop_2462c7,createChapterPanel_5a10f3,createCloseButton_3a4300,createDialog_2c0d08,createElement_66e0a5,createFilterBox_2f3a5a,createLink_1ceb1c,declarationOf_460c7b,declareStyle_eca53a,ease_4ba3ac,easeOut_6a60fc,edgeNode_577cb7,emitEvent_5872bb,entryY_1248a9,expand_515dea,fetchPayload_25514b,fragmentOf_4aa345,framedOf_776b5b,glideBack_3ecd34,graphRelations_4eabe1,hide_3be2ab,iconButton_95a2eb,isBox_b89abf,isDashed_536c88,isGeometry_284176,isNamed_1abe41,isRecord_786bbe,isStaticRender_1b5a95,jumpTo_450a97,labeledRow_1bc7a4,layoutLearning_1ce1d7,light_32ae7f,lightRequired_677481,listPages_404b8d,loadContent_697f3a,loadPayload_48806f,loadReference_577c63,loadReferences_525842,markActive_4eb13b,marksOf_749574,measurable_6242e0,metaRow_6184e7,midpoint_4189b3,missingElement_37255f,mountCite_3afc0d,mountCopyright_521dc4,mountHome_6d9756,mountMenu_5267ed,mountOverlay_7eb685,nonceOf_6da68b,numberAt_6e4b0e,observeCounts_4d0a7a,observeRail_1d1679,onSearchPage_4c169e,open_2dfad1,openSheet_3705e2,paceAt_81f08c,pageFromPath_2db7a5,pagePath_6a23cf,panelsOf_71a107,pathOnly_51b45b,pause_53df21,payloadOfHref_41a2d4,payloadPath_24424e,pixelsOfLength_15d356,placedOf_7cbf55,placeStops_1faa57,plainMarkdown_6d94a3,play_300633,principleOf_40a4f5,progress_34f224,queryPath_1faaaf,queryValue_fa617a,railMeter_a4f1a1,reportFailure_67cb78,requestResults_10d1bf,reveal_162fc2,routeMap_11e87d,samplesOf_1544f7,scroller_226541,scrollToId_3385d5,sectionsOf_1e21c4,segmentsOf_16cbe6,settle_2bce80,settleAfter_7a0574,shiftBlock_640182,shortestOf_622bda,showButtons_697b49,showField_c9dcae,sideFor_451ea2,spansOf_325ee6,specOf_3f76de,subscribeEvent_3e8bde,tabFromPath_4562e8,teardown_980b37,touchTargetOf_410c9f,travel_7108f0,viewOf_4a8ab7,widestOf_45d12d,wire_780a91 kMethod;
class n1203_6a5187,n217_30489f,n2621_234fbc,n3383_12497d,n687_5a4974,n847_2abee5 kState;
Every file on the tree tab carries its subject, its concern and, where the name declares one, its variant, read off the file name as described in placement is a grammar, and every concern is tagged to a layer of the layer spine. The layers the tree lands on are shown in C1·a the layers, and what moves between the containers at runtime in C1·b data flow.
A folder's role is read from its depth and its name. The first folder under the member is a container, a folder whose name is a concern folder is a concern, and anything between is a subject folder that exists only because two sets of one concern must not merge. A file whose name the grammar cannot parse carries no slots and no layer, and the page says so rather than guessing one.
The layer a file lands on is a derivation from its concern and never a fact written by hand, which is why the same file shows the same layer on this page and in every check that reads the tree. A folder shows the layer of its concern, and a container shows none, because a container groups by axis and not by layer.
C1·a the layers
configuration
constants: infrastructure
icons: infrastructure
strings: product
core
analyzers: processing
assets: infrastructure
buses: infrastructure
converters: processing
factories: infrastructure
generated
ids: infrastructure
listeners: application
loaders: infrastructure
matchers: processing
normalizers: processing
observers: application
predicates: infrastructure
registries: infrastructure
reporters: operations
resolvers: infrastructure
stores: application
domain
converters: processing
loaders: infrastructure
models: domain
registries: infrastructure
presentation
components: product
effects: product
generated
records: domain
renderers: product
styles: product
timers: runtime
tokens: product
views: product
widgets: product
runtime
coordinators: application
entrypoints: runtime
types
C1·b data flow
---
config:
layout: elk
---
flowchart TD
accTitle: anatomy data flow
accDescr: construction and data-flow dependency wiring resolved from source
applyHead_289635["applyHead"]
attachLearningMap_2b8293["attachLearningMap"]
attachSearchToggle_5b2542["attachSearchToggle"]
countUp_24a966["countUp"]
createElement_66e0a5["createElement"]
expand_515dea["expand"]
flash_43c27b["flash"]
light_32ae7f["light"]
mountCopyright_521dc4["mountCopyright"]
n1203_6a5187["open"]
n217_30489f["textContent"]
n2621_234fbc["value"]
n3383_12497d["lit"]
n687_5a4974["className"]
n6934_54bff0["title"]
n847_2abee5["nonce"]
nodeText_5dd087["nodeText"]
openSheet_3705e2["openSheet"]
showField_c9dcae["showField"]
applyHead_289635 -.->|writes| n217_30489f
applyHead_289635 -.->|writes| n6934_54bff0
attachLearningMap_2b8293 -.->|writes| n3383_12497d
attachSearchToggle_5b2542 -.->|writes| n2621_234fbc
countUp_24a966 -.->|writes| n217_30489f
createElement_66e0a5 -.->|writes| n217_30489f
createElement_66e0a5 -.->|writes| n687_5a4974
expand_515dea -.->|writes| n1203_6a5187
flash_43c27b -.->|writes| n687_5a4974
light_32ae7f -.->|writes| n3383_12497d
mountCopyright_521dc4 -.->|writes| n217_30489f
nodeText_5dd087 -.->|writes| n217_30489f
openSheet_3705e2 -.->|writes| n847_2abee5
showField_c9dcae -.->|writes| n2621_234fbc
classDef kCollab stroke:#7a5c1e,stroke-width:2px;
classDef kEntry stroke:#2f6f4f,stroke-width:2px;
classDef kGate stroke:#8a3324,stroke-width:2px;
classDef kHook stroke:#3a5a8a,stroke-width:2px;
classDef kMethod stroke:#555555,stroke-width:2px;
classDef kState stroke:#5a3a8a,stroke-width:2px;
class applyHead_289635,attachLearningMap_2b8293,attachSearchToggle_5b2542,countUp_24a966,createElement_66e0a5,expand_515dea,flash_43c27b,light_32ae7f,mountCopyright_521dc4,nodeText_5dd087,openSheet_3705e2,showField_c9dcae kMethod;
class n1203_6a5187,n217_30489f,n2621_234fbc,n3383_12497d,n687_5a4974,n6934_54bff0,n847_2abee5 kState;
The diagnoses are the schema applied to the graph, and they look for a call cycle, a definition nothing consumes, a definition declared twice, a file that reaches across too many concerns, and an import cycle between modules. What they found is shown in D1·a the findings, where a zero is a measured zero, as described in unknown is not pass. One concern folder's walk is shown in a walk.
Each diagnosis names the control whose absence lets the decay in, as described in an anti-pattern is a decay path, and carries the remedy that reverses it. A finding on this page lands on the file it names, in that file's record on the tree tab, so the reader can open the walk and the source the finding is about.
A diagnosis that runs and finds nothing is different from one that never ran, as described in the honest gaps on the architecture page. The diagnoses here are the ones the parser runs on every build, and a predicate the method calls for that this parser does not compute is declared absent on that page, never assumed clean here.
D1·a the findings
Every diagnosis ran over the whole tree and reported nothing, so there is no call cycle, import cycle, dead definition, duplicate or reach across a concern.
D1·b a walk 14 steps
A walk lays every meaningful syntax node of a file on a hexagonal grid in the order the parser met them, so a file is a path the eye can follow, going down when the code nests, up when it returns and sideways when it continues. The states are shown in E1·a the legend, which marks what declares, what calls, what writes, what reads, what branches and what merely holds structure.
The arrows mark the direction every few steps, and a flagged cell carries the severity of the finding that flagged it. Every cell is a reference into the data the walk ships beside it, so the vector stays a shape and the text lives in a file the page reads by reference, the same way a code panel is cited from the prose.
A walk pans by dragging and zooms by scrolling, and selecting a cell shows its file and line, its syntax kind and its text. A folder's walk is its files in order, and a file's walk is that file alone, so the tree can be read at either scale. A walk shows syntax and never semantics. What a call resolves to comes from the call graph, which the definitions beside each file show.
E1·a the legend
declare: declare
call: call
write: write
read: read
control: control
structure: structure
© 2025 Jay Baleine - Disciplined Methodology · Bane's Lab documentation is covered by CC BY-SA 4.0
Navigation
Reading path PAG
Methodology
Architecture
Ontology
Anatomy
- Reading
- Bane's Lab Site
- GovLab Extension Host
- Bane's Lab Build Scripts
- Bane's Lab Content
- Coordination Surface
- Bane's Lab Deploy
- Bane's Lab Server
- Bane's Lab Social Share
- Codebase Testing
- GovLab Constants
- GovLab Context
- GovLab Docs
- GovLab Patterns
- GovLab Pipeline
- GovLab Quality
- GovLab Stats
- Argv Contract
- Canonical Write
- Code Parse
- Content Fingerprint
- GovLab Paths
- Project Scripts
- Secrets
- Configs
FAQ
Links