@maycombhq/atticus 0.0.0-stage → 2.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +177 -0
- package/README.md +17 -2
- package/THIRD-PARTY-LICENSES.txt +2607 -0
- package/dist/bin.js +47 -0
- package/dist/chunk-23W7VWKR.js +2609 -0
- package/dist/chunk-2C5B464C.js +106 -0
- package/dist/chunk-2LLFKP7C.js +53 -0
- package/dist/chunk-2MD7TXSG.js +166 -0
- package/dist/chunk-2UIQBDJO.js +131 -0
- package/dist/chunk-32MPK524.js +378 -0
- package/dist/chunk-3ALD2W2A.js +95 -0
- package/dist/chunk-3G4YI4ZU.js +16 -0
- package/dist/chunk-4AK7IBVP.js +915 -0
- package/dist/chunk-4BMDGTED.js +69 -0
- package/dist/chunk-4NDAAFQT.js +103 -0
- package/dist/chunk-4Q3NN7VF.js +32 -0
- package/dist/chunk-4RS5KZQD.js +25 -0
- package/dist/chunk-4SKZDI62.js +22 -0
- package/dist/chunk-55YODD3N.js +385 -0
- package/dist/chunk-56YQ6ROQ.js +3479 -0
- package/dist/chunk-5A5L3T2U.js +583 -0
- package/dist/chunk-5FEOD73Z.js +374 -0
- package/dist/chunk-5GDRCDQB.js +32 -0
- package/dist/chunk-5WS2YOGD.js +95 -0
- package/dist/chunk-65NYPGRC.js +766 -0
- package/dist/chunk-6BVONWJ7.js +50 -0
- package/dist/chunk-6D4FRTFF.js +53 -0
- package/dist/chunk-6GPJOFV4.js +149 -0
- package/dist/chunk-6JCPI55B.js +92 -0
- package/dist/chunk-6JUBZBMW.js +56 -0
- package/dist/chunk-6SCVQZX5.js +2522 -0
- package/dist/chunk-6TACQN3N.js +41 -0
- package/dist/chunk-72TXNLOC.js +496 -0
- package/dist/chunk-76WKMA4J.js +14 -0
- package/dist/chunk-7EFILTCI.js +67 -0
- package/dist/chunk-7EKXJZ2Y.js +2902 -0
- package/dist/chunk-7EOBHUMC.js +133 -0
- package/dist/chunk-7JUKDRSZ.js +1726 -0
- package/dist/chunk-7NN5VWDC.js +43 -0
- package/dist/chunk-7UFQZXZA.js +5949 -0
- package/dist/chunk-A3KPZJ5M.js +131 -0
- package/dist/chunk-A6AC72A5.js +48 -0
- package/dist/chunk-A7KZKIZX.js +166 -0
- package/dist/chunk-ABWHYWNI.js +101 -0
- package/dist/chunk-AFFIK6JI.js +46 -0
- package/dist/chunk-AHOQZ4OK.js +37 -0
- package/dist/chunk-AVJDSJ2F.js +18 -0
- package/dist/chunk-AXXCPAP6.js +203 -0
- package/dist/chunk-AY3QXYMB.js +41 -0
- package/dist/chunk-B2OKWJIU.js +143 -0
- package/dist/chunk-B632FH3I.js +251 -0
- package/dist/chunk-BLW4SXCU.js +38 -0
- package/dist/chunk-BVS2K73A.js +33 -0
- package/dist/chunk-BWZ77RQT.js +25 -0
- package/dist/chunk-BYBUDX4T.js +163 -0
- package/dist/chunk-BYZCY6SP.js +230 -0
- package/dist/chunk-C6EKFH7J.js +169 -0
- package/dist/chunk-C6MZFGN7.js +271 -0
- package/dist/chunk-CAQZUNOH.js +1150 -0
- package/dist/chunk-CD4XHYGY.js +856 -0
- package/dist/chunk-CEZQOLEO.js +1217 -0
- package/dist/chunk-CHWTETW7.js +128 -0
- package/dist/chunk-CMV7TGU6.js +31 -0
- package/dist/chunk-CNUKCS2T.js +2741 -0
- package/dist/chunk-CP3L3FH7.js +549 -0
- package/dist/chunk-CPGCA6GZ.js +41 -0
- package/dist/chunk-CWM6KM5G.js +315 -0
- package/dist/chunk-CXDSTRUJ.js +873 -0
- package/dist/chunk-D3PO4DOZ.js +261 -0
- package/dist/chunk-DFBCSHVT.js +69 -0
- package/dist/chunk-DHPACDG7.js +104 -0
- package/dist/chunk-DPC5Y5DL.js +3898 -0
- package/dist/chunk-DPUYDDQG.js +164 -0
- package/dist/chunk-DQN7TF5D.js +325 -0
- package/dist/chunk-EADP3PEN.js +450 -0
- package/dist/chunk-ED2LWWIP.js +878 -0
- package/dist/chunk-EHVTK3UE.js +116 -0
- package/dist/chunk-EPTBZ3GP.js +101 -0
- package/dist/chunk-EXIMEJ2X.js +545 -0
- package/dist/chunk-EYWIDJFU.js +130 -0
- package/dist/chunk-F44OMYIN.js +54 -0
- package/dist/chunk-F7HYOUFF.js +287 -0
- package/dist/chunk-FALXWAMD.js +182 -0
- package/dist/chunk-FBNPE7HS.js +49 -0
- package/dist/chunk-FSWUD5QB.js +108 -0
- package/dist/chunk-FVQISWPW.js +296 -0
- package/dist/chunk-G2B4ZQGH.js +240 -0
- package/dist/chunk-GK6XK5SP.js +1227 -0
- package/dist/chunk-GLEBK5L3.js +34 -0
- package/dist/chunk-GNB5QDDI.js +25 -0
- package/dist/chunk-GQ4N4WKF.js +1142 -0
- package/dist/chunk-GRMR5TRQ.js +119 -0
- package/dist/chunk-HC6XKREB.js +334 -0
- package/dist/chunk-HFQCFSJR.js +60 -0
- package/dist/chunk-HJDICQA4.js +102 -0
- package/dist/chunk-HLJAXMM4.js +233 -0
- package/dist/chunk-HVIMMDVB.js +162 -0
- package/dist/chunk-HZVLAPN5.js +32 -0
- package/dist/chunk-I3E7CX4H.js +155 -0
- package/dist/chunk-IQFTZ37C.js +2919 -0
- package/dist/chunk-ITY3VJRX.js +285 -0
- package/dist/chunk-JBTK5OP2.js +55 -0
- package/dist/chunk-JPGCERE2.js +26 -0
- package/dist/chunk-JQDNHIBC.js +38 -0
- package/dist/chunk-JRBCWLOR.js +307 -0
- package/dist/chunk-JRZQA2JM.js +212 -0
- package/dist/chunk-KCBJCA66.js +45 -0
- package/dist/chunk-KJPMEAI4.js +705 -0
- package/dist/chunk-KQDZXGNR.js +14 -0
- package/dist/chunk-KUUQR4HA.js +264 -0
- package/dist/chunk-L24C55VN.js +7923 -0
- package/dist/chunk-L3BX5ZIB.js +400 -0
- package/dist/chunk-L6SGQIR3.js +471 -0
- package/dist/chunk-LBENYT3H.js +66 -0
- package/dist/chunk-LNAJW6FB.js +47 -0
- package/dist/chunk-MC3H7736.js +19910 -0
- package/dist/chunk-MMOSZPWJ.js +273 -0
- package/dist/chunk-MXCHWULV.js +285 -0
- package/dist/chunk-N3E56YPN.js +344 -0
- package/dist/chunk-NHFQMOVK.js +180 -0
- package/dist/chunk-NQU6KNQF.js +27 -0
- package/dist/chunk-OIK5YPTN.js +391 -0
- package/dist/chunk-OLWFG75W.js +4330 -0
- package/dist/chunk-ONPUIE7Y.js +29 -0
- package/dist/chunk-OW7D2PJL.js +376 -0
- package/dist/chunk-P63VL4HE.js +2357 -0
- package/dist/chunk-PA4YNUMU.js +45 -0
- package/dist/chunk-PAMPPUR6.js +4500 -0
- package/dist/chunk-PBS3OFNN.js +113 -0
- package/dist/chunk-PFT3VTS4.js +214 -0
- package/dist/chunk-PFTA6BZF.js +49 -0
- package/dist/chunk-PNN5KLAY.js +119 -0
- package/dist/chunk-PRPPGYZG.js +104 -0
- package/dist/chunk-PUKEZ37F.js +666 -0
- package/dist/chunk-Q3HOFXZJ.js +76 -0
- package/dist/chunk-Q5AMFEWD.js +119 -0
- package/dist/chunk-QKRNMBJO.js +80 -0
- package/dist/chunk-QSU47IQ5.js +36 -0
- package/dist/chunk-QSXK2RGH.js +688 -0
- package/dist/chunk-QXNWYUYI.js +52 -0
- package/dist/chunk-R6RY4Q5T.js +51 -0
- package/dist/chunk-RCU3MPY2.js +1496 -0
- package/dist/chunk-RLIB4JUN.js +174 -0
- package/dist/chunk-RYSCLMU3.js +1991 -0
- package/dist/chunk-RZUZ4RJJ.js +415 -0
- package/dist/chunk-S2A7YC3Q.js +41433 -0
- package/dist/chunk-S2FBBX7D.js +540 -0
- package/dist/chunk-S34B4QPI.js +430 -0
- package/dist/chunk-SETWVXOJ.js +2078 -0
- package/dist/chunk-SMA4N4AC.js +211 -0
- package/dist/chunk-SP2I63OO.js +252 -0
- package/dist/chunk-STHSY74Q.js +242 -0
- package/dist/chunk-STUPFGXY.js +3206 -0
- package/dist/chunk-T5I4S2W3.js +34 -0
- package/dist/chunk-T6AIP7H5.js +3851 -0
- package/dist/chunk-TANFV3MZ.js +531 -0
- package/dist/chunk-TAVDMUV3.js +189 -0
- package/dist/chunk-TBSQJ6IV.js +324 -0
- package/dist/chunk-TIZHP7KE.js +408 -0
- package/dist/chunk-TV45EUGM.js +51 -0
- package/dist/chunk-TW2KPPUC.js +4087 -0
- package/dist/chunk-V2YTAIQO.js +1075 -0
- package/dist/chunk-V5PKHHQQ.js +1963 -0
- package/dist/chunk-VF4IOZZO.js +184 -0
- package/dist/chunk-VJTINHZI.js +48 -0
- package/dist/chunk-VKLILA2D.js +205 -0
- package/dist/chunk-VOGCSYOI.js +16 -0
- package/dist/chunk-VPTTCYOC.js +16101 -0
- package/dist/chunk-WY6PP6AA.js +53 -0
- package/dist/chunk-WYFIXP54.js +174 -0
- package/dist/chunk-WZ2BXIGG.js +34 -0
- package/dist/chunk-XJNDSYGO.js +147 -0
- package/dist/chunk-XPCM366L.js +70 -0
- package/dist/chunk-XSQKGVYA.js +69 -0
- package/dist/chunk-XUPVB7TL.js +207 -0
- package/dist/chunk-XZRON6IV.js +131 -0
- package/dist/chunk-Y4NG2FP5.js +94 -0
- package/dist/chunk-YEDDOYSC.js +27809 -0
- package/dist/chunk-YGMCXNTY.js +41 -0
- package/dist/chunk-YJKPTX6J.js +228 -0
- package/dist/chunk-YMZ3TNYB.js +18 -0
- package/dist/chunk-Z6LF7HQN.js +22 -0
- package/dist/chunk-Z7SG32ZY.js +55 -0
- package/dist/chunk-ZDPAS56H.js +76 -0
- package/dist/chunk-ZJSP24X4.js +1247 -0
- package/dist/chunk-ZMAINWBW.js +18 -0
- package/dist/chunk-ZMFPW66A.js +22 -0
- package/dist/chunk-ZUIAOKXI.js +1611 -0
- package/dist/chunk-ZVM6AKKM.js +47 -0
- package/dist/files.json +1888 -0
- package/dist/fixtures/forge/README.md +19 -0
- package/dist/fixtures/forge/expected/discrepancies.yaml +54 -0
- package/dist/fixtures/forge/expected/inputs.yaml +38 -0
- package/dist/fixtures/forge/expected/scan.yaml +342 -0
- package/dist/fixtures/forge/inputs/diagrams/forge-context.drawio +23 -0
- package/dist/fixtures/forge/inputs/partner-specs/northwind-pay-openapi.yaml +11 -0
- package/dist/fixtures/forge/inputs/tickets/ado-stories.json +4 -0
- package/dist/fixtures/forge/inputs/tickets/closed-service-requests.json +5 -0
- package/dist/fixtures/forge/inputs/wiki/integration-patterns.md +11 -0
- package/dist/fixtures/forge/inputs/wiki/ledger-solution-spec.md +9 -0
- package/dist/fixtures/forge/inputs/wiki/snow-firewall-request.md +4 -0
- package/dist/fixtures/forge/metarepo/judgments/reaches/84af5b6af24f7ca8c23013f3.yaml +17 -0
- package/dist/fixtures/forge/metarepo/judgments/reaches/c3917555edebddce8cecb647.yaml +17 -0
- package/dist/fixtures/forge/metarepo/judgments/reaches/c5fafd6601f8ca9e34e0bbd0.yaml +17 -0
- package/dist/fixtures/forge/metarepo/org-pack/agents/architecture-critic.yaml +9 -0
- package/dist/fixtures/forge/metarepo/org-pack/agents/story-writer.yaml +10 -0
- package/dist/fixtures/forge/metarepo/org-pack/checklists/architecture.yaml +115 -0
- package/dist/fixtures/forge/metarepo/org-pack/dialects/forge.yaml +111 -0
- package/dist/fixtures/forge/metarepo/org-pack/gates.yaml +22 -0
- package/dist/fixtures/forge/metarepo/org-pack/pack.yaml +11 -0
- package/dist/fixtures/forge/metarepo/org-pack/patterns/A.EB.PUB.yaml +12 -0
- package/dist/fixtures/forge/metarepo/org-pack/patterns/D.JDBC.yaml +12 -0
- package/dist/fixtures/forge/metarepo/org-pack/patterns/S.DIR.BFF.yaml +12 -0
- package/dist/fixtures/forge/metarepo/org-pack/patterns/S.GW.SOR.yaml +13 -0
- package/dist/fixtures/forge/metarepo/org-pack/patterns/S.GW.VND.yaml +14 -0
- package/dist/fixtures/forge/metarepo/org-pack/process/change-templates/feature.md +37 -0
- package/dist/fixtures/forge/metarepo/org-pack/process/skills/add-forge-endpoint/SKILL.md +17 -0
- package/dist/fixtures/forge/metarepo/org-pack/process/snow/firewall-rule.yaml +14 -0
- package/dist/fixtures/forge/metarepo/org-pack/process/snow/gateway-route.yaml +13 -0
- package/dist/fixtures/forge/metarepo/org-pack/profiles/forge/profile.yaml +12 -0
- package/dist/fixtures/forge/metarepo/org-pack/profiles/forge/repos.manifest.yaml +44 -0
- package/dist/fixtures/forge/metarepo/org-pack/roles.yaml +14 -0
- package/dist/fixtures/forge/metarepo/org-pack/runtime.yaml +14 -0
- package/dist/fixtures/forge/metarepo/org-pack/sources.yaml +3 -0
- package/dist/fixtures/forge/repos/forge-events/topics/payments.initiated.yaml +4 -0
- package/dist/fixtures/forge/repos/forge-events/topics/transfers.completed.yaml +4 -0
- package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/ledger-v1.xml +3 -0
- package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/policies/SpikeArrest.xml +3 -0
- package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/policies/VerifyOAuth.xml +4 -0
- package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/proxies/default.xml +14 -0
- package/dist/fixtures/forge/repos/forge-gateway/proxies/ledger-v1/apiproxy/targets/ledger.xml +5 -0
- package/dist/fixtures/forge/repos/forge-infra/alerts/ledger-api.yaml +5 -0
- package/dist/fixtures/forge/repos/forge-infra/k8s/ledger-api.yaml +15 -0
- package/dist/fixtures/forge/repos/forge-infra/k8s/portal-bff.yaml +7 -0
- package/dist/fixtures/forge/repos/forge-infra/terraform/ledger-db.tf +9 -0
- package/dist/fixtures/forge/repos/forge-ledger/api/ledger-openapi.yaml +31 -0
- package/dist/fixtures/forge/repos/forge-ledger/forge.yaml +4 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/LedgerEndpoints.java +13 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/LedgerEvents.java +11 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/java/forge/ledger/NorthwindClient.java +10 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/application.yml +3 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/db/migration/V1__create_account.sql +5 -0
- package/dist/fixtures/forge/repos/forge-ledger/src/main/resources/db/migration/V2__create_entry.sql +7 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/pom.xml +1 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/AuditPublisher.java +12 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/BalanceController.java +16 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/LedgerClient.java +13 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/src/main/java/forge/portal/PaymentEvents.java +13 -0
- package/dist/fixtures/forge/repos/forge-portal-bff/src/main/resources/application.yml +8 -0
- package/dist/fixtures/forge/repos/forge-portal-ui/package.json +1 -0
- package/dist/fixtures/forge/repos/forge-portal-ui/src/api/balance.ts +5 -0
- package/dist/fixtures/forge/repos/forge-reports-job/src/main/java/forge/reports/DailyEntriesJob.java +19 -0
- package/dist/fixtures/forge/repos/forge-reports-job/src/main/resources/application.yml +3 -0
- package/dist/fixtures/forge-change/README.md +41 -0
- package/dist/fixtures/forge-change/expected/findings.yaml +301 -0
- package/dist/fixtures/forge-change/expected/stories.yaml +101 -0
- package/dist/fixtures/forge-change/judgments/personal-data/0b5f3dbf5257a22275d8c74b.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/2759a66770134c417440bf2d.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/31b1ea2f14d0737f1aca79fd.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/49afd70c08228e65ad6ca1ed.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/761cabcb8a39f5e5866d2dd6.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/adae902b90cc8ffa0c765145.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/ba11bb933105ec9493e065dd.yaml +18 -0
- package/dist/fixtures/forge-change/judgments/personal-data/bdbcd1cdac3021c68063c3e7.yaml +18 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/brief.md +35 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/change.yaml +120 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/data.md +18 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/design.md +29 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/interfaces.md +17 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/mappings.md +26 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/proposal.md +35 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/snow.md +12 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/specs/transfer-limits/spec.md +19 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s1-refuse-over-limit.md +17 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s2-show-remaining.md +16 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s3-audit-refusals.md +18 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories/s4-velocity-check.md +16 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/stories.md +8 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/tasks.md +12 -0
- package/dist/fixtures/forge-change/openspec/changes/add-transfer-limit/ux.md +7 -0
- package/dist/fixtures/forge-change/org-pack/agents/code-and-test-critic.yaml +13 -0
- package/dist/fixtures/forge-change/org-pack/agents/complete-critic.yaml +12 -0
- package/dist/fixtures/forge-change/org-pack/agents/safe-critic.yaml +12 -0
- package/dist/fixtures/forge-change/org-pack/agents/ship-critic.yaml +11 -0
- package/dist/fixtures/forge-change/org-pack/agents/true-critic.yaml +11 -0
- package/dist/fixtures/forge-change/org-pack/checklists/review.yaml +54 -0
- package/dist/fixtures/forge-change/org-pack/gates.yaml +25 -0
- package/dist/fixtures/forge-change/org-pack/teams/team-ledger/checklists/ledger-team.yaml +227 -0
- package/dist/fixtures/forge-change/recordings/complete-critic/2ad84f84bf39c1d5412697e69fe23034d6983ec45a00314bf0975e627589a3c5.json +12 -0
- package/dist/fixtures/forge-change/recordings/complete-critic/417c98d8e54a4387d0fd93441c49f44c2868958739070d855c1dce0c41e24db3.json +12 -0
- package/dist/fixtures/forge-change/recordings/complete-critic/50203ee22e9cb3ef047295edb6538fe7d5695e1e4b139f3c929013dc6ce47021.json +12 -0
- package/dist/fixtures/forge-change/recordings/complete-critic/89f18d67f5d9c325bf35e2a9e020f9ddb6ee13b8523315037f0905cc57c040b1.json +12 -0
- package/dist/fixtures/forge-change/recordings/complete-critic/b4097867d26ae8eadc8b9efa8cdd86897013358035f0b40086c299a59c4ba121.json +12 -0
- package/dist/fixtures/forge-change/recordings/safe-critic/302d06f49664dd67ad2e21ab9cf74c1b0f7d3f750709c6ed8eff2b70983274e2.json +12 -0
- package/dist/fixtures/forge-change/recordings/safe-critic/32f1049c9a5ab4a759543290db4644ec6e221cc45fdfdcf06193837c6a8ce0b9.json +12 -0
- package/dist/fixtures/forge-change/recordings/safe-critic/4e4a84bfc04b9f26ca4250319a879901ff7a1c081c71e46a117675fee05026b0.json +12 -0
- package/dist/fixtures/forge-change/recordings/safe-critic/604af0fcdd6df6b76208fa88305fdc15c37606c2a4d1ae816477e46ac8c2dd04.json +12 -0
- package/dist/fixtures/forge-change/recordings/safe-critic/f0bf50af11f14c50d07904f0dffe1c8c20fb0cd89770645a8824c1d30a443955.json +12 -0
- package/dist/fixtures/forge-change/recordings/ship-critic/350954b58833b2c04880c67db45a1b328b7fd541d9f0d943b63905b8875488a6.json +12 -0
- package/dist/fixtures/forge-change/recordings/ship-critic/4af95c6c96a206777cec9de1f9c2d8c55a36ddc9b8db2f81d6eb83217b835efa.json +12 -0
- package/dist/fixtures/forge-change/recordings/ship-critic/76c34522a49cf7587a4e5689a5030d384603fa780b8aba97d27815cbc829683e.json +12 -0
- package/dist/fixtures/forge-change/recordings/ship-critic/a3b2cd1ace48587e5994333db03b34c3a0f9dec4f1932f1730ddfb687f6918c8.json +12 -0
- package/dist/fixtures/forge-change/recordings/ship-critic/de288a4fa64d0fc20890f9a787080ce6eac5203b7b9b72d884df11e8cf111835.json +12 -0
- package/dist/fixtures/forge-change/recordings/story-writer/1ddb00eac2aaf91a5ec5d9dfd220116be9f75aec6546a4a3a3b050ed89af2864.json +12 -0
- package/dist/packages/assistant-kit/frameworks-kit/README.md +86 -0
- package/dist/packages/assistant-kit/frameworks-kit/checklist.md +11 -0
- package/dist/packages/assistant-kit/frameworks-kit/examples/tide-lantern.yaml +56 -0
- package/dist/packages/assistant-kit/frameworks-kit/examples/tide-platform.yaml +43 -0
- package/dist/packages/assistant-kit/frameworks-kit/prompts/write-framework-model.md +12 -0
- package/dist/packages/assistant-kit/kit/README.md +98 -0
- package/dist/packages/assistant-kit/kit/c2-reference.md +334 -0
- package/dist/packages/assistant-kit/kit/checklist.md +39 -0
- package/dist/packages/assistant-kit/kit/examples/house-http-client.yaml +102 -0
- package/dist/packages/assistant-kit/kit/examples/tide-apigee.yaml +56 -0
- package/dist/packages/assistant-kit/kit/examples/tide-apim.yaml +32 -0
- package/dist/packages/assistant-kit/kit/examples/tide-kong.yaml +44 -0
- package/dist/packages/assistant-kit/kit/prompts/write-dialect.md +34 -0
- package/dist/packages/assistant-kit/kit/worked-example.md +198 -0
- package/dist/packages/conformance/sample/README.md +4 -0
- package/dist/packages/conformance/sample/inputs/notes.md +3 -0
- package/dist/packages/conformance/sample/inputs/systems.csv +3 -0
- package/dist/packages/conformance/sample/repo/api/greeter.proto +6 -0
- package/dist/packages/conformance/sample/repo/api/openapi.yaml +10 -0
- package/dist/packages/conformance/sample/repo/api/schema.graphql +3 -0
- package/dist/packages/conformance/sample/repo/db/V1__create_greeting.sql +4 -0
- package/dist/packages/conformance/sample/repo/package.json +7 -0
- package/dist/packages/conformance/sample/repo/src/main/java/sample/HelloController.java +10 -0
- package/dist/packages/conformance/sample/repo/web/app.ts +4 -0
- package/dist/packages/evals/datasets/critic-lenses.yaml +62 -0
- package/dist/packages/evals/datasets/dialect-writer.yaml +14 -0
- package/dist/packages/evals/datasets/feature-namer.yaml +34 -0
- package/dist/packages/evals/datasets/glossary-definer.yaml +25 -0
- package/dist/packages/evals/datasets/story-writer.yaml +13 -0
- package/dist/packages/evals/datasets/template-writer.yaml +16 -0
- package/dist/packages/evals/datasets/test-writer.yaml +18 -0
- package/dist/packages/executors/reference/reference-executor.mjs +233 -0
- package/dist/packages/extractors/dialects/argocd.yaml +45 -0
- package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/AccountResource.java +47 -0
- package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/AuditClient.java +12 -0
- package/dist/packages/extractors/dialects/fixtures/jaxrs/accounts-service/src/main/java/forge/accounts/LedgerClient.java +17 -0
- package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/LedgerClient.java +14 -0
- package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/RatesClient.java +11 -0
- package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/java/forge/statements/StatementController.java +36 -0
- package/dist/packages/extractors/dialects/fixtures/micronaut/statements-service/src/main/resources/application.yml +7 -0
- package/dist/packages/extractors/dialects/fixtures/quarkus-reactive-messaging/fraud-service/src/main/java/forge/fraud/FraudScorer.java +27 -0
- package/dist/packages/extractors/dialects/fixtures/quarkus-reactive-messaging/fraud-service/src/main/resources/application.properties +4 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/api.tf +38 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/main.tf +95 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/terraform.tfvars +1 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-aws/forge-aws-infra/envs/prod/variables.tf +4 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-azure/forge-azure-infra/main.tf +102 -0
- package/dist/packages/extractors/dialects/fixtures/terraform-gcp/forge-gcp-infra/main.tf +51 -0
- package/dist/packages/extractors/dialects/harness.yaml +101 -0
- package/dist/packages/extractors/dialects/jaxrs.yaml +155 -0
- package/dist/packages/extractors/dialects/micronaut.yaml +207 -0
- package/dist/packages/extractors/dialects/quarkus-reactive-messaging.yaml +158 -0
- package/dist/packages/extractors/dialects/tekton.yaml +71 -0
- package/dist/packages/extractors/dialects/terraform-aws.yaml +267 -0
- package/dist/packages/extractors/dialects/terraform-azure.yaml +212 -0
- package/dist/packages/extractors/dialects/terraform-gcp.yaml +109 -0
- package/dist/packages/extractors/grammars/README.md +11 -0
- package/dist/packages/extractors/grammars/tree-sitter-groovy.LICENSE +21 -0
- package/dist/packages/extractors/grammars/tree-sitter-groovy.wasm +0 -0
- package/dist/packages/extractors/grammars/vendored.json +11 -0
- package/dist/packages/learn/lessons/architect-diagrams-and-code.yaml +69 -0
- package/dist/packages/learn/lessons/business-analyst-story-bar.yaml +94 -0
- package/dist/packages/learn/lessons/delivery-lead-release-readiness.yaml +44 -0
- package/dist/packages/learn/lessons/designer-features-in-user-words.yaml +57 -0
- package/dist/packages/learn/lessons/developer-find-your-way.yaml +60 -0
- package/dist/packages/learn/lessons/everyone-first-hour.yaml +74 -0
- package/dist/packages/learn/lessons/platform-lead-coverage-and-defences.yaml +58 -0
- package/dist/packages/learn/lessons/product-owner-first-change.yaml +167 -0
- package/dist/packages/learn/lessons/qa-tests-and-trace.yaml +53 -0
- package/dist/packages/learn/lessons/team-lead-initiative.yaml +146 -0
- package/dist/packages/naysayer/constitution/constitution.yaml +286 -0
- package/dist/packages/naysayer/starter/review.yaml +256 -0
- package/dist/packages/sdk/npm/index.js +8892 -0
- package/dist/packages/speckit/rules/drift.yaml +78 -0
- package/dist/packages/taskrun/rules/conform.yaml +38 -0
- package/dist/packages/testgen/rules/trace.yaml +49 -0
- package/dist/packages/ui/dist/assets/elk-api-tma0MCuh.js +2 -0
- package/dist/packages/ui/dist/assets/elk-worker.min--dAJroGl.js +6401 -0
- package/dist/packages/ui/dist/assets/elk-worker.min-DdYmS5kP.js +2 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2 +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff +0 -0
- package/dist/packages/ui/dist/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2 +0 -0
- package/dist/packages/ui/dist/assets/index-B54fm9FQ.js +29 -0
- package/dist/packages/ui/dist/assets/index-DD_hufQz.css +1 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist/packages/ui/dist/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-devanagari-600-normal-BtY48IV_.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-devanagari-600-normal-DhS7ScYx.woff2 +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-devanagari-700-normal-BQQOj9BB.woff2 +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-devanagari-700-normal-DBRwWuxA.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-600-normal-CXCVEoA9.woff2 +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-600-normal-Dx02qI2_.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-700-normal-BPDUZo87.woff2 +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-700-normal-e0Uj8ZlN.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-ext-600-normal-BleIgkPp.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-ext-600-normal-C9ZjJQAt.woff2 +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-ext-700-normal-BPaQ7tlD.woff +0 -0
- package/dist/packages/ui/dist/assets/rajdhani-latin-ext-700-normal-S6aYESQK.woff2 +0 -0
- package/dist/packages/ui/dist/favicon.svg +1 -0
- package/dist/packages/ui/dist/index.html +15 -0
- package/dist/third-party.json +575 -0
- package/dist/vendor/@fission-ai/openspec/bin/openspec.js +85986 -0
- package/dist/vendor/@fission-ai/openspec/package.json +82 -0
- package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/schema.yaml +248 -0
- package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/design.md +21 -0
- package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/proposal.md +34 -0
- package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/spec.md +13 -0
- package/dist/vendor/@fission-ai/openspec/schemas/spec-driven/templates/tasks.md +11 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-c_sharp.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-go.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-java.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-javascript.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-kotlin.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-php.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-python.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-ruby.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-rust.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-scala.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-tsx.wasm +0 -0
- package/dist/vendor/tree-sitter-wasms/out/tree-sitter-typescript.wasm +0 -0
- package/dist/vendor/web-tree-sitter/tree-sitter.wasm +0 -0
- package/package.json +36 -3
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Atticus's built-in constitution. Contract C3.
|
|
2
|
+
#
|
|
3
|
+
# These rules apply to every change, at every gate where their artifacts are due. They are
|
|
4
|
+
# never waivable, a team or org pack can only tighten them, and a pack that drops or loosens
|
|
5
|
+
# one is refused. They are data, so the critic's code holds no policy of its own: each rule
|
|
6
|
+
# names a built-in deterministic check and the catalog facts it needs.
|
|
7
|
+
#
|
|
8
|
+
# Each rule answers one of the four questions the critic asks of every draft (ADR 0124 addendum,
|
|
9
|
+
# Part 4): is it true to the code, is it complete, is it safe to build, can it ship. `question` says
|
|
10
|
+
# which; `lens` keeps the role lens the rule was first written for, so a pack that tightens it with
|
|
11
|
+
# that lens still matches. The two rules added with the questions are written for theirs; the
|
|
12
|
+
# timeout and rollback checks added with them are the starter review's (starter/review.yaml), the
|
|
13
|
+
# organisation's to change (the product owner's decision of 2026-10-24).
|
|
14
|
+
schemaVersion: 1
|
|
15
|
+
name: constitution
|
|
16
|
+
version: 1.0.0
|
|
17
|
+
description: Rules every change meets, whatever the organisation or team configures.
|
|
18
|
+
rules:
|
|
19
|
+
- id: constitution.interface-approved-pattern
|
|
20
|
+
title: Every interface names an approved integration pattern
|
|
21
|
+
description: A hop without a pattern, or with a code that isn't a confirmed pattern in the registry, can't be checked for its controls.
|
|
22
|
+
layer: constitution
|
|
23
|
+
lens: architecture
|
|
24
|
+
question: safe
|
|
25
|
+
appliesTo: { artifacts: [interfaces] }
|
|
26
|
+
severity: blocking
|
|
27
|
+
check:
|
|
28
|
+
type: deterministic
|
|
29
|
+
check: interface-pattern-approved
|
|
30
|
+
params: { statuses: [confirmed] }
|
|
31
|
+
waivable: false
|
|
32
|
+
source: Atticus constitution
|
|
33
|
+
needs: []
|
|
34
|
+
|
|
35
|
+
- id: constitution.interface-ends-in-catalog
|
|
36
|
+
title: No planned interface to a system missing from the catalog
|
|
37
|
+
description: A caller or callee the catalog doesn't know is either a typo or an unknown system nobody has looked at.
|
|
38
|
+
layer: constitution
|
|
39
|
+
lens: architecture
|
|
40
|
+
question: "true"
|
|
41
|
+
appliesTo: { artifacts: [interfaces, catalog] }
|
|
42
|
+
severity: blocking
|
|
43
|
+
check:
|
|
44
|
+
type: deterministic
|
|
45
|
+
check: interface-ends-in-catalog
|
|
46
|
+
waivable: false
|
|
47
|
+
source: Atticus constitution
|
|
48
|
+
needs: []
|
|
49
|
+
|
|
50
|
+
- id: constitution.interface-ids-in-catalog
|
|
51
|
+
title: Existing interfaces keep their catalog id
|
|
52
|
+
description: A row naming an interface id must match the catalog; a row for a new hop says new and planned-new.
|
|
53
|
+
layer: constitution
|
|
54
|
+
lens: architecture
|
|
55
|
+
question: "true"
|
|
56
|
+
appliesTo: { artifacts: [interfaces, catalog] }
|
|
57
|
+
severity: blocking
|
|
58
|
+
check:
|
|
59
|
+
type: deterministic
|
|
60
|
+
check: interface-ids-in-catalog
|
|
61
|
+
waivable: false
|
|
62
|
+
source: Atticus constitution
|
|
63
|
+
needs: []
|
|
64
|
+
|
|
65
|
+
- id: constitution.hop-resilience-stated
|
|
66
|
+
title: Every planned call states the timeouts and retries its pattern requires
|
|
67
|
+
description: The pattern's controls say which resilience settings a hop needs; each must be in the catalog or stated in interfaces.md or design.md.
|
|
68
|
+
layer: constitution
|
|
69
|
+
lens: architecture
|
|
70
|
+
question: safe
|
|
71
|
+
appliesTo: { artifacts: [interfaces, design, catalog] }
|
|
72
|
+
severity: blocking
|
|
73
|
+
check:
|
|
74
|
+
type: deterministic
|
|
75
|
+
check: settings-present
|
|
76
|
+
params: { fromPattern: true }
|
|
77
|
+
waivable: false
|
|
78
|
+
source: Atticus constitution
|
|
79
|
+
needs:
|
|
80
|
+
- kind: Setting
|
|
81
|
+
field: settingKind
|
|
82
|
+
scope: touched-components
|
|
83
|
+
question: "What timeout, retry and circuit-breaker settings does ${record} use for its calls?"
|
|
84
|
+
|
|
85
|
+
- id: constitution.touched-components-known
|
|
86
|
+
title: Every touched component has a known owner, repo and interface
|
|
87
|
+
description: A component known only from a caller can't be checked; its owner is asked.
|
|
88
|
+
layer: constitution
|
|
89
|
+
lens: architecture
|
|
90
|
+
question: "true"
|
|
91
|
+
appliesTo: { artifacts: [catalog] }
|
|
92
|
+
severity: risk
|
|
93
|
+
check:
|
|
94
|
+
type: deterministic
|
|
95
|
+
check: knowledge-check
|
|
96
|
+
params: { check: component-source-known }
|
|
97
|
+
waivable: false
|
|
98
|
+
source: Atticus constitution
|
|
99
|
+
needs:
|
|
100
|
+
- kind: System
|
|
101
|
+
field: owner
|
|
102
|
+
scope: touched-systems
|
|
103
|
+
question: "Who owns ${record}?"
|
|
104
|
+
- kind: Component
|
|
105
|
+
field: repo
|
|
106
|
+
scope: touched-components
|
|
107
|
+
question: "Which repo holds the code of ${record}?"
|
|
108
|
+
|
|
109
|
+
- id: constitution.data-doc-present
|
|
110
|
+
title: data.md exists when a data store is touched
|
|
111
|
+
layer: constitution
|
|
112
|
+
lens: architecture
|
|
113
|
+
question: complete
|
|
114
|
+
appliesTo: { artifacts: [data, catalog] }
|
|
115
|
+
severity: blocking
|
|
116
|
+
check:
|
|
117
|
+
type: deterministic
|
|
118
|
+
check: data-doc-present
|
|
119
|
+
waivable: false
|
|
120
|
+
source: Atticus constitution
|
|
121
|
+
needs: []
|
|
122
|
+
|
|
123
|
+
- id: constitution.data-change-has-migration
|
|
124
|
+
title: Every data change names its migration
|
|
125
|
+
layer: constitution
|
|
126
|
+
lens: architecture
|
|
127
|
+
question: ship
|
|
128
|
+
appliesTo: { artifacts: [data] }
|
|
129
|
+
severity: blocking
|
|
130
|
+
check:
|
|
131
|
+
type: deterministic
|
|
132
|
+
check: data-migration-named
|
|
133
|
+
waivable: false
|
|
134
|
+
source: Atticus constitution
|
|
135
|
+
needs: []
|
|
136
|
+
|
|
137
|
+
- id: constitution.data-columns-classified
|
|
138
|
+
title: Every new column is classified, and personal data is classified as personal
|
|
139
|
+
layer: constitution
|
|
140
|
+
lens: architecture
|
|
141
|
+
question: safe
|
|
142
|
+
appliesTo: { artifacts: [data] }
|
|
143
|
+
severity: blocking
|
|
144
|
+
check:
|
|
145
|
+
type: deterministic
|
|
146
|
+
check: data-columns-classified
|
|
147
|
+
waivable: false
|
|
148
|
+
source: Atticus constitution
|
|
149
|
+
needs: []
|
|
150
|
+
|
|
151
|
+
- id: constitution.data-retention-stated
|
|
152
|
+
title: Every new table says how long its rows are kept
|
|
153
|
+
layer: constitution
|
|
154
|
+
lens: architecture
|
|
155
|
+
question: safe
|
|
156
|
+
appliesTo: { artifacts: [data, catalog] }
|
|
157
|
+
severity: blocking
|
|
158
|
+
check:
|
|
159
|
+
type: deterministic
|
|
160
|
+
check: data-retention-stated
|
|
161
|
+
waivable: false
|
|
162
|
+
source: Atticus constitution
|
|
163
|
+
needs:
|
|
164
|
+
- kind: Table
|
|
165
|
+
field: retention
|
|
166
|
+
scope: touched-data-stores
|
|
167
|
+
question: "How long are rows of ${record} kept, and when are they deleted?"
|
|
168
|
+
|
|
169
|
+
- id: constitution.story-acceptance-criteria
|
|
170
|
+
title: Every story has acceptance criteria
|
|
171
|
+
layer: constitution
|
|
172
|
+
lens: story
|
|
173
|
+
question: complete
|
|
174
|
+
appliesTo: { artifacts: [stories] }
|
|
175
|
+
severity: blocking
|
|
176
|
+
check:
|
|
177
|
+
type: deterministic
|
|
178
|
+
check: story-has-acceptance-criteria
|
|
179
|
+
waivable: false
|
|
180
|
+
source: Atticus constitution
|
|
181
|
+
needs: []
|
|
182
|
+
|
|
183
|
+
- id: constitution.spec-scenarios-present
|
|
184
|
+
title: Every requirement has a scenario
|
|
185
|
+
layer: constitution
|
|
186
|
+
lens: business
|
|
187
|
+
question: complete
|
|
188
|
+
appliesTo: { artifacts: [specs] }
|
|
189
|
+
severity: blocking
|
|
190
|
+
check:
|
|
191
|
+
type: deterministic
|
|
192
|
+
check: spec-scenarios-present
|
|
193
|
+
waivable: false
|
|
194
|
+
source: Atticus constitution
|
|
195
|
+
needs: []
|
|
196
|
+
|
|
197
|
+
# Retired with the four questions (ADR 0124 addendum, Part 4): a service-desk request is a
|
|
198
|
+
# person's manual step. atticus plan drafts snow.md from the triggers this check reads, and
|
|
199
|
+
# atticus release plan lists each draft as a request to file, with its required fields still
|
|
200
|
+
# missing. The check stays for an org pack that wants it as a rule of its own.
|
|
201
|
+
- id: constitution.snow-drafts-present
|
|
202
|
+
title: A service-desk draft exists for each firewall or gateway change
|
|
203
|
+
description: Request templates in the org pack say which catalog changes need a request; each needs a draft in snow.md with its required fields filled.
|
|
204
|
+
layer: constitution
|
|
205
|
+
lens: release
|
|
206
|
+
question: ship
|
|
207
|
+
appliesTo: { artifacts: [snow, interfaces] }
|
|
208
|
+
severity: blocking
|
|
209
|
+
check:
|
|
210
|
+
type: deterministic
|
|
211
|
+
check: snow-drafts-present
|
|
212
|
+
waivable: false
|
|
213
|
+
source: Atticus constitution
|
|
214
|
+
needs: []
|
|
215
|
+
status: retired
|
|
216
|
+
|
|
217
|
+
- id: constitution.no-embedded-instructions
|
|
218
|
+
title: Artifacts hold no instructions aimed at AI agents
|
|
219
|
+
description: Ingested content is data, never instructions; text that tries to steer a reviewer or an agent is removed before review.
|
|
220
|
+
layer: constitution
|
|
221
|
+
lens: delivery
|
|
222
|
+
question: safe
|
|
223
|
+
appliesTo:
|
|
224
|
+
{
|
|
225
|
+
artifacts:
|
|
226
|
+
[brief, proposal, specs, interfaces, mappings, data, design, ux, stories, tasks, snow],
|
|
227
|
+
}
|
|
228
|
+
severity: blocking
|
|
229
|
+
check:
|
|
230
|
+
type: deterministic
|
|
231
|
+
check: no-embedded-instructions
|
|
232
|
+
waivable: false
|
|
233
|
+
source: Atticus constitution
|
|
234
|
+
needs: []
|
|
235
|
+
|
|
236
|
+
# ---- added with the four questions (ADR 0124 addendum, Part 4): code answers what code can.
|
|
237
|
+
# Never waivable (the product owner's decision of 2026-10-24); a person may still dismiss a
|
|
238
|
+
# finding as not relevant, with a reason.
|
|
239
|
+
|
|
240
|
+
- id: constitution.public-entry-auth
|
|
241
|
+
title: Every entry another system calls says how it authenticates
|
|
242
|
+
description: An entry point the change adds or changes that another system or the gateway calls needs an auth fact (the Endpoint's or the Interface's auth, or a gateway route that checks scopes). None known is asked of the owner; none at all blocks.
|
|
243
|
+
layer: constitution
|
|
244
|
+
lens: safe
|
|
245
|
+
question: safe
|
|
246
|
+
appliesTo: { artifacts: [interfaces, catalog] }
|
|
247
|
+
severity: blocking
|
|
248
|
+
check:
|
|
249
|
+
type: deterministic
|
|
250
|
+
check: public-entry-auth
|
|
251
|
+
waivable: false
|
|
252
|
+
source: Atticus constitution
|
|
253
|
+
needs: []
|
|
254
|
+
|
|
255
|
+
- id: constitution.breaking-delta-consumers
|
|
256
|
+
title: A breaking change to an operation plans for every consumer the catalog knows
|
|
257
|
+
description: A retired operation breaks its callers; a changed one breaks them when a caller must change (a judgment, ADR 0117, asked of a person when nobody has made it). Each consumer the catalog knows and the change doesn't plan for is named.
|
|
258
|
+
layer: constitution
|
|
259
|
+
lens: safe
|
|
260
|
+
question: safe
|
|
261
|
+
appliesTo: { artifacts: [interfaces, catalog] }
|
|
262
|
+
severity: blocking
|
|
263
|
+
check:
|
|
264
|
+
type: deterministic
|
|
265
|
+
check: breaking-delta-consumers
|
|
266
|
+
waivable: false
|
|
267
|
+
source: Atticus constitution
|
|
268
|
+
needs: []
|
|
269
|
+
|
|
270
|
+
# ADR 0124 addendum A-callers: who a gateway route lets in. A route whose files name no consumer,
|
|
271
|
+
# that no person declared a caller of and that no call the catalog holds goes through is asked
|
|
272
|
+
# about, never passed in silence; a risk, so a person answers it rather than the gate blocking.
|
|
273
|
+
- id: constitution.route-callers-known
|
|
274
|
+
title: Every gateway route a change touches has a known caller
|
|
275
|
+
description: A gateway route that carries an operation the change modifies or retires names its consumers in its files, has a caller a person declared in the org pack's profile, or has a call the catalog holds going through it. When none of these says who calls it, who does is asked of the callee's owner.
|
|
276
|
+
layer: constitution
|
|
277
|
+
lens: architecture
|
|
278
|
+
question: complete
|
|
279
|
+
appliesTo: { artifacts: [interfaces, catalog] }
|
|
280
|
+
severity: risk
|
|
281
|
+
check:
|
|
282
|
+
type: deterministic
|
|
283
|
+
check: route-callers-known
|
|
284
|
+
waivable: false
|
|
285
|
+
source: Atticus constitution
|
|
286
|
+
needs: []
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Built-in default written out by Atticus: the starter review (ADR 0120). Change it through a
|
|
2
|
+
# pull request; delete the file to turn the starter review off (atticus upgrade won't add it back).
|
|
3
|
+
#
|
|
4
|
+
# Most are AI rules: the critic's lenses apply them to every draft a stage writes (ADR 0115) and
|
|
5
|
+
# at each gate's critic round, judging what the draft means against the estate and the brief. The
|
|
6
|
+
# last three are code checks (a call's timeout, a store write's rollback step, a note's cite) that run before any
|
|
7
|
+
# lens, with no model.
|
|
8
|
+
# This is the organisation's configuration, not the constitution: change a prompt or a severity,
|
|
9
|
+
# make a blocking rule not waivable, retire a rule (status: retired) or delete it, and add your own.
|
|
10
|
+
# A rule runs from the first gate where its artifacts are due (brief: define; design, data and
|
|
11
|
+
# interfaces: design; stories and tasks: plan; the catalog: every gate), and again at each later
|
|
12
|
+
# gate. Contract C3.
|
|
13
|
+
#
|
|
14
|
+
# Each rule asks part of one of the critic's four questions (ADR 0124 addendum, Part 4): is it true
|
|
15
|
+
# to the code, is it complete, is it safe to build, can it ship. `question` says which, and that
|
|
16
|
+
# question's lens applies it, to the change types that ask it (a type lists its questions). `lens`
|
|
17
|
+
# names the role lens an AI rule was written for: a change type that still lists the old lens
|
|
18
|
+
# names takes the rule when it lists that lens.
|
|
19
|
+
schemaVersion: 1
|
|
20
|
+
name: review
|
|
21
|
+
version: 1.0.0
|
|
22
|
+
description: The starter review. AI rules for the critic's true, complete, safe and ship lenses, from the define gate to the plan gate, and three code checks of the true, safe and ship questions.
|
|
23
|
+
rules:
|
|
24
|
+
# ---- define: the feature placement, against the brief and the estate
|
|
25
|
+
- id: review.brief-outcomes-placed
|
|
26
|
+
title: Every outcome the brief states is placed
|
|
27
|
+
lens: business
|
|
28
|
+
question: complete
|
|
29
|
+
layer: org
|
|
30
|
+
appliesTo: { artifacts: [brief] }
|
|
31
|
+
severity: blocking
|
|
32
|
+
check:
|
|
33
|
+
type: ai
|
|
34
|
+
prompt: >-
|
|
35
|
+
List each outcome the brief states: what the change must achieve, and for whom. For each
|
|
36
|
+
one, find where the draft under review delivers it: the feature placement (feature.md and
|
|
37
|
+
feature.yaml) at the define gate, the target flows at design, the stories at plan. Report
|
|
38
|
+
each outcome the draft leaves out or delivers only in part, citing the brief's line for
|
|
39
|
+
that outcome and quoting it. Don't report what the brief puts out of scope.
|
|
40
|
+
waivable: true
|
|
41
|
+
source: Atticus starter review
|
|
42
|
+
|
|
43
|
+
- id: review.changed-flow-not-read
|
|
44
|
+
title: A flow the change alters isn't marked only read
|
|
45
|
+
lens: architecture
|
|
46
|
+
question: "true"
|
|
47
|
+
layer: org
|
|
48
|
+
appliesTo: { artifacts: [brief] }
|
|
49
|
+
severity: blocking
|
|
50
|
+
check:
|
|
51
|
+
type: ai
|
|
52
|
+
prompt: >-
|
|
53
|
+
For each flow the draft marks as only read, check against the estate and the brief whether
|
|
54
|
+
the change has to alter that flow's steps: a new step, a step that now sends, stores or
|
|
55
|
+
checks something new, or a step that must behave differently. Report each such flow,
|
|
56
|
+
citing and quoting the line that marks it read, and name the step that has to change. A
|
|
57
|
+
flow the change uses exactly as it is today is rightly marked read.
|
|
58
|
+
waivable: true
|
|
59
|
+
source: Atticus starter review
|
|
60
|
+
|
|
61
|
+
- id: review.assumed-capability-named
|
|
62
|
+
title: A capability the brief assumes but nothing in the estate does is named as a gap
|
|
63
|
+
lens: architecture
|
|
64
|
+
question: "true"
|
|
65
|
+
layer: org
|
|
66
|
+
appliesTo: { artifacts: [brief] }
|
|
67
|
+
severity: blocking
|
|
68
|
+
check:
|
|
69
|
+
type: ai
|
|
70
|
+
prompt: >-
|
|
71
|
+
Find each thing the brief takes for granted the systems already do, such as sending
|
|
72
|
+
notifications, keeping a new kind of record or calling an outside service. Look in the
|
|
73
|
+
estate for a flow, component or interface that does it today. When nothing in the estate
|
|
74
|
+
does it and the draft treats it as already there, instead of adding it as new work or
|
|
75
|
+
asking about it, report it, citing and quoting the line of the brief or the draft that
|
|
76
|
+
assumes it. Use kind knowledge-gap when only a person can say whether it exists.
|
|
77
|
+
waivable: true
|
|
78
|
+
source: Atticus starter review
|
|
79
|
+
|
|
80
|
+
# ---- design: the target flows and the data changes
|
|
81
|
+
- id: review.outcome-has-target-steps
|
|
82
|
+
title: Every outcome has the target-flow steps that deliver it
|
|
83
|
+
lens: architecture
|
|
84
|
+
question: complete
|
|
85
|
+
layer: org
|
|
86
|
+
appliesTo: { artifacts: [design] }
|
|
87
|
+
severity: blocking
|
|
88
|
+
check:
|
|
89
|
+
type: ai
|
|
90
|
+
prompt: >-
|
|
91
|
+
For each outcome the brief states, find the steps of the target flows (the design and the
|
|
92
|
+
target-flows files) that deliver it. Report an outcome no step delivers, or one whose steps
|
|
93
|
+
stop short because it needs a check, a stored value or a reply that no step has, citing and
|
|
94
|
+
quoting the brief's line for that outcome. If no brief is among the documents, report
|
|
95
|
+
nothing for this rule.
|
|
96
|
+
waivable: true
|
|
97
|
+
source: Atticus starter review
|
|
98
|
+
|
|
99
|
+
- id: review.shown-data-has-a-source
|
|
100
|
+
title: Data a step returns or shows comes from somewhere
|
|
101
|
+
lens: architecture
|
|
102
|
+
question: "true"
|
|
103
|
+
layer: org
|
|
104
|
+
appliesTo: { artifacts: [design, data] }
|
|
105
|
+
severity: blocking
|
|
106
|
+
check:
|
|
107
|
+
type: ai
|
|
108
|
+
prompt: >-
|
|
109
|
+
For each value a step of the target flows returns, shows to a person or sends on, find
|
|
110
|
+
where it comes from: a step that receives it, reads it from or writes it to a table, gets
|
|
111
|
+
it from another call, or works it out. Report a value that nothing in the target flows or
|
|
112
|
+
the estate gives, citing and quoting the step that returns or shows it, and say which step
|
|
113
|
+
would have to give it.
|
|
114
|
+
waivable: true
|
|
115
|
+
source: Atticus starter review
|
|
116
|
+
|
|
117
|
+
- id: review.new-column-complete
|
|
118
|
+
title: A new column has its classification and its migration
|
|
119
|
+
lens: architecture
|
|
120
|
+
question: safe
|
|
121
|
+
layer: org
|
|
122
|
+
appliesTo: { artifacts: [data, design] }
|
|
123
|
+
severity: blocking
|
|
124
|
+
check:
|
|
125
|
+
type: ai
|
|
126
|
+
prompt: >-
|
|
127
|
+
For each new or changed column in the data changes or the target flows, check that it has
|
|
128
|
+
a data classification and a migration that adds or changes it, and that the classification
|
|
129
|
+
fits what the column holds: a name, a contact detail, an account number or anything else
|
|
130
|
+
about a person is never public. Report a column that lacks either, or whose classification
|
|
131
|
+
understates what it holds, citing and quoting the column's line.
|
|
132
|
+
waivable: true
|
|
133
|
+
source: Atticus starter review
|
|
134
|
+
|
|
135
|
+
- id: review.hop-pattern-fits
|
|
136
|
+
title: Each integration hop follows an approved pattern that fits it
|
|
137
|
+
lens: architecture
|
|
138
|
+
question: safe
|
|
139
|
+
layer: org
|
|
140
|
+
appliesTo: { artifacts: [interfaces, design] }
|
|
141
|
+
severity: risk
|
|
142
|
+
check:
|
|
143
|
+
type: ai
|
|
144
|
+
prompt: >-
|
|
145
|
+
For each call, message or file transfer between systems that the change adds or changes,
|
|
146
|
+
check that the approved integration pattern it names fits what the hop does: a hop the
|
|
147
|
+
caller must not wait on isn't a synchronous call, a hop that must not be lost isn't fire
|
|
148
|
+
and forget, and a hop that carries personal data uses a pattern whose controls allow it.
|
|
149
|
+
Report a hop whose pattern doesn't fit, citing and quoting the hop's line and saying which
|
|
150
|
+
approved pattern would.
|
|
151
|
+
waivable: false
|
|
152
|
+
source: Atticus starter review
|
|
153
|
+
|
|
154
|
+
# ---- plan: the stories, their criteria and the requests
|
|
155
|
+
- id: review.outcome-has-story
|
|
156
|
+
title: Each outcome has a story
|
|
157
|
+
lens: story
|
|
158
|
+
question: complete
|
|
159
|
+
layer: org
|
|
160
|
+
appliesTo: { artifacts: [stories] }
|
|
161
|
+
severity: blocking
|
|
162
|
+
check:
|
|
163
|
+
type: ai
|
|
164
|
+
prompt: >-
|
|
165
|
+
For each outcome the brief states, find the story or stories that deliver it. Report an
|
|
166
|
+
outcome no story delivers, citing and quoting the brief's line for that outcome. If no
|
|
167
|
+
brief is among the documents, report nothing for this rule.
|
|
168
|
+
waivable: true
|
|
169
|
+
source: Atticus starter review
|
|
170
|
+
|
|
171
|
+
- id: review.criteria-testable
|
|
172
|
+
title: Each story's criteria are testable and name the data they check
|
|
173
|
+
lens: story
|
|
174
|
+
question: complete
|
|
175
|
+
layer: org
|
|
176
|
+
appliesTo: { artifacts: [stories] }
|
|
177
|
+
severity: risk
|
|
178
|
+
check:
|
|
179
|
+
type: ai
|
|
180
|
+
prompt: >-
|
|
181
|
+
Read each acceptance criterion of each story and task. Report a criterion a tester couldn't
|
|
182
|
+
turn into a test: one without a situation, an action and a result, or one whose result is a
|
|
183
|
+
vague word such as works, correctly, quickly or easily. Report also a criterion that doesn't
|
|
184
|
+
name the data it checks: the field, record, message or value whose state shows it passed.
|
|
185
|
+
Cite and quote the criterion's line.
|
|
186
|
+
waivable: false
|
|
187
|
+
source: Atticus starter review
|
|
188
|
+
|
|
189
|
+
- id: review.requests-raised-in-time
|
|
190
|
+
title: Requests and approvals are raised before the phase that needs them
|
|
191
|
+
lens: delivery
|
|
192
|
+
question: ship
|
|
193
|
+
layer: org
|
|
194
|
+
appliesTo: { artifacts: [tasks] }
|
|
195
|
+
severity: risk
|
|
196
|
+
check:
|
|
197
|
+
type: ai
|
|
198
|
+
prompt: >-
|
|
199
|
+
Read what the change needs from outside the team: the needs, and the request tasks in the
|
|
200
|
+
tasks and requests files, such as service-desk requests, access, approvals and sign-offs,
|
|
201
|
+
each with its lead time. For each one, check that a task raises it before the phase or the
|
|
202
|
+
task that depends on it, early enough for its lead time. Report a need no task raises, or
|
|
203
|
+
one raised too late for the work that waits on it, citing and quoting the line of the need
|
|
204
|
+
or the task.
|
|
205
|
+
waivable: false
|
|
206
|
+
source: Atticus starter review
|
|
207
|
+
|
|
208
|
+
# ---- code checks of the four questions (ADR 0124 addendum, Part 4; the product owner's decision
|
|
209
|
+
# of 2026-10-24): what code can answer before a model is asked, kept here rather than in the
|
|
210
|
+
# constitution so the organisation can change them. Each finding is a risk, which a person may
|
|
211
|
+
# dismiss with a reason; raise a rule to blocking to make it hold the gate (and waivable or not),
|
|
212
|
+
# retire it (status: retired) or delete it.
|
|
213
|
+
- id: review.call-timeout-stated
|
|
214
|
+
title: Every synchronous call the change plans has a timeout
|
|
215
|
+
description: A call with no timeout waits as long as the callee does. The fact is a timeout Setting for the caller and callee in the catalog, or a timeout stated for the call in interfaces.md or design.md; a pattern that requires more is the resilience rule's.
|
|
216
|
+
lens: safe
|
|
217
|
+
question: safe
|
|
218
|
+
layer: org
|
|
219
|
+
appliesTo: { artifacts: [interfaces, design, catalog] }
|
|
220
|
+
severity: risk
|
|
221
|
+
check:
|
|
222
|
+
type: deterministic
|
|
223
|
+
check: call-timeout-stated
|
|
224
|
+
waivable: false
|
|
225
|
+
source: Atticus starter review
|
|
226
|
+
needs: []
|
|
227
|
+
|
|
228
|
+
- id: review.store-write-rollback
|
|
229
|
+
title: Every store write has a rollback step
|
|
230
|
+
description: A table the change writes or alters (data.md, or a write step of a target flow) is named, or its migration is, under the rollback heading of design.md.
|
|
231
|
+
lens: ship
|
|
232
|
+
question: ship
|
|
233
|
+
layer: org
|
|
234
|
+
appliesTo: { artifacts: [data, design, catalog] }
|
|
235
|
+
severity: risk
|
|
236
|
+
check:
|
|
237
|
+
type: deterministic
|
|
238
|
+
check: store-write-rollback
|
|
239
|
+
waivable: false
|
|
240
|
+
source: Atticus starter review
|
|
241
|
+
needs: []
|
|
242
|
+
|
|
243
|
+
- id: review.note-cites-on-line
|
|
244
|
+
title: A criterion from an attached note quotes the note's line
|
|
245
|
+
description: A story criterion that says it comes from a file a person attached to the change (From inputs/<file>:<line>) quotes words that are on that line of what was read from the file, a file attached and not held out of AI steps (ADR 0113 addendum).
|
|
246
|
+
lens: "true"
|
|
247
|
+
question: "true"
|
|
248
|
+
layer: org
|
|
249
|
+
appliesTo: { artifacts: [stories] }
|
|
250
|
+
severity: risk
|
|
251
|
+
check:
|
|
252
|
+
type: deterministic
|
|
253
|
+
check: note-cites-on-line
|
|
254
|
+
waivable: false
|
|
255
|
+
source: Atticus starter review
|
|
256
|
+
needs: []
|