{"analyzer":{"code_digest":"7106e3595fa7df9269cb43ee280f9c557659db7bda171b1f65ff5619ab54aa24","name":"archkeel-python-analyzer","version":"0.74.0"},"bindings":[["BIND-8ecf62fca05b8b6e","FACT","$66","unused_parameter","shop.app.orders.touch_store never reads retries",["$72","$76"],["EVD-4026c00c773aad59"],[],[],[],["parameter","$72","retries","$76"]],["BIND-a883a5bd86e6229e","FACT","$66","unused_local","shop.app.orders.touch_store never reads attempts",["$72","$76"],["EVD-4026c00c773aad59"],[],[],[],["local","$72","attempts","$76"]]],"calls":[["CALL-006262171223863b","FACT","$46","$67","Call lines.extend",["builtins.list.extend","$101"],["EVD-05ed925f54c312ac"],[],[],[],[1,false,null,"lines.extend","literal-bound receiver of known type",[],"SYM-c3c8459b52d998ed","$99","$101","resolved",[],["builtins.list.extend"]]],["CALL-02271a36643b96fe","FACT","$46","$67","Call render_order",["$96","$101"],["EVD-72bef322d9dcdf06"],[],[],[],[1,false,null,"render_order","$59",[],"SYM-8168d5a416701615","$81","$96","resolved",["EVD-0cf17a417526c3ac"],["$101"]]],["CALL-083cd161b4d9cc59","FACT","$46","$67","Call sorted",["builtins.sorted","$114"],["EVD-a54579840df29e64"],[],[],[],[1,false,null,"sorted","Python builtin",[],"SYM-5e29728aec775442","$111","$114","resolved",[],["builtins.sorted"]]],["CALL-0d04ff0f21b777ab","FACT","$46","unresolved_call","Call self._path(order_id).read_text",["$123"],["EVD-4c9454568000e91f"],[],[],[],[0,false,null,"self._path(order_id).read_text","expression is dynamic",[],"SYM-c9078666ab3d0e2d","$120","$123","unresolved",[],[]]],["CALL-0d2a65daf7928f17","FACT","$46","$67","Call self._path",["$122","$124"],["EVD-782618cc7d429680"],[],[],[],[1,false,null,"self._path","method on current class",[],"SYM-60279f4bb5cd1210","$120","$124","resolved",["EVD-5fc428ea6933c0be"],["$122"]]],["CALL-0f0bea085f464a7c","FACT","$46","$67","Call '\\n'.join",["builtins.str.join","$101"],["EVD-c13e5b5aedd90c7b"],[],[],[],[1,false,null,"'\\n'.join","literal receiver of known type",[],"SYM-c3c8459b52d998ed","$99","$101","resolved",[],["builtins.str.join"]]],["CALL-122aa62cfc7f4a30","FACT","$46","$67","Call track",["shop.app.analytics.report","shop_analytics.track"],["EVD-17d3689ebbd16fa1"],[],[],[],[1,false,null,"track","$59",[],"SYM-90f642452a6da34f","$69","shop.app.analytics.report","resolved",[],["shop_analytics.track"]]],["CALL-182446c0a2215637","FACT","$46","$67","Call Order.from_dict",["$92","$118"],["EVD-cb26e324deea5970"],[],[],[],[1,false,null,"Order.from_dict","attribute of imported symbol binding",[],"SYM-094cb8a1abb8f245","$115","$118","resolved",["EVD-daa05f47b32b9483"],["$92"]]],["CALL-19731f56d565ebfd","FACT","$46","$67","Call render_order",["$78","$101"],["EVD-fa6cb5c40a082fdf"],[],[],[],[1,false,null,"render_order","$59",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",["EVD-0cf17a417526c3ac"],["$101"]]],["CALL-1bb0e2bc7621f8fd","FACT","$46","unresolved_call","Call OrderRepository(store_dir).save",["$73"],["EVD-905411f1c2518bc3"],[],[],[],[0,false,null,"OrderRepository(store_dir).save","expression is dynamic",[],"$42","$72","$73","unresolved",[],[]]],["CALL-1c953772015daea2","FACT","$46","unresolved_call","Call cls",["$92"],["EVD-5f753a04f576585b"],[],[],[],[0,false,null,"cls","lexical binding has no proven callable value",[],"SYM-f3293ef7f8441e4a","$81","$92","unresolved",[],[]]],["CALL-270aeaf50681f9b5","FACT","$46","$64","Call path.with_suffix",["pathlib.Path.with_suffix","$109"],["EVD-bcd9058ba24a118a"],[],[],[],[1,false,null,"path.with_suffix","$44",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-023179c53590335c"],"id":"VALUEBIND-2c50ee89b657ab88","initializer":"path.with_suffix(f'{path.suffix}.part')","name":"partial","target_kind":"name"}],"SYM-3ddc33e5a1bedfc4","$105","$109","$63",[],["pathlib.Path.with_suffix"]]],["CALL-2833befbe38b01b4","FACT","$46","unresolved_call","Call candidate.unlink",["$128"],["EVD-7d0a506734e1576f"],[],[],[],[0,false,null,"candidate.unlink","dynamic attribute receiver",[],"SYM-932fa235d99a9bda","$126","$128","unresolved",[],[]]],["CALL-29cdc941c5203031","FACT","$46","$67","Call self.load",["$123","$125"],["EVD-c1097811ebfab788"],[],[],[],[1,false,null,"self.load","method on current class",[],"SYM-f6298b4c05a2e5ef","$120","$125","resolved",["EVD-c8bd970eaa4d583c"],["$123"]]],["CALL-2a15a4f5a8d405a7","FACT","$46","$67","Call Money",["$83","$89"],["EVD-7b88e6b7b17c8a8c"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","module-local symbol",[],"SYM-b183fc3dea9441aa","$81","$83","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-2b8f5b54e2d2e5a9","FACT","$46","$67","Call place_order",["$73","$78"],["EVD-57b4ddb217507dd5"],[],[],[],[1,false,null,"place_order","$59",[{"annotation":null,"definition_contexts":[{"branch":"body","evidence_ids":["EVD-735b836cead7e419"],"kind":"try"}],"evidence_ids":["EVD-14f38b04bd2f7b8d"],"id":"VALUEBIND-d101fffb5526cde6","initializer":"place_order(Path(store_dir), order_id, description, int(quantity), int(unit_price_cents))","name":"order","target_kind":"name"}],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",["EVD-0331ee95a6dce2c3"],["$73"]]],["CALL-2c6c25b9c187bda9","FACT","$46","$67","Call ValueError",["builtins.ValueError","$118"],["EVD-781c3d777da02b93"],[],[],[],[1,false,null,"ValueError","Python builtin",[],"SYM-094cb8a1abb8f245","$115","$118","resolved",[],["builtins.ValueError"]]],["CALL-2fd178184f98e383","FACT","$46","$67","Call json.dumps",["json.dumps","$124"],["EVD-a61c99f3ea9538ee"],[],[],[],[1,false,null,"json.dumps","$45",[],"SYM-60279f4bb5cd1210","$120","$124","resolved",[],["json.dumps"]]],["CALL-3b59994b4a20e51a","FACT","$46","$67","Call json.loads",["json.loads","$118"],["EVD-b6ab36b8cbc8abd2"],[],[],[],[1,false,null,"json.loads","$45",[{"annotation":"OrderDocument","definition_contexts":[],"evidence_ids":["EVD-f909718e9306b98c"],"id":"VALUEBIND-a588fa9f1c0bdc7f","initializer":"json.loads(document)","name":"parsed","target_kind":"name"}],"SYM-094cb8a1abb8f245","$115","$118","resolved",[],["json.loads"]]],["CALL-3c3269ff08cc35f7","FACT","$46","$67","Call dataclass",["$50","$126"],["EVD-f3f52b225cef14ab"],[],[],[],[1,false,null,"dataclass","$59",[],"$28","$126","$126","resolved",[],["$50"]]],["CALL-4482728a13a76d91","FACT","$46","$64","Call path.read_text",["pathlib.Path.read_text","$108"],["EVD-af91ee021bacf2aa"],[],[],[],[1,false,null,"path.read_text","$44",[],"SYM-0f98fb6f9a3c1a88","$105","$108","$63",[],["pathlib.Path.read_text"]]],["CALL-44b0d1cef5b5caa3","FACT","$46","unresolved_call","Call self._path(order.order_id).write_text",["$124"],["EVD-782618cc7d429680"],[],[],[],[0,false,null,"self._path(order.order_id).write_text","expression is dynamic",[],"SYM-60279f4bb5cd1210","$120","$124","unresolved",[],[]]],["CALL-44d00f3387c412c0","FACT","$46","$67","Call int",["builtins.int","$78"],["EVD-77dabdd9ac9a201e"],[],[],[],[1,false,null,"int","Python builtin",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",[],["builtins.int"]]],["CALL-46bd5eb5b49d27e1","FACT","$46","$67","Call Money",["$85","$89"],["EVD-b5809056b0d2d4ce"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","module-local symbol",[],"SYM-421012b9fa5f6934","$81","$85","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-4ba2fb087ae069a0","FACT","$46","$67","Call Money",["$89","shop.model.entities.Money.__mul__"],["EVD-fae74776900ba6db"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","module-local symbol",[],"SYM-c24e1dc0171bbef6","$81","shop.model.entities.Money.__mul__","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-4e8baa19b97e90b1","FACT","$46","$64","Call partial.write_text",["pathlib.Path.write_text","$109"],["EVD-474ae2400c81030c"],[],[],[],[1,false,null,"partial.write_text","receiver bound to a call result of documented type, unproven at runtime",[],"SYM-3ddc33e5a1bedfc4","$105","$109","$63",[],["pathlib.Path.write_text"]]],["CALL-5233b989d47a627c","FACT","$46","$64","Call root.glob",["pathlib.Path.glob","$114"],["EVD-b80791c644a0f00a"],[],[],[],[1,false,null,"root.glob","$44",[],"SYM-5e29728aec775442","$111","$114","$63",[],["pathlib.Path.glob"]]],["CALL-52b33341b0778d6f","FACT","$46","$67","Call self._path",["$122","$123"],["EVD-4c9454568000e91f"],[],[],[],[1,false,null,"self._path","method on current class",[],"SYM-c9078666ab3d0e2d","$120","$123","resolved",["EVD-5fc428ea6933c0be"],["$122"]]],["CALL-5529103c04c7bddc","FACT","$46","unresolved_call","Call candidate.stat",["$128"],["EVD-7d26120727d7b9d8"],[],[],[],[0,false,null,"candidate.stat","dynamic attribute receiver",[],"SYM-932fa235d99a9bda","$126","$128","unresolved",[],[]]],["CALL-58979723230d5dcc","FACT","$46","$67","Call Path",["pathlib.Path","$76"],["EVD-168dcab22b56d9f4"],[],[],[],[1,false,null,"Path","$59",[],"SYM-99fd7d77b712d934","$72","$76","resolved",[],["pathlib.Path"]]],["CALL-5b271a7598be8a77","FACT","$46","$67","Call _indent",["$100","shop.render.text.render_order.<genexpr:16:16>"],["EVD-e5620291becdd779"],[],[],[],[1,false,null,"_indent","module-local symbol",[],null,"$99","shop.render.text.render_order.<genexpr:16:16>","resolved",["EVD-00e9d67fbfa9e0b3"],["$100"]]],["CALL-5d289aab81c5452a","FACT","$46","$67","Call tuple",["builtins.tuple","$92"],["EVD-002214d1259b8690"],[],[],[],[1,false,null,"tuple","Python builtin",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-027c161b509e8583"],"id":"VALUEBIND-191478ca0b4c8d21","initializer":"tuple((Line.from_dict(item) for item in payload['lines']))","name":"lines","target_kind":"name"}],"SYM-f3293ef7f8441e4a","$81","$92","resolved",[],["builtins.tuple"]]],["CALL-5f9c89ce2f0abefe","FACT","$46","$64","Call order.to_dict",["$86","$93","$124"],["EVD-a3fba9fd6dc36e5a"],[],[],[],[2,false,null,"order.to_dict","$55",[],"SYM-60279f4bb5cd1210","$120","$124","$63",["EVD-380072b2520ec91b","EVD-ea5b17eeeff85142"],["$86","$93"]]],["CALL-60268c2697676a78","FACT","$46","$67","Call json.dumps",["json.dumps","$76"],["EVD-e7f1c3b32cfe3494"],[],[],[],[1,false,null,"json.dumps","$45",[],"SYM-99fd7d77b712d934","$72","$76","resolved",[],["json.dumps"]]],["CALL-646cd7f6358d5f8d","FACT","$46","unresolved_call","Call OrderRepository(store_dir).load(order_id).total",["$75"],["EVD-4725cb7e8e3f92da"],[],[],[],[0,false,null,"OrderRepository(store_dir).load(order_id).total","expression is dynamic",[],"SYM-df3994eb36957022","$72","$75","unresolved",[],[]]],["CALL-68e1674deaeb3f9a","FACT","$46","$67","Call json.dumps",["json.dumps","$119"],["EVD-cd4cbf212d2a3a4c"],[],[],[],[1,false,null,"json.dumps","$45",[],"SYM-c6dc50ed43219b97","$115","$119","resolved",[],["json.dumps"]]],["CALL-6d94b3b30296660a","FACT","$46","$67","Call Path",["pathlib.Path","$78"],["EVD-ae3e0efd16661009"],[],[],[],[1,false,null,"Path","$59",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",[],["pathlib.Path"]]],["CALL-774968716cebe60c","FACT","$46","$67","Call Money",["$74","$89"],["EVD-62471f558b148867"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","$59",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-f2bfade629ac6c27"],"id":"VALUEBIND-4b17bcdfcd4c37bb","initializer":"Money(0)","name":"running","target_kind":"name"}],"SYM-d7ec7cb6e603d304","$72","$74","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-7dbb7c9aff9125e7","FACT","$46","$64","Call line.to_dict",["$86","$93","shop.model.entities.Order.to_dict.<listcomp:92:52>"],["EVD-48e1586facec492f"],[],[],[],[2,false,null,"line.to_dict","$55",[],null,"$81","shop.model.entities.Order.to_dict.<listcomp:92:52>","$63",["EVD-380072b2520ec91b","EVD-ea5b17eeeff85142"],["$86","$93"]]],["CALL-8a2164637032071c","FACT","$46","$67","Call OrderRepository",["$75","shop.store.OrderRepository"],["EVD-4725cb7e8e3f92da"],[],[],[],[1,false,null,"OrderRepository","$59",[],"SYM-df3994eb36957022","$72","$75","resolved",[],["shop.store.OrderRepository"]]],["CALL-8ad11b4451bae8d5","FACT","$46","$67","Call dataclass",["$50","$81"],["EVD-db14419f2eca8a41"],[],[],[],[1,false,null,"dataclass","$59",[],"$34","$81","$81","resolved",[],["$50"]]],["CALL-8ecb018bae4f6277","FACT","$46","unresolved_call","Call OrderRepository(store_dir).load",["$75"],["EVD-4725cb7e8e3f92da"],[],[],[],[0,false,null,"OrderRepository(store_dir).load","expression is dynamic",[],"SYM-df3994eb36957022","$72","$75","unresolved",[],[]]],["CALL-92bc655a87ca47d4","FACT","$46","$64","Call path.unlink",["pathlib.Path.unlink","$107"],["EVD-1641769a3e1d7b02"],[],[],[],[1,false,null,"path.unlink","$44",[],"SYM-f7d39b41d9b7b9a7","$105","$107","$63",[],["pathlib.Path.unlink"]]],["CALL-950601a4b9bdbd2a","FACT","$46","$67","Call Money",["$73","$89"],["EVD-91c22e37b58e4c75"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","$59",[],"$42","$72","$73","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-9700514d6d578c96","FACT","$46","$67","Call vacuum",["$76","$128"],["EVD-e9e79ea20588086a"],[],[],[],[1,false,null,"vacuum","$59",[],"SYM-99fd7d77b712d934","$72","$76","resolved",["EVD-9fb73bed056d343a"],["$128"]]],["CALL-9f929c3d1438ad13","FACT","$46","$67","Call write_payload",["$76","$110"],["EVD-fea07ce4a284c109"],[],[],[],[1,false,null,"write_payload","$59",[],"SYM-99fd7d77b712d934","$72","$76","resolved",[],["$110"]]],["CALL-9ff4d9a1d24d8931","FACT","$46","$67","Call Money",["$89","$90"],["EVD-364f7fe891f0a9b4"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","module-local symbol",[],"SYM-521e10b69216a628","$81","$90","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-a06e0f01bde1adb7","FACT","$46","$67","Call Money",["$89","$94"],["EVD-1b582c9947790135"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$89"]},"Money","module-local symbol",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-b8472c7ac9dc6c74"],"id":"VALUEBIND-e1e04363a789093a","initializer":"Money(0)","name":"result","target_kind":"name"}],"SYM-306fffdb8811c478","$81","$94","resolved",["EVD-809590eb3ddf92d6"],["$89"]]],["CALL-a32bec56f5cf1b11","FACT","$46","$67","Call json.loads",["json.loads","$123"],["EVD-ce3e264fd96cbe7c"],[],[],[],[1,false,null,"json.loads","$45",[],"SYM-c9078666ab3d0e2d","$120","$123","resolved",[],["json.loads"]]],["CALL-a3ec830af6affd62","FACT","$46","$67","Call Line",["$73","$84"],["EVD-1e4d3a3180fac82c"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$84"]},"Line","$59",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-5a70250df51588e5"],"id":"VALUEBIND-1679c7ff685b346a","initializer":"Line(description=description, quantity=quantity, unit_price=Money(unit_price_cents))","name":"line","target_kind":"name"}],"$42","$72","$73","resolved",["EVD-1bc0e01868608acb"],["$84"]]],["CALL-a49a3c573401ecdc","FACT","$46","$67","Call print",["builtins.print","$78"],["EVD-c950c2e696960710"],[],[],[],[1,false,null,"print","Python builtin",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",[],["builtins.print"]]],["CALL-a6e5be3edf13da37","FACT","$46","$67","Call eval",["builtins.eval","$96"],["EVD-74a10829c9ec1e34"],[],[],[],[1,false,null,"eval","Python builtin",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-0967e62e36dbb50b"],"id":"VALUEBIND-e1aff78f7e2a6c5b","initializer":"eval('1 + 1')","name":"doubled","target_kind":"name"}],"SYM-8168d5a416701615","$81","$96","resolved",[],["builtins.eval"]]],["CALL-a6e98ad377213520","FACT","$46","$67","Call _indent",["$100","$101"],["EVD-8ac23f3660b812b0"],[],[],[],[1,false,null,"_indent","module-local symbol",[],"SYM-c3c8459b52d998ed","$99","$101","resolved",["EVD-00e9d67fbfa9e0b3"],["$100"]]],["CALL-a6f4bb8c3d1e91c0","FACT","$46","$67","Call dataclass",["$50","$97"],["EVD-42ab3e49123dac05"],[],[],[],[1,false,null,"dataclass","$59",[],"$40","$97","$97","resolved",[],["$50"]]],["CALL-aa02536daf8969dd","FACT","$46","$67","Call Order",["$73","$91"],["EVD-5667eeb2be2348c4"],[],[],[],[1,false,{"candidates_truncated":false,"reason":"$8","status":"$63","targets":["$91"]},"Order","$59",[{"annotation":null,"definition_contexts":[],"evidence_ids":["EVD-fa8c205ff506dc45"],"id":"VALUEBIND-f94b1bc0b8e3a67f","initializer":"Order(order_id=order_id, lines=(line,))","name":"order","target_kind":"name"}],"$42","$72","$73","resolved",["EVD-13b53f5e83189b76"],["$91"]]],["CALL-b305ac485ec68f7b","FACT","$46","$67","Call OrderRepository",["$73","shop.store.OrderRepository"],["EVD-905411f1c2518bc3"],[],[],[],[1,false,null,"OrderRepository","$59",[],"$42","$72","$73","resolved",[],["shop.store.OrderRepository"]]],["CALL-b74028edbb6ba560","FACT","$46","$67","Call _indent",["$78","$100"],["EVD-0cccbc597680df5c"],[],[],[],[1,false,null,"_indent","$59",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",["EVD-00e9d67fbfa9e0b3"],["$100"]]],["CALL-b835c7a5b441e0f9","FACT","$46","$64","Call order.to_dict",["$86","$93","$119"],["EVD-89d99e7a0b3b9fd3"],[],[],[],[2,false,null,"order.to_dict","$55",[],"SYM-c6dc50ed43219b97","$115","$119","$63",["EVD-380072b2520ec91b","EVD-ea5b17eeeff85142"],["$86","$93"]]],["CALL-b8f69fdd111b69c6","FACT","$46","$64","Call partial.replace",["pathlib.Path.replace","$109"],["EVD-e2d93466c2b1ee5c"],[],[],[],[1,false,null,"partial.replace","receiver bound to a call result of documented type, unproven at runtime",[],"SYM-3ddc33e5a1bedfc4","$105","$109","$63",[],["pathlib.Path.replace"]]],["CALL-cab91b8ca458b766","FACT","$46","$67","Call Order.from_dict",["$92","$123"],["EVD-8fae6af94530eacc"],[],[],[],[1,false,null,"Order.from_dict","attribute of imported symbol binding",[],"SYM-c9078666ab3d0e2d","$120","$123","resolved",["EVD-daa05f47b32b9483"],["$92"]]],["CALL-cc72be80a115c456","FACT","$46","$67","Call dataclass",["$50","$81"],["EVD-f85359de8c6bd244"],[],[],[],[1,false,null,"dataclass","$59",[],"$34","$81","$81","resolved",[],["$50"]]],["CALL-cdc0f88188468209","FACT","$46","unresolved_call","Call path.parent.mkdir",["$109"],["EVD-0c12626667c2b2df"],[],[],[],[0,false,null,"path.parent.mkdir","dynamic attribute receiver",[],"SYM-3ddc33e5a1bedfc4","$105","$109","unresolved",[],[]]],["CALL-cf9751630041b4df","FACT","$46","$67","Call getattr",["builtins.getattr","$76"],["EVD-b21124910fdd39cb"],[],[],[],[1,false,null,"getattr","Python builtin",[],"SYM-99fd7d77b712d934","$72","$76","resolved",[],["builtins.getattr"]]],["CALL-cfda7b21bdd2cca0","FACT","$46","unresolved_call","Call cls",["$85"],["EVD-0e33736516e068da"],[],[],[],[0,false,null,"cls","lexical binding has no proven callable value",[],"SYM-421012b9fa5f6934","$81","$85","unresolved",[],[]]],["CALL-d457d640022875d5","FACT","$46","$67","Call lines.append",["builtins.list.append","$101"],["EVD-39d715f3dc8901f1"],[],[],[],[1,false,null,"lines.append","literal-bound receiver of known type",[],"SYM-c3c8459b52d998ed","$99","$101","resolved",[],["builtins.list.append"]]],["CALL-d5aec7b934e3d882","FACT","$46","$64","Call line.total",["$87","$94","$94"],["EVD-a5540a12732ce8a0"],[],[],[],[2,false,null,"line.total","$55",[],"SYM-306fffdb8811c478","$81","$94","$63",["EVD-41e509000836a272","EVD-db42ea9082a4945d"],["$87","$94"]]],["CALL-d821b880d4863ce7","FACT","$46","$67","Call int",["builtins.int","$78"],["EVD-74ddeaef7cdc525a"],[],[],[],[1,false,null,"int","Python builtin",[],"SYM-785f9f9b17ce8f3c","$77","$78","resolved",[],["builtins.int"]]],["CALL-e2848369a7d515b3","FACT","$46","unresolved_call","Call self.load(order_id).total",["$125"],["EVD-c1097811ebfab788"],[],[],[],[0,false,null,"self.load(order_id).total","expression is dynamic",[],"SYM-f6298b4c05a2e5ef","$120","$125","unresolved",[],[]]],["CALL-e6dbaf47acf6b6af","FACT","$46","unresolved_call","Call connection.path.glob",["$128"],["EVD-babf6ed5e4df0301"],[],[],[],[0,false,null,"connection.path.glob","dynamic attribute receiver",[],"SYM-932fa235d99a9bda","$126","$128","unresolved",[],[]]],["CALL-e9a88fc6b9af34a1","FACT","$46","$64","Call order.total",["$87","$94","$101"],["EVD-ff0be735b599b3f5"],[],[],[],[2,false,null,"order.total","$55",[],"SYM-c3c8459b52d998ed","$99","$101","$63",["EVD-41e509000836a272","EVD-db42ea9082a4945d"],["$87","$94"]]],["CALL-f2897f43663b6317","FACT","$46","$67","Call dataclass",["$50","$81"],["EVD-d1b70d9273097937"],[],[],[],[1,false,null,"dataclass","$59",[],"$34","$81","$81","resolved",[],["$50"]]],["CALL-f7a3dec1d1b6c4a4","FACT","$46","$67","Call Line.from_dict",["$85","shop.model.entities.Order.from_dict.<genexpr:96:21>"],["EVD-b0f402cc74eb9e1a"],[],[],[],[1,false,null,"Line.from_dict","class-qualified local method",[],null,"$81","shop.model.entities.Order.from_dict.<genexpr:96:21>","resolved",["EVD-f306204066b62b9f"],["$85"]]],["CALL-f85c62cb3989440b","FACT","$46","$64","Call entry.total",["$74","$87","$94"],["EVD-e9edfb25cbfd620e"],[],[],[],[2,false,null,"entry.total","$55",[],"SYM-d7ec7cb6e603d304","$72","$74","$63",["EVD-41e509000836a272","EVD-db42ea9082a4945d"],["$87","$94"]]],["CALL-f98677b40a79bf1b","FACT","$46","$67","Call vacuum",["$71","$128"],["EVD-33cc69d95a57b272"],[],[],[],[1,false,null,"vacuum","$59",[],"SYM-617dbdf906017b98","$70","$71","resolved",["EVD-9fb73bed056d343a"],["$128"]]],["CALL-ff31d6af7d88ebe7","FACT","$46","$67","Call dataclass",["$50","$81"],["EVD-d73f3509fba000e5"],[],[],[],[1,false,null,"dataclass","$59",[],"$34","$81","$81","resolved",[],["$50"]]]],"constructs":[["CONSTRUCT-014bd85141423fac","FACT","constructs","broad_except","shop.cli.main.main uses broad_except",["$78"],["EVD-28c0566df62f3acb"],[],[],[],["broad_except",["Exception"],"$78"]],["CONSTRUCT-8d1b5817682a6635","FACT","constructs","assert_statement","shop.model.entities.audit_total uses assert",["$96"],["EVD-4b561854c59ed578"],[],[],[],["assert","$m","$96"]],["CONSTRUCT-99a6abb44d9ad578","FACT","constructs","broad_except","shop.app.maintenance.run_maintenance uses broad_except",["$71"],["EVD-32fc614da28a44cd"],[],[],[],["broad_except",["Exception"],"$71"]]],"context_evidence":[],"contexts":[["CONTEXT-8d9001d32c6a703d","UNKNOWN","contexts_state","declared_context_not_observed","shop",["shop"],[],[],[],[],[[],"declared_root","DECLARED ROOT",true,[],[],[],[],"shop",[],[]]]],"contract":{"digest":"600ecec7f78da6962a769d96598fe0f44d4d112319cb5c4935d0001e4ba1dd55","path":"architecture-contract.json","schema_version":"2.3.0"},"coverage":{"ast_coverage_percent":100.0,"call_resolution_percent":68.0,"calls_analyzed":75,"calls_partially_resolved":12,"calls_resolved":51,"calls_unresolved":12,"failures":[],"files_discovered":15,"files_parsed":15,"files_read":15,"rules":"PASS","status":"PASS"},"cycles":[["SCC-574674bb43a8af47","FACT","cycles","package_scc","Package cycle with 3 members",["$80","$98","$102"],[],[],["EDGE-0487f23fb5e5ad9b","EDGE-0e93deca9aac4934","EDGE-44e5e21202c4fd6a","EDGE-54d546847f078bd8"],[],[["SCC-c7ffa9850e79a92f"],["EDGE-44e5e21202c4fd6a","EDGE-54d546847f078bd8","EDGE-0e93deca9aac4934","EDGE-0487f23fb5e5ad9b"],"package",["$80","$98","$102"]]],["SCC-c7ffa9850e79a92f","FACT","cycles","module_scc","Module cycle with 3 members",["$81","$99","$120"],[],[],["EDGE-14e0785acd31207d","EDGE-464db35848d98a76","EDGE-e007f2846c14303c","EDGE-f647d4d8e69e0f81"],[],["$m",["EDGE-464db35848d98a76","EDGE-14e0785acd31207d","EDGE-e007f2846c14303c","EDGE-f647d4d8e69e0f81"],"module",["$81","$99","$120"]]]],"declarations":[["API-6027d4f632f2d976","$9","api_surface","declared_public_api","shop.model.entities:Money",["shop.model.entities:Money"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.model.entities:Money","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",[]]],["API-69ccf7d39fe03a65","$9","api_surface","declared_public_api","shop.model.entities:Line",["shop.model.entities:Line"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.model.entities:Line","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",[]]],["API-718ff38bcea8ca70","$9","api_surface","declared_public_api","shop.model.entities:Order",["shop.model.entities:Order"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.model.entities:Order","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",[]]],["API-7b370787f25d53ff","$9","api_surface","declared_public_api","shop.app.orders:place_order",["shop.app.orders:place_order"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.app.orders:place_order","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",[]]],["APP-TYPES-NOT-DICT","$9","$141","boundary_types","Declared facade functions below shop.app take and return no bare dict or object, and no undeclared type",["shop.app"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.app's functions take and return typed models, never a bare dict standing in for one.","$m","$m","$m","$m","$m","$m","shop.app","$m","$m","$m","$m"]],["ASSIGNMENT-COMPLETE","$9","components","complete_assignment","Every module in shop belongs to one component",["shop"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","A module without one owning component escapes every boundary rule.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CAP-SHOP","$9","components","capability","Shop sample ordering",["SHOP"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","SHOP","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",1,"$m","$m","$m","$m","$m","$m","$m"]],["CMD-SHOP-PLACE-ORDER","$9","api_surface","declared_public_command","shop.cli.main:main",["shop.cli.main:main"],[],[],[],["$54"],["$m","$m","$m","$m","shop.cli.main:main","$m","$m","$m","$m","Parse order arguments, place the order and print it as text.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["COMP-APP","$9","components","component_responsibility","app",["shop.app"],[],[],[],["$54"],["$m","$m","CAP-SHOP","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Persistence details and presentation."],"$m","$m","$m","Adapters","$m","$m","$m","$m","shop.app","$m","$m","$m",["shop.app.orders:place_order"],"$m","$m","$m",[],["Use cases: place and summarise orders."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["COMP-CLI","$9","components","component_responsibility","cli",["shop.cli"],[],[],[],["$54"],["$m","$m","CAP-SHOP","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Domain logic, persistence and presentation formatting."],"$m","$m","$m","Edge","$m","$m","$m","$m","shop.cli","$m","$m","$m","$m","$m","$m","$m",[],["Argument parsing, composition and the single broad error boundary."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["COMP-MODEL","$9","components","component_responsibility","model",["$80"],[],[],[],["$54"],["$m","$m","CAP-SHOP","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Persistence, use cases, presentation or command-line orchestration."],"$m","$m","$m","Core","$m","$m","$m","$m","$80","$m","$m","$m",["$81"],"$m","$m","$m",[{"component":"render","decided_by":"architect","rationale":"Probe an outer layer permission.","through":[]}],["Order and Line value types, and Money arithmetic."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["COMP-RENDER","$9","components","component_responsibility","render",["$98"],[],[],[],["$54"],["$m","$m","CAP-SHOP","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Order use cases and persistence."],"$m","$m","$m","Edge","$m","$m","$m","$m","$98","$m","$m","$m",["$99"],"$m","$m","$m",[],["Text projection of an order."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["COMP-STORE","$9","components","component_responsibility","store",["$102"],[],[],[],["$54"],["$m","$m","CAP-SHOP","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Order use cases and presentation."],"$m","shop/store/architecture-contract.json","$m","Adapters","$m","$m","$m","$m","$102","$m","$m","$m",["shop.store.repository:OrderRepository","shop.store.sqlite:Connection","shop.store.sqlite:vacuum"],"$m","$m","$m",[],["Persist orders as JSON files."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["COMPONENT-NO-CYCLES","$9","cycles","no_component_cycles","Component dependencies form no cycle",[],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Components stay layered so each one can be reviewed and replaced in dependency order.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["CONSTRUCT-NO-ANY","$9","$141","$56","shop forbids any_annotation",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["any_annotation"],"architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","A value that crosses a module boundary carries a type the reader can follow; Any hides exactly what the boundary exists to state.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CONSTRUCT-NO-ASSERT","$9","$141","$56","shop forbids assert",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["assert"],"architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Invariants are checked where values are built, because assert statements vanish under python -O.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CONSTRUCT-NO-BROAD-EXCEPT","$9","$141","$56","shop forbids broad_except",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["broad_except"],"architect","$m","$m",["$78"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Failures stay typed and visible; only the CLI error boundary, main's own body, turns any failure into an exit code.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CONSTRUCT-NO-DYNAMIC","$9","$141","$56","shop forbids getattr, hasattr, cast, eval, exec, dynamic_import, type_ignore, setattr, delattr, vars, dunder_dict",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["getattr","hasattr","cast","eval","exec","dynamic_import","type_ignore","setattr","delattr","vars","dunder_dict"],"architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Static architecture evidence remains explicit and mechanically traceable.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CONSTRUCT-NO-PLACEHOLDER","$9","$141","$56","shop forbids placeholder_body",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["placeholder_body"],"architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","A function whose body is pass, ellipsis or a lone NotImplementedError reports capability it does not have, and its callers are written against that promise.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CONSTRUCT-NO-STRING-LITERAL-COMPARE","$9","$141","$56","shop forbids string_literal_compare",["shop"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m",["string_literal_compare"],"architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","A closed vocabulary is an enum or Literal the type checker follows; a value compared with a string literal is a vocabulary nobody declared.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["CTX-8d9001d32c6a703d","$9","contexts_state","declared_context_root","shop",["shop"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["DEP-APP-ALLOWS-MODEL","$9","$53","allowed_dependency","shop.app may depend on shop.model",["shop.app","$80"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Use cases construct orders from domain values.","$m","$m","$m","$m","$m","$m","shop.app","$m","$80","$m","$m"]],["DEP-APP-ALLOWS-STORE","$9","$53","allowed_dependency","shop.app may depend on shop.store",["shop.app","$102"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Use cases persist and load orders through the repository.","$m","$m","$m","$m","$m","$m","shop.app","$m","$102","$m","$m"]],["DEP-APP-NO-CLI","$9","$53","$57","shop.app must not depend on shop.cli",["shop.app","shop.cli"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Use cases remain callable without command-line orchestration.","$m","$m","$m","$m","$m","$m","shop.app","$m","shop.cli","$m","$m"]],["DEP-APP-NO-RENDER","$9","$53","$57","shop.app must not depend on shop.render",["shop.app","$98"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Use cases return typed values; only the composition root decides how to project them.","$m","$m","$m","$m","$m","$m","shop.app","$m","$98","$m","$m"]],["DEP-APP-NO-STORE-BACKEND","$9","$53","$57","shop.app must not depend on shop.store.backend",["shop.app","$104"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The file layout behind the repository is the store's own business; use cases reach persistence through OrderRepository, never through its backend.","$m","$m","$m","$m","$m","$m","shop.app","$m","$104","$m","$m"]],["DEP-APP-NO-STORE-SQLITE","$9","$53","$57","shop.app must not depend on shop.store.sqlite",["shop.app","$126"],[],[],[],["$54"],["$m",["$70"],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",false,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Only the maintenance use case may run store housekeeping; ordinary order use cases stay on the repository.","$m","$m","$m","$m","$m","$m","shop.app","$m","$126","$m","$m"]],["DEP-CLI-ALLOWS-APP","$9","$53","allowed_dependency","shop.cli may depend on shop.app",["shop.app","shop.cli"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The composition root invokes the order use cases.","$m","$m","$m","$m","$m","$m","shop.cli","$m","shop.app","$m","$m"]],["DEP-CLI-ALLOWS-RENDER","$9","$53","allowed_dependency","shop.cli may depend on shop.render",["shop.cli","$98"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The composition root prints the rendered order.","$m","$m","$m","$m","$m","$m","shop.cli","$m","$98","$m","$m"]],["DEP-CLI-NO-MODEL","$9","$53","$57","shop.cli must not depend on shop.model",["shop.cli","$80"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The composition root reaches domain values only through the use cases it calls.","$m","$m","$m","$m","$m","$m","shop.cli","$m","$80","$m","$m"]],["DEP-CLI-NO-STORE","$9","$53","$57","shop.cli must not depend on shop.store",["shop.cli","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The composition root reaches persistence only through the use cases it calls.","$m","$m","$m","$m","$m","$m","shop.cli","$m","$102","$m","$m"]],["DEP-MODEL-NO-APP","$9","$53","$57","shop.model must not depend on shop.app",["shop.app","$80"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Value types remain reusable without depending on the use cases that construct them.","$m","$m","$m","$m","$m","$m","$80","$m","shop.app","$m","$m"]],["DEP-MODEL-NO-CLI","$9","$53","$57","shop.model must not depend on shop.cli",["shop.cli","$80"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Value types remain independent of command-line composition.","$m","$m","$m","$m","$m","$m","$80","$m","shop.cli","$m","$m"]],["DEP-MODEL-NO-RENDER","$9","$53","$57","shop.model must not depend on shop.render",["$80","$98"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Value types remain independent of how orders are projected as text.","$m","$m","$m","$m","$m","$m","$80","$m","$98","$m","$m"]],["DEP-MODEL-NO-STORE","$9","$53","$57","shop.model must not depend on shop.store",["$80","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Order and Line value types stay independent of any persistence mechanism.","$m","$m","$m","$m","$m","$m","$80","$m","$102","$m","$m"]],["DEP-RENDER-ALLOWS-MODEL","$9","$53","allowed_dependency","shop.render may depend on shop.model",["$80","$98"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Text projection reads the values it renders.","$m","$m","$m","$m","$m","$m","$98","$m","$80","$m","$m"]],["DEP-RENDER-NO-APP","$9","$53","$57","shop.render must not depend on shop.app",["shop.app","$98"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Text projection stays a pure view over values, not a caller of use cases.","$m","$m","$m","$m","$m","$m","$98","$m","shop.app","$m","$m"]],["DEP-RENDER-NO-CLI","$9","$53","$57","shop.render must not depend on shop.cli",["shop.cli","$98"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Text projection remains reusable without command-line composition.","$m","$m","$m","$m","$m","$m","$98","$m","shop.cli","$m","$m"]],["DEP-RENDER-NO-STORE","$9","$53","$57","shop.render must not depend on shop.store",["$98","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Text projection consumes typed values without touching persistence.","$m","$m","$m","$m","$m","$m","$98","$m","$102","$m","$m"]],["DEP-STORE-ALLOWS-MODEL","$9","$53","allowed_dependency","shop.store may depend on shop.model",["$80","$102"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence serialises the domain values it is given.","$m","$m","$m","$m","$m","$m","$102","$m","$80","$m","$m"]],["DEP-STORE-NO-APP","$9","$53","$57","shop.store must not depend on shop.app",["shop.app","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence stays a leaf dependency and never calls back into use cases.","$m","$m","$m","$m","$m","$m","$102","$m","shop.app","$m","$m"]],["DEP-STORE-NO-CLI","$9","$53","$57","shop.store must not depend on shop.cli",["shop.cli","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence stays callable without command-line orchestration.","$m","$m","$m","$m","$m","$m","$102","$m","shop.cli","$m","$m"]],["DEP-STORE-NO-MONEY","$9","$53","$57","shop.store must not depend on shop.model.entities.Money",["$89","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence serialises whole orders and must not compute or interpret money amounts itself.","$m","$m","$m","$m","$m","$m","$102","$m","$81","Money","$m"]],["DEP-STORE-NO-RENDER","$9","$53","$57","shop.store must not depend on shop.render",["$98","$102"],[],[],[],["$54"],["$m",[],"$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence remains independent of how orders are displayed.","$m","$m","$m","$m","$m","$m","$102","$m","$98","$m","$m"]],["EXTERNAL-COMPLETE","$9","$52","complete_external_scope","Every dependency shop imports is declared",["shop"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","A dependency no rule names is a dependency nobody chose, and a package that does not exist looks exactly the same from inside the code.","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m"]],["EXTERNAL-JSON-STORE","$9","$53","external_dependency_scope","json is allowed only in shop.store",["json","$102"],[],[],[],["$54"],["$m",["$102"],"$m","$m","$m","$m","$m","architect","json","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Only the store component chooses the JSON file format; other components stay format-agnostic.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["INTERFACE-BOUNDARY","$9","api_surface","interface_boundary","Cross-component imports must reach the target's declared public interface",[],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Components communicate only through declared interfaces, so reaching into another component's internals requires a visible contract change.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["LAYERS-MODEL","$9","components","layer_order","Declared requires follow the inner-to-outer layer order",[],[],[],[],["$54"],["$m","$m","$m","$m","$m",["model"],"$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m",["Core","Adapters","Edge"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The model declares no permission to require an outer layer; imports remain under the existing dependency rules.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["MODEL-TYPES-IN-ENTITIES","$9","$141","symbol_placement","dataclass classes below shop.model are defined only in an allowed module",["$80"],[],[],[],["$54"],["$m",[],"$m",["dataclass"],"$m","$m","$m","architect","$m","$m",["$81"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Every order, line and money type shop.model owns lives in one module, not scattered across the package.","$m","$m","$m","$m","$m","$m","$80","$m","$m","$m","$m"]],["OWNER-SHOP-MODEL","$9","spot_ownership","spot_owner","Order value types",["$80"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$80","$m","$m","$m","$m","$m","$m","$m","$m","Order, Line and Money stay the single source of truth for order arithmetic.","$m","$m","$m","$m","$m","$m","$m","$m"]],["PATH-SHOP-PLACE-ORDER","$9","read_write_paths","declared_write_path","Place an order",["$72","$77","$81","$102"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",["$77","$72","$102","$81"],"$m","$m","$m"]],["ROOT-LAYOUT","$9","$61","root_layout","Immediate children below shop are explicitly allowed",["shop","shop.app","shop.cli","$80","$98","$102"],[],[],[],["$54"],[["shop.app","shop.cli","$80","$98","$102"],"$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","The shop root exposes only its declared top-level components.","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m"]],["SCOPE-SHOP-ORDERS","$9","components","review_scope","Order placement review",["$72"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","CAP-SHOP","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["STORE-PEERS-ISOLATED","$9","$53","sibling_isolation","2 peers must not import each other",["$120","$126"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Persistence and maintenance are peers behind the store's entry point, so neither reaches into the other.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["store:STORE-REQUIRES-COMPLETE","$9","components","complete_requires","Every cross-component import is covered by the source's requires list",[],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m","$m",true,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store","$m","$m","$m","Inside the store the same principle holds as above it: an import nobody asked for is an accident, so each part names what it needs and absence refuses the rest.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["store:COMP-STORE-API","$9","components","inside_component_responsibility","api",["$126"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Saving or loading a single order, and knowing the document format."],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store",["shop.store.sqlite:Connection","shop.store.sqlite:vacuum"],"$m","$m","$m",[{"component":"repository","decided_by":"architect","rationale":"A deliberately granted peer edge, so the architecture demo's sibling_isolation row reports the outer rule alone.","through":[]}],["Housekeeping on a whole store directory, for the maintenance use case."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["store:COMP-STORE-BACKEND","$9","components","inside_component_responsibility","backend",["$104"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Interpreting what a document contains, and knowing about orders at all."],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store",[],"$m","$m","$m",[],["Where a document lives, how it is named, and how it is read and replaced."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["store:COMP-STORE-CODEC","$9","components","inside_component_responsibility","codec",["$115"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Touching the filesystem, and deciding where a document is written."],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store",[],"$m","$m","$m",[],["The stored document format and the version stamped into it."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["store:COMP-STORE-REPOSITORY","$9","components","inside_component_responsibility","repository",["$120"],[],[],[],["$54"],["$m","$m","$m","$m","$m","$m","$m","architect","$m","$m","$m","$m",["Formatting a document itself, and reaching the filesystem without the backend."],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store",["shop.store.repository:OrderRepository"],"$m","$m","$m",[{"component":"backend","decided_by":"architect","rationale":"An order is stored somewhere, and the place it is stored is settled in one module rather than at every call site.","through":[]},{"component":"codec","decided_by":"architect","rationale":"Turning an order into bytes and back is a format decision the persistence API delegates, so the format can change without the API changing.","through":[]}],["The order-facing persistence API the rest of the shop is written against."],"$m","$m","component","$m","$m","$m","$m","$m","$m"]],["ARCHITECTURE-TARGET-a2e40c5592b1b06a","$9","uml","architecture_target","Declared architecture target",[],[],[],[],["architecture-contract.json"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",["EXTERNAL-JSON-STORE"],"$m","$m","$m",[{"component_id":"COMP-STORE","external_scope_ids":[],"layout_rule_ids":[],"module_target_ids":[],"owner_ids":["store:COMP-STORE-API","store:COMP-STORE-BACKEND","store:COMP-STORE-CODEC","store:COMP-STORE-REPOSITORY"]}],"$m","$m",["ROOT-LAYOUT"],[],"$m","$m","$m",["COMP-MODEL","COMP-STORE","COMP-APP","COMP-RENDER","COMP-CLI","store:COMP-STORE-API","store:COMP-STORE-BACKEND","store:COMP-STORE-CODEC","store:COMP-STORE-REPOSITORY"],"$m","$m",["API-7b370787f25d53ff","API-69ccf7d39fe03a65","API-6027d4f632f2d976","API-718ff38bcea8ca70"],"$m","Existing declarations define graph intent; their rules retain evaluation ownership.","$m","$m","$m","$m","$m","$m","$m","$m",{"entities":[],"relationships":[],"schema_version":"1.2.0","scopes":[]},"$m","$m"]]],"dependency_edges":[["EDGE-0487f23fb5e5ad9b","FACT","$62","package_dependency","shop.store → shop.model",["$80","$102"],[],[],["IMP-3d75fa5a51f876c0","IMP-433582f82cd7fab1","IMP-4cca38f12987f98a","IMP-5f69fd090c6fbedd"],[],[false,4,"package",4,"$102",2,"$80",2,0]],["EDGE-0e93deca9aac4934","FACT","$62","package_dependency","shop.render → shop.store",["$98","$102"],[],[],["IMP-debb9db6ab22f4c1"],[],[false,1,"package",1,"$98",2,"$102",2,0]],["EDGE-14e0785acd31207d","FACT","$61","$60","shop.render.text → shop.model.entities",["$81","$99"],[],[],["IMP-5f3a2916e5c4b873"],[],[true,1,"module",1,"$99",4,"$81",4,0]],["EDGE-15998beff06a9fcf","FACT","$62","package_dependency","shop.cli → shop.render",["shop.cli","$98"],[],[],["IMP-083a31b274e19e3b","IMP-6ad83ea777b33c5f"],[],[false,2,"package",2,"shop.cli",0,"$98",2,0]],["EDGE-1ad88587dca0df62","FACT","$61","$60","shop.cli.main → shop.app.orders",["$72","$77"],[],[],["IMP-c14d352eb623ce98"],[],[false,1,"module",1,"$77",0,"$72",1,0]],["EDGE-1b6c0110cf77ea30","FACT","$61","$60","shop.cli.main → shop.render.text",["$77","$99"],[],[],["IMP-083a31b274e19e3b","IMP-6ad83ea777b33c5f"],[],[false,2,"module",2,"$77",0,"$99",4,0]],["EDGE-2ef831978fe7bb49","FACT","$61","$60","shop.store.sqlite → shop.store.codec",["$115","$126"],[],[],["IMP-23c9e519498e5800"],[],[false,1,"module",1,"$126",2,"$115",3,0]],["EDGE-3710f672fd2f0c2a","FACT","$61","$60","shop.app.maintenance → shop.store.sqlite",["$70","$126"],[],[],["IMP-2dc76c96a33ea0db","IMP-35c1c35b56f8cf07"],[],[false,2,"module",2,"$70",0,"$126",2,0]],["EDGE-40faba752ec25c2f","FACT","$62","package_dependency","shop.app → shop.store",["shop.app","$102"],[],[],["IMP-175766972975805a","IMP-2dc76c96a33ea0db","IMP-35c1c35b56f8cf07","IMP-473c4a77ed8bfb9f","IMP-cd7dff34899a7b5e","IMP-ecdb754a28b0d18e"],[],[false,6,"package",5,"shop.app",1,"$102",2,1]],["EDGE-44e5e21202c4fd6a","FACT","$62","package_dependency","shop.model → shop.render",["$80","$98"],[],[],["IMP-3e49b5e4df6c2de9"],[],[true,1,"package",1,"$80",2,"$98",2,0]],["EDGE-464db35848d98a76","FACT","$61","$60","shop.model.entities → shop.render.text",["$81","$99"],[],[],["IMP-3e49b5e4df6c2de9"],[],[true,1,"module",1,"$81",4,"$99",4,0]],["EDGE-54d546847f078bd8","FACT","$62","package_dependency","shop.render → shop.model",["$80","$98"],[],[],["IMP-5f3a2916e5c4b873"],[],[true,1,"package",1,"$98",2,"$80",2,0]],["EDGE-58b9293354ac6170","FACT","$61","$60","shop.app.orders → shop.model.entities",["$72","$81"],[],[],["IMP-40f3251c3cdf4033","IMP-c8cab74d29acd7b0","IMP-db6837579c9cc11d"],[],[false,3,"module",3,"$72",1,"$81",4,0]],["EDGE-710c16d64e3aaa04","FACT","$61","$60","shop.app.orders → shop.store.backend.files",["$72","$105"],[],[],["IMP-cd7dff34899a7b5e"],[],[false,1,"module",1,"$72",1,"$105",2,0]],["EDGE-75837215763c54f2","FACT","$61","$60","shop.app.orders → shop.store",["$72","$102"],[],[],["IMP-175766972975805a"],[],[false,1,"module",1,"$72",1,"$102",2,0]],["EDGE-85b909aafdceb6e1","FACT","$61","$60","shop.store.sqlite → shop.store.repository",["$120","$126"],[],[],["IMP-18a47927dc0ad8a6"],[],[false,1,"module",1,"$126",2,"$120",4,0]],["EDGE-98d3237939201824","FACT","$61","$60","shop.app.orders → shop.store.sqlite",["$72","$126"],[],[],["IMP-473c4a77ed8bfb9f","IMP-ecdb754a28b0d18e"],[],[false,2,"module",1,"$72",1,"$126",2,1]],["EDGE-9f96d87e78c4abc3","FACT","$61","$60","shop.store.backend → shop.store.backend.files",["$104","$105"],[],[],["IMP-41f62d4d879417db","IMP-7557dc2b068fbad5","IMP-b6b0e3c086bad72f"],[],[false,3,"module",3,"$104",0,"$105",2,0]],["EDGE-ad55f037555582ca","FACT","$62","package_dependency","shop.app → shop.model",["shop.app","$80"],[],[],["IMP-40f3251c3cdf4033","IMP-c8cab74d29acd7b0","IMP-db6837579c9cc11d"],[],[false,3,"package",3,"shop.app",1,"$80",2,0]],["EDGE-afcd576017d020e3","FACT","$61","$60","shop.store.codec → shop.model.entities",["$81","$115"],[],[],["IMP-433582f82cd7fab1","IMP-5f69fd090c6fbedd"],[],[false,2,"module",2,"$115",3,"$81",4,0]],["EDGE-bd584a42d403a133","FACT","$61","$60","shop.store.backend → shop.store.backend.paths",["$104","$111"],[],[],["IMP-4b0aa8afde47d300","IMP-a84fd48911442825"],[],[false,2,"module",2,"$104",0,"$111",1,0]],["EDGE-d129074b8c0a4140","FACT","$61","$60","shop.store → shop.store.repository",["$102","$120"],[],[],["IMP-c0bf18fb78cbe14c"],[],[false,1,"module",1,"$102",2,"$120",4,0]],["EDGE-db0372f1a8a568e1","FACT","$62","package_dependency","shop.cli → shop.app",["shop.app","shop.cli"],[],[],["IMP-c14d352eb623ce98"],[],[false,1,"package",1,"shop.cli",0,"shop.app",1,0]],["EDGE-e007f2846c14303c","FACT","$61","$60","shop.render.text → shop.store.repository",["$99","$120"],[],[],["IMP-debb9db6ab22f4c1"],[],[false,1,"module",1,"$99",4,"$120",4,0]],["EDGE-f647d4d8e69e0f81","FACT","$61","$60","shop.store.repository → shop.model.entities",["$81","$120"],[],[],["IMP-3d75fa5a51f876c0","IMP-4cca38f12987f98a"],[],[false,2,"module",2,"$120",4,"$81",4,0]]],"encoding":{"escaped_literal":"additional leading $","evidence_fields":["id","file","line","end_line","column","excerpt"],"kind":"architecture-ir-columnar-v1","record_fields":["id","evidence_class","area","kind","title","subjects","evidence_ids","rule_ids","fact_ids","provenance","data"],"section_data_fields":{"bindings":["binding","module","name","owner"],"calls":["candidate_count","candidates_truncated","construction","expression","reason","result_bindings","source_definition_id","source_module","source_scope","status","target_evidence_ids","targets"],"constructs":["construct","handled","owner"],"context_evidence":[],"contexts":["constructed_by","context_class","context_class_label","declared_root","dependencies","fields","methods","passes","qualified_name","reads","writes"],"cycles":["backed_by","internal_edges","level","members"],"declarations":["allowed_children","allowed_sources","capability_id","class_kinds","command","components","constructs","decided_by","dependency","description","exact_sources","external_scope_ids","forbidden_responsibilities","include_type_checking","inside","inside_levels","layer","layers","layout_rule_ids","module_target_ids","name","namespace","owner","owner_ids","parent_id","public","public_api_ids","qualified_name","rationale","requires","responsibilities","responsibility","review_order","role","root","source","steps","target","target_symbol","types"],"dependency_edges":["bidirectional","count","level","runtime_count","source","source_rank","target","target_rank","type_checking_count"],"imports":["binding","declared_in_all","origin_definition","reexport","reexport_chain","relative_level","source_binding_unique","source_member_binding_static","source_module","source_package","symbol","symbol_visibility","symbols_known","target_module","target_package","under_type_checking"],"metrics":["tab","value"],"modules":["all_exports","all_literal","compatibility_logic_free","fan_in","fan_out","file","package","qualified_name","rank","symbol_count"],"packages":["dependencies","fan_in","fan_out","module_count","qualified_name","rank"],"path_observations":["path_id","reason","source","status","target"],"references":["declaration_definition_id","declaration_scope","expression","source_definition_id","source_module","source_scope","status","targets","use"],"scope_observations":["assessment_complete","claim","component_id","contract_digest","contract_path","coverage_complete","cycle_graph_components","cycle_scope_complete","cycle_scope_components","fan_out","file","files","layers","module","module_count","modules","observed_module_count","outgoing_modules","outgoing_scopes","owner_count","owners","parent_id","partially_assigned","reason","scope","scope_module_counts","scopes"],"symbols":["async","attribute_declarations","base_declarations","base_roots","bases","class_body_control_flow","class_header_static","class_kind","class_members","constant","declared_in_all","decorators","default_instance_result","definition_contexts","facade_type_candidates_by_publisher","facade_types","fields","frozen_object","lexical_parent_id","member_inventories","method_kind","module","name","namespace_bound","overload_signature","package","parameters","parent","qualified_name","receiver_parameter","record_kind","returns","shape","shape_nodes","signature_decorators_proven","source_binding_unique","source_final_method_binding","source_member_binding_static","symbol_category","typed_dict_header_static","visibility","visibility_detail"],"transitive_paths":["level","path","source","target"],"typing_signals":["annotation","expression","owner","signal"],"unknowns":["reason","unresolved_calls"],"violations":["allowed_children","annotation","child","class_kind","construct","dependency","members","module","position","qualified_name","rationale","reason","root","source","source_component","source_layer","source_module","symbol","target_component","target_layer","target_module","under_type_checking"]},"string_reference":"$<index>"},"evidence":[["EVD-002214d1259b8690","$132",96,96,16,"$1"],["EVD-00e9d67fbfa9e0b3","$134",23,24,0,"def _indent(text: str) -> str:"],["EVD-023179c53590335c","$136",20,20,4,"    partial = path.with_suffix(f\"{path.suffix}.part\")"],["EVD-027c161b509e8583","$132",96,96,8,"$1"],["EVD-02ef59d572150708","$134",9,9,0,"from shop.store.repository import OrderRepository"],["EVD-0331ee95a6dce2c3","$130",21,31,0,"def place_order("],["EVD-03b7b333aac461f3","$136",17,22,0,"def write_document(path: Path, document: str) -> None:"],["EVD-05ed925f54c312ac","$134",16,18,4,"    lines.extend("],["EVD-05fd09bb70b1612d","$138",32,32,18,"    if version != DOCUMENT_VERSION:"],["EVD-09134357b4a872f1","$138",23,23,18,"def encode(order: Order) -> str:"],["EVD-0967e62e36dbb50b","$132",103,103,4,"    doubled = eval(\"1 + 1\")"],["EVD-0977f81fc2ac2b19","$137",13,14,0,"def order_path(root: Path, order_id: str) -> Path:"],["$10","$139",1,1,0,"# Archkeel"],["EVD-0bf559167b8b8e33","$140",9,9,0,"from pathlib import Path"],["EVD-0c12626667c2b2df","$136",19,19,4,"    path.parent.mkdir(parents=True, exist_ok=True)"],["EVD-0c35d241cbca83f1","$139",14,29,0,"class OrderRepository:"],["EVD-0cccbc597680df5c","$131",20,20,14,"        print(_indent(render_order(order)))"],["EVD-0cf17a417526c3ac","$134",14,20,0,"def render_order(order: Order) -> str:"],["EVD-0e33736516e068da","$132",73,77,15,"        return cls("],["$11","$135",1,1,0,"# Archkeel"],["EVD-0f6ca1ef6fa8044a","$138",11,11,0,"from shop.model.entities import Order, OrderPayload"],["EVD-10cf5746810ab6e1","$130",13,13,0,"from shop.store import OrderRepository"],["EVD-13b53f5e83189b76","$132",81,97,0,"class Order:"],["EVD-14f38b04bd2f7b8d","$131",17,17,8,"        order = place_order("],["EVD-1641769a3e1d7b02","$136",26,26,4,"    path.unlink()"],["EVD-168dcab22b56d9f4","$130",55,55,18,"$6"],["EVD-17d3689ebbd16fa1","shop/app/analytics.py",12,12,4,"    track(total)"],["EVD-19121682bae0b9d0","$133",6,6,0,"$58"],["EVD-19ff467f293c6747","$138",13,13,0,"DOCUMENT_VERSION = 1"],["EVD-1a1f857322507e84","$132",35,36,4,"    def __add__(self, other: Money) -> Money:"],["EVD-1adb244d07352ea3","$138",16,20,0,"class OrderDocument(TypedDict):"],["EVD-1b582c9947790135","$132",86,86,17,"        result = Money(0)"],["EVD-1bc0e01868608acb","$132",56,77,0,"class Line:"],["EVD-1e4d3a3180fac82c","$130",28,28,11,"$5"],["EVD-236abf80e8185e88","$138",29,29,29,"def decode(document: str) -> Order:"],["EVD-2486f39689dfc04e","$140",18,18,18,"_FORMAT_VERSION = DOCUMENT_VERSION"],["EVD-28c0566df62f3acb","$131",22,23,4,"    except Exception:"],["EVD-2dadf764d14fd20f","$139",9,9,0,"from pathlib import Path"],["$12","shop/store/__init__.py",1,1,0,"# Archkeel"],["EVD-323a2c6d18bb8727","$130",51,51,16,"def touch_store(connection: object, retries: int) -> str:"],["$13","$138",1,1,0,"# Archkeel"],["EVD-32fc614da28a44cd","$129",14,15,4,"    except Exception:"],["EVD-33cc69d95a57b272","$129",13,13,8,"        vacuum(connection)"],["EVD-34c41dc2c564cbc0","$130",14,14,0,"from shop.store.backend.files import write_payload"],["EVD-34ef3407cb9a05ed","$135",8,8,0,"from shop.store.backend.files import discard_document, read_document, write_document"],["EVD-364f7fe891f0a9b4","$132",36,36,15,"        return Money(self.cents + other.cents)"],["EVD-36d7c34b4c900849","$130",9,9,0,"from pathlib import Path"],["EVD-36e8e32424b77f56","$130",43,43,25,"def restate_total(order: Order) -> Money:"],["EVD-37c486563c79e998","$140",6,6,0,"$58"],["EVD-380072b2520ec91b","$132",91,92,4,"    def to_dict(self) -> OrderPayload:"],["EVD-38710e4b9bb44644","$130",6,6,0,"$58"],["EVD-38891c635c506c91","$129",11,11,32,"def run_maintenance(connection: Connection) -> None:"],["EVD-39161d918b372be5","$132",95,95,49,"    def from_dict(cls, payload: OrderPayload) -> Order:"],["EVD-3958b4460046c913","$139",21,21,37,"    def load(self, order_id: str) -> Order:"],["EVD-39d715f3dc8901f1","$134",19,19,4,"    lines.append(_indent(f\"Total: {order.total()}\"))"],["EVD-3a45cf803befe154","$132",51,52,4,"    def apply(self, amount: Money) -> Money:"],["EVD-3adffac283771a7d","$132",46,52,0,"class Discount:"],["EVD-3b29e5a0919fffbd","$132",64,64,25,"    def to_dict(self) -> LinePayload:"],["EVD-3c3d843fb403333d","$132",38,38,40,"    def __mul__(self, quantity: int) -> Money:"],["EVD-4026c00c773aad59","$130",51,56,0,"def touch_store(connection: object, retries: int) -> str:"],["EVD-40830476b83d35c2","shop/store/__init__.py",6,6,0,"$58"],["EVD-41938d3f68d98ed4","$130",43,48,0,"def restate_total(order: Order) -> Money:"],["EVD-41e509000836a272","$132",85,89,4,"    def total(self) -> Money:"],["EVD-42ab3e49123dac05","$133",11,11,1,"$7"],["EVD-44e79b72ed075656","$135",9,9,0,"from shop.store.backend.paths import order_path, order_paths"],["EVD-4663909830aa85df","$132",59,59,4,"    unit_price: Money"],["EVD-4725cb7e8e3f92da","$130",35,35,11,"    return OrderRepository(store_dir).load(order_id).total()"],["EVD-474ae2400c81030c","$136",21,21,4,"    partial.write_text(document, encoding=ENCODING)"],["EVD-48e1586facec492f","$132",92,92,53,"        return {\"order_id\": self.order_id, \"lines\": [line.to_dict() for line in self.lines]}"],["EVD-4ae1cbcd504ea7e5","$132",95,95,32,"    def from_dict(cls, payload: OrderPayload) -> Order:"],["$14","$136",1,1,0,"# Archkeel"],["EVD-4b561854c59ed578","$132",102,102,4,"    assert order.lines, \"orders must have at least one line\""],["EVD-4c9454568000e91f","$139",22,22,42,"$2"],["EVD-4d4d7a906ee84119","$130",43,43,35,"def restate_total(order: Order) -> Money:"],["EVD-4e02780282f33f57","$133",8,8,0,"from dataclasses import dataclass"],["EVD-4e97525dc3f2aafe","$140",8,8,0,"from dataclasses import dataclass"],["EVD-538428ebc2c45adf","$138",29,34,0,"def decode(document: str) -> Order:"],["EVD-54388728e808af06","$132",26,26,16,"    lines: list[LinePayload]"],["EVD-54b158ca4efa9858","$129",8,8,0,"from shop.store.sqlite import Connection, vacuum"],["EVD-5667eeb2be2348c4","$130",29,29,12,"    order = Order(order_id=order_id, lines=(line,))"],["EVD-5749eba77f4c2df6","$130",34,35,0,"def summarize(store_dir: Path, order_id: str) -> Money:"],["EVD-57b4ddb217507dd5","$131",17,19,16,"        order = place_order("],["EVD-580df503e76dbb5c","$132",14,14,18,"class LinePayload(TypedDict):"],["EVD-598749736e720d9d","$132",22,26,0,"class OrderPayload(TypedDict):"],["EVD-5a70250df51588e5","$130",28,28,4,"$5"],["EVD-5c8241ce36e16819","$132",85,85,23,"    def total(self) -> Money:"],["$15","shop/extra.py",1,1,0,"# Archkeel"],["EVD-5e3d87c185579640","$137",17,19,0,"def order_paths(root: Path) -> list[Path]:"],["EVD-5eb0cfcea7320538","shop/extra.py",8,8,0,"NOTE = \"This module belongs to no shop component package.\""],["EVD-5f753a04f576585b","$132",97,97,15,"        return cls(order_id=payload[\"order_id\"], lines=lines)"],["EVD-5fc428ea6933c0be","$139",28,29,4,"    def _path(self, order_id: str) -> Path:"],["EVD-5ff808486c74736f","$132",41,42,4,"    def __str__(self) -> str:"],["EVD-62471f558b148867","$130",45,45,14,"    running = Money(0)"],["EVD-653af1cabbbe417a","$132",35,35,39,"    def __add__(self, other: Money) -> Money:"],["EVD-67c538aa93e91c71","$130",34,34,49,"def summarize(store_dir: Path, order_id: str) -> Money:"],["$16","$129",1,1,0,"# Archkeel"],["EVD-6b83b252a5bc0591","$130",10,10,0,"from typing import TYPE_CHECKING"],["EVD-6cd401a8c2aaf59e","$134",14,14,24,"def render_order(order: Order) -> str:"],["EVD-6cfe32290010def4","architecture-contract.json",1,1,0,"{"],["EVD-6df5566c06174695","$132",35,35,29,"    def __add__(self, other: Money) -> Money:"],["EVD-6f5a6a9e4fa47055","$132",91,91,25,"    def to_dict(self) -> OrderPayload:"],["EVD-6fbd36d2c47c81f8","$132",8,8,0,"from dataclasses import dataclass"],["EVD-6fd0deffdf663533","$139",18,19,4,"    def save(self, order: Order) -> None:"],["EVD-6fe2461604a4723c","$136",8,8,0,"from pathlib import Path"],["EVD-708c06c60b82f2a7","$138",30,30,12,"    parsed: OrderDocument = json.loads(document)"],["EVD-71716ad6c2134d34","$137",14,14,31,"    return root / f\"{order_id}{DOCUMENT_SUFFIX}\""],["EVD-728b2fb58c70bbaf","$130",22,22,4,"    store_dir: object,"],["EVD-72bef322d9dcdf06","$132",106,106,14,"    return f\"{render_order(order)} (audit {doubled} of {options})\""],["EVD-735b836cead7e419","$131",15,23,4,"    try:"],["EVD-74a10829c9ec1e34","$132",103,103,14,"    doubled = eval(\"1 + 1\")"],["EVD-74ddeaef7cdc525a","$131",18,18,67,"$0"],["EVD-77dabdd9ac9a201e","$131",18,18,52,"$0"],["EVD-78113503a91694aa","$139",24,26,4,"    def total_due(self, order_id: str) -> Money:"],["EVD-781c3d777da02b93","$138",33,33,14,"        raise ValueError(f\"order document version {version} was written by another store\")"],["EVD-782618cc7d429680","$139",19,19,8,"$3"],["EVD-799654fdd384ac7c","$139",24,24,42,"    def total_due(self, order_id: str) -> Money:"],["EVD-7b88e6b7b17c8a8c","$132",52,52,15,"        return Money(amount.cents * (100 - self.percent) // 100)"],["EVD-7c110b28a0df0f5f","$139",11,11,0,"from shop.model.entities import Money, Order"],["EVD-7d0a506734e1576f","$140",30,30,12,"            candidate.unlink()"],["EVD-7d26120727d7b9d8","$140",29,29,11,"        if candidate.stat().st_size == 0:"],["EVD-7e3d539aa88e21ec","$130",27,27,5,") -> Order:"],["EVD-7f51fedbd4d4c267","$131",11,11,0,"from shop.render.text import _indent, render_order"],["EVD-809590eb3ddf92d6","$132",30,42,0,"class Money:"],["EVD-81ea2509d3cf2d51","$136",10,10,0,"ENCODING = \"utf-8\""],["EVD-827eb64915d3f3d1","$132",26,26,4,"    lines: list[LinePayload]"],["EVD-832db48c570c8ce0","$136",13,14,0,"def read_document(path: Path) -> str:"],["EVD-833e49daa46041b3","$132",22,22,19,"class OrderPayload(TypedDict):"],["EVD-83c45d4c2b6fde29","$140",12,12,0,"from shop.store.repository import OrderRepository"],["EVD-8774c54c206b3af2","$138",20,20,11,"    order: OrderPayload"],["EVD-89d99e7a0b3b9fd3","$138",25,25,69,"$4"],["EVD-8ac23f3660b812b0","$134",19,19,17,"    lines.append(_indent(f\"Total: {order.total()}\"))"],["EVD-8b4173ee45cd16b0","$131",10,10,0,"from shop.app.orders import place_order"],["EVD-8d78f90faf8f2db6","$132",82,82,4,"    order_id: str"],["EVD-8ee8ada66bf8fc10","$136",14,14,35,"    return path.read_text(encoding=ENCODING)"],["EVD-8fae6af94530eacc","$139",22,22,15,"$2"],["EVD-905411f1c2518bc3","$130",30,30,4,"    OrderRepository(store_dir).save(order)"],["EVD-916cd067bc980bff","$130",15,15,0,"from shop.store.sqlite import vacuum"],["EVD-91c22e37b58e4c75","$130",28,28,71,"$5"],["EVD-933bbeffbe7cc2f8","$130",8,8,0,"import json"],["EVD-96ecc1244386d2d9","$132",59,59,16,"    unit_price: Money"],["EVD-976a02b50cb046c6","$137",10,10,0,"DOCUMENT_SUFFIX = \".json\""],["EVD-98e8a9e4b48ff15d","$132",18,18,4,"    quantity: int"],["EVD-9e74ddf8aa380382","$132",72,72,48,"    def from_dict(cls, payload: LinePayload) -> Line:"],["EVD-9f647874c3ddd340","$132",61,61,23,"    def total(self) -> Money:"],["EVD-9f8966569f535072","shop/store/__init__.py",8,8,0,"from shop.store.repository import OrderRepository"],["EVD-9fb73bed056d343a","$140",26,30,0,"def vacuum(connection: Connection) -> None:"],["EVD-a001f05a8622a997","$133",12,13,0,"class Coupon:"],["EVD-a2a4d5e6bd3ab2a3","$136",25,26,0,"def discard_document(path: Path) -> None:"],["EVD-a3a49c5b48f5453d","$139",18,18,26,"    def save(self, order: Order) -> None:"],["EVD-a3fba9fd6dc36e5a","$139",19,19,57,"$3"],["$17","$140",1,1,0,"# Archkeel"],["EVD-a54579840df29e64","$137",19,19,11,"    return sorted(root.glob(f\"*{DOCUMENT_SUFFIX}\"))"],["EVD-a5540a12732ce8a0","$132",88,88,30,"            result = result + line.total()"],["EVD-a61c99f3ea9538ee","$139",19,19,46,"$3"],["EVD-a81ad4dfc4432e68","$139",6,6,0,"$58"],["EVD-a825188e58318989","$131",14,23,0,"def main(argv: list[str]) -> int:"],["EVD-a83b2490ca0443b4","$137",6,6,0,"$58"],["$18","$131",1,1,0,"# Archkeel"],["EVD-a96161054ab910f0","$129",6,6,0,"$58"],["EVD-aa01569e504bae6c","$138",25,25,14,"$4"],["EVD-aa42e2e6fde23465","shop/app/analytics.py",6,6,0,"$58"],["EVD-aa596964e86742bd","$138",20,20,4,"    order: OrderPayload"],["EVD-ac6210f7ea66f63c","$138",23,26,0,"def encode(order: Order) -> str:"],["EVD-ae3e0efd16661009","$131",18,18,12,"$0"],["EVD-af91ee021bacf2aa","$136",14,14,11,"    return path.read_text(encoding=ENCODING)"],["EVD-afb590cbb7cf5954","$139",8,8,0,"import json"],["EVD-afd0cf198ebc2e4f","$132",25,25,4,"    order_id: str"],["EVD-b0332f3f38cfe7b8","shop/app/analytics.py",11,13,0,"def report(total: int) -> str:"],["EVD-b05a1762998abb57","$132",19,19,4,"    unit_price: int"],["EVD-b09a505fab326d5a","$132",33,33,4,"    cents: int"],["EVD-b0f402cc74eb9e1a","$132",96,96,22,"$1"],["EVD-b21124910fdd39cb","$130",55,55,23,"$6"],["EVD-b294cd3ee3c7c698","$137",19,19,32,"    return sorted(root.glob(f\"*{DOCUMENT_SUFFIX}\"))"],["EVD-b2e814d241b4556d","$132",51,51,38,"    def apply(self, amount: Money) -> Money:"],["EVD-b40369c1d9f82ec1","$132",83,83,17,"    lines: tuple[Line, ...]"],["EVD-b5809056b0d2d4ce","$132",76,76,23,"            unit_price=Money(payload[\"unit_price\"]),"],["EVD-b6ab36b8cbc8abd2","$138",30,30,28,"    parsed: OrderDocument = json.loads(document)"],["$19","$133",1,1,0,"# Archkeel"],["EVD-b80791c644a0f00a","$137",19,19,18,"    return sorted(root.glob(f\"*{DOCUMENT_SUFFIX}\"))"],["EVD-b8472c7ac9dc6c74","$132",86,86,8,"        result = Money(0)"],["EVD-babf6ed5e4df0301","$140",28,28,21,"    for candidate in connection.path.glob(\"*.json\"):"],["$20","$132",1,1,0,"# Archkeel"],["EVD-bcd9058ba24a118a","$136",20,20,14,"    partial = path.with_suffix(f\"{path.suffix}.part\")"],["$21","$137",1,1,0,"# Archkeel"],["EVD-bea284164deef448","$133",13,13,4,"    code: str"],["EVD-bf9e0019784f09c3","$130",18,18,4,"    from shop.store.sqlite import Connection"],["EVD-bfc7d4edc9c0521f","shop/extra.py",6,6,0,"$58"],["EVD-c1097811ebfab788","$139",26,26,15,"        return self.load(order_id).total()"],["EVD-c13e5b5aedd90c7b","$134",20,20,11,"    return \"\\n\".join(lines)"],["EVD-c1e59afe297327b0","$132",100,106,0,"def audit_total(order: Order, options: Any) -> str:"],["EVD-c44d78e7201ad264","$134",6,6,0,"$58"],["EVD-c4a85c6c41869f02","$140",22,23,0,"class Connection:"],["EVD-c54644bde9e9101b","$138",19,19,4,"    version: int"],["EVD-c88f0d6581c4ad5a","$132",57,57,4,"    description: str"],["EVD-c8bd970eaa4d583c","$139",21,22,4,"    def load(self, order_id: str) -> Order:"],["EVD-c950c2e696960710","$131",20,20,8,"        print(_indent(render_order(order)))"],["EVD-c991daacc9de08d7","$134",8,8,0,"from shop.model.entities import Order"],["EVD-ca13d9862b9b81f7","$131",8,8,0,"from pathlib import Path"],["EVD-cb26e324deea5970","$138",34,34,11,"    return Order.from_dict(parsed[\"order\"])"],["EVD-cb9ee39184d05841","$138",8,8,0,"import json"],["EVD-cc70494be6f8b1f8","$135",6,6,0,"$58"],["EVD-cd4cbf212d2a3a4c","$138",26,26,11,"    return json.dumps(document, sort_keys=True)"],["EVD-cdb32424562c421b","$136",6,6,0,"$58"],["EVD-cde312752aeb6591","$132",49,49,4,"    percent: int"],["EVD-ce3e264fd96cbe7c","$139",22,22,31,"$2"],["EVD-d1b70d9273097937","$132",80,80,1,"$7"],["EVD-d24cc6115c7c0933","shop/app/analytics.py",8,8,0,"from shop_analytics import track"],["EVD-d489e429536aba44","$130",12,12,0,"from shop.model.entities import Line, Money, Order"],["EVD-d73f3509fba000e5","$132",55,55,1,"$7"],["EVD-d80a75bcbfde3ec0","$132",51,51,28,"    def apply(self, amount: Money) -> Money:"],["EVD-d8fca82a3f584f5a","$138",6,6,0,"$58"],["EVD-d97336461e033809","$132",100,100,30,"def audit_total(order: Order, options: Any) -> str:"],["EVD-d978dd9423b5962f","$132",100,100,23,"def audit_total(order: Order, options: Any) -> str:"],["EVD-da884023325e20c8","$132",72,72,32,"    def from_dict(cls, payload: LinePayload) -> Line:"],["EVD-daa05f47b32b9483","$132",95,97,4,"    def from_dict(cls, payload: OrderPayload) -> Order:"],["EVD-db14419f2eca8a41","$132",45,45,1,"$7"],["EVD-db42ea9082a4945d","$132",61,62,4,"    def total(self) -> Money:"],["EVD-dc0a3a7501ee19b1","$132",6,6,0,"$58"],["EVD-dcbc5628712281fc","$139",15,16,4,"    def __init__(self, root: Path) -> None:"],["$22","$130",1,1,0,"# Archkeel"],["EVD-e077aa75caee794f","$132",83,83,4,"    lines: tuple[Line, ...]"],["EVD-e2d93466c2b1ee5c","$136",22,22,4,"    partial.replace(path)"],["EVD-e5620291becdd779","$134",17,17,8,"        _indent(f\"{line.quantity} x {line.description}\") for line in order.lines"],["EVD-e7f1c3b32cfe3494","$130",56,56,11,"    return json.dumps({\"touched\": True})"],["EVD-e83b3e6d2be024d1","$130",38,38,36,"def describe_connection(connection: Connection) -> str:"],["EVD-e9e79ea20588086a","$130",54,54,4,"    vacuum(connection)"],["EVD-e9edfb25cbfd620e","$130",47,47,28,"        running = running + entry.total()"],["EVD-ea5b17eeeff85142","$132",64,69,4,"    def to_dict(self) -> LinePayload:"],["EVD-eab6da8b941792d8","$138",16,16,20,"class OrderDocument(TypedDict):"],["$23","$134",1,1,0,"# Archkeel"],["EVD-ec0fe67b9d443379","$138",25,25,42,"$4"],["EVD-ecb3fa6409a4f536","$132",9,9,0,"from typing import Any, TypedDict"],["EVD-ed97a6a2fb111212","$132",38,39,4,"    def __mul__(self, quantity: int) -> Money:"],["EVD-ee82deca49a4108a","$140",23,23,4,"    path: Path"],["EVD-f078d148224faf28","$129",11,15,0,"def run_maintenance(connection: Connection) -> None:"],["EVD-f1226c002ac8e910","$132",104,104,4,"    from shop.render.text import render_order"],["EVD-f1c0bc85b0d48c3d","$136",21,21,42,"    partial.write_text(document, encoding=ENCODING)"],["EVD-f27121e1f6d02df3","$140",26,26,23,"def vacuum(connection: Connection) -> None:"],["EVD-f2bfade629ac6c27","$130",45,45,4,"    running = Money(0)"],["EVD-f306204066b62b9f","$132",72,77,4,"    def from_dict(cls, payload: LinePayload) -> Line:"],["EVD-f3e29659f2dc7586","$140",11,11,0,"from shop.store.codec import DOCUMENT_VERSION"],["EVD-f3f52b225cef14ab","$140",21,21,1,"$7"],["EVD-f444c1f0eee27cf5","$137",8,8,0,"from pathlib import Path"],["EVD-f4d31d51ea3e1e42","$132",17,17,4,"    description: str"],["EVD-f4f642647debf00c","$132",58,58,4,"    quantity: int"],["EVD-f672877e67023ac8","$131",6,6,0,"$58"],["EVD-f85359de8c6bd244","$132",29,29,1,"$7"],["EVD-f909718e9306b98c","$138",30,30,4,"    parsed: OrderDocument = json.loads(document)"],["EVD-fa6cb5c40a082fdf","$131",20,20,22,"        print(_indent(render_order(order)))"],["EVD-fa8c205ff506dc45","$130",29,29,4,"    order = Order(order_id=order_id, lines=(line,))"],["EVD-fae74776900ba6db","$132",39,39,15,"        return Money(self.cents * quantity)"],["$24","shop/app/analytics.py",1,1,0,"# Archkeel"],["EVD-fd291905059136db","$132",14,19,0,"class LinePayload(TypedDict):"],["EVD-fea07ce4a284c109","$130",55,55,4,"$6"],["EVD-ff0be735b599b3f5","$134",19,19,35,"    lines.append(_indent(f\"Total: {order.total()}\"))"],["EVD-ff37584f7568475b","$130",38,40,0,"def describe_connection(connection: Connection) -> str:"],["EVD-ff9b0bda3a211da3","$138",9,9,0,"from typing import TypedDict"]],"imports":[["IMP-083a31b274e19e3b","FACT","$52","import","Import shop.render.text._indent",["$77","$99"],["EVD-7f51fedbd4d4c267"],[],[],[],["_indent",false,"$100",false,["$100"],0,true,false,"$77","shop.cli","_indent","private",true,"$99","$98",false]],["IMP-118653f1d73aa79a","FACT","$52","import","Import pathlib.Path",["pathlib","$111"],["EVD-f444c1f0eee27cf5"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$111","$102","Path","$65",true,"pathlib","pathlib",false]],["IMP-175766972975805a","FACT","$52","import","Import shop.store.OrderRepository",["$72","$102"],["EVD-10cf5746810ab6e1"],[],[],[],["OrderRepository",false,"$121",false,["shop.store.OrderRepository","$121"],0,true,false,"$72","shop.app","OrderRepository","$65",true,"$102","$102",false]],["IMP-18a47927dc0ad8a6","FACT","$52","import","Import shop.store.repository.OrderRepository",["$120","$126"],["EVD-83c45d4c2b6fde29"],[],[],[],["OrderRepository",false,"$121",false,["$121"],0,true,false,"$126","$102","OrderRepository","$65",true,"$120","$102",false]],["IMP-1c796543547f675f","FACT","$52","import","$25",["__future__","$115"],["EVD-d8fca82a3f584f5a"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$115","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-23c9e519498e5800","FACT","$52","import","Import shop.store.codec.DOCUMENT_VERSION",["$115","$126"],["EVD-f3e29659f2dc7586"],[],[],[],["DOCUMENT_VERSION",false,"$116",false,["$116"],0,true,false,"$126","$102","DOCUMENT_VERSION","$65",true,"$115","$102",false]],["IMP-272d211158330912","FACT","$52","import","$25",["__future__","$111"],["EVD-a83b2490ca0443b4"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$111","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-2dc76c96a33ea0db","FACT","$52","import","Import shop.store.sqlite.Connection",["$70","$126"],["EVD-54b158ca4efa9858"],[],[],[],["Connection",false,"$127",false,["$127"],0,true,false,"$70","shop.app","Connection","$65",true,"$126","$102",false]],["IMP-305a41ae5114082e","FACT","$52","import","Import pathlib.Path",["pathlib","$120"],["EVD-2dadf764d14fd20f"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$120","$102","Path","$65",true,"pathlib","pathlib",false]],["IMP-35c1c35b56f8cf07","FACT","$52","import","Import shop.store.sqlite.vacuum",["$70","$126"],["EVD-54b158ca4efa9858"],[],[],[],["vacuum",false,"$128",false,["$128"],0,true,false,"$70","shop.app","vacuum","$65",true,"$126","$102",false]],["IMP-391e8de5f075e214","FACT","$52","import","Import json",["json","$115"],["EVD-cb9ee39184d05841"],[],[],[],["json",false,null,false,[],0,true,false,"$115","$102",null,null,true,"json","json",false]],["IMP-3d75fa5a51f876c0","FACT","$52","import","Import shop.model.entities.Money",["$81","$120"],["EVD-7c110b28a0df0f5f"],[],[],[],["Money",false,"$89",false,["$89"],0,true,false,"$120","$102","Money","$65",true,"$81","$80",false]],["IMP-3e49b5e4df6c2de9","FACT","$52","import","Import shop.render.text.render_order",["$81","$99"],["EVD-f1226c002ac8e910"],[],[],[],["render_order",false,"$101",false,["$101"],0,false,false,"$81","$80","render_order","$65",true,"$99","$98",false]],["IMP-40dc47b4a52f3f04","FACT","$52","import","$25",["__future__","$104"],["EVD-cc70494be6f8b1f8"],[],[],[],["annotations",false,"$43",true,["$43"],0,true,false,"$104","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-40f3251c3cdf4033","FACT","$52","import","Import shop.model.entities.Order",["$72","$81"],["EVD-d489e429536aba44"],[],[],[],["Order",false,"$91",false,["$91"],0,true,false,"$72","shop.app","Order","$65",true,"$81","$80",false]],["IMP-41f62d4d879417db","FACT","$52","import","Import shop.store.backend.files.discard_document",["$104","$105"],["EVD-34ef3407cb9a05ed"],[],[],[],["discard_document",true,"$107",true,["$107"],0,true,true,"$104","$102","discard_document","$65",true,"$105","$102",false]],["IMP-433582f82cd7fab1","FACT","$52","import","Import shop.model.entities.OrderPayload",["$81","$115"],["EVD-0f6ca1ef6fa8044a"],[],[],[],["OrderPayload",false,"$95",false,["$95"],0,true,false,"$115","$102","OrderPayload","$65",true,"$81","$80",false]],["IMP-473c4a77ed8bfb9f","FACT","$52","import","Import shop.store.sqlite.vacuum",["$72","$126"],["EVD-916cd067bc980bff"],[],[],[],["vacuum",false,"$128",false,["$128"],0,true,false,"$72","shop.app","vacuum","$65",true,"$126","$102",false]],["IMP-4b0aa8afde47d300","FACT","$52","import","Import shop.store.backend.paths.order_path",["$104","$111"],["EVD-44e79b72ed075656"],[],[],[],["order_path",true,"$113",true,["$113"],0,true,true,"$104","$102","order_path","$65",true,"$111","$102",false]],["IMP-4cca38f12987f98a","FACT","$52","import","Import shop.model.entities.Order",["$81","$120"],["EVD-7c110b28a0df0f5f"],[],[],[],["Order",false,"$91",false,["$91"],0,true,false,"$120","$102","Order","$65",true,"$81","$80",false]],["IMP-575d08da83476067","FACT","$52","import","Import shop_analytics.track",["$69","shop_analytics"],["EVD-d24cc6115c7c0933"],[],[],[],["track",false,"shop_analytics.track",false,["shop_analytics.track"],0,true,false,"$69","shop.app","track","$65",true,"shop_analytics","shop_analytics",false]],["IMP-5a2b25620654ab1f","FACT","$52","import","Import json",["json","$72"],["EVD-933bbeffbe7cc2f8"],[],[],[],["json",false,null,false,[],0,true,false,"$72","shop.app",null,null,true,"json","json",false]],["IMP-5f3a2916e5c4b873","FACT","$52","import","Import shop.model.entities.Order",["$81","$99"],["EVD-c991daacc9de08d7"],[],[],[],["Order",false,"$91",false,["$91"],0,true,false,"$99","$98","Order","$65",true,"$81","$80",false]],["IMP-5f69fd090c6fbedd","FACT","$52","import","Import shop.model.entities.Order",["$81","$115"],["EVD-0f6ca1ef6fa8044a"],[],[],[],["Order",false,"$91",false,["$91"],0,true,false,"$115","$102","Order","$65",true,"$81","$80",false]],["IMP-63c0469e54d3aaee","FACT","$52","import","Import typing.Any",["$81","typing"],["EVD-ecb3fa6409a4f536"],[],[],[],["Any",false,"typing.Any",false,["typing.Any"],0,false,false,"$81","$80","Any","$65",true,"typing","typing",false]],["IMP-6ad83ea777b33c5f","FACT","$52","import","Import shop.render.text.render_order",["$77","$99"],["EVD-7f51fedbd4d4c267"],[],[],[],["render_order",false,"$101",false,["$101"],0,true,false,"$77","shop.cli","render_order","$65",true,"$99","$98",false]],["IMP-74924e8f5c7757f4","FACT","$52","import","$25",["__future__","$81"],["EVD-dc0a3a7501ee19b1"],[],[],[],["annotations",false,"$43",false,["$43"],0,false,false,"$81","$80","annotations","$65",true,"__future__","__future__",false]],["IMP-7557dc2b068fbad5","FACT","$52","import","Import shop.store.backend.files.write_document",["$104","$105"],["EVD-34ef3407cb9a05ed"],[],[],[],["write_document",true,"$109",true,["$109"],0,true,true,"$104","$102","write_document","$65",true,"$105","$102",false]],["IMP-87894cd70d035bc3","FACT","$52","import","Import typing.TypedDict",["$115","typing"],["EVD-ff9b0bda3a211da3"],[],[],[],["TypedDict",false,"typing.TypedDict",false,["typing.TypedDict"],0,true,false,"$115","$102","TypedDict","$65",true,"typing","typing",false]],["IMP-8bbf941e901f7f4a","FACT","$52","import","Import dataclasses.dataclass",["dataclasses","$126"],["EVD-4e97525dc3f2aafe"],[],[],[],["dataclass",false,"$50",false,["$50"],0,true,false,"$126","$102","dataclass","$65",true,"dataclasses","dataclasses",false]],["IMP-8cb1beabb96ccce3","FACT","$52","import","$25",["__future__","$70"],["EVD-a96161054ab910f0"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$70","shop.app","annotations","$65",true,"__future__","__future__",false]],["IMP-962198a948c076ad","FACT","$52","import","Import typing.TypedDict",["$81","typing"],["EVD-ecb3fa6409a4f536"],[],[],[],["TypedDict",false,"typing.TypedDict",false,["typing.TypedDict"],0,false,false,"$81","$80","TypedDict","$65",true,"typing","typing",false]],["IMP-a43851fde0771792","FACT","$52","import","Import pathlib.Path",["pathlib","$77"],["EVD-ca13d9862b9b81f7"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$77","shop.cli","Path","$65",true,"pathlib","pathlib",false]],["IMP-a6f48b1a01a28dc6","FACT","$52","import","$25",["__future__","$102"],["EVD-40830476b83d35c2"],[],[],[],["annotations",false,"$43",true,["$43"],0,true,false,"$102","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-a84fd48911442825","FACT","$52","import","Import shop.store.backend.paths.order_paths",["$104","$111"],["EVD-44e79b72ed075656"],[],[],[],["order_paths",true,"$114",true,["$114"],0,true,true,"$104","$102","order_paths","$65",true,"$111","$102",false]],["IMP-ac184bc3f4c77a42","FACT","$52","import","$25",["__future__","$126"],["EVD-37c486563c79e998"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$126","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-ad16355c2c297ad5","FACT","$52","import","Import json",["json","$120"],["EVD-afb590cbb7cf5954"],[],[],[],["json",false,null,false,[],0,true,false,"$120","$102",null,null,true,"json","json",false]],["IMP-b3d2ef7c426c42f0","FACT","$52","import","Import dataclasses.dataclass",["dataclasses","$81"],["EVD-6fbd36d2c47c81f8"],[],[],[],["dataclass",false,"$50",false,["$50"],0,false,false,"$81","$80","dataclass","$65",true,"dataclasses","dataclasses",false]],["IMP-b6b0e3c086bad72f","FACT","$52","import","Import shop.store.backend.files.read_document",["$104","$105"],["EVD-34ef3407cb9a05ed"],[],[],[],["read_document",true,"$108",true,["$108"],0,true,true,"$104","$102","read_document","$65",true,"$105","$102",false]],["IMP-bb9d8a3370056876","FACT","$52","import","$25",["__future__","$69"],["EVD-aa42e2e6fde23465"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$69","shop.app","annotations","$65",true,"__future__","__future__",false]],["IMP-bd06e8b32b124cc0","FACT","$52","import","$25",["__future__","$120"],["EVD-a81ad4dfc4432e68"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$120","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-bdc3c1214b95ab15","FACT","$52","import","$25",["__future__","$99"],["EVD-c44d78e7201ad264"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$99","$98","annotations","$65",true,"__future__","__future__",false]],["IMP-c0bf18fb78cbe14c","FACT","$52","import","Import shop.store.repository.OrderRepository",["$102","$120"],["EVD-9f8966569f535072"],[],[],[],["OrderRepository",true,"$121",true,["$121"],0,true,false,"$102","$102","OrderRepository","$65",true,"$120","$102",false]],["IMP-c14d352eb623ce98","FACT","$52","import","Import shop.app.orders.place_order",["$72","$77"],["EVD-8b4173ee45cd16b0"],[],[],[],["place_order",false,"$73",false,["$73"],0,true,false,"$77","shop.cli","place_order","$65",true,"$72","shop.app",false]],["IMP-c8cab74d29acd7b0","FACT","$52","import","Import shop.model.entities.Money",["$72","$81"],["EVD-d489e429536aba44"],[],[],[],["Money",false,"$89",false,["$89"],0,true,false,"$72","shop.app","Money","$65",true,"$81","$80",false]],["IMP-cad3239b0443530a","FACT","$52","import","$25",["__future__","$72"],["EVD-38710e4b9bb44644"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$72","shop.app","annotations","$65",true,"__future__","__future__",false]],["IMP-cd7dff34899a7b5e","FACT","$52","import","Import shop.store.backend.files.write_payload",["$72","$105"],["EVD-34c41dc2c564cbc0"],[],[],[],["write_payload",false,"$110",false,["$110"],0,true,false,"$72","shop.app","write_payload","$65",true,"$105","$102",false]],["IMP-d693df8ff707ad85","FACT","$52","import","Import typing.TYPE_CHECKING",["$72","typing"],["EVD-6b83b252a5bc0591"],[],[],[],["TYPE_CHECKING",false,"typing.TYPE_CHECKING",false,["typing.TYPE_CHECKING"],0,true,false,"$72","shop.app","TYPE_CHECKING","$65",true,"typing","typing",false]],["IMP-db6837579c9cc11d","FACT","$52","import","Import shop.model.entities.Line",["$72","$81"],["EVD-d489e429536aba44"],[],[],[],["Line",false,"$84",false,["$84"],0,true,false,"$72","shop.app","Line","$65",true,"$81","$80",false]],["IMP-debb9db6ab22f4c1","FACT","$52","import","Import shop.store.repository.OrderRepository",["$99","$120"],["EVD-02ef59d572150708"],[],[],[],["OrderRepository",false,"$121",false,["$121"],0,true,false,"$99","$98","OrderRepository","$65",true,"$120","$102",false]],["IMP-e02d0115bcc4fb2a","FACT","$52","import","$25",["__future__","$77"],["EVD-f672877e67023ac8"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$77","shop.cli","annotations","$65",true,"__future__","__future__",false]],["IMP-e789517923ecf34f","FACT","$52","import","Import pathlib.Path",["pathlib","$72"],["EVD-36d7c34b4c900849"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$72","shop.app","Path","$65",true,"pathlib","pathlib",false]],["IMP-e792ec1e804cd973","FACT","$52","import","Import pathlib.Path",["pathlib","$105"],["EVD-6fe2461604a4723c"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$105","$102","Path","$65",true,"pathlib","pathlib",false]],["IMP-ecdb754a28b0d18e","FACT","$52","import","Import shop.store.sqlite.Connection",["$72","$126"],["EVD-bf9e0019784f09c3"],[],[],[],["Connection",false,"$127",false,["$127"],0,false,false,"$72","shop.app","Connection","$65",true,"$126","$102",true]],["IMP-ed14c6a2455d687a","FACT","$52","import","Import dataclasses.dataclass",["dataclasses","$97"],["EVD-4e02780282f33f57"],[],[],[],["dataclass",false,"$50",false,["$50"],0,true,false,"$97","$80","dataclass","$65",true,"dataclasses","dataclasses",false]],["IMP-f2339e702a50c2ea","FACT","$52","import","Import pathlib.Path",["pathlib","$126"],["EVD-0bf559167b8b8e33"],[],[],[],["Path",false,"pathlib.Path",false,["pathlib.Path"],0,true,false,"$126","$102","Path","$65",true,"pathlib","pathlib",false]],["IMP-f2b498db61934d9b","FACT","$52","import","$25",["__future__","$97"],["EVD-19121682bae0b9d0"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$97","$80","annotations","$65",true,"__future__","__future__",false]],["IMP-f4e5d009557d854f","FACT","$52","import","$25",["__future__","$105"],["EVD-cdb32424562c421b"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"$105","$102","annotations","$65",true,"__future__","__future__",false]],["IMP-f97a4c99e893014b","FACT","$52","import","$25",["__future__","shop.extra"],["EVD-bfc7d4edc9c0521f"],[],[],[],["annotations",false,"$43",false,["$43"],0,true,false,"shop.extra","shop.extra","annotations","$65",true,"__future__","__future__",false]]],"metrics":[["METRIC-0477b10f3aa518a5","FACT","overview","interface_surface","Interface surface",[],[],[],["IMP-083a31b274e19e3b","IMP-175766972975805a","IMP-2dc76c96a33ea0db","IMP-35c1c35b56f8cf07","IMP-3d75fa5a51f876c0","IMP-3e49b5e4df6c2de9","IMP-40f3251c3cdf4033","IMP-433582f82cd7fab1","IMP-473c4a77ed8bfb9f","IMP-4cca38f12987f98a","IMP-5f3a2916e5c4b873","IMP-5f69fd090c6fbedd","IMP-6ad83ea777b33c5f","IMP-c14d352eb623ce98","IMP-c8cab74d29acd7b0","IMP-cd7dff34899a7b5e","IMP-db6837579c9cc11d","IMP-debb9db6ab22f4c1","IMP-ecdb754a28b0d18e"],[],["api",12]],["METRIC-115ac1d218349491","FACT","overview","forbidden_package_edges","Forbidden package edges",[],[],[],["EDGE-0487f23fb5e5ad9b","EDGE-0e93deca9aac4934","EDGE-40faba752ec25c2f","EDGE-44e5e21202c4fd6a"],[],["violations",4]],["METRIC-130e9ec98394803f","FACT","overview","private_crossings","Confirmed private symbol crossings",[],[],[],["IMP-083a31b274e19e3b"],[],["api",1]],["METRIC-1ea50a8caf608504","FACT","overview","symbols","Symbols",[],[],[],["SYM-01d2c4dfc342d97f","SYM-094cb8a1abb8f245","SYM-0f98fb6f9a3c1a88","SYM-1268d346aa3386e0","SYM-18bee5539032465a","SYM-1d32533c0809c896","SYM-213a7c362a680705","SYM-25e035a8f02b4217","SYM-298e67e4c53f7de6","SYM-306fffdb8811c478","SYM-31c700c61943c8dd","SYM-36a5d01ebce41e85","SYM-3ddc33e5a1bedfc4","SYM-421012b9fa5f6934","SYM-4698877829fcbfae","SYM-4a3056a24f24fc42","SYM-521e10b69216a628","SYM-5e29728aec775442","SYM-60279f4bb5cd1210","SYM-617dbdf906017b98","SYM-6a63f092c3802257","SYM-6a6e23a6aabf9211","SYM-785f9f9b17ce8f3c","SYM-8168d5a416701615","SYM-891b0ba59ee7a735","SYM-90f642452a6da34f","SYM-912783379834f463","SYM-932fa235d99a9bda","SYM-9961cb1a552ff2e5","SYM-99fd7d77b712d934","SYM-a3e7c6567ab50c7e","SYM-b183fc3dea9441aa","SYM-bda0003a70761e61","SYM-bdbad6c793f01a7e","SYM-c24e1dc0171bbef6","SYM-c3c8459b52d998ed","SYM-c6dc50ed43219b97","SYM-c9078666ab3d0e2d","$42","SYM-d6b5211949bba403","SYM-d7ec7cb6e603d304","SYM-df3994eb36957022","SYM-ebdd1de485e05bb4","SYM-f3293ef7f8441e4a","SYM-f4f91ac449914582","SYM-f6298b4c05a2e5ef","SYM-f7d39b41d9b7b9a7","SYM-fc0ffcc0cfbbe672"],[],["components",48]],["METRIC-45b586bf31456c32","FACT","overview","violating_import_sites","Violating import sites",[],[],[],["CONSTRUCT-8d1b5817682a6635","CONSTRUCT-99a6abb44d9ad578","IMP-083a31b274e19e3b","IMP-18a47927dc0ad8a6","IMP-23c9e519498e5800","IMP-3d75fa5a51f876c0","IMP-3e49b5e4df6c2de9","IMP-433582f82cd7fab1","IMP-473c4a77ed8bfb9f","IMP-4cca38f12987f98a","IMP-575d08da83476067","IMP-5a2b25620654ab1f","IMP-5f3a2916e5c4b873","IMP-5f69fd090c6fbedd","IMP-cd7dff34899a7b5e","IMP-debb9db6ab22f4c1","$39","RULE-EVALUATION-7944a48027340ef1","$42","SYM-fc0ffcc0cfbbe672","TYPE-191b7852099fd052","TYPE-391e2662a38041ef","TYPE-8507ce48f97476db"],[],["violations",5]],["METRIC-5610c365b3e34d3d","FACT","overview","typing_signals","Typing & dynamic signals",[],[],[],["TYPE-015b7201a76c8d64","TYPE-191b7852099fd052","TYPE-2a7e3659392ad052","TYPE-391e2662a38041ef","TYPE-8507ce48f97476db"],[],["types",5]],["METRIC-58f9e6977954a47e","FACT","overview","module_cycles","Module cycles",[],[],[],["SCC-c7ffa9850e79a92f"],[],["cycles",1]],["METRIC-5e1b38214272f111","FACT","overview","untyped_private_accesses","Private attribute accesses through untyped or Any parameters",[],[],[],[],[],["api",0]],["METRIC-9a8bf9ba32aac4c3","FACT","overview","ast_coverage","AST coverage",[],[],[],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["coverage","100.0%"]],["METRIC-a4770d56d0e45bc8","FACT","overview","affected_violation_modules","Affected source modules",[],[],[],["$30","$34","$36","$37"],[],["violations",4]],["METRIC-af8a12e31cd6b969","FACT","overview","package_cycles","Package cycles",[],[],[],["SCC-574674bb43a8af47"],[],["cycles",1]],["METRIC-b28b1ed9821f38c6","FACT","overview","packages","Packages",[],[],[],["PKG-40ff2c6a28c6b584","PKG-8b1cb6422b713e24","PKG-9b03abc666a221d0","PKG-9fabb79a6f08c53a","PKG-e29c48d3f6746114","PKG-e385c617d48de32a"],[],["package",6]],["METRIC-b2983be8c3741e5b","FACT","overview","source_files","Source files",[],[],[],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["coverage",15]],["METRIC-b5246b04f97b5e43","FACT","overview","call_resolution","Uniquely resolved calls",[],[],[],["CALL-006262171223863b","CALL-02271a36643b96fe","CALL-083cd161b4d9cc59","CALL-0d2a65daf7928f17","CALL-0f0bea085f464a7c","CALL-122aa62cfc7f4a30","CALL-182446c0a2215637","CALL-19731f56d565ebfd","CALL-29cdc941c5203031","CALL-2a15a4f5a8d405a7","CALL-2b8f5b54e2d2e5a9","CALL-2c6c25b9c187bda9","CALL-2fd178184f98e383","CALL-3b59994b4a20e51a","CALL-3c3269ff08cc35f7","CALL-44d00f3387c412c0","CALL-46bd5eb5b49d27e1","CALL-4ba2fb087ae069a0","CALL-52b33341b0778d6f","CALL-58979723230d5dcc","CALL-5b271a7598be8a77","CALL-5d289aab81c5452a","CALL-60268c2697676a78","CALL-68e1674deaeb3f9a","CALL-6d94b3b30296660a","CALL-774968716cebe60c","CALL-8a2164637032071c","CALL-8ad11b4451bae8d5","CALL-950601a4b9bdbd2a","CALL-9700514d6d578c96","CALL-9f929c3d1438ad13","CALL-9ff4d9a1d24d8931","CALL-a06e0f01bde1adb7","CALL-a32bec56f5cf1b11","CALL-a3ec830af6affd62","CALL-a49a3c573401ecdc","CALL-a6e5be3edf13da37","CALL-a6e98ad377213520","CALL-a6f4bb8c3d1e91c0","CALL-aa02536daf8969dd","CALL-b305ac485ec68f7b","CALL-b74028edbb6ba560","CALL-cab91b8ca458b766","CALL-cc72be80a115c456","CALL-cf9751630041b4df","CALL-d457d640022875d5","CALL-d821b880d4863ce7","CALL-f2897f43663b6317","CALL-f7a3dec1d1b6c4a4","CALL-f98677b40a79bf1b","CALL-ff31d6af7d88ebe7"],[],["calls","68.0%"]],["METRIC-c6ba710e0c094515","FACT","overview","violations","Contract violations",[],[],[],["CONSTRUCT-8d1b5817682a6635","CONSTRUCT-99a6abb44d9ad578","IMP-083a31b274e19e3b","IMP-18a47927dc0ad8a6","IMP-23c9e519498e5800","IMP-3d75fa5a51f876c0","IMP-3e49b5e4df6c2de9","IMP-433582f82cd7fab1","IMP-473c4a77ed8bfb9f","IMP-4cca38f12987f98a","IMP-575d08da83476067","IMP-5a2b25620654ab1f","IMP-5f3a2916e5c4b873","IMP-5f69fd090c6fbedd","IMP-cd7dff34899a7b5e","IMP-debb9db6ab22f4c1","$39","RULE-EVALUATION-7944a48027340ef1","$42","SYM-fc0ffcc0cfbbe672","TYPE-191b7852099fd052","TYPE-391e2662a38041ef","TYPE-8507ce48f97476db"],[],["violations",21]],["METRIC-cd26a4b22ffceb0b","FACT","overview","unresolved_calls","Unresolved calls",[],[],[],["CALL-0d04ff0f21b777ab","CALL-1bb0e2bc7621f8fd","CALL-1c953772015daea2","CALL-2833befbe38b01b4","CALL-44b0d1cef5b5caa3","CALL-5529103c04c7bddc","CALL-646cd7f6358d5f8d","CALL-8ecb018bae4f6277","CALL-cdc0f88188468209","CALL-cfda7b21bdd2cca0","CALL-e2848369a7d515b3","CALL-e6dbaf47acf6b6af"],[],["calls",12]],["METRIC-f96ad8a9b8498c26","FACT","overview","rollup_only_package_cycles","Package cycles no module cycle crosses",[],[],[],[],[],["cycles",0]],["METRIC-fbc6c1d4c3b6db8f","FACT","overview","modules","Modules",[],[],[],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["module",15]]],"modules":[["$26","FACT","$61","module","$111",["$102","$111"],["$21"],[],[],[],[[],false,false,1,0,"$137","$102","$111",1,3]],["$27","FACT","$61","module","$105",["$102","$105"],["$14"],[],[],[],[[],false,false,2,0,"$136","$102","$105",2,4]],["$28","FACT","$61","module","$126",["$102","$126"],["$17"],[],[],[],[[],false,false,2,2,"$140","$102","$126",2,2]],["$29","FACT","$61","module","$77",["shop.cli","$77"],["$18"],[],[],[],[[],false,false,0,2,"$131","shop.cli","$77",0,1]],["$30","FACT","$61","module","$72",["shop.app","$72"],["$22"],[],[],[],[[],false,false,1,4,"$130","shop.app","$72",1,5]],["$31","FACT","$61","module","$102",["$102","$102"],["$12"],[],[],[],[["OrderRepository"],true,true,1,1,"shop/store/__init__.py","$102","$102",2,0]],["$32","FACT","$61","module","$115",["$102","$115"],["$13"],[],[],[],[[],false,false,1,1,"$138","$102","$115",3,4]],["$33","FACT","$61","module","$70",["shop.app","$70"],["$16"],[],[],[],[[],false,false,0,1,"$129","shop.app","$70",0,1]],["$34","FACT","$61","module","$81",["$80","$81"],["$20"],[],[],[],[["Line","LinePayload","Money","Order","OrderPayload"],true,false,4,1,"$132","$80","$81",4,17]],["$35","FACT","$61","module","$69",["shop.app","$69"],["$24"],[],[],[],[[],false,false,0,0,"shop/app/analytics.py","shop.app","$69",0,1]],["$36","FACT","$61","module","$120",["$102","$120"],["$10"],[],[],[],[[],false,false,3,1,"$139","$102","$120",4,6]],["$37","FACT","$61","module","$99",["$98","$99"],["$23"],[],[],[],[[],false,false,2,2,"$134","$98","$99",4,2]],["$38","FACT","$61","module","$104",["$102","$104"],["$11"],[],[],[],[["discard_document","order_path","order_paths","read_document","write_document"],true,true,0,2,"$135","$102","$104",0,0]],["$39","FACT","$61","module","shop.extra",["shop.extra","shop.extra"],["$15"],[],[],[],[[],false,false,0,0,"shop/extra.py","shop.extra","shop.extra",0,1]],["$40","FACT","$61","module","$97",["$80","$97"],["$19"],[],[],[],[[],false,false,0,0,"$133","$80","$97",0,1]]],"packages":[["PKG-40ff2c6a28c6b584","FACT","$62","package","$98",["$98"],[],[],["$37"],[],[["$80","$102"],2,2,1,"$98",2]],["PKG-8b1cb6422b713e24","FACT","$62","package","shop.app",["shop.app"],[],[],["$30","$33","$35"],[],[["$80","$102"],1,2,3,"shop.app",1]],["PKG-9b03abc666a221d0","FACT","$62","package","$102",["$102"],[],[],["$26","$27","$28","$31","$32","$36","$38"],[],[["$80"],2,1,7,"$102",2]],["PKG-9fabb79a6f08c53a","FACT","$62","package","shop.cli",["shop.cli"],[],[],["$29"],[],[["shop.app","$98"],0,2,1,"shop.cli",0]],["PKG-e29c48d3f6746114","FACT","$62","package","shop.extra",["shop.extra"],[],[],["$39"],[],[[],0,0,1,"shop.extra",0]],["PKG-e385c617d48de32a","FACT","$62","package","$80",["$80"],[],[],["$34","$40"],[],[["$98"],3,1,2,"$80",2]]],"path_observations":[["UNKNOWN-PATH-1fc4669d2fe17fa6","UNKNOWN","read_write_paths","path_segment_not_statically_observed","shop.store → shop.model.entities lacks direct static import evidence",["$81","$102"],[],["PATH-SHOP-PLACE-ORDER"],[],[],["PATH-SHOP-PLACE-ORDER","$41","$102","UNKNOWN","$81"]],["UNKNOWN-PATH-691aca3e6620bb4f","UNKNOWN","read_write_paths","path_segment_not_statically_observed","shop.app.orders → shop.store lacks direct static import evidence",["$72","$102"],[],["PATH-SHOP-PLACE-ORDER"],[],[],["PATH-SHOP-PLACE-ORDER","$41","$72","UNKNOWN","$102"]],["UNKNOWN-PATH-8135df7987d7fc62","UNKNOWN","read_write_paths","path_segment_not_statically_observed","shop.cli.main → shop.app.orders lacks direct static import evidence",["$72","$77"],[],["PATH-SHOP-PLACE-ORDER"],[],[],["PATH-SHOP-PLACE-ORDER","$41","$77","UNKNOWN","$72"]]],"python_version":"3.11.12","references":[["REF-0a9ccf24a3169afa","FACT","$46","$142","Reference Money",["$72","$89"],["EVD-67c538aa93e91c71"],[],[],[],["SYM-df3994eb36957022","$75","Money","$30","$72","$72","resolved",["$89"],"value"]],["REF-0b1cf7937b1f6b9b","FACT","$46","$142","Reference Money",["$72","$89"],["EVD-4d4d7a906ee84119"],[],[],[],["SYM-d7ec7cb6e603d304","$74","Money","$30","$72","$72","resolved",["$89"],"value"]],["REF-1bfda9f551c3a61b","FACT","$46","$142","Reference OrderPayload",["$95","$117"],["EVD-8774c54c206b3af2"],[],[],[],["$m","$m","OrderPayload","SYM-ebdd1de485e05bb4","$115","$117","resolved",["$95"],"value"]],["REF-1ca870ea02ec3df7","FACT","$46","$142","Reference LinePayload",["$84","$88"],["EVD-3b29e5a0919fffbd"],[],[],[],["SYM-4698877829fcbfae","$86","LinePayload","SYM-f4f91ac449914582","$81","$84","resolved",["$88"],"value"]],["REF-2140049d06be9e38","FACT","$46","$142","Reference Connection",["$126","$127"],["EVD-f27121e1f6d02df3"],[],[],[],["SYM-932fa235d99a9bda","$128","Connection","$28","$126","$126","resolved",["$127"],"value"]],["REF-2845a79b997f3eb3","FACT","$46","$142","Reference ENCODING",["$106","$109"],["EVD-f1c0bc85b0d48c3d"],[],[],[],["$m","$m","ENCODING","SYM-3ddc33e5a1bedfc4","$105","$109","resolved",["$106"],"value"]],["REF-28f92e5024233324","FACT","$46","$142","Reference DOCUMENT_SUFFIX",["$112","$114"],["EVD-b294cd3ee3c7c698"],[],[],[],["$m","$m","DOCUMENT_SUFFIX","SYM-5e29728aec775442","$111","$114","resolved",["$112"],"value"]],["REF-2b55a2aa682d4dcc","FACT","$46","$142","Reference Connection",["$70","$127"],["EVD-38891c635c506c91"],[],[],[],["SYM-617dbdf906017b98","$71","Connection","$33","$70","$70","resolved",["$127"],"value"]],["REF-305bb7d1824c48c7","FACT","$46","$142","Reference Line",["$84","$84"],["EVD-9e74ddf8aa380382"],[],[],[],["SYM-421012b9fa5f6934","$85","Line","SYM-f4f91ac449914582","$81","$84","resolved",["$84"],"value"]],["REF-3867f271aad4cd82","FACT","$46","$142","Reference Money",["$84","$89"],["EVD-96ecc1244386d2d9"],[],[],[],["$m","$m","Money","SYM-f4f91ac449914582","$81","$84","resolved",["$89"],"value"]],["REF-40360df9054461e6","FACT","$46","$142","Reference Order",["$91","$99"],["EVD-6cd401a8c2aaf59e"],[],[],[],["SYM-c3c8459b52d998ed","$101","Order","$37","$99","$99","resolved",["$91"],"value"]],["REF-43f7d894300ffef6","FACT","$46","$142","Reference DOCUMENT_SUFFIX",["$112","$113"],["EVD-71716ad6c2134d34"],[],[],[],["$m","$m","DOCUMENT_SUFFIX","SYM-912783379834f463","$111","$113","resolved",["$112"],"value"]],["REF-4b5b66a49e898e2e","FACT","$46","$142","Reference Money",["$89","$91"],["EVD-5c8241ce36e16819"],[],[],[],["SYM-306fffdb8811c478","$94","Money","SYM-31c700c61943c8dd","$81","$91","resolved",["$89"],"value"]],["REF-5bbb67dda517182c","FACT","$46","$142","Reference LinePayload",["$88","$95"],["EVD-54388728e808af06"],[],[],[],["$m","$m","LinePayload","SYM-a3e7c6567ab50c7e","$81","$95","resolved",["$88"],"value"]],["REF-62c5766dcd9edd1e","FACT","$46","$142","Reference Money",["$89","$89"],["EVD-653af1cabbbe417a"],[],[],[],["SYM-521e10b69216a628","$90","Money","SYM-6a6e23a6aabf9211","$81","$89","resolved",["$89"],"value"]],["REF-68f13a2f09b44a3c","FACT","$46","$142","Reference Order",["$81","$91"],["EVD-d978dd9423b5962f"],[],[],[],["SYM-8168d5a416701615","$96","Order","$34","$81","$81","resolved",["$91"],"value"]],["REF-7233f986b60ad68a","FACT","$46","$142","Reference Money",["$89","$89"],["EVD-3c3d843fb403333d"],[],[],[],["SYM-c24e1dc0171bbef6","shop.model.entities.Money.__mul__","Money","SYM-6a6e23a6aabf9211","$81","$89","resolved",["$89"],"value"]],["REF-75c729a6c7515cf2","FACT","$46","$142","Reference DOCUMENT_VERSION",["$116","$119"],["EVD-ec0fe67b9d443379"],[],[],[],["$m","$m","DOCUMENT_VERSION","SYM-c6dc50ed43219b97","$115","$119","resolved",["$116"],"value"]],["REF-76ff0be59add8b6d","FACT","$46","$142","Reference Order",["$72","$91"],["EVD-7e3d539aa88e21ec"],[],[],[],["$42","$73","Order","$30","$72","$72","resolved",["$91"],"value"]],["REF-7a8eeb0c25e9c774","FACT","$46","$142","Reference OrderPayload",["$91","$95"],["EVD-6f5a6a9e4fa47055"],[],[],[],["SYM-1268d346aa3386e0","$93","OrderPayload","SYM-31c700c61943c8dd","$81","$91","resolved",["$95"],"value"]],["REF-8f8c9e0a521ac5f1","FACT","$46","$142","Reference Money",["$89","$89"],["EVD-6df5566c06174695"],[],[],[],["SYM-521e10b69216a628","$90","Money","SYM-6a6e23a6aabf9211","$81","$89","resolved",["$89"],"value"]],["REF-92ff1366448818f0","FACT","$46","$142","Reference LinePayload",["$84","$88"],["EVD-da884023325e20c8"],[],[],[],["SYM-421012b9fa5f6934","$85","LinePayload","SYM-f4f91ac449914582","$81","$84","resolved",["$88"],"value"]],["REF-96e13773fee19bdc","FACT","$46","$142","Reference Connection",["$72","$127"],["EVD-e83b3e6d2be024d1"],[],[],[],["SYM-18bee5539032465a","shop.app.orders.describe_connection","Connection","$30","$72","$72","$63",["$127"],"value"]],["REF-a2b84866d98e06ee","FACT","$46","$142","Reference Order",["$72","$91"],["EVD-36e8e32424b77f56"],[],[],[],["SYM-d7ec7cb6e603d304","$74","Order","$30","$72","$72","resolved",["$91"],"value"]],["REF-a7382d364b9d7733","FACT","$46","$142","Reference OrderDocument",["$117","$119"],["EVD-aa01569e504bae6c"],[],[],[],["$m","$m","OrderDocument","SYM-c6dc50ed43219b97","$115","$119","resolved",["$117"],"value"]],["REF-b2dfecfd4123a062","FACT","$46","$142","Reference OrderDocument",["$117","$118"],["EVD-708c06c60b82f2a7"],[],[],[],["$m","$m","OrderDocument","SYM-094cb8a1abb8f245","$115","$118","resolved",["$117"],"value"]],["REF-b2ef9c4b6f2d63f4","FACT","$46","$142","Reference Money",["$82","$89"],["EVD-d80a75bcbfde3ec0"],[],[],[],["SYM-b183fc3dea9441aa","$83","Money","SYM-1d32533c0809c896","$81","$82","resolved",["$89"],"value"]],["REF-b4fa9a4d65c47f5a","FACT","$46","$142","Reference Order",["$91","$115"],["EVD-236abf80e8185e88"],[],[],[],["SYM-094cb8a1abb8f245","$118","Order","$32","$115","$115","resolved",["$91"],"value"]],["REF-ba23f70777e35599","FACT","$46","$142","Reference Line",["$84","$91"],["EVD-b40369c1d9f82ec1"],[],[],[],["$m","$m","Line","SYM-31c700c61943c8dd","$81","$91","resolved",["$84"],"value"]],["REF-d1a538704e91b6fa","FACT","$46","$142","Reference Order",["$91","$115"],["EVD-09134357b4a872f1"],[],[],[],["SYM-c6dc50ed43219b97","$119","Order","$32","$115","$115","resolved",["$91"],"value"]],["REF-d5dbbfe39031d74b","FACT","$46","$142","Reference DOCUMENT_VERSION",["$116","$126"],["EVD-2486f39689dfc04e"],[],[],[],["$m","$m","DOCUMENT_VERSION","$28","$126","$126","resolved",["$116"],"value"]],["REF-d64d78826654c0ac","FACT","$46","$142","Reference Order",["$91","$121"],["EVD-a3a49c5b48f5453d"],[],[],[],["SYM-60279f4bb5cd1210","$124","Order","SYM-d6b5211949bba403","$120","$121","resolved",["$91"],"value"]],["REF-e1ec7798aed9e237","FACT","$46","$142","Reference Money",["$89","$121"],["EVD-799654fdd384ac7c"],[],[],[],["SYM-f6298b4c05a2e5ef","$125","Money","SYM-d6b5211949bba403","$120","$121","resolved",["$89"],"value"]],["REF-eaef3313391645d6","FACT","$46","$142","Reference ENCODING",["$106","$108"],["EVD-8ee8ada66bf8fc10"],[],[],[],["$m","$m","ENCODING","SYM-0f98fb6f9a3c1a88","$105","$108","resolved",["$106"],"value"]],["REF-eb0c0e912d4392a2","FACT","$46","$142","Reference Money",["$82","$89"],["EVD-b2e814d241b4556d"],[],[],[],["SYM-b183fc3dea9441aa","$83","Money","SYM-1d32533c0809c896","$81","$82","resolved",["$89"],"value"]],["REF-eb421da07cdf2ed2","FACT","$46","$142","Reference DOCUMENT_VERSION",["$116","$118"],["EVD-05fd09bb70b1612d"],[],[],[],["$m","$m","DOCUMENT_VERSION","SYM-094cb8a1abb8f245","$115","$118","resolved",["$116"],"value"]],["REF-f0acc3c1106a6867","FACT","$46","$142","Reference OrderPayload",["$91","$95"],["EVD-4ae1cbcd504ea7e5"],[],[],[],["SYM-f3293ef7f8441e4a","$92","OrderPayload","SYM-31c700c61943c8dd","$81","$91","resolved",["$95"],"value"]],["REF-f2af591eb1c69994","FACT","$46","$142","Reference Order",["$91","$121"],["EVD-3958b4460046c913"],[],[],[],["SYM-c9078666ab3d0e2d","$123","Order","SYM-d6b5211949bba403","$120","$121","resolved",["$91"],"value"]],["REF-f7a398c7bdecd0f2","FACT","$46","$142","Reference Order",["$91","$91"],["EVD-39161d918b372be5"],[],[],[],["SYM-f3293ef7f8441e4a","$92","Order","SYM-31c700c61943c8dd","$81","$91","resolved",["$91"],"value"]],["REF-fc614f63b89e9ca0","FACT","$46","$142","Reference Money",["$84","$89"],["EVD-9f647874c3ddd340"],[],[],[],["SYM-213a7c362a680705","$87","Money","SYM-f4f91ac449914582","$81","$84","resolved",["$89"],"value"]]],"runtime":{"name":"python","required":">=3.11","version":"3.11.12"},"schema_version":"2.0.0","scope_observations":[["INSIDE-REQUIRES-EVALUATION-77bb2dbd9d0df98d","FACT","components","inside_rule_evaluation","store:STORE-REQUIRES-COMPLETE evaluated its scoped imports",["$115","$120","$126","$126"],["EVD-83c45d4c2b6fde29","EVD-f3e29659f2dc7586"],["store:STORE-REQUIRES-COMPLETE"],["IMP-18a47927dc0ad8a6","IMP-23c9e519498e5800"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","store","$m","$m","$m","$m","$m"]],["RULE-EVALUATION-02e2a16085f8541c","FACT","rules","$68","COMPONENT-NO-CYCLES evaluator completed",["app","cli","model","render","store"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["COMPONENT-NO-CYCLES"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m",["app","cli","model","render","store"],true,["app","cli","model","render","store"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-030e8a16319bfc7d","FACT","rules","$68","DEP-MODEL-NO-STORE evaluator completed",["$81","$97"],["$19","$20"],["DEP-MODEL-NO-STORE"],["$34","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-10e44d5c07cfd6de","FACT","rules","$68","MODEL-TYPES-IN-ENTITIES evaluator completed",["$81","$97"],["$19","$20"],["MODEL-TYPES-IN-ENTITIES"],["$34","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-191e7229f705ca78","FACT","rules","$68","DEP-APP-NO-STORE-SQLITE evaluator completed",["$69","$70","$72"],["$16","$22","$24"],["DEP-APP-NO-STORE-SQLITE"],["$30","$33","$35"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-20d98c1bb9193bb7","FACT","rules","$68","DEP-MODEL-NO-CLI evaluator completed",["$81","$97"],["$19","$20"],["DEP-MODEL-NO-CLI"],["$34","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-2e25f0f8b85ae114","FACT","rules","$68","DEP-APP-NO-STORE-BACKEND evaluator completed",["$69","$70","$72"],["$16","$22","$24"],["DEP-APP-NO-STORE-BACKEND"],["$30","$33","$35"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-3362ebc9245a26ae","FACT","rules","$68","DEP-STORE-NO-MONEY evaluator completed",["$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$17","$21"],["DEP-STORE-NO-MONEY"],["$26","$27","$28","$31","$32","$36","$38"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-3b4644f18ce3e187","FACT","rules","$68","CONSTRUCT-NO-STRING-LITERAL-COMPARE evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-STRING-LITERAL-COMPARE"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-3dfad042414ee8be","FACT","rules","$68","DEP-RENDER-NO-STORE evaluator completed",["$99"],["$23"],["DEP-RENDER-NO-STORE"],["$37"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-451901b74e17e608","FACT","rules","$68","ROOT-LAYOUT evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["ROOT-LAYOUT"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-452c8cba5c90a239","FACT","rules","$68","DEP-CLI-NO-STORE evaluator completed",["$77"],["$18"],["DEP-CLI-NO-STORE"],["$29"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-51420f2ea2e96d22","FACT","rules","$68","CONSTRUCT-NO-BROAD-EXCEPT evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-BROAD-EXCEPT"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-6cf4b24b43586968","FACT","rules","$68","STORE-PEERS-ISOLATED evaluator completed",["$120","$126"],["$10","$17"],["STORE-PEERS-ISOLATED"],["$28","$36"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-759e577f2e2fbbc9","FACT","rules","$68","EXTERNAL-COMPLETE evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["EXTERNAL-COMPLETE"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-7944a48027340ef1","FACT","rules","$68","LAYERS-MODEL evaluator completed",["model","render"],["EVD-6cfe32290010def4"],["LAYERS-MODEL"],[],[],[true,"declared_requires","$m","1a2485e98fbd0646a94c677071226bb1ebbf354d5bb4fb9302f337e6bc3cf676","architecture-contract.json","$m","$m","$m","$m","$m","$m","$m",["Core","Adapters","Edge"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-811868a63b7b52cc","FACT","rules","$68","DEP-APP-NO-CLI evaluator completed",["$69","$70","$72"],["$16","$22","$24"],["DEP-APP-NO-CLI"],["$30","$33","$35"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-83d219176c4f04dc","FACT","rules","$68","APP-TYPES-NOT-DICT evaluator completed",["$72","$73"],["EVD-0331ee95a6dce2c3"],["APP-TYPES-NOT-DICT"],["$42"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-83e74db18f43b1f5","FACT","rules","$68","CONSTRUCT-NO-ANY evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-ANY"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-86b01ec12fe9adb0","FACT","rules","$68","CONSTRUCT-NO-DYNAMIC evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-DYNAMIC"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-8733a92e0a9642e1","FACT","rules","$68","DEP-STORE-NO-CLI evaluator completed",["$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$17","$21"],["DEP-STORE-NO-CLI"],["$26","$27","$28","$31","$32","$36","$38"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-8ccb5a7b1f07d9ef","FACT","rules","$68","DEP-CLI-NO-MODEL evaluator completed",["$77"],["$18"],["DEP-CLI-NO-MODEL"],["$29"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-8d65305b0ed80807","FACT","rules","$68","ASSIGNMENT-COMPLETE evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["ASSIGNMENT-COMPLETE"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-8f3b8b868f3f340d","FACT","rules","$68","DEP-MODEL-NO-APP evaluator completed",["$81","$97"],["$19","$20"],["DEP-MODEL-NO-APP"],["$34","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-97ca2131d6ca67d2","FACT","rules","$68","DEP-RENDER-NO-APP evaluator completed",["$99"],["$23"],["DEP-RENDER-NO-APP"],["$37"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-a06f509d5f711440","FACT","rules","$68","EXTERNAL-JSON-STORE evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["EXTERNAL-JSON-STORE"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-a82a67ae50619ffb","FACT","rules","$68","DEP-APP-NO-RENDER evaluator completed",["$69","$70","$72"],["$16","$22","$24"],["DEP-APP-NO-RENDER"],["$30","$33","$35"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-cd8ae7ee2ca2a903","FACT","rules","$68","DEP-STORE-NO-RENDER evaluator completed",["$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$17","$21"],["DEP-STORE-NO-RENDER"],["$26","$27","$28","$31","$32","$36","$38"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-d97a8f8032db359e","FACT","rules","$68","CONSTRUCT-NO-PLACEHOLDER evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-PLACEHOLDER"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-e17823143425894f","FACT","rules","$68","CONSTRUCT-NO-ASSERT evaluator completed",["$69","$70","$72","$77","shop.extra","$81","$97","$99","$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$15","$16","$17","$18","$19","$20","$21","$22","$23","$24"],["CONSTRUCT-NO-ASSERT"],["$26","$27","$28","$29","$30","$31","$32","$33","$34","$35","$36","$37","$38","$39","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-ee8f8309fc5c5610","FACT","rules","$68","DEP-MODEL-NO-RENDER evaluator completed",["$81","$97"],["$19","$20"],["DEP-MODEL-NO-RENDER"],["$34","$40"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-f281ba5718129592","FACT","rules","$68","DEP-STORE-NO-APP evaluator completed",["$102","$104","$105","$111","$115","$120","$126"],["$10","$11","$12","$13","$14","$17","$21"],["DEP-STORE-NO-APP"],["$26","$27","$28","$31","$32","$36","$38"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-EVALUATION-f5b90c596df8aa47","FACT","rules","$68","DEP-RENDER-NO-CLI evaluator completed",["$99"],["$23"],["DEP-RENDER-NO-CLI"],["$37"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","root","$m","$m"]],["RULE-OWNERSHIP-BLOCKER-9869882feda90389","FACT","rules","rule_ownership_blocker","$79",["shop.extra"],["$15"],["INTERFACE-BOUNDARY"],["$39"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop/extra.py","$m","$m","shop.extra","$m","$m","$m","$m","$m",0,[],"$m","$m","$79","root","$m","$m"]],["RULE-OWNERSHIP-BLOCKER-c29032cb6bb9aced","FACT","rules","rule_ownership_blocker","$103",["$102"],["$12"],["store:STORE-REQUIRES-COMPLETE"],["$31"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop/store/__init__.py","$m","$m","$102","$m","$m","$m","$m","$m",0,[],"$m","$m","$103","store","$m","$m"]],["SCOPE-3e3f23ce706d1486","FACT","components","$51","Observed source scope for model",["$80"],["$19","$20"],["COMP-MODEL"],["EDGE-464db35848d98a76","$34","$40"],[],["$m","$m","COMP-MODEL","$m","$m",true,"$m","$m","$m",1,"$m",["$132","$133"],"$m","$m",2,["$81","$97"],2,["$99"],["$98"],"$m","$m","$m","$m","$m","$m",[{"kind":"package","observed_module_count":2,"scope":"$80"}],["$80"]]],["SCOPE-4824390c78bd833c","FACT","components","$51","Observed source scope for app",["shop.app"],["$16","$22","$24"],["COMP-APP"],["EDGE-3710f672fd2f0c2a","EDGE-58b9293354ac6170","EDGE-710c16d64e3aaa04","EDGE-75837215763c54f2","EDGE-98d3237939201824","$30","$33","$35"],[],["$m","$m","COMP-APP","$m","$m",true,"$m","$m","$m",2,"$m",["shop/app/analytics.py","$129","$130"],"$m","$m",3,["$69","$70","$72"],3,["$81","$102","$105","$126"],["$80","$102"],"$m","$m","$m","$m","$m","$m",[{"kind":"package","observed_module_count":3,"scope":"shop.app"}],["shop.app"]]],["SCOPE-57b086922ac9c0aa","FACT","components","$51","Observed source scope for render",["$98"],["$23"],["COMP-RENDER"],["EDGE-14e0785acd31207d","EDGE-e007f2846c14303c","$37"],[],["$m","$m","COMP-RENDER","$m","$m",true,"$m","$m","$m",2,"$m",["$134"],"$m","$m",1,["$99"],1,["$81","$120"],["$80","$102"],"$m","$m","$m","$m","$m","$m",[{"kind":"package","observed_module_count":1,"scope":"$98"}],["$98"]]],["SCOPE-cf339b3b760efdaa","FACT","components","$51","Observed source scope for cli",["shop.cli"],["$18"],["COMP-CLI"],["EDGE-1ad88587dca0df62","EDGE-1b6c0110cf77ea30","$29"],[],["$m","$m","COMP-CLI","$m","$m",true,"$m","$m","$m",2,"$m",["$131"],"$m","$m",1,["$77"],1,["$72","$99"],["shop.app","$98"],"$m","$m","$m","$m","$m","$m",[{"kind":"package","observed_module_count":1,"scope":"shop.cli"}],["shop.cli"]]],["SCOPE-dec4382bbde4da11","FACT","components","$51","Observed source scope for store",["$102"],["$10","$11","$12","$13","$14","$17","$21"],["COMP-STORE"],["EDGE-afcd576017d020e3","EDGE-f647d4d8e69e0f81","$26","$27","$28","$31","$32","$36","$38"],[],["$m","$m","COMP-STORE","$m","$m",true,"$m","$m","$m",1,"$m",["shop/store/__init__.py","$135","$136","$137","$138","$139","$140"],"$m","$m",7,["$102","$104","$105","$111","$115","$120","$126"],7,["$81"],["$80"],"$m","$m","$m","$m","$m","$m",[{"kind":"package","observed_module_count":7,"scope":"$102"}],["$102"]]],["UNKNOWN-SCOPE-e29c48d3f6746114","UNKNOWN","components","unassigned_component_scope","Accepted component ownership is undecided for shop.extra",["shop.extra","shop.extra"],["$15"],[],["$39"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m",["shop/extra.py"],"$m","$m",1,["shop.extra"],"$m","$m","$m","$m","$m","$m",false,"No accepted component declaration covers these observed modules","shop.extra","$m","$m"]]],"source":{"dirty":true,"git_head":"9ea2c09aeab8dbee6fb74e31cfe379516a43d683","scope":["shop/**/*.py"],"source_digest":"9a222a2f5b70d0144f8975ba18e1c5c0a71c9203b3412797a99d08ceaeff67ee"},"string_table":["            Path(store_dir), order_id, description, int(quantity), int(unit_price_cents)","        lines = tuple(Line.from_dict(item) for item in payload[\"lines\"])","        return Order.from_dict(json.loads(self._path(order_id).read_text()))","        self._path(order.order_id).write_text(json.dumps(order.to_dict()))","    document: OrderDocument = {\"version\": DOCUMENT_VERSION, \"order\": order.to_dict()}","    line = Line(description=description, quantity=quantity, unit_price=Money(unit_price_cents))","    write_payload(Path(getattr(connection, \"path\")), {\"order_id\": \"probe\", \"lines\": []})","@dataclass(frozen=True, slots=True)","Class call recorded; constructor result type is not proven","DECLARED_RULE","EVD-0bc1ac0341f42b20","EVD-0e6de0672e6a3e36","EVD-30263e40ce3f9226","EVD-32a548d291612a9d","EVD-4af1c0e685325907","EVD-5e058c2f4a3bc21d","EVD-686bfc024de0e17f","EVD-a46ec27f5abbd9cc","EVD-a88d07cff62ce2f2","EVD-b724822add2937a1","EVD-bbbbeb02d4c0aed4","EVD-bd9899a51f65f727","EVD-dff16dfb262b2579","EVD-ec03fd7255ed89b3","EVD-fafef16d00bc16f0","Import __future__.annotations","MOD-2613d08cbfa31192","MOD-4e4e7559db7d702d","MOD-651628f6395e3f74","MOD-7484964315f131f2","MOD-9a0394d8e9355d76","MOD-9b03abc666a221d0","MOD-a5f5919aae7f572b","MOD-a911202de97fe81b","MOD-c7aefefacb7161e3","MOD-d12aec4ce715cba6","MOD-d9d532913f09f5f2","MOD-ddd1236afac37f18","MOD-e0926795712d4e0e","MOD-e29c48d3f6746114","MOD-f35a3b6072699306","Missing static proof does not prove that the runtime path is absent","SYM-c94dfe19e1970e73","__future__.annotations","annotated receiver of known type, unproven at runtime","attribute of imported module binding","call_hierarchy","class creation, binding or attribute writes remain unmeasured","class creation, binding or generated methods are not fully represented","convention","dataclasses.dataclass","declared_component_scope_observation","dependencies","dependency_violations","docs/architecture/shop.md","dynamic receiver with matching internal methods","forbidden_construct","forbidden_dependency","from __future__ import annotations","imported symbol binding","module_dependency","module_topology","package_topology","partially_resolved","partially_resolved_call","public_name","repository_topology","resolved_call","rule_evaluation","shop.app.analytics","shop.app.maintenance","shop.app.maintenance.run_maintenance","shop.app.orders","shop.app.orders.place_order","shop.app.orders.restate_total","shop.app.orders.summarize","shop.app.orders.touch_store","shop.cli.main","shop.cli.main.main","shop.extra (shop/extra.py) has no owner in scope root. Assign it to one existing component using exact_modules: [\"shop.extra\"].","shop.model","shop.model.entities","shop.model.entities.Discount","shop.model.entities.Discount.apply","shop.model.entities.Line","shop.model.entities.Line.from_dict","shop.model.entities.Line.to_dict","shop.model.entities.Line.total","shop.model.entities.LinePayload","shop.model.entities.Money","shop.model.entities.Money.__add__","shop.model.entities.Order","shop.model.entities.Order.from_dict","shop.model.entities.Order.to_dict","shop.model.entities.Order.total","shop.model.entities.OrderPayload","shop.model.entities.audit_total","shop.model.promotions","shop.render","shop.render.text","shop.render.text._indent","shop.render.text.render_order","shop.store","shop.store (shop/store/__init__.py) has no owner in scope store. Assign it to one existing component using exact_modules: [\"shop.store\"].","shop.store.backend","shop.store.backend.files","shop.store.backend.files.ENCODING","shop.store.backend.files.discard_document","shop.store.backend.files.read_document","shop.store.backend.files.write_document","shop.store.backend.files.write_payload","shop.store.backend.paths","shop.store.backend.paths.DOCUMENT_SUFFIX","shop.store.backend.paths.order_path","shop.store.backend.paths.order_paths","shop.store.codec","shop.store.codec.DOCUMENT_VERSION","shop.store.codec.OrderDocument","shop.store.codec.decode","shop.store.codec.encode","shop.store.repository","shop.store.repository.OrderRepository","shop.store.repository.OrderRepository._path","shop.store.repository.OrderRepository.load","shop.store.repository.OrderRepository.save","shop.store.repository.OrderRepository.total_due","shop.store.sqlite","shop.store.sqlite.Connection","shop.store.sqlite.vacuum","shop/app/maintenance.py","shop/app/orders.py","shop/cli/main.py","shop/model/entities.py","shop/model/promotions.py","shop/render/text.py","shop/store/backend/__init__.py","shop/store/backend/files.py","shop/store/backend/paths.py","shop/store/codec.py","shop/store/repository.py","shop/store/sqlite.py","type_architecture","value_reference"],"symbols":[["SYM-01d2c4dfc342d97f","FACT","$66","static_constant","DOCUMENT_VERSION",["$115","$116"],["EVD-19ff467f293c6747"],[],[],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m",1,"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$115","DOCUMENT_VERSION","$m","$m","$m","$m",null,"$116","$m","static_constant","$m","$m","$m","$m","$m","$m","$m","$m","$m","$65",{"basis":"$49","kind":"public","spelling":"DOCUMENT_VERSION"}]],["SYM-094cb8a1abb8f245","FACT","$66","function","decode",["$115","$118"],["EVD-538428ebc2c45adf"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$115","decode",true,false,"$102",[{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"document"}],null,"$118","document","$m","Order","ce57632699ffda91",48,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"decode"}]],["SYM-0f98fb6f9a3c1a88","FACT","$66","function","read_document",["$105","$108"],["EVD-832db48c570c8ce0"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$105","read_document",true,false,"$102",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"path"}],null,"$108","path","$m","str","acdee450ad07ad82",9,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"read_document"}]],["SYM-1268d346aa3386e0","FACT","$66","method","to_dict",["$81","$93"],["EVD-380072b2520ec91b"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$88","$95"],"$m","$m","SYM-31c700c61943c8dd","$m","instance","$81","to_dict",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"}],"$91","$93","self","$m","OrderPayload","c8b222d85473c23c",21,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"to_dict"}]],["SYM-18bee5539032465a","FACT","$66","function","describe_connection",["$72","shop.app.orders.describe_connection"],["EVD-ff37584f7568475b"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$72","describe_connection",true,false,"shop.app",[{"annotation":"Connection","default":null,"default_known":true,"kind":"positional","name":"connection"}],null,"shop.app.orders.describe_connection","connection","$m","str","d864e6477b9a53f9",8,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"describe_connection"}]],["SYM-1d32533c0809c896","FACT","$66","class","Discount",["$81","$82"],["EVD-3adffac283771a7d"],[],[],[],["$m",[{"annotation":"int","definition_id":"ATTR-2947ebe40b712841","evidence_ids":["EVD-cde312752aeb6591"],"name":"percent","visibility":{"basis":"$49","kind":"public","spelling":"percent"}}],[],[],[],false,false,"dataclass",["apply"],"$m",false,["dataclass"],false,[],"$m","$m",[{"annotation":"int","name":"percent"}],true,null,[{"definition_ids":["ATTR-2947ebe40b712841"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":["SYM-b183fc3dea9441aa"],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","Discount",true,"$m","$80","$m",null,"$82","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Discount"}]],["SYM-213a7c362a680705","FACT","$66","method","total",["$81","$87"],["EVD-db42ea9082a4945d"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$89"],"$m","$m","SYM-f4f91ac449914582","$m","instance","$81","total",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"}],"$84","$87","self","$m","Money","1c390dac5aec669a",11,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"total"}]],["SYM-25e035a8f02b4217","FACT","$66","class","LinePayload",["$81","$88"],["EVD-fd291905059136db"],[],[],[],["$m",[{"annotation":"str","definition_id":"ATTR-5bc99a5c10b53ee2","evidence_ids":["EVD-f4d31d51ea3e1e42"],"name":"description","visibility":{"basis":"$49","kind":"public","spelling":"description"}},{"annotation":"int","definition_id":"ATTR-ba1abad8ea8e3caf","evidence_ids":["EVD-98e8a9e4b48ff15d"],"name":"quantity","visibility":{"basis":"$49","kind":"public","spelling":"quantity"}},{"annotation":"int","definition_id":"ATTR-d78c41404bd46c5e","evidence_ids":["EVD-b05a1762998abb57"],"name":"unit_price","visibility":{"basis":"$49","kind":"public","spelling":"unit_price"}}],[{"candidate_count":1,"evidence_ids":["EVD-580df503e76dbb5c"],"expression":"TypedDict","id":"BASE-a8af3cbb2d3bbfea","reason":"base name has candidates without a proven binding","relationship_kind":"inherits","status":"$63","targets":["typing.TypedDict"]}],["shop.model.entities.TypedDict"],["TypedDict"],false,true,"class",[],"$m",true,[],false,[],"$m","$m",[{"annotation":"str","name":"description"},{"annotation":"int","name":"quantity"},{"annotation":"int","name":"unit_price"}],false,null,[{"definition_ids":["ATTR-5bc99a5c10b53ee2","ATTR-ba1abad8ea8e3caf","ATTR-d78c41404bd46c5e"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":[],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","LinePayload",true,"$m","$80","$m",null,"$88","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"LinePayload"}]],["SYM-298e67e4c53f7de6","FACT","$66","function","_indent",["$99","$100"],["EVD-00e9d67fbfa9e0b3"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$99","_indent",true,false,"$98",[{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"text"}],null,"$100","text","$m","str","fef6164d0766e1aa",6,"$m","$m","$m","$m","function","$m","private",{"basis":"$49","kind":"private","spelling":"_indent"}]],["SYM-306fffdb8811c478","FACT","$66","method","total",["$81","$94"],["EVD-41e509000836a272"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$89"],"$m","$m","SYM-31c700c61943c8dd","$m","instance","$81","total",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"}],"$91","$94","self","$m","Money","9d3b44c27afb48d8",29,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"total"}]],["SYM-31c700c61943c8dd","FACT","$66","class","Order",["$81","$91"],["EVD-13b53f5e83189b76"],[],[],[],["$m",[{"annotation":"str","definition_id":"ATTR-c5ca98215dbe1326","evidence_ids":["EVD-8d78f90faf8f2db6"],"name":"order_id","visibility":{"basis":"$49","kind":"public","spelling":"order_id"}},{"annotation":"tuple[Line, ...]","definition_id":"ATTR-9cff44ec4158b2b6","evidence_ids":["EVD-e077aa75caee794f"],"name":"lines","visibility":{"basis":"$49","kind":"public","spelling":"lines"}}],[],[],[],false,false,"dataclass",["from_dict","to_dict","total"],"$m",true,["dataclass"],false,[],{"shop.model.entities":["$84","$89"]},"$m",[{"annotation":"str","name":"order_id"},{"annotation":"tuple[Line, ...]","name":"lines"}],true,null,[{"definition_ids":["ATTR-c5ca98215dbe1326","ATTR-9cff44ec4158b2b6"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":["SYM-306fffdb8811c478","SYM-1268d346aa3386e0","SYM-f3293ef7f8441e4a"],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","Order",true,"$m","$80","$m",null,"$91","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Order"}]],["SYM-36a5d01ebce41e85","FACT","$66","method","_path",["$120","$122"],["EVD-5fc428ea6933c0be"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m","SYM-d6b5211949bba403","$m","instance","$120","_path",true,false,"$102",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"}],"$121","$122","self","$m","Path","0bd5fbcd7e583d48",12,true,"$m",false,"$m","method","$m","private",{"basis":"$49","kind":"private","spelling":"_path"}]],["SYM-3ddc33e5a1bedfc4","FACT","$66","function","write_document",["$105","$109"],["EVD-03b7b333aac461f3"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$105","write_document",true,false,"$102",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"path"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"document"}],null,"$109","path","$m","None","c30c2656741bbe05",46,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"write_document"}]],["SYM-421012b9fa5f6934","FACT","$66","method","from_dict",["$81","$85"],["EVD-f306204066b62b9f"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,["classmethod"],"$m",[],"$m",["$84","$88","$89"],"$m","$m","SYM-f4f91ac449914582","$m","class","$81","from_dict",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"cls"},{"annotation":"LinePayload","default":null,"default_known":true,"kind":"positional","name":"payload"}],"$84","$85","cls","$m","Line","bffa006109dfdc32",25,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"from_dict"}]],["SYM-4698877829fcbfae","FACT","$66","method","to_dict",["$81","$86"],["EVD-ea5b17eeeff85142"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$88"],"$m","$m","SYM-f4f91ac449914582","$m","instance","$81","to_dict",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"}],"$84","$86","self","$m","LinePayload","c96bc6296e78f88a",19,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"to_dict"}]],["SYM-4a3056a24f24fc42","FACT","$66","static_constant","NOTE",["shop.extra","shop.extra.NOTE"],["EVD-5eb0cfcea7320538"],[],[],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","This module belongs to no shop component package.","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop.extra","NOTE","$m","$m","$m","$m",null,"shop.extra.NOTE","$m","static_constant","$m","$m","$m","$m","$m","$m","$m","$m","$m","$65",{"basis":"$49","kind":"public","spelling":"NOTE"}]],["SYM-521e10b69216a628","FACT","$66","method","__add__",["$81","$90"],["EVD-1a1f857322507e84"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$89"],"$m","$m","SYM-6a6e23a6aabf9211","$m","instance","$81","__add__",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"Money","default":null,"default_known":true,"kind":"positional","name":"other"}],"$89","$90","self","$m","Money","1df72fadcc5f1f60",14,true,"$m",false,"$m","method","$m","private",{"basis":"$49","kind":"public","spelling":"__add__"}]],["SYM-5e29728aec775442","FACT","$66","function","order_paths",["$111","$114"],["EVD-5e3d87c185579640"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$111","order_paths",true,false,"$102",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"root"}],null,"$114","root","$m","list[Path]","a381c6af608fa84d",14,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"order_paths"}]],["SYM-60279f4bb5cd1210","FACT","$66","method","save",["$120","$124"],["EVD-6fd0deffdf663533"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$84","$89","$91"],"$m","$m","SYM-d6b5211949bba403","$m","instance","$120","save",true,false,"$102",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"Order","default":null,"default_known":true,"kind":"positional","name":"order"}],"$121","$124","self","$m","None","ef799682aab93065",23,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"save"}]],["SYM-617dbdf906017b98","FACT","$66","function","run_maintenance",["$70","$71"],["EVD-f078d148224faf28"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$70","run_maintenance",true,false,"shop.app",[{"annotation":"Connection","default":null,"default_known":true,"kind":"positional","name":"connection"}],null,"$71","connection","$m","None","209c7b4956909117",11,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"run_maintenance"}]],["SYM-6a63f092c3802257","FACT","$66","method","__init__",["$120","shop.store.repository.OrderRepository.__init__"],["EVD-dcbc5628712281fc"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["pathlib.Path"],"$m","$m","SYM-d6b5211949bba403","$m","instance","$120","__init__",true,false,"$102",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"root"}],"$121","shop.store.repository.OrderRepository.__init__","self","$m","None","2c6355b85672647c",7,true,"$m",false,"$m","method","$m","private",{"basis":"$49","kind":"public","spelling":"__init__"}]],["SYM-6a6e23a6aabf9211","FACT","$66","class","Money",["$81","$89"],["EVD-809590eb3ddf92d6"],[],[],[],["$m",[{"annotation":"int","definition_id":"ATTR-b28171f8a8aabff7","evidence_ids":["EVD-b09a505fab326d5a"],"name":"cents","visibility":{"basis":"$49","kind":"public","spelling":"cents"}}],[],[],[],false,false,"dataclass",["__add__","__mul__","__str__"],"$m",true,["dataclass"],false,[],"$m","$m",[{"annotation":"int","name":"cents"}],true,null,[{"definition_ids":["ATTR-b28171f8a8aabff7"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":["SYM-521e10b69216a628","SYM-c24e1dc0171bbef6","SYM-891b0ba59ee7a735"],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","Money",true,"$m","$80","$m",null,"$89","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Money"}]],["SYM-785f9f9b17ce8f3c","FACT","$66","function","main",["$77","$78"],["EVD-a825188e58318989"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$77","main",true,false,"shop.cli",[{"annotation":"list[str]","default":null,"default_known":true,"kind":"positional","name":"argv"}],null,"$78","argv","$m","int","e1cecae182e321fa",60,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"main"}]],["SYM-8168d5a416701615","FACT","$66","function","audit_total",["$81","$96"],["EVD-c1e59afe297327b0"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$81","audit_total",true,false,"$80",[{"annotation":"Order","default":null,"default_known":true,"kind":"positional","name":"order"},{"annotation":"Any","default":null,"default_known":true,"kind":"positional","name":"options"}],null,"$96","order","$m","str","f05b7eea51614cd7",32,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"audit_total"}]],["SYM-891b0ba59ee7a735","FACT","$66","method","__str__",["$81","shop.model.entities.Money.__str__"],["EVD-5ff808486c74736f"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m","SYM-6a6e23a6aabf9211","$m","instance","$81","__str__",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"}],"$89","shop.model.entities.Money.__str__","self","$m","str","55f65d10d221adf9",12,true,"$m",false,"$m","method","$m","private",{"basis":"$49","kind":"public","spelling":"__str__"}]],["SYM-90f642452a6da34f","FACT","$66","function","report",["$69","shop.app.analytics.report"],["EVD-b0332f3f38cfe7b8"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$69","report",true,false,"shop.app",[{"annotation":"int","default":null,"default_known":true,"kind":"positional","name":"total"}],null,"shop.app.analytics.report","total","$m","str","433124e5a4d67f16",12,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"report"}]],["SYM-912783379834f463","FACT","$66","function","order_path",["$111","$113"],["EVD-0977f81fc2ac2b19"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$111","order_path",true,false,"$102",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"root"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"}],null,"$113","root","$m","Path","c4d271c707395ce7",12,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"order_path"}]],["SYM-932fa235d99a9bda","FACT","$66","function","vacuum",["$126","$128"],["EVD-9fb73bed056d343a"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["pathlib.Path","$127"],"$m","$m",null,"$m","$m","$126","vacuum",true,false,"$102",[{"annotation":"Connection","default":null,"default_known":true,"kind":"positional","name":"connection"}],null,"$128","connection","$m","None","db046a12ed4e3bab",28,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"vacuum"}]],["SYM-9961cb1a552ff2e5","FACT","$66","static_constant","ENCODING",["$105","$106"],["EVD-81ea2509d3cf2d51"],[],[],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","utf-8","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$105","ENCODING","$m","$m","$m","$m",null,"$106","$m","static_constant","$m","$m","$m","$m","$m","$m","$m","$m","$m","$65",{"basis":"$49","kind":"public","spelling":"ENCODING"}]],["SYM-99fd7d77b712d934","FACT","$66","function","touch_store",["$72","$76"],["EVD-4026c00c773aad59"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$72","touch_store",true,false,"shop.app",[{"annotation":"object","default":null,"default_known":true,"kind":"positional","name":"connection"},{"annotation":"int","default":null,"default_known":true,"kind":"positional","name":"retries"}],null,"$76","connection","$m","str","d298f575de38352d",38,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"touch_store"}]],["SYM-a3e7c6567ab50c7e","FACT","$66","class","OrderPayload",["$81","$95"],["EVD-598749736e720d9d"],[],[],[],["$m",[{"annotation":"str","definition_id":"ATTR-9e017786e861e14c","evidence_ids":["EVD-afd0cf198ebc2e4f"],"name":"order_id","visibility":{"basis":"$49","kind":"public","spelling":"order_id"}},{"annotation":"list[LinePayload]","definition_id":"ATTR-d3ceb82968de3038","evidence_ids":["EVD-827eb64915d3f3d1"],"name":"lines","visibility":{"basis":"$49","kind":"public","spelling":"lines"}}],[{"candidate_count":1,"evidence_ids":["EVD-833e49daa46041b3"],"expression":"TypedDict","id":"BASE-ffbd52b48447f81c","reason":"base name has candidates without a proven binding","relationship_kind":"inherits","status":"$63","targets":["typing.TypedDict"]}],["shop.model.entities.TypedDict"],["TypedDict"],false,true,"class",[],"$m",true,[],false,[],{"shop.model.entities":["$88"]},"$m",[{"annotation":"str","name":"order_id"},{"annotation":"list[LinePayload]","name":"lines"}],false,null,[{"definition_ids":["ATTR-9e017786e861e14c","ATTR-d3ceb82968de3038"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":[],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","OrderPayload",true,"$m","$80","$m",null,"$95","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"OrderPayload"}]],["SYM-b183fc3dea9441aa","FACT","$66","method","apply",["$81","$83"],["EVD-3a45cf803befe154"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m","SYM-1d32533c0809c896","$m","instance","$81","apply",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"Money","default":null,"default_known":true,"kind":"positional","name":"amount"}],"$82","$83","self","$m","Money","a7b125c011b349da",20,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"apply"}]],["SYM-bda0003a70761e61","FACT","$66","class","Connection",["$126","$127"],["EVD-c4a85c6c41869f02"],[],[],[],["$m",[{"annotation":"Path","definition_id":"ATTR-3a6fde549536f56f","evidence_ids":["EVD-ee82deca49a4108a"],"name":"path","visibility":{"basis":"$49","kind":"public","spelling":"path"}}],[],[],[],false,false,"dataclass",[],"$m",false,["dataclass"],false,[],{"shop.store.sqlite":["pathlib.Path"]},"$m",[{"annotation":"Path","name":"path"}],true,null,[{"definition_ids":["ATTR-3a6fde549536f56f"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":[],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$126","Connection",true,"$m","$102","$m",null,"$127","$m","$m","$m","$m","$m","$m",true,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Connection"}]],["SYM-bdbad6c793f01a7e","FACT","$66","static_constant","DOCUMENT_SUFFIX",["$111","$112"],["EVD-976a02b50cb046c6"],[],[],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m",".json","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$111","DOCUMENT_SUFFIX","$m","$m","$m","$m",null,"$112","$m","static_constant","$m","$m","$m","$m","$m","$m","$m","$m","$m","$65",{"basis":"$49","kind":"public","spelling":"DOCUMENT_SUFFIX"}]],["SYM-c24e1dc0171bbef6","FACT","$66","method","__mul__",["$81","shop.model.entities.Money.__mul__"],["EVD-ed97a6a2fb111212"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$89"],"$m","$m","SYM-6a6e23a6aabf9211","$m","instance","$81","__mul__",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"int","default":null,"default_known":true,"kind":"positional","name":"quantity"}],"$89","shop.model.entities.Money.__mul__","self","$m","Money","0ba3a10f50ddaed1",12,true,"$m",false,"$m","method","$m","private",{"basis":"$49","kind":"public","spelling":"__mul__"}]],["SYM-c3c8459b52d998ed","FACT","$66","function","render_order",["$99","$101"],["EVD-0cf17a417526c3ac"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$84","$89","$91"],"$m","$m",null,"$m","$m","$99","render_order",true,false,"$98",[{"annotation":"Order","default":null,"default_known":true,"kind":"positional","name":"order"}],null,"$101","order","$m","str","db9a3e602e01c1e6",65,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"render_order"}]],["SYM-c6dc50ed43219b97","FACT","$66","function","encode",["$115","$119"],["EVD-ac6210f7ea66f63c"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$115","encode",true,false,"$102",[{"annotation":"Order","default":null,"default_known":true,"kind":"positional","name":"order"}],null,"$119","order","$m","str","b27149e11f1ca9c1",25,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"encode"}]],["SYM-c9078666ab3d0e2d","FACT","$66","method","load",["$120","$123"],["EVD-c8bd970eaa4d583c"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$84","$89","$91"],"$m","$m","SYM-d6b5211949bba403","$m","instance","$120","load",true,false,"$102",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"}],"$121","$123","self","$m","Order","e75b617fd1aaac6b",21,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"load"}]],["$42","FACT","$66","function","place_order",["$72","$73"],["EVD-0331ee95a6dce2c3"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$84","$89","$91"],"$m","$m",null,"$m","$m","$72","place_order",true,false,"shop.app",[{"annotation":"object","default":null,"default_known":true,"kind":"positional","name":"store_dir"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"description"},{"annotation":"int","default":null,"default_known":true,"kind":"positional","name":"quantity"},{"annotation":"int","default":null,"default_known":true,"kind":"positional","name":"unit_price_cents"}],null,"$73","store_dir","$m","Order","29ee4973a7595fd0",46,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"place_order"}]],["SYM-d6b5211949bba403","FACT","$66","class","OrderRepository",["$120","$121"],["EVD-0c35d241cbca83f1"],[],[],[],["$m",[],[],[],[],false,true,"class",["__init__","_path","load","save","total_due"],"$m",false,[],false,[],"$m","$m",[],false,null,[{"definition_ids":[],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":["SYM-6a63f092c3802257","SYM-60279f4bb5cd1210","SYM-c9078666ab3d0e2d","SYM-f6298b4c05a2e5ef","SYM-36a5d01ebce41e85"],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$120","OrderRepository",true,"$m","$102","$m",null,"$121","$m","$m","$m","$m","$m","$m",true,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"OrderRepository"}]],["SYM-d7ec7cb6e603d304","FACT","$66","function","restate_total",["$72","$74"],["EVD-41938d3f68d98ed4"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$72","restate_total",true,false,"shop.app",[{"annotation":"Order","default":null,"default_known":true,"kind":"positional","name":"order"}],null,"$74","order","$m","Money","9d3b44c27afb48d8",29,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"restate_total"}]],["SYM-df3994eb36957022","FACT","$66","function","summarize",["$72","$75"],["EVD-5749eba77f4c2df6"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$72","summarize",true,false,"shop.app",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"store_dir"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"}],null,"$75","store_dir","$m","Money","6c0b58e6e0d3e57e",14,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"summarize"}]],["SYM-ebdd1de485e05bb4","FACT","$66","class","OrderDocument",["$115","$117"],["EVD-1adb244d07352ea3"],[],[],[],["$m",[{"annotation":"int","definition_id":"ATTR-f30488078c653937","evidence_ids":["EVD-c54644bde9e9101b"],"name":"version","visibility":{"basis":"$49","kind":"public","spelling":"version"}},{"annotation":"OrderPayload","definition_id":"ATTR-1bd7b4d8d3d662eb","evidence_ids":["EVD-aa596964e86742bd"],"name":"order","visibility":{"basis":"$49","kind":"public","spelling":"order"}}],[{"candidate_count":1,"evidence_ids":["EVD-eab6da8b941792d8"],"expression":"TypedDict","id":"BASE-eb460a678411c2af","reason":"external classifier kind is unavailable","relationship_kind":"inherits","status":"$63","targets":["typing.TypedDict"]}],["typing.TypedDict"],["TypedDict"],false,true,"class",[],"$m",false,[],false,[],"$m","$m",[{"annotation":"int","name":"version"},{"annotation":"OrderPayload","name":"order"}],false,null,[{"definition_ids":["ATTR-f30488078c653937","ATTR-1bd7b4d8d3d662eb"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":[],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$115","OrderDocument",true,"$m","$102","$m",null,"$117","$m","$m","$m","$m","$m","$m",true,"$m",false,"class",true,"$65",{"basis":"$49","kind":"public","spelling":"OrderDocument"}]],["SYM-f3293ef7f8441e4a","FACT","$66","method","from_dict",["$81","$92"],["EVD-daa05f47b32b9483"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,["classmethod"],"$m",[],"$m",["$84","$88","$89","$91","$95"],"$m","$m","SYM-31c700c61943c8dd","$m","class","$81","from_dict",true,false,"$80",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"cls"},{"annotation":"OrderPayload","default":null,"default_known":true,"kind":"positional","name":"payload"}],"$91","$92","cls","$m","Order","fc94866367e8a19a",35,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"from_dict"}]],["SYM-f4f91ac449914582","FACT","$66","class","Line",["$81","$84"],["EVD-1bc0e01868608acb"],[],[],[],["$m",[{"annotation":"str","definition_id":"ATTR-df31e2a2970abc74","evidence_ids":["EVD-c88f0d6581c4ad5a"],"name":"description","visibility":{"basis":"$49","kind":"public","spelling":"description"}},{"annotation":"int","definition_id":"ATTR-a131a146c51c4e73","evidence_ids":["EVD-f4f642647debf00c"],"name":"quantity","visibility":{"basis":"$49","kind":"public","spelling":"quantity"}},{"annotation":"Money","definition_id":"ATTR-f128eeab83d2c29a","evidence_ids":["EVD-4663909830aa85df"],"name":"unit_price","visibility":{"basis":"$49","kind":"public","spelling":"unit_price"}}],[],[],[],false,false,"dataclass",["from_dict","to_dict","total"],"$m",true,["dataclass"],false,[],{"shop.model.entities":["$89"]},"$m",[{"annotation":"str","name":"description"},{"annotation":"int","name":"quantity"},{"annotation":"Money","name":"unit_price"}],true,null,[{"definition_ids":["ATTR-df31e2a2970abc74","ATTR-a131a146c51c4e73","ATTR-f128eeab83d2c29a"],"kind":"attribute","reason":"$47","schema_version":"1.0.0","status":"partial"},{"definition_ids":["SYM-213a7c362a680705","SYM-4698877829fcbfae","SYM-421012b9fa5f6934"],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$81","Line",true,"$m","$80","$m",null,"$84","$m","$m","$m","$m","$m","$m",false,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Line"}]],["SYM-f6298b4c05a2e5ef","FACT","$66","method","total_due",["$120","$125"],["EVD-78113503a91694aa"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m",["$89"],"$m","$m","SYM-d6b5211949bba403","$m","instance","$120","total_due",true,false,"$102",[{"annotation":null,"default":null,"default_known":true,"kind":"positional","name":"self"},{"annotation":"str","default":null,"default_known":true,"kind":"positional","name":"order_id"}],"$121","$125","self","$m","Money","ccaff3faa3208323",11,true,"$m",false,"$m","method","$m","$65",{"basis":"$49","kind":"public","spelling":"total_due"}]],["SYM-f7d39b41d9b7b9a7","FACT","$66","function","discard_document",["$105","$107"],["EVD-a2a4d5e6bd3ab2a3"],[],[],[],[false,"$m","$m","$m","$m","$m","$m","$m","$m","$m",false,[],"$m",[],"$m","$m","$m","$m",null,"$m","$m","$105","discard_document",true,false,"$102",[{"annotation":"Path","default":null,"default_known":true,"kind":"positional","name":"path"}],null,"$107","path","$m","None","c7c4dad5b7c281bd",6,"$m","$m","$m","$m","function","$m","$65",{"basis":"$49","kind":"public","spelling":"discard_document"}]],["SYM-fc0ffcc0cfbbe672","FACT","$66","class","Coupon",["$97","shop.model.promotions.Coupon"],["EVD-a001f05a8622a997"],[],[],[],["$m",[{"annotation":"str","definition_id":"ATTR-c45d53a1534641ae","evidence_ids":["EVD-bea284164deef448"],"name":"code","visibility":{"basis":"$49","kind":"public","spelling":"code"}}],[],[],[],false,false,"dataclass",[],"$m",false,["dataclass"],false,[],"$m","$m",[{"annotation":"str","name":"code"}],true,null,[{"definition_ids":["ATTR-c45d53a1534641ae"],"kind":"attribute","reason":null,"schema_version":"1.0.0","status":"complete"},{"definition_ids":[],"kind":"method","reason":"$48","schema_version":"1.0.0","status":"partial"}],"$m","$97","Coupon",true,"$m","$80","$m",null,"shop.model.promotions.Coupon","$m","$m","$m","$m","$m","$m",true,"$m",false,"class","$m","$65",{"basis":"$49","kind":"public","spelling":"Coupon"}]]],"transitive_paths":[["PATH-21fc6d9ca7c296ed","FACT","$62","transitive_package_dependency","shop.cli → shop.app → shop.store",["shop.app","shop.cli","$102"],[],[],["EDGE-40faba752ec25c2f","EDGE-db0372f1a8a568e1"],[],["package",["shop.cli","shop.app","$102"],"shop.cli","$102"]],["PATH-39053f9fed4a02a2","FACT","$62","transitive_package_dependency","shop.cli → shop.app → shop.model",["shop.app","shop.cli","$80"],[],[],["EDGE-ad55f037555582ca","EDGE-db0372f1a8a568e1"],[],["package",["shop.cli","shop.app","$80"],"shop.cli","$80"]],["PATH-574674bb43a8af47","FACT","$62","transitive_package_dependency","shop.model → shop.render → shop.store",["$80","$98","$102"],[],[],["EDGE-0e93deca9aac4934","EDGE-44e5e21202c4fd6a"],[],["package",["$80","$98","$102"],"$80","$102"]],["PATH-8a7bd0d0dfe65f54","FACT","$62","transitive_package_dependency","shop.store → shop.model → shop.render",["$80","$98","$102"],[],[],["EDGE-0487f23fb5e5ad9b","EDGE-44e5e21202c4fd6a"],[],["package",["$102","$80","$98"],"$102","$98"]],["PATH-b2d01f6956c250f0","FACT","$62","transitive_package_dependency","shop.app → shop.model → shop.render",["shop.app","$80","$98"],[],[],["EDGE-44e5e21202c4fd6a","EDGE-ad55f037555582ca"],[],["package",["shop.app","$80","$98"],"shop.app","$98"]]],"typing_signals":[["TYPE-015b7201a76c8d64","FACT","$141","object_annotation","shop.app.orders.touch_store:connection: object",["shop.app.orders.touch_store:connection"],["EVD-323a2c6d18bb8727"],[],[],[],["object","$m","shop.app.orders.touch_store:connection","object_annotation"]],["TYPE-191b7852099fd052","FACT","$141","getattr_call","shop.app.orders.touch_store uses getattr",["$76"],["EVD-b21124910fdd39cb"],[],["CALL-cf9751630041b4df"],[],["$m","getattr","$76","getattr_call"]],["TYPE-2a7e3659392ad052","FACT","$141","object_annotation","shop.app.orders.place_order:store_dir: object",["shop.app.orders.place_order:store_dir"],["EVD-728b2fb58c70bbaf"],[],[],[],["object","$m","shop.app.orders.place_order:store_dir","object_annotation"]],["TYPE-391e2662a38041ef","FACT","$141","eval_call","shop.model.entities.audit_total uses eval",["$96"],["EVD-74a10829c9ec1e34"],[],["CALL-a6e5be3edf13da37"],[],["$m","eval","$96","eval_call"]],["TYPE-8507ce48f97476db","FACT","$141","any_annotation","shop.model.entities.audit_total:options: Any",["shop.model.entities.audit_total:options"],["EVD-d97336461e033809"],[],[],[],["Any","$m","shop.model.entities.audit_total:options","any_annotation"]]],"unknowns":[["UNKNOWN-CONTEXT-DATAFLOW","UNKNOWN","contexts_state","context_alias_limit","Context read/write topology excludes unproven dynamic aliases",["shop"],[],[],[],[],["The scanner follows direct annotations, constructor bindings, and self-field access only","$m"]],["UNKNOWN-PYTHON-DYNAMIC-CALLS","UNKNOWN","$46","dynamic_call_limit","Python dynamic behavior prevents a complete call graph",["shop"],[],[],[],[],["$m",12]]],"violations":[["VIO-080b8d83b0488a24","VIOLATION","components","complete_assignment","shop.extra is not owned by exactly one component",["shop.extra"],["$15"],["ASSIGNMENT-COMPLETE"],["$39"],[],["$m","$m","$m","$m","$m","$m","$m","shop.extra","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-11196f37428beb16","VIOLATION","$141","$56","shop.model.entities.audit_total:options uses forbidden any_annotation",["shop.model.entities.audit_total:options"],["EVD-d97336461e033809"],["CONSTRUCT-NO-ANY"],["TYPE-8507ce48f97476db"],[],["$m","$m","$m","$m","any_annotation","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-1e8411efed811bde","VIOLATION","$53","$57","shop.app.orders imports forbidden shop.store.backend.files.write_payload",["$72","$110"],["EVD-34c41dc2c564cbc0"],["DEP-APP-NO-STORE-BACKEND"],["IMP-cd7dff34899a7b5e"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$72","write_payload","$m","$m","$105",false]],["VIO-2bc78c2914f7e348","VIOLATION","$53","$57","shop.app.orders imports forbidden shop.store.sqlite.vacuum",["$72","$128"],["EVD-916cd067bc980bff"],["DEP-APP-NO-STORE-SQLITE"],["IMP-473c4a77ed8bfb9f"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$72","vacuum","$m","$m","$126",false]],["VIO-3000e96d5555dbfd","VIOLATION","$141","$56","shop.app.orders.touch_store uses forbidden getattr",["$76"],["EVD-b21124910fdd39cb"],["CONSTRUCT-NO-DYNAMIC"],["TYPE-191b7852099fd052"],[],["$m","$m","$m","$m","getattr","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-427769e78e00db17","VIOLATION","$53","sibling_isolation","shop.store.sqlite imports its peer shop.store.repository",["$120","$126"],["EVD-83c45d4c2b6fde29"],["STORE-PEERS-ISOLATED"],["IMP-18a47927dc0ad8a6"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$126","$m","$m","$126","$m","$m","$m","$120","$m"]],["VIO-4a70e91729966f13","VIOLATION","$141","boundary_types","shop.app.orders.place_order takes store_dir as object instead of a typed model",["$72","$73"],["EVD-0331ee95a6dce2c3"],["APP-TYPES-NOT-DICT"],["$42"],[],["$m","object","$m","$m","$m","$m","$m","$72","store_dir","$73","$m","instead of a typed model","$m","shop.app","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-56d7cd8eb41dea05","VIOLATION","api_surface","interface_boundary","shop.cli.main reaches shop.render.text._indent outside its declared interface",["$77","$100"],["EVD-7f51fedbd4d4c267"],["INTERFACE-BOUNDARY"],["IMP-083a31b274e19e3b"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","cli","$m","$77","_indent","render","$m","$99","$m"]],["VIO-628e13b6fea782f6","VIOLATION","$53","$57","shop.store.repository imports forbidden shop.model.entities.Money",["$89","$120"],["EVD-7c110b28a0df0f5f"],["DEP-STORE-NO-MONEY"],["IMP-3d75fa5a51f876c0"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$120","Money","$m","$m","$81",false]],["VIO-6ed1dea1154990d6","VIOLATION","$141","$56","shop.app.maintenance.run_maintenance uses forbidden broad_except",["$71"],["EVD-32fc614da28a44cd"],["CONSTRUCT-NO-BROAD-EXCEPT"],["CONSTRUCT-99a6abb44d9ad578"],[],["$m","$m","$m","$m","broad_except","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-7c81eb3c0b8cc4ec","VIOLATION","$141","$56","shop.model.entities.audit_total uses forbidden assert",["$96"],["EVD-4b561854c59ed578"],["CONSTRUCT-NO-ASSERT"],["CONSTRUCT-8d1b5817682a6635"],[],["$m","$m","$m","$m","assert","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-93e8e1bbd03b56ac","VIOLATION","cycles","no_component_cycles","Component cycle: model ↔ render ↔ store",["model","render","store"],["EVD-02ef59d572150708","EVD-0f6ca1ef6fa8044a","EVD-0f6ca1ef6fa8044a","EVD-7c110b28a0df0f5f","EVD-7c110b28a0df0f5f","EVD-c991daacc9de08d7","EVD-f1226c002ac8e910"],["COMPONENT-NO-CYCLES"],["IMP-3d75fa5a51f876c0","IMP-3e49b5e4df6c2de9","IMP-433582f82cd7fab1","IMP-4cca38f12987f98a","IMP-5f3a2916e5c4b873","IMP-5f69fd090c6fbedd","IMP-debb9db6ab22f4c1"],[],["$m","$m","$m","$m","$m","$m",["model","render","store"],"$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-9bfa0ea958d8b1da","VIOLATION","$61","root_layout","shop.extra is not an allowed child of shop",["shop.extra"],["$15"],["ROOT-LAYOUT"],["$39"],[],[["shop.app","shop.cli","$80","$98","$102"],"$m","shop.extra","$m","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-LAYER-12ed60d85ec2b6a3","VIOLATION","components","layer_order","model (Core) requires outer render (Edge)",["model","render"],["EVD-6cfe32290010def4"],["LAYERS-MODEL"],["RULE-EVALUATION-7944a48027340ef1"],["$54"],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","Probe an outer layer permission.","$m","$m","$m","model","Core","$m","$m","render","Edge","$m","$m"]],["VIO-a0aa1ee41f6bffc2","VIOLATION","$53","$57","shop.model.entities imports forbidden shop.render.text.render_order",["$81","$101"],["EVD-f1226c002ac8e910"],["DEP-MODEL-NO-RENDER"],["IMP-3e49b5e4df6c2de9"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$81","render_order","$m","$m","$99",false]],["VIO-bc184132c46d8b2c","VIOLATION","$141","symbol_placement","shop.model.promotions.Coupon (dataclass) is defined outside an allowed module",["$97","shop.model.promotions.Coupon"],["EVD-a001f05a8622a997"],["MODEL-TYPES-IN-ENTITIES"],["SYM-fc0ffcc0cfbbe672"],[],["$m","$m","$m","dataclass","$m","$m","$m","$97","$m","shop.model.promotions.Coupon","$m","$m","$m","$80","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-c3366111f538abce","VIOLATION","$53","complete_requires","api imports codec without requiring it",["$115","$126"],["EVD-f3e29659f2dc7586"],["store:STORE-REQUIRES-COMPLETE"],["IMP-23c9e519498e5800"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","api","$m","$126","$m","codec","$m","$115","$m"]],["VIO-d105833c87c1f3cb","VIOLATION","$53","external_dependency_scope","shop.app.orders imports json outside its allowed scope",["json","$72"],["EVD-933bbeffbe7cc2f8"],["EXTERNAL-JSON-STORE"],["IMP-5a2b25620654ab1f"],[],["$m","$m","$m","$m","$m","json","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$72","$m","$m","$m","json","$m"]],["VIO-d767a7a89ab9d615","VIOLATION","$141","$56","shop.model.entities.audit_total uses forbidden eval",["$96"],["EVD-74a10829c9ec1e34"],["CONSTRUCT-NO-DYNAMIC"],["TYPE-391e2662a38041ef"],[],["$m","$m","$m","$m","eval","$m","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$m","$m","$m","$m","$m","$m"]],["VIO-e7ce193f3b1e8f37","VIOLATION","$53","complete_external_scope","shop.app.analytics imports undeclared shop_analytics",["$69","shop_analytics"],["EVD-d24cc6115c7c0933"],["EXTERNAL-COMPLETE"],["IMP-575d08da83476067"],[],["$m","$m","$m","$m","$m","shop_analytics","$m","$m","$m","$m","$m","$m","$m","shop","$m","$m","$69","$m","$m","$m","shop_analytics","$m"]],["VIO-f755db53c828dcbc","VIOLATION","$53","$57","shop.render.text imports forbidden shop.store.repository.OrderRepository",["$99","$121"],["EVD-02ef59d572150708"],["DEP-RENDER-NO-STORE"],["IMP-debb9db6ab22f4c1"],[],["$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$m","$99","OrderRepository","$m","$m","$120",false]]]}
