# configuration/records/writing.record.ts

> 175 lines of code and 5 definitions.

Tree: Bane's Lab Content
Language: typescript
Layer: domain
Canonical: https://banes-lab.com/anatomy/content#file-content-configuration-records-writing-record-ts
Source text: https://banes-lab.com/source/content/configuration/records/writing.record.ts.txt

Listed in [configuration/records](https://banes-lab.com/api/source/content/configuration/records.md), after [configuration/records/coordination.record.ts](https://banes-lab.com/source/content/configuration/records/coordination.record.ts.md).

## Definitions

- `READING_SCOPE` (lexical_declaration, line 5, exported)
- `SIGNED_FINGERPRINTS` (lexical_declaration, line 15)
- `REVISED_FINGERPRINTS` (lexical_declaration, line 124)
- `SIGNED_GROUPS` (lexical_declaration, line 173)
- `READING_SIGNOFFS` (lexical_declaration, line 178, exported)

## Contained in

- [configuration/records](https://banes-lab.com/anatomy/content/folder-content-configuration-records.md)

## Source

```typescript
import { PACKAGE_FINGERPRINTS, REVISED_PACKAGE_FINGERPRINTS } from "#configuration/records/coordination.record";
import { COORDINATION_PAGE } from "#configuration/constants/writing.constants";
import type { ReadingSignoff } from "#types/writing.types";

export const READING_SCOPE: readonly string[] = [
    "home",
    "faq",
    "licensing",
    "disciplined-methodology",
    "pag",
    "software-architecture",
    COORDINATION_PAGE,
];

const SIGNED_FINGERPRINTS: Readonly<Record<string, string>> = {
    "disciplined-methodology": "c9cd9b44714be109c2dabd4d9c863f1e5439a721513beac8dd128e2451c22e35",
    "disciplined-methodology#a-check-matches-a-shape":
        "330db4f786600bab61f953ce6b58b6bdc2b2c88945cf53c5df0b8916fb8b3de9",
    "disciplined-methodology#a-seat-is-a-contract": "2c75aef2b7c7ef9d73979635d10e22711e037db838162f6c10f013c3d4baf9d2",
    "disciplined-methodology#a-turn-never-ends-to-wait":
        "4ad453cb1147c8c7aea7e3bcad197c1126c9241e38ee672cc13c4a0c66a7c554",
    "disciplined-methodology#adversarial-by-default":
        "333bdc9c3a9c45b91671523140043685558dc6aa148bb652cd64bf8e85ee24f4",
    "disciplined-methodology#agents-as-executed-contracts":
        "57b519cd43bcb7e88195aecf089ba8c21dfa2a8c2d128d995377998278ce37bd",
    "disciplined-methodology#ask-where-it-appears": "1793dcf6c523ed76d7f84df763263fb442fcc01e92aea8afde66a655a44c244b",
    "disciplined-methodology#coordination-is-software":
        "4fdfbf115fae7c0ae7bc95c7a232b1bdf722c306cd6d6ace385a630c344433d6",
    "disciplined-methodology#counting-copies": "97c6875d0fcda9c11ecf65f53447fec4db9dc2b0fd3ed5fd5c7e8a5cc38bf81a",
    "disciplined-methodology#derived-state": "feebf277c1b7f2bc9cb75b6e532f6162a65da030dbf16f884e1386cf3534b008",
    "disciplined-methodology#documentation-is-code": "4535a5a4ba14e0cc0df1624e6bc5488add2707e28404993716e0b146a2de069f",
    "disciplined-methodology#fail-at-the-boundary": "f4085604f721bbab5d9d81ce84a8b80f7f71ae8edff712e44ff4be1e09e4a5ac",
    "disciplined-methodology#from-chat-to-tree": "41371b04649cab77a204731249e9d5b9b0f04a1caec531433f4db48a26e904c1",
    "disciplined-methodology#moves-and-renames": "951306787bdf9d1fa09720b61661ed303b0187adb11f090612aef2b33f25dd07",
    "disciplined-methodology#onboarding": "80962fa500b07003e3a44e6207d75c0651027e24b78e12334d652b7d56d7471a",
    "disciplined-methodology#one-chain": "6d675a55519418e5eb2074a5b9c25011f799c67d4561b312d8aa73d93cf241df",
    "disciplined-methodology#one-home": "335ab48a5405672afc043e1cacee9ad7b2d97b1d3e8bc60b6307ecad70cb2a98",
    "disciplined-methodology#posting-and-waiting-are-one-operation":
        "b762a626018309bcae514fb2930583a5b7d3f6e98fed053a2cf399a6832453c4",
    "disciplined-methodology#rules-with-names": "b1751a121f3723caa130b3e027b522c04eea1494cfb3db2374b3719e7b393bc4",
    "disciplined-methodology#scale-follows-from-structure":
        "52d5033b3b0040832ade8ce042f9c6a34e38f80b8c0d682e46660ddb0f0b5cb0",
    "disciplined-methodology#stating-an-invariant": "91a667e794388f559b3a01b26c0c47d0769b70394dc5ba664d85e11836ddc94c",
    "disciplined-methodology#the-behavior-document": "336455388f60b87fa61c67a5b49ae44420821683974949f20d527be8a6f69ef3",
    "disciplined-methodology#the-check-comes-first": "3d4f51eb7dd410e32f10cf9ba5f1c5eef9b5b2778133b17cee95640ec05153ea",
    "disciplined-methodology#the-deploy-is-a-file-operation":
        "d553f25a9d4c33000e05a369f43341cc6369f2a126de9a9fadfebd42352bee54",
    "disciplined-methodology#the-developer-and-the-model":
        "d93036ca091672b20074fb0d31a1331cc0d2b1e62c2a7ca522ef44dae3a9b83e",
    "disciplined-methodology#the-filesystem-is-the-architecture":
        "7bd86d723009bb8a7d711252cfe9fc9b39f2fff34a31220b744892bf9efcba2d",
    "disciplined-methodology#the-flat-checklist": "03333dd36f355efa2e0a9a5fc2cc91eefe2285b3a6dee6634792e0c7cb1e4791",
    "disciplined-methodology#the-gate-holds-the-line":
        "38c51bf2bd2c5717695ca565364d0f108ab53cb30056329854069637c404f73b",
    "disciplined-methodology#the-honest-gaps": "17b492b600363fe572a7967d31bfc98b93bbdcc30c9340f11394bc91985c6f4b",
    "disciplined-methodology#the-loop": "e61d1db13669845a72bb6c31e724ae33c402efb876ab7816f94c7f92545b05fb",
    "disciplined-methodology#the-stance": "06655e33a03c8e4b233fc14de2904abb3a744e647337bae93f33dab8e57bd614",
    "disciplined-methodology#three-encodings": "714223c48cbae06faaccdcf40417977435696ab56d54ec98a7e8c98223034ac3",
    "disciplined-methodology#tools-live-in-the-tree":
        "5e71a7f1b67ef5787c365fed1efa926dd84c48900573cbe9e8bde81b2871f45f",
    "disciplined-methodology#unknown-is-not-pass": "8271c00350879df32aca5280f5a0b6ed7feb652ff3ca554065add4a83f310e2b",
    "disciplined-methodology#verify-the-verifier": "010d8ad3d863dc0585d6f79b20f56d0c20ee23b36dff5facee310cf64c3678ae",
    "disciplined-methodology#when-not": "6d9545d378cf5f15b7c37bde0dd3f638e65cc266f366168750168d393ac979c7",
    "disciplined-methodology#when-rules-collide": "47cd2b4b60febee933649d9956f95288651c29a898fcace8123d03ea2d009a93",
    "disciplined-methodology#who-does-what": "dd498a542939a68d6865e4f36f598fff861269cc2c7cf99f93b864d54dee1b55",
    faq: "710ab6d521fe5ff32d0bf99bff3b49a7cb692196ea23d835840a71268c8043b1",
    "faq#practice": "a60088741ac32e0f0dd00aa6483aabbe518affa66a1762c10290b919ea0de492",
    home: "c204158923a2c4476f19c7fa9e6aa8b07c72c493fb86ef362e7bcf1d7ea535bd",
    licensing: "6d7292d5fa314a339fd92ff55d7a278b2ab6380d87afeab7871c17acc204e11b",
    "licensing#commercial-terms": "ade2f4221ddfac066e85ccbe95a9394b8f428fb504f1debcd5118ceab14b32a5",
    "licensing#contact": "7475ffd17ed4b1d6d67ab85eec34f82bb30ecfc7369edfaadcfc28a09d0bd081",
    "licensing#contributions": "c685c9bf3871909d495d475a7d1109b4ed105126bf0e82172e3331d2c2688a3b",
    "licensing#file-headers": "b22190ee9782e94907065cba68b9bb3b7b7fa97fb62edfdbc65141d420dfd34d",
    "licensing#license-overview": "3da2360687e2a73ee6477bca40dc0c106110821eec2ec0574ec87c9804bb74da",
    "licensing#license-types": "1983643a070b0479b784e9a05c15c6a86166c55a03d696a5e7e2ca1fa850a0cc",
    "licensing#non-commercial-terms": "ed53a796273f70f6d9bc0e82892c405021829d1723309fb4299bf655d83b0c02",
    pag: "ada1072965caabd58302e14dac947197b7f759fac8b9f294e7e0cf4ecd63f8f9",
    "pag#algorithm-examples": "031d0c072fe03bed2945d007b1fe048cbcb9fc7272b50c1dfefbd7e55da1705f",
    "pag#algorithm-integration": "02e375c9286ed83144c11447ca6b4d8f5bd13492e2fc2d4e2a9ec5ccd5804b1d",
    "pag#bnf-grammar": "05016edc1ae5d2cadd0a7c9492ba793bdde36a6ec7d84cdc2246c613b6aa6fe7",
    "pag#composing-a-workflow": "4fbd4b258ac89b4cc6735942b5018fb684c36493242d4283e85f59d7661e4836",
    "pag#declared-structure": "8940d2a3d19e76235ddbe40bcd197deb9f4e850cfafcb51d6149a27a1b8f8315",
    "pag#document-structure": "2c47fa87035efb92c281940fdad1d30fbed17604edf9b270db4d2fb184814006",
    "pag#getting-started": "ba21fdacbf1aa62f277e486ec6516f3a4073fd23cfb20d03f21c77a4184c0006",
    "pag#instruction-patterns": "32515239494780b3a8ba2afa0dc3fc5c0e487a54e6e0d20ff82609eea3d5d3a1",
    "pag#intent-to-structure": "e1c48f97bc98b882997cc6208fd9c5dfd928cbe3719d96b543546fcd866e5e0a",
    "pag#limitations": "5493b410122289218b1b3008c7832fc8a3389f1aff9b3b83b21ebe057382e015",
    "pag#node-design": "ed0b1760867feeb5ea8575e76e9fdfbf1238cab009d59ca9578ee0a2b2d197c0",
    "pag#orchestration-invariants": "d3ed5b52015001a434636b371fa4f657b366fde3c1377f641cb94f052b48d5e8",
    "pag#pag-and-the-method": "9a71d71526168c74d34e45d918cc0f083de919e60902a52f0594a5defc8feb3f",
    "pag#phase-binding": "69ddc527a1519d4a41374a6c518e1e9b960c50ca23b875d46a5251c45326d7e3",
    "pag#shared-surfaces": "d64e89465a16dcd04404d9307b7f96abcb07ac4f8c128c52f3e5fc21416c3e89",
    "pag#templates-agents": "6ac0692fdefd5210e1eb7c50871cbffcc2e296fabf24b9561a1aaa5c675c4d6a",
    "pag#templates-coordination": "78ad48210fe469346a828fd29745028e885dd0edad7d261b292bb94c1003c954",
    "pag#templates-core": "6fad6cc135665c3d1bcf7e2d4ac1f0dc10239758a87265d5e1627c021c83647b",
    "pag#templates-families": "be665df367d52eb2e2b5776ec52a6a22b31820bf1103bc3ecc8078ce1b2aa885",
    "pag#tool-invocation": "9e56d85a5dd17c0cbd848ab5608fecb91dfbf5884c0b76e202c6acaac647790f",
    "pag#what-is-pag": "88d7f62da7b1c54b8ca214c1c5dd28492f2227599987644e12416647d9e03b97",
    "pag#writing-constraints": "575e8ac66ede2eb33be0bfd56d47c35d8f895dd23c1438ff558555e2bcd7dfa9",
    "software-architecture": "36d53265d70d10d0e95afffb9d18b915229d446ffcfebb8e16fbc3adabc6355d",
    "software-architecture#a-system-is-a-graph": "21434696c6ef3c062c97e55013080e1a985f0bfa3b7484cea7e2595db1b93109",
    "software-architecture#above-one-tier-reduction":
        "f95fa454a07ca1e675433459a247c029f2a6a0a0d13c6cea292c7a60d988fc57",
    "software-architecture#an-anti-pattern-is-a-decay-path":
        "4daf0dc5aa9303f87b11b937631ebc897ee7ce8854633c01b59153f40044decf",
    "software-architecture#debt-and-leverage": "f3919acd8821d7a5fbfa4da524f841af84d52d9a1c88a72b2b33d8ad75a4c426",
    "software-architecture#execution-joins-the-halves":
        "94bd96304692d28baec7eee4181635f29b10738e889268e33fbd128a6a70dbc5",
    "software-architecture#principles-are-typed": "28c5fa3c9cf88053fde08f6245fd6bcc09f2b8656e73f646bbb06c947c01ffa6",
    "software-architecture#systems-built-around-a-model":
        "30bea723181b7ab5d1e56fccdf2daa90e5239e007f38fbc61b966ad8c2ae4d83",
    "software-architecture#the-author-is-probabilistic":
        "5056ecd21f923eb7e7535667078de93a3b36960b847e6a9e6fa1088cfb84b7a1",
    "software-architecture#the-canon-is-grouped-twice":
        "71f55c582a4dd631c443f190209536269517aa737a7acd5182ce2b20d894c9fd",
    "software-architecture#the-ceiling-moves-by-cost":
        "da726ba4555a782464496df37c4c2169e7f56587b75714e981984bb5fcea6dc5",
    "software-architecture#the-honest-gaps": "f7712eb1be2c462f9c5ed55296c300868f7203ffe9a8c8468aa55c9a599df6d2",
    "software-architecture#the-structural-domain": "5b119ed2fc1dc8d83b52cc6ec2647e4d0f7bcbcff486653248f896040c7eca5b",
    "software-architecture#what-can-drift-seen-through-how-it-drifts":
        "0d13d79e00915224c92e2267afd6d6052ce01c79a6582933f04923058a98383d",
};

const REVISED_FINGERPRINTS: Readonly<Record<string, string>> = {
    "disciplined-methodology#a-report-not-a-checkbox":
        "aec4f51eef1cd41591be4277588c362e012ce6b3c6d523d37aadda7dd3ae32d9",
    "disciplined-methodology#coverage-is-derived": "a3c72e1f983470400a44d320d1b4b06af481c9685beff48a080e815a2d471e5f",
    "disciplined-methodology#detect-log-fix": "2a8fa25e3f283bb215848254ca5c1c021ef7d46f7d03b00bf64289b318e5b297",
    "disciplined-methodology#execute-the-template": "3ba9998f7ed52a498ea423574cd57c5c33f16ee6d2790af4faa3575965cd9357",
    "disciplined-methodology#it-looked-right": "530ce27d7f091229b1e483905991692bf1ec9d38b7c864903daea4d14730076b",
    "disciplined-methodology#one-correct-answer": "2c1d36f79f2ddbaf1f0a6744ec5e7ef8b8736fd27ddf8268a604afc7c7a7a127",
    "disciplined-methodology#placement-is-a-grammar":
        "f5ea3e9a1cd37fe16a12c084c2ed79fde1706af195a211a78c2b98d5d0c29d7b",
    "disciplined-methodology#resolving-a-message": "a59c683913dc66f3e47bc2208e7f8771b5decf2546a851e732afdae609052021",
    "disciplined-methodology#the-board-and-the-venue":
        "1b2685385652b3c7697be084fc876b74fcdd48f7758de9441e07d6c21fc1c5a8",
    "disciplined-methodology#worth-before-work": "049183774bb0aeae18030d8a2fc21827b79e74fc7e44837ab37c6eafba6a81b6",
    "faq#origin": "e5ab0d49ae2bb51272b9ebb7537062272266b0e3577fa62dc22280f4b363ba17",
    "pag#genesis-stages": "867d009c2e8fec08e6ac72a6b30e8d2f224246535f522c21f0fb6b1483a59af6",
    "pag#handoff-signals": "0ab3a74cefbd1652bbbc251f09e45320973a4493ad1272500fe36efb9c53094c",
    "pag#keyword-ontology": "093c3853f07097511f73ea8928db499c3903dc30abafc58c6ff0e63f732dc454",
    "pag#templates-planning": "d67c5a1a322bb1932f9749d859aff04788b0707e15fa300e2f871627f9ac5631",
    "pag#validation-gates": "714dd1ecc4cfd1117ce3c72f10705df7b7ec481fb08acb5af358f50fc2c611bf",
    "pag#well-formedness": "e45a159a90634a2aae944562343a338bb5b20c93ee238c8ffeb56881bbe075c7",
    "pag#why-pag-works": "35d439792ec839802ba075319b9070af81958ce6ba3b5b7b9b898ef5ce3c805b",
    "software-architecture#a-cell-that-resists-an-invariant":
        "02fc78e8658734d00ec054f3354c784d61100f5ce429ebf7149491eb4710d8a6",
    "software-architecture#a-concern-is-a-component":
        "5a93d54da407e11955b2af5dc8d5d79291c0a9b49efd45ad466ff29879c3da9e",
    "software-architecture#a-tension-has-a-mechanism":
        "62b2c886434547a1c0411b3049954d448d374176565f15f48fb00f63222823aa",
    "software-architecture#an-architecture-is-its-predicate-set":
        "d434354b1a0d53c21fd1879d2618c0be9538e8274320dc87d2cac8a7990f7df2",
    "software-architecture#architectural-principles":
        "5e2d2b2b62dd9de4cc0b033010754fab44ae1f1d5b7f30c43e172f40390e8250",
    "software-architecture#computation-and-resource":
        "1c44131285008eacf9b81c277b186a73bc207be4c31cb51e47dd174662976be3",
    "software-architecture#definitions-own-what": "7694ec18572bc393298ceeba2ca393bd9a241a428256700dd892c700bdc4ee49",
    "software-architecture#every-record-has-a-kind": "6c2a61f6fe3b646ce31042ddfe34f416e7badcb2899338941db8d0bc2fd5510d",
    "software-architecture#never-and-always": "3e89292778c4858da12913ac35020db310efb054015f60e49cc1e7bb4b8d81d1",
    "software-architecture#scale-follows-determinism":
        "540471e30bc07b778dd44499f8086dbb41759f803370a5aec31949d00e20b2d8",
    "software-architecture#separate-trade-or-mitigate":
        "cf2877192a9c25fa3c256472a11884a32a487031d8e11ad2c38d94f5c5cab077",
    "software-architecture#seven-controls-seven-classes":
        "c53ae7444bd17820d1c6e0a9610ac9d222da2025b4cc1ee292a44d0d3f8705c0",
    "software-architecture#the-direction-axis": "57f0e19d89e7dd582b14abd20021067e003948f1aa2da62588c988a610f3903e",
    "software-architecture#the-layer-spine": "a38551d98bfcb4456bbb8e804e49b289f0978e72c88fcf56c82cf6fb93d42340",
    "software-architecture#the-principle-architecture":
        "d9862dce23e9f73650cdb65dc4793e61bb51c7553ed037ded5f86559d8275c14",
};

const SIGNED_GROUPS: readonly (readonly [string, Readonly<Record<string, string>>])[] = [
    ["2026-09-29", { ...SIGNED_FINGERPRINTS, ...PACKAGE_FINGERPRINTS }],
    ["2026-10-04", { ...REVISED_FINGERPRINTS, ...REVISED_PACKAGE_FINGERPRINTS }],
];

export const READING_SIGNOFFS: readonly ReadingSignoff[] = SIGNED_GROUPS.flatMap(([signed, fingerprints]) =>
    Object.entries(fingerprints).map(([key, fingerprint]) => ({ fingerprint, key, signed })),
);
```
