# Containers on the spine

> 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…

Page: Anatomy · Reading
Canonical: https://banes-lab.com/anatomy#containers-on-the-spine

Listed in [Anatomy · Reading](https://banes-lab.com/api/pages/anatomy/reading.md), after [The four parts, measured](https://banes-lab.com/anatomy/reading/the-four-parts-measured.md) and before [What the diagnoses found](https://banes-lab.com/anatomy/reading/what-the-diagnoses-found.md).

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](https://banes-lab.com/disciplined-methodology/build/placement-is-a-grammar.md), and every concern is tagged to a layer of [the layer spine](https://banes-lab.com/software-architecture/model/the-layer-spine.md). The layers the tree lands on are shown in [C1·a the layers](https://banes-lab.com/anatomy#containers-on-the-spine-panel-a), and what moves between the containers at runtime in [C1·b data flow](https://banes-lab.com/anatomy#containers-on-the-spine-panel-b).

### Roles, slots and layers

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

```text
configuration
  constants: infrastructure
  icons: infrastructure
  strings: product
core
  analyzers: processing
  assets: infrastructure
  buses: infrastructure
  converters: processing
  factories: infrastructure
  formatters: processing
  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
  selectors: application
  styles: product
  timers: runtime
  tokens: product
  views: product
  widgets: product
runtime
  coordinators: application
  entrypoints: runtime
types
```

C1·b data flow

```mermaid
---
config:
  layout: elk
---
flowchart TD
    accTitle: anatomy data flow
    accDescr: construction and data-flow dependency wiring resolved from source
    applyHead_74eb0f["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"]
    n6678_54bfe4["title"]
    n687_5a4974["className"]
    n847_2abee5["nonce"]
    nodeText_5dd087["nodeText"]
    openSheet_3705e2["openSheet"]
    showField_c9dcae["showField"]
    applyHead_74eb0f -.->|writes| n217_30489f
    applyHead_74eb0f -.->|writes| n6678_54bfe4
    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_74eb0f,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,n6678_54bfe4,n687_5a4974,n847_2abee5 kState;
```

## Links to

- [Placement is a grammar](https://banes-lab.com/disciplined-methodology/build/placement-is-a-grammar.md)
- [The layer spine](https://banes-lab.com/software-architecture/model/the-layer-spine.md)
