cda6e967e7f31bc0f545bbfc6a8b2984e74d5d2e122aab961cd36feb3be834f1  .editorconfig
6c22816fd0c6cb6fd0743fbb860e275c240036c8165e41adf2cd15ca0d91cbc2  .env.example
a79e0cc0da0491065a8ddda895a8df317c56c36e064ff89cd9216332ea7a2c53  .github/workflows/ci.yml
8260602aa09e2ad8ca33d13edcc6210086c4f646a15bdbd982c756480c86bdc0  .gitignore
ab0021097e04b62b9d700244ee08863f14c727c6695e6039108b4160e371ee72  .prettierrc.json
4472729071f3d99ace70adb22a31c7cffcb1be528466a9fad8a3b0b78bf7d1a9  CONTRIBUTING.md
7dc4537df25fce7f043bb2008e70aafb4317ea8c8c601f1a594a05d3f93d91d7  EXPORT-MANIFEST.json
230184f60bae2feaf244f10a8bac053c8ff33a183bcc365b4d8b876d2b7f4809  LICENSE
9eb8844ffee316f64f0767699e0632a9d2ec5b54cc9fe0cb1bf24005f9bfd5bb  NOTICE.md
4db642ad7c7a59a8d0337213bc0a4f32138683ad6bccb2a9dc57c3d62b74c680  README.md
73547f8a2a83f1d17fdb5060e8a7588ef1bde2a2a6bd4006f8689a03993d92ac  SECURITY.md
4138752dc6a3df9ea259abe5873ffd96e317a5e1e3e339abfbf7821abd451bb2  THIRD_PARTY_NOTICES.md
480a6f3951ebae2e6286d9efa34721c2b52f940c6526e593d062815176e1c93e  alembic.ini
67b2b19837d3513f79b46581f87384d377fc1c07ed20328ca679fcd0a9419eae  backend/alembic/env.py
daf06f798a2c882642fd36bd1b0a79214e10d4ce529fe6a739b3a4466d670737  backend/alembic/script.py.mako
37207bc23540b8e7694ecea00c7822c4550c0173ad8bbbc3abec5ebf2f99b230  backend/alembic/versions/0001_initial.py
c3e514bc2af330e37157715d9646b9bbf7932e0a44d72e333e01351dd68fac5d  backend/src/gbc/__init__.py
f4251b8fe275d951d12f997853ae389d737d501acc6653696eaa0eb9675d8818  backend/src/gbc/__main__.py
c456c32be22cd6da5b0f919c65491574752ca633229ed193f4771bb4ab3dea04  backend/src/gbc/api/__init__.py
b22d9bd312b6012f98e89dcc19c510d1c2c0e8cf5158e985092ddbf7195f59ea  backend/src/gbc/api/app.py
65be7a159abf96211f756456ace6c2309ad4dc1eb1f64f7452def2b9566208ad  backend/src/gbc/application.py
569fd3a429a9a6c9e70aef49eb1a1d2c9527e55f4577277ae23bda130a85c1e1  backend/src/gbc/calibration/__init__.py
212cd8ce200840b242fcb8dcb706435316ba36eee32e510951a38be2657988b9  backend/src/gbc/calibration/health.py
8710fb216a93c48c922e358bd4e79392b6b649cee1224e878cb19c190e273c5b  backend/src/gbc/capture/__init__.py
958c8b39cbe425f88f2f7d9190edd123c1a3fe6a4f72b5f8e7d93ccb6405b616  backend/src/gbc/capture/dxcam_source.py
66e1076463065ca2a9eaedd18a399df18314ebdc4d3f6e48d6453482d38df1bc  backend/src/gbc/capture/interface.py
ef83aa948e2893c1b95a0b57d5d0eb2e33fc140f28731f542c9fd8dabf728193  backend/src/gbc/capture/queue.py
c0e4ba5633d158afde7ec36ee67a1d9580ce2f407a034b54f4b6df000fa9b9fc  backend/src/gbc/capture/replay.py
0a37403af07a85b31bdb44fd02497757b42e0b7601016476ee4831daa7ac9799  backend/src/gbc/capture/synthetic.py
62123069dac4553d1f69394224f3f82e010f471d563c750a6b9380b7c430e5d5  backend/src/gbc/capture/win32_grab.py
278f22c644c38442a42dbc34df816a7c8216574cc5fbebb0dc15a06be8c4d0a9  backend/src/gbc/capture/windows.py
bc581287dfb6297e9befed5868e879e7e0a828c8a74cf35c5f2b1f96676d7afd  backend/src/gbc/cli.py
fb6e2ccf497bba2a83f2422f2c1fe4a1d111b4c08591592eebdb0e603f2d119d  backend/src/gbc/clocks.py
e6a0cfb551a9a1cd1f8e89e07a53062bfb125b52c67d74616054a89a94c32133  backend/src/gbc/config/__init__.py
3f75972fa378e9784289dc8b5049cae38b2425a68670ab0596225b93e445375b  backend/src/gbc/config/settings.py
72dd30eb7e117a34b218cf4d5eccdc488e95cc6ffde41446cea7889cb16bf8f6  backend/src/gbc/contracts/__init__.py
b36e911bb54569af276bfc6fdc78bf0f1a912f2d6173e1ee4dbe161b4df19ad4  backend/src/gbc/contracts/broadcast.py
d2ebbb658711e12d5fde75014f29818ba5eb086aa2a8ac86dd7cc293c535ad29  backend/src/gbc/contracts/capture.py
87f1f14edb41180415e8c169f6c2497dea9a0fc22dee328e7064ee7445002084  backend/src/gbc/contracts/enums.py
a80ae70a4d302be29b952beedbe5a1fca018b604846d645a33b952a98331b5e8  backend/src/gbc/contracts/events.py
0476587d560b8b4a3f38dac870cb304ffe711a3459261cba75cb96da02c07109  backend/src/gbc/contracts/franchise.py
92938f7476d85c16051597b37569844bf1dfdfc0513b0768e4ffcb8f09e3575a  backend/src/gbc/contracts/provenance.py
8995af35a690ac7e11d4391dd1791df0f0f10fbaecb892eb08376465fce53a02  backend/src/gbc/evaluation/__init__.py
ec5f2d3712a6a7f82285150c30344e58eeb53ee33d788c05ca85fa949dd17310  backend/src/gbc/evaluation/benchmark.py
77b90cf30cedec86122b1f112c0e18a77fe7ae72d537610efe04fecfa4cd54ac  backend/src/gbc/events/__init__.py
440cb359f62d537fcd9ed1c5daa2c57450c4a8c9480aa30f5c25a1cc2eaa3dea  backend/src/gbc/events/reconciler.py
b53ae1765126ed07071dc8509d39ea8e618dbe31c5d544df95aff0b85f61f4d1  backend/src/gbc/facts/__init__.py
f172f29ba0d656a61e651d188d474de4483b49b4600a9fc7ae2197e350c7bee3  backend/src/gbc/facts/compiler.py
0ac834397f90c0bae5128e3e4471e17c55ef798ad32029a17035d4639a92c536  backend/src/gbc/franchise/__init__.py
7d7b19019d495aebbdb890d785ce69cc6827b15642cc84dc382ce5b5cb891c7c  backend/src/gbc/franchise/bridge.py
dc0cfb0eef51947075cae67e2472ba81b4004211028b9934877d0abbb5ab1b6f  backend/src/gbc/franchise/snapshot.py
f7d41ec908f22dad101b47ee7c9fee98ce4e97af3d6f581dd001a3fbb3687783  backend/src/gbc/identity/__init__.py
7dae072ceb6962e33f9271a4ebe39a787597adaffd30df46571fb256f2d06779  backend/src/gbc/identity/resolver.py
3a7cc57e12621a988015a19e8484b2dc9406537171514b9b0dfa4199d3311c8d  backend/src/gbc/language/__init__.py
3a4518742aab701ffc0222cfa71a4310253b217d802e9a594f46bb609117e489  backend/src/gbc/language/guard.py
63f2b3b927b5e8045d37956c32e0a87851d6a77d8b3f0f1e894eadff3f042a0d  backend/src/gbc/language/http_providers.py
11d4048bff7e0d7f7c4bfdb3e04c456ff4895530afff7ec5a3da3b856fad1e68  backend/src/gbc/language/providers.py
321535367a7a43037819cd25690defc0638affd23452154e52c3b628c76b96b5  backend/src/gbc/memory/__init__.py
47335ef5d58697c88c15853a3ec00d8cdb187d97269aa0cd279bbdc20f3137d6  backend/src/gbc/memory/stats.py
5490568296f652e26f93d672afca70ea1fea2e76a5de1d83d1ee44fbc5253c8c  backend/src/gbc/memory/tendencies.py
b9721c98f551de79ee216bfbed288bc709cda31023bbb8c7a1b4b92cc049e189  backend/src/gbc/observability/__init__.py
84451043945e68ceb138b592d19a344cdba80fefb1ea68100e56c3866a2e1007  backend/src/gbc/observability/logging.py
bd0e54d2d8d41d6ece2b84a9c00398912900170e766af2b576441d3bcf2d01ff  backend/src/gbc/paths.py
de2642230abe3e11bb3b1f31207aa0841ddc4b6a1698e07a042eaf0c60196efc  backend/src/gbc/perception/__init__.py
0e816b4449ecc8f8da78dfa33cb89f8bc422d97b8a11030bffb45be0e659b9a7  backend/src/gbc/perception/consensus.py
afc6a473c0502de3bdcb27d7e6336a149297be908def524772bc3dc01f02b159  backend/src/gbc/perception/ocr/__init__.py
3f3d232017c4b17dfa757b597725fd85802c99d7a8343d1ff2d986182933e8f6  backend/src/gbc/perception/ocr/lab.py
b4fb145eb35d24787cf02cf2c4087fc6480c69b4f13dbb4f3cd9cb5f14abc7ad  backend/src/gbc/perception/ocr/providers.py
f13c3f575edcf82fc4d2a41e4d556ea047b16a7c552e28fe3290f1ff9b9bdd31  backend/src/gbc/perception/parsers.py
f928dfcb480e786c2cb087cea6e2dbf9df8d9c7b57d4e619c003a6a49eb0060b  backend/src/gbc/perception/vision/__init__.py
132dfdc64d3798029299585b88049cfd6ee1dc868b09355915b93c9022f3cbf3  backend/src/gbc/perception/vision/observers.py
f590765b422c06a2fc0f6ba71363ab18d078502e8470548235f00a4634f28573  backend/src/gbc/persistence/__init__.py
b1408c0b6fa6e0574a2bace0db2c681b68ce6ece26dd0efadbcc7f7762f3ff36  backend/src/gbc/persistence/models.py
bc762c6c338d203a85a05ba9d0fae66446e748f4ea17c8461b4b919557aa4fd8  backend/src/gbc/producer/__init__.py
a59866cb70a2bbf0e2d7e50acb1f93ef73cd672253072b3a2fc1f2ef3aec171a  backend/src/gbc/producer/producer.py
fe925c275336c5a6dd77b88676d100b8d6ca34f7636f40cf8d166d5813d06142  backend/src/gbc/replay/__init__.py
c46b6245aec5123d5366bde47319361a2246af7f8261076975e9ffadee69f9e6  backend/src/gbc/replay/clock.py
aa246be0f8b8b537276d71fc56b5284b86c32b4064a544e83e4da255ef3ca078  backend/src/gbc/replay/runner.py
8878222982e10dcb8194652e358fd15990cf0956e05feccd48e832943a573065  backend/src/gbc/speech/__init__.py
8e0e8eee12b2dc0e0e19b2347ce67c7e238c29bd0d9f5affe219829d3bc147dd  backend/src/gbc/speech/scheduler.py
d4c83397d190896ab999478d937b12c6c288f7c006f2ab4a3308eeeb94d02716  backend/tests/test_api.py
54fc4ab13dcccf82feb9d69fa571052dc743a858c87e2628f48daccc491a02d0  backend/tests/test_benchmark_measurement.py
7330d01967687773a91dafaf6e3d4d6da4ae6bbac5dd94e2a3a0add36f99272f  backend/tests/test_bridge_readonly.py
4da6a043060c4b51ba94cc7bc0ca1e3eddef47baf3e9e29d2b9478a330da0c24  backend/tests/test_capture_safety.py
cb7935aa04ccb085a238ec74ddcd7eb76f7675787f904038cebc34af0078cd45  backend/tests/test_clocks.py
5c860b50e77ee127c8f514e134feea6eda0ac97d7e0850dfeb384bcf3bb80a34  backend/tests/test_config.py
c109c4756643c4a1885246113981e4af79ff30dfc36bd7023fc078c1e0eb09d3  backend/tests/test_consensus.py
92abfd0ea349116a8445225667b9297251f9531df50e85d7b4b6f671b01d96fb  backend/tests/test_contracts.py
57511b7b30c84ce551aa00a946897467cd7879d51b55f6761da7d7ebec7bc71a  backend/tests/test_idempotent_stats.py
5cc7f99a724feac765bd16e3afdf3c48508eeaffc26797578f6550727b42ddb8  backend/tests/test_identity_audio.py
ed3ba02d0eae96cafb09f037494edec8caf94d35c775dca1c31be24b7946b377  backend/tests/test_lab_and_live.py
01a15bca4e00aba8fdea9b190befb1297858498cefe5363650922a16734281fe  backend/tests/test_producer_guard.py
254c79c403a8f1946c890ccc7fdb42f31ca0383fa2f5163b0f240e79edc7f776  backend/tests/test_properties.py
a10e181e96eb13b31e35908d5cafd66333c06d67bcb737f349d95fa25627de21  backend/tests/test_reconciler.py
e6d0c2d7b09d4251ae974e8a12cd2deeb5fb6150354d5870913c23e41e562a73  backend/tests/test_replay_and_snapshot.py
f0d49af839c5782e321319785e1dbec6e79c930303f8b0c86fe8598bebfd692e  config/default.yaml
5a00a8672650a43fdabf6b952ec6bfd7b68871cd233e0509cba1be3d84899a98  config/development.yaml
2115116c47015208e59ef01db17ecb935191608936e9329a02d757a1204d6ae3  contracts/README.md
212b4dfd3fb3f83aa3c2570450c66b52bf69c5f5451756ee6f90ca1a699f95fb  contracts/generated/BroadcastTopic.schema.json
6a6abf100e0ca84dec50b6ae44108cca810a1dbd917bc44ae0582bbf685633ff  contracts/generated/CapabilityReport.schema.json
97c61a1f1ca80a5b858b660af35b40489814781391a12fc40ab147bccb641aa3  contracts/generated/CaptureHealth.schema.json
8830c2194634b7adc9bd99a8bde23294c2cf6b5b1714f404b019d11d70f6751d  contracts/generated/CaptureTarget.schema.json
6190401e3ffc72943fedb888987f63159d51629b888c4590125b49fc2a48af00  contracts/generated/CommentaryPlan.schema.json
e36c117904411cb25f1e481fd7528089df9fc535acf251aef9da31c40645b36b  contracts/generated/DisplayProfile.schema.json
6a60b023e8e53d20160d7343afa53f58f195cd7e795758214379dd53c4fe5872  contracts/generated/Fact.schema.json
eafeb362298dcc2b7e9aca4161ff7f2f62c2d7c6c7abf2880b05779bbe5ab0f5  contracts/generated/FactPacket.schema.json
a482404ab319d478dc6112703d9852574176cfe5ba15f85d34b94cdcc95db4e4  contracts/generated/FrameEnvelope.schema.json
c8e590b9e61c3a939b079fa45a41da0bb79fc8a54d4b2a3f75eec37a34c2365c  contracts/generated/FranchiseSnapshot.schema.json
075cc225988086ce70d0be8ad168a34070e9d175b559b9f652fb082d688536f5  contracts/generated/PlayEvent.schema.json
a9917321ab25ed8438cf79d2a86020a5c857d3ca2510249e765146834a942c88  contracts/generated/PlaySelection.schema.json
7e1c6c447b4c1fd5db8a3d0145c10c0591920203cb529831feda4f39838703d5  contracts/generated/PlaySignature.schema.json
d112ee7349fa0a2eca144c5a284741e68a35ed9ea3f666de239c11995ce83a6d  contracts/generated/RoiObservation.schema.json
57ed1925a8568517061c8c7799adc94621f2f2843ea558fda6121d1941a1e302  contracts/generated/ScoreboardSnapshot.schema.json
9bd34afb7f192c5ba463970ae5a34f500c3cecf40a85ec9bb48047cd347214d4  contracts/generated/SnapshotMeta.schema.json
a7edb9e2213f4106923fb9de7caf5f73030ca43c011a6d83f608ab5d085bc6f8  contracts/generated/SpeechIntent.schema.json
514cb1906bb8f488796c52c5650abfbb802737089045b84e2052921e6e17c0cf  contracts/generated/Storyline.schema.json
bbe9f26b102e04c0158b188aa6b8103bd52a2a562e4d00e4eb79d190a8573912  contracts/generated/Utterance.schema.json
0d04b08632a4460298c75bba4608e5e3fef36cf90fc0f701647bc63117841d0f  contracts/generated/types.ts
55ccb3614bf67be01b0262f989ee9cae5a87858104dae7b41f294b579bb9453b  docs/ARCHITECTURE.md
faea6161f8f13f5e273b27908d48fd0bd23452291e02188250de61e904440c45  docs/CALIBRATION.md
d2a4f5323f107f4f7c72debfc71755a68c2b2f17cbd8805cecba3b276e2024b5  docs/COMMENTARY_POLICY.md
57ab6d3d850f9d78a53c350afa174dbbac54398d0a7188645141ae9b6b1408e6  docs/DEPENDENCY_DECISIONS.md
fdb896da3f5bb55d4a8f6f71cbc174465b0c0424d901457a08199c607768d2cd  docs/FRANCHISE_DATA.md
cd102ffbe230ffa89d5ab9fa2f4bbb8fa2a1bde2fa1367534cb6040956545e13  docs/LIMITATIONS.md
baa39321d5f6174d22950a5106c46c45611aafb57603838720e35e3f9b63c60d  docs/LIVE_VALIDATION.md
54015455c5924b3cbee4e42e39f2dda7ad05010c5179eeb72631e83a5ba09462  docs/MODEL_CONFIGURATION.md
67fa5d53e3c6358caa921809f8747dc188dc0f0a701b77bb29d610ca1286c63f  docs/PRIVACY.md
6001083337259b1293ee5e376888028f8a900067ec807b4c0b69af67ca1ad06f  docs/REPLAY_FORMAT.md
87f9cc176c017a53b1e7e0a38e43b0da8aa56e2ac1a2e5ac67a2eae721216085  docs/RESEARCH_LEDGER.md
040e3adedf2041869a3378fa860e1b8d160a705c5dfa72bea56d98f0658f4999  docs/SAFETY_BOUNDARIES.md
98fb04b3e152a0c7cdfaf2adf97cd06bc82aa0a168ca9ca97c901c1a1dd7c2a8  docs/STATUS.md
1e2e1a5e87f8b3fc03878b6c41191264dcd73c3addf6198a761bd188189659d9  docs/SYNTHETIC_DEMO.md
ad27d94e76fa26e9d6d8a83c0f05f964aae88dd840c094755e546f9c79147216  docs/THIRD_PARTY_NOTICES.md
a7ad9e077cbf4caedc166ee61417fb087eec3eca9b955c1052e2f34ff3030d54  docs/TROUBLESHOOTING.md
17799d476a2d12fd0766870fdbca9061e90f435ed34c490d9e391e95f6e5a3ed  docs/adrs/0001-external-companion-boundary.md
7e9f6bbc5ab2996fa355cf107adebff1ba5b958344d3a645824e034816673c87  docs/adrs/0002-language-and-process-boundaries.md
784b4aea4cd92e8cd0e5760e861e45e4ababb6f2d1f0b8608842470a78dbd4dd  docs/adrs/0003-capture-backend.md
96d66629e71c15faff4895eb65a9d1bdcb8aa7833ee5c10cd85df8f188c9e024  docs/adrs/0004-ocr-backend.md
71656a5c3746a1c8958c5327ff672af62c76bee4ef7f717200f7b2d07d854567  docs/adrs/0005-model-provider-boundary.md
bb3f618ca1b62da89fa7fdf2cb4a5efa6235e72645b716b1cd24845a78639bbc  docs/adrs/0006-franchise-read-only-boundary.md
1764aa666b3ea73e9ba76b147aa892375f856e21bb40710b7e48b4f48672031a  fixtures/synthetic/drive-scoring-void/README.md
92fdaff848ace9b63814b1c839de93de7d5cb3b6b8fee7cc7a5c00f491bc839e  fixtures/synthetic/drive-scoring-void/manifest.json
51707e2a062c4f885b89773e2e9557fa95056142835da985901fa1ddecf0a32d  fixtures/synthetic/drive-scoring-void/oracle/allowed-commentary-facts.jsonl
80da23ce49104b132d5df89940e58eda61439d5551b682d0aaa1529f7c9ca84f  fixtures/synthetic/drive-scoring-void/oracle/events.jsonl
018a24acc90c83428dd17f15cdb16b9d61baae3f83e0a5b2bbe934bca699d357  fixtures/synthetic/drive-scoring-void/oracle/phases.jsonl
2b209b5f8e04db497ccf3df76b1474c77ec0fe432169c4beffa93cc688369ed1  fixtures/synthetic/drive-scoring-void/oracle/scoreboard.jsonl
df26d1a6eccfc680bf51f48560a19f45609fa8c4760cbdfb6536dd0c2edf52a6  franchise-bridge/eslint.config.js
7eb04d54c2dc6251e4b29987b0d8ce5b4ce94d1b88d111c20f12ac316c3d08e1  franchise-bridge/package.json
22cd14baf6885c556a2846c07d08475d3943b6ad52d3add7ddeeabfdef1edbcd  franchise-bridge/src/capability-report.ts
9bcc1311878c0238c43a3c91440f26bc0927f9881fc276c943ebc64f42d1c918  franchise-bridge/src/cli.ts
28ae3bbff13ae3efd927f0a0fabcba14cfa2172d7d3bbd9ce380b3ea23631b30  franchise-bridge/src/contract-validation.ts
47808f47e8c02aa4b7c7b34c76f808bee7fa06da664428dcac8973f33a421b3e  franchise-bridge/src/field-mappings.ts
d7807e06721cd3142b41f05fdc826d9a356d31f2134414a818d6d7c3d558ca3c  franchise-bridge/src/parser.ts
cee5ce9cd1cb68b918bff86efbecbbe11fd01490a5648dde580b88c4d32f3758  franchise-bridge/src/read-only-guard.ts
e7c30ae8ab3444778fca31e0ec58dd62a9d3c129e5084497e73e2a3a2eee7590  franchise-bridge/tests/bridge.test.ts
d87ed9beb09b778e25c6bd0e9da72171bf99957aa1961a1ee1c065575ee4ccca  franchise-bridge/tsconfig.json
05aa330e6101c6abfe93ebc5fbe5370f46c67250c96d39335e10e8e1ef0996e7  franchise-bridge/vitest.config.ts
1c8242c417433dc14b54bf1a73187d9e6c16a47483258c43822ba226b9247cdd  package.json
03f6e829ebe8731e179e09fce387367fcd5e22f4831d400afa4e1e9a1e9fa247  pnpm-lock.yaml
27f77d5c4a393dc308346f5ebca7dc2f96fb3e32f54af136fd58856ae7d83864  pnpm-workspace.yaml
2955ffea426ab4a1ce144724d9d40993af66065e6088acbf3318598f1eefc27c  profiles/schemas/display-profile.json
0009b9c1bb869df6aabeea6189b3f7a5b97eea6be7ef8991271494a22dd092ae  profiles/synthetic/synthetic-16x9.json
86d1b0f740f794d35a57e74406bae3d3b769fcff05f04d14b1bf2130006d0fc1  pyproject.toml
8f6b57df824652ae7a569d1f645c423693f2736c2e08f2e9a7e3688694b70eae  scripts/bootstrap.ps1
65e2cb651c0ee216dbcb4d820c295011705d52bedde3816f02c8fc75cff22048  scripts/build.ps1
6f8ad4ecc843ce1be86a2f0c2df8b741a31c394dac787f0b6fe56e7e700275a3  scripts/clean.ps1
332c825f1baec8fe1e0304405c9f066da99848f2a9e8d06b1608bc0d4bd6603c  scripts/dev.ps1
e5ecb4d8506b3718d24a9f1d29a660f6cb45c94591a3874861befb7150ce1dc0  scripts/export_contracts.py
03c6dbd156510394d5e074bef047460e44e0bcaec2ffe22f401108146c96013b  scripts/package.ps1
f83abaff87e09a2cb89c7c5536605bda1ef6ff7b01d1cc47feda9e7e6ede50bc  scripts/scan_private.py
5fee392983ce19e9967c7b32171ed74a1272e9b187613a88295bb852a8558775  scripts/verify.ps1
0f394a59cb3c9ab5860b3ea23f5ca57524c91ea96cf4a6d8ba0d11e9dcbddf31  uv.lock
df26d1a6eccfc680bf51f48560a19f45609fa8c4760cbdfb6536dd0c2edf52a6  web/eslint.config.js
a45e39fa134276bedb798d47ce5906ebdb03a753bc6f27dc3586adb651ef0dac  web/index.html
3a34cdd13fb3c9a40e1a062b48ac7001645ff19e3c2e167edfab1bbfdc747b9c  web/package.json
c833a7f97bd3dbf02db6fcd66bcd83c35bdba0f66ba3327df933a910b027d495  web/playwright.config.ts
e6f11e315a5dc5b12d6f942a32387ec64e93156c5ef37584c3df08490c87d74b  web/src/api/client.ts
dd8705053df20ed925cdef5f384dfd19858df1e3be7ffbca3640bc24ce233176  web/src/app/App.tsx
f06a93db0bab236ddefe18143e9a8a7f4296989cb57015f030f277aa4c094ede  web/src/main.tsx
4db7961befff5919da2b0155fe87e6318359d464ae2026a7675efb1a2d5f67d3  web/src/pages/CaptureLabPage.tsx
c1bf0c5b954a9d61548e499ce0d5595e2127282218a2119ea2dd2b4f4d50d050  web/src/pages/DiagnosticsPage.tsx
9c1860fe0f54df79c19edacb21d195df5a8ea8cc87c509b27368d3e1dfd2fe8f  web/src/pages/FranchisePage.tsx
e41e6ed5c613d977f2e2cfec2b750556b37582368a7ff96fd2dd645f81fd82cc  web/src/pages/LivePage.tsx
e7c577929dcf73409b3f1e2da0ba8c36d5ba88e14f510806ead010157d682237  web/src/pages/PronunciationsPage.tsx
f56c10f2e245e6537e7c9a07430a65262fbe87b66142ad7b7dbaa269180fddac  web/src/pages/ReplayPage.tsx
533e83c85100bafa5f5390cd26dfbc5de745053770a2ed85d5421d5e5ff48e55  web/src/pages/SetupPage.tsx
7c78d83ec739630517cf1e1ee1f1f62009314ef502fb8bb923f1de2520088dce  web/src/styles.css
65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5  web/src/vite-env.d.ts
7b9ae26f8e11720fff266fd0e3e1d5767bb9e6505dc1e5bbc62b58ba0ed0c301  web/tests/e2e/setup-replay.spec.ts
0a855cb38f0d8b98cac872c4ebcd00ae11c6787931b0505db17d1d99556ab9b7  web/tests/lab.test.tsx
0f888a611ee61b3b9dccb90aa460f50110853a1cc35bbbff5c7a7b8dcadf25f8  web/tests/setup.test.tsx
3b063000186486476eb568a592679d4767aba3c33334b083ce7bb91ee81816fa  web/tsconfig.json
008e67e7a8fb832d25d715fb819120d792ed850e11631483e23613e69a03f113  web/vite.config.ts
