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> = { "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> = { "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>])[] = [ ["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 })), );