Wesker 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wesker-0.4.0/.github/workflows/ci.yml +60 -0
- wesker-0.4.0/.github/workflows/spec-badges.yml +134 -0
- wesker-0.4.0/.gitignore +18 -0
- wesker-0.4.0/.lintgate/.gitignore +2 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_apply_repairs/aa7e69b50e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_apply_repairs/ec7c0048a4.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_get_details/c5be24f8a742.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_get_details/dd942832f273.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_run/032119ba0de7.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_run/7ca7c2e6785d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_run/c5be24f8a742.json +1 -0
- wesker-0.4.0/.lintgate/analysis/controlplane_run/dd942832f273.json +1 -0
- wesker-0.4.0/.lintgate/analysis/getting_started/b1b137ea49.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_decompose/13bca1c316.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_decompose/1c34ce40e4.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_decompose/814221b86e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_detective/89225cd39b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_detective/8e0d79183b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_detective/a2b87746f1.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_prescribe/86907802b0.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_prescribe/8ba1842066.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_prescribe/d8c27b6740.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_prescribe_tests/945938f342.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_prescribe_tests/e10e20f41c.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_run_full/66205a81ab.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_run_full/90a4024150.json +1 -0
- wesker-0.4.0/.lintgate/analysis/mutation_run_full/d96b0025df.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/01c38a22c6.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/0adb93726e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/0d93d9c342.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/0f43097cdd.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/163592a16a.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/1d63ac7e95.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/1ff3ae74a5.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/22c211e518.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/27a2024604.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/2b3519f903.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/2c86b66e07.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/2f39b7aebf.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/3519d70f91.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/3a05249e70.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/3c09eb905b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/3c956cfd7d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/416865b509.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/43c40db7a4.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/44eeb7066c.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/4e4880b7ea.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/4e83855af4.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/4e9a3f215b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/4fa5281f75.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/5872b4d3c8.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/599e7c8457.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/5a3857070e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/5bbda62736.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/5c6405bc56.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/60647c3f74.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/651c13cb65.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/6c109d4f99.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/708692f10d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/7581230227.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/7686e64a56.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/777cad1604.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/77d515d47d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/7a5320e729.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/7c7580e8c5.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/7ca0ffeada.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8644a9c9b7.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/866a858c5f.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/86ab7e02a7.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/86cbf12d59.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/87f731765a.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/88b3b87dae.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8979d5d26d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8a5ccbd587.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8ae7a65cc7.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8b0e881b98.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8c39739c67.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/8e8f29e106.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/9279325861.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/999c62662d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/9bc232d10d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/a26a066f81.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/a5847daa51.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/a5968eb56c.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/a9c9b072a5.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ae4ec1e7bf.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ae87d1f9f9.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/b4b29f0298.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/b4b5a64939.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/b6fc83d9d2.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/b9414d809a.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ba2bcbd7e1.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/bcb0dd72b2.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/be6a4eb84d.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/bf694c53ab.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c1be8d48e5.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c1fb1856c8.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c5a71703d0.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c64009d9d8.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c7590cfac9.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/c870fc7275.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ce4cc5589c.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d3b48ab04e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d4ebf35e81.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d4fa36deea.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d51974d055.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d5baef6c8f.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d708e40ae4.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d7a7a83dc9.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/d89ead8259.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/dcc845dccd.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/e01a50f092.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/e55e9da493.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/e6037666d2.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/e92edd8d9b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ec994a91b1.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/f2b894b13f.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/f5e2a8af7c.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/f6888201b9.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/f7832be64e.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/faf10ea74b.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/fcd67f6ac2.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/fcdb2aab30.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ff744cd186.json +1 -0
- wesker-0.4.0/.lintgate/analysis/posttooluse_report/ff74f35fbf.json +1 -0
- wesker-0.4.0/.lintgate/analysis/refactor_extract_method/49c9e054f6.json +1 -0
- wesker-0.4.0/.lintgate/analysis/refactor_extract_method/999bb017d7.json +1 -0
- wesker-0.4.0/.lintgate/analysis/refactor_extract_method/a05461bd0f.json +1 -0
- wesker-0.4.0/.lintgate/analysis/refactor_extract_method/e0b0e37670.json +1 -0
- wesker-0.4.0/.lintgate/analysis/spec_file_analyze/644338ef0a.json +1 -0
- wesker-0.4.0/.lintgate/analysis/spec_file_analyze/a87b9b1669.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743424.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743447.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743504.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743519.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743534.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743545.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743553.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743569.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743577.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743665.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743679.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743693.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743710.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743730.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743740.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743763.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783743803.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744159.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744273.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744290.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744298.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744342.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744399.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744414.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744497.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744521.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744531.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744539.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744669.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744680.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744697.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744723.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744742.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744819.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783744830.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783745307.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783745398.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783745823.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783745954.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783746681.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783747170.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783747179.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783747886.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783747965.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783747993.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783748006.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783748051.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783748120.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783748244.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783748308.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749045.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749077.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749146.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749537.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749548.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749761.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783749927.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1783750117.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784071987.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072537.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072563.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072870.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072895.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072911.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072929.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072947.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784072973.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073003.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073034.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073049.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073071.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073095.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073107.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073120.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073132.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073175.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073191.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073202.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073215.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073229.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073243.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073262.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073278.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073300.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073312.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073328.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784073683.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074454.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074471.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074640.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074670.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074697.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784074945.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075245.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075271.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075306.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075377.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075395.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075410.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075442.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075458.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075472.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075700.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784075714.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784076744.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784076774.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784078898.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079212.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079225.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079496.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079535.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079760.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079773.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079807.json +1 -0
- wesker-0.4.0/.lintgate/hooks/posttooluse/1784079859.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___build_static_impact_map.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___code_hash.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___discover_all_test_files.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___discover_by_convention.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___load_cached_state.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___load_function_cache.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___pct_color.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py___save_function_cache.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__discover_tests.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__load_test_callables.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__profile_codebase.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__profile_file.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__profile_function.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__profile_function_cached.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_ci.py__walk_functions.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__CategoryResult.survival_rate.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__ProfilingResult.to_dict.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__SamplingResult.to_dict.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___ArithmeticMutator.visit_BinOp.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___ArithmeticMutator.visit_UnaryOp.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___BaseMutator.__init__.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___BaseMutator._note.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___BoundaryMutator.visit_Compare.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___LogicalMutator.visit_BoolOp.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___LogicalMutator.visit_UnaryOp.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___StateMutator.__init__.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___StateMutator.visit_Assign.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___StateMutator.visit_Return.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___SwapMutator.visit_Call.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___TypeMutator.visit_Call.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___ValueMutator.__init__.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___ValueMutator._mutate_constant.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___ValueMutator.visit_Constant.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___callee_name.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_arithmetic_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_boundary_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_logical_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_state_assign_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_state_return_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_state_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_stmt_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_swap_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_targets.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_type_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___count_value_target.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___docstring_positions.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___elapsed.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___extract_compare_parts.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___find_closure_cell.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___generate_boundary_inputs.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___generate_state_mutants.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___get_closure_bindings.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___get_raw_attr.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___greedy_dimension_order.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___is_dead.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___is_self_assign.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___isinstance_type_name.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___make_transformer.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___patch_mutant_into_test.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___preserve_closure_binding_shape.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___preserve_descriptor_shape.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___record_dimensions.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___record_state_dimensions.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___resolve_qualified_owner.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___run_test_with_timeout.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___select_greedy.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___stable_target_key.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___stable_target_order.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___stmt_label.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___unpatch_mutant.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py___unwrap_descriptor.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__check_equivalent.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__estimate_universe_size.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__evaluate_mutant.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__extract_boundary_inputs.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__generate_mutants.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__run_function_converged.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__run_function_profiling.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_engine.py__run_function_sampling.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_filter.py___classify_signal_node.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_filter.py___collect_signals.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_filter.py__filter_categories.json +1 -0
- wesker-0.4.0/.lintgate/mutation/Wesker_filter.py__prioritize_categories.json +1 -0
- wesker-0.4.0/.lintgate/runtime_state.json +1 -0
- wesker-0.4.0/.lintgate/runtime_state.lock +0 -0
- wesker-0.4.0/.lintgate/skeletons/prescribe_engine.py +10 -0
- wesker-0.4.0/.lintgate/spec_cache/prescriptive_projection.json +530 -0
- wesker-0.4.0/.lintgate/test_discovery_embeddings.json +1 -0
- wesker-0.4.0/.python-version +1 -0
- wesker-0.4.0/LICENSE +21 -0
- wesker-0.4.0/PKG-INFO +347 -0
- wesker-0.4.0/README.md +322 -0
- wesker-0.4.0/README_Wesker.md +322 -0
- wesker-0.4.0/Wesker/__init__.py +56 -0
- wesker-0.4.0/Wesker/__main__.py +5 -0
- wesker-0.4.0/Wesker/ci.py +927 -0
- wesker-0.4.0/Wesker/cli.py +188 -0
- wesker-0.4.0/Wesker/engine.py +2804 -0
- wesker-0.4.0/Wesker/filter.py +181 -0
- wesker-0.4.0/Wesker/line_coverage.py +159 -0
- wesker-0.4.0/Wesker/memory_guard.py +220 -0
- wesker-0.4.0/Wesker/metrics.py +612 -0
- wesker-0.4.0/Wesker/py.typed +0 -0
- wesker-0.4.0/Wesker/pytest_discovery.py +183 -0
- wesker-0.4.0/action.yml +106 -0
- wesker-0.4.0/conftest.py +12 -0
- wesker-0.4.0/pyproject.toml +64 -0
- wesker-0.4.0/sonar-project.properties +52 -0
- wesker-0.4.0/tests/test__baseline_failures_synth.py +19 -0
- wesker-0.4.0/tests/test_ci.py +254 -0
- wesker-0.4.0/tests/test_coverage_floor_synth.py +30 -0
- wesker-0.4.0/tests/test_diff_summary.py +41 -0
- wesker-0.4.0/tests/test_dimension_budget_synth.py +14 -0
- wesker-0.4.0/tests/test_dof_budget.py +140 -0
- wesker-0.4.0/tests/test_engine.py +488 -0
- wesker-0.4.0/tests/test_filter.py +235 -0
- wesker-0.4.0/tests/test_kill_attribution.py +94 -0
- wesker-0.4.0/tests/test_mutant_namespace.py +55 -0
- wesker-0.4.0/tests/test_pytest_discovery.py +78 -0
- wesker-0.4.0/tests/test_scope_tests_verdict_exact.py +165 -0
- wesker-0.4.0/uv.lock +312 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
types: [opened, synchronize, reopened]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
with:
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
|
|
17
|
+
- uses: astral-sh/setup-uv@v4
|
|
18
|
+
with:
|
|
19
|
+
version: "latest"
|
|
20
|
+
|
|
21
|
+
- name: Install dependencies
|
|
22
|
+
run: uv sync
|
|
23
|
+
|
|
24
|
+
- name: Lint
|
|
25
|
+
run: uv run ruff check Wesker/ tests/
|
|
26
|
+
|
|
27
|
+
- name: Format check
|
|
28
|
+
run: uv run ruff format --check Wesker/ tests/
|
|
29
|
+
|
|
30
|
+
- name: Test with coverage
|
|
31
|
+
run: uv run pytest tests/ --cov=Wesker --cov-report=xml:coverage.xml -q
|
|
32
|
+
|
|
33
|
+
- name: Upload coverage report
|
|
34
|
+
uses: actions/upload-artifact@v4
|
|
35
|
+
with:
|
|
36
|
+
name: coverage-report
|
|
37
|
+
path: coverage.xml
|
|
38
|
+
|
|
39
|
+
sonarcloud:
|
|
40
|
+
name: SonarCloud
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
needs: test
|
|
43
|
+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository
|
|
44
|
+
env:
|
|
45
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@v4
|
|
48
|
+
with:
|
|
49
|
+
fetch-depth: 0
|
|
50
|
+
|
|
51
|
+
- name: Download coverage report
|
|
52
|
+
uses: actions/download-artifact@v4
|
|
53
|
+
with:
|
|
54
|
+
name: coverage-report
|
|
55
|
+
|
|
56
|
+
# Skips (keeping CI green) until SONAR_TOKEN is set; activates the
|
|
57
|
+
# Quality Gate + Coverage badges the moment the secret is added.
|
|
58
|
+
- name: SonarQube Scan
|
|
59
|
+
if: env.SONAR_TOKEN != ''
|
|
60
|
+
uses: SonarSource/sonarqube-scan-action@v6
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
name: Specification Badges
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
spec_badges:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- uses: astral-sh/setup-uv@v4
|
|
20
|
+
with:
|
|
21
|
+
version: "latest"
|
|
22
|
+
|
|
23
|
+
- name: Install dependencies
|
|
24
|
+
run: uv sync
|
|
25
|
+
|
|
26
|
+
# ── Wesker specification metrics — the tool profiling itself ──
|
|
27
|
+
#
|
|
28
|
+
# `python -m Wesker.metrics` runs in-process multi-pass mutation
|
|
29
|
+
# profiling over Wesker's own library core (engine, ci, filter),
|
|
30
|
+
# then MC/DC verification (GITHUB_ACTIONS auto-enables it), and emits
|
|
31
|
+
# MUTATION_KILL_PCT / MEAN_SIGMA / TEST_COUNT / MCDC_* to GITHUB_ENV.
|
|
32
|
+
#
|
|
33
|
+
# MC/DC methodology: ROR (Relational Operator Replacement) mutation.
|
|
34
|
+
# Offutt & Voas (1996) prove mutation testing subsumes MC/DC; Kaminski,
|
|
35
|
+
# Ammann & Offutt (2013) show ROR mutation is strictly stronger than
|
|
36
|
+
# MC/DC in fault-detection power. Targets are auto-discovered by AST
|
|
37
|
+
# scan — every function with relational operators, no hand-curation.
|
|
38
|
+
- name: Run Wesker specification metrics
|
|
39
|
+
run: uv run python -m Wesker.metrics
|
|
40
|
+
env:
|
|
41
|
+
WESKER_COLOR: "1"
|
|
42
|
+
|
|
43
|
+
- name: Create badges directory
|
|
44
|
+
run: mkdir -p .github/badges
|
|
45
|
+
|
|
46
|
+
# ── Badge generation ──────────────────────────────────────────
|
|
47
|
+
|
|
48
|
+
- name: Generate Mutation Kill Rate Badge
|
|
49
|
+
uses: emibcn/badge-action@v2.0.2
|
|
50
|
+
with:
|
|
51
|
+
label: "Mutation Kill Rate"
|
|
52
|
+
label-color: "333"
|
|
53
|
+
status: "${{ env.MUTATION_KILL_PCT }}%"
|
|
54
|
+
color: ${{ env.MUTATION_KILL_PCT == '100' && '2ea043' || 'e5534b' }}
|
|
55
|
+
path: ".github/badges/mutation-kill-rate.svg"
|
|
56
|
+
|
|
57
|
+
- name: "Generate Mean σ Badge"
|
|
58
|
+
uses: emibcn/badge-action@v2.0.2
|
|
59
|
+
with:
|
|
60
|
+
label: "Mean σ"
|
|
61
|
+
label-color: "333"
|
|
62
|
+
status: "${{ env.MEAN_SIGMA }}"
|
|
63
|
+
color: "8b5cf6"
|
|
64
|
+
path: ".github/badges/sigma.svg"
|
|
65
|
+
|
|
66
|
+
- name: Generate Test Count Badge
|
|
67
|
+
uses: emibcn/badge-action@v2.0.2
|
|
68
|
+
with:
|
|
69
|
+
label: "Tests"
|
|
70
|
+
label-color: "333"
|
|
71
|
+
status: "${{ env.TEST_COUNT }} (${{ env.TEST_RATIO }})"
|
|
72
|
+
color: "555"
|
|
73
|
+
path: ".github/badges/test-count.svg"
|
|
74
|
+
|
|
75
|
+
- name: Compute sampling ratio
|
|
76
|
+
run: |
|
|
77
|
+
python3 -c "
|
|
78
|
+
tested = ${{ env.MUTATION_TOTAL }}
|
|
79
|
+
universe = ${{ env.MUTATION_UNIVERSE }}
|
|
80
|
+
if universe and universe > 0:
|
|
81
|
+
pct = round(100 * tested / universe, 1)
|
|
82
|
+
print(f'SAMPLING_RATIO={tested}/{universe} ({pct}%)')
|
|
83
|
+
else:
|
|
84
|
+
print(f'SAMPLING_RATIO={tested}/{tested} (100%)')
|
|
85
|
+
" | while read line; do echo "$line" >> "$GITHUB_ENV"; done
|
|
86
|
+
|
|
87
|
+
- name: Generate Mutation Sampling Badge
|
|
88
|
+
uses: emibcn/badge-action@v2.0.2
|
|
89
|
+
with:
|
|
90
|
+
label: "Mutation Sampling"
|
|
91
|
+
label-color: "333"
|
|
92
|
+
status: "${{ env.SAMPLING_RATIO }}"
|
|
93
|
+
color: "555"
|
|
94
|
+
path: ".github/badges/mutation-sampling.svg"
|
|
95
|
+
|
|
96
|
+
- name: "Generate MC/DC Badge"
|
|
97
|
+
uses: emibcn/badge-action@v2.0.2
|
|
98
|
+
with:
|
|
99
|
+
label: "MC/DC"
|
|
100
|
+
label-color: "333"
|
|
101
|
+
status: "${{ env.MCDC_STATUS }} (${{ env.MCDC_COVERED }}/${{ env.MCDC_TOTAL }})"
|
|
102
|
+
color: ${{ env.MCDC_STATUS == 'Verified' && '0ea5e9' || 'e5534b' }}
|
|
103
|
+
path: ".github/badges/mcdc.svg"
|
|
104
|
+
|
|
105
|
+
# ── Push to badges branch ────────────────────────────────────
|
|
106
|
+
|
|
107
|
+
- name: Push badges to badges branch
|
|
108
|
+
if: github.ref == 'refs/heads/main'
|
|
109
|
+
run: |
|
|
110
|
+
cp .github/badges/*.svg /tmp/
|
|
111
|
+
rm -rf .github/badges
|
|
112
|
+
|
|
113
|
+
git config user.name "github-actions[bot]"
|
|
114
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
115
|
+
|
|
116
|
+
if git ls-remote --exit-code --heads origin badges >/dev/null 2>&1; then
|
|
117
|
+
git fetch origin badges:badges
|
|
118
|
+
git switch badges
|
|
119
|
+
else
|
|
120
|
+
git switch --orphan badges
|
|
121
|
+
git rm -rf . >/dev/null 2>&1 || true
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
mkdir -p .github/badges
|
|
125
|
+
cp /tmp/*.svg .github/badges/
|
|
126
|
+
git add .github/badges/*.svg
|
|
127
|
+
|
|
128
|
+
if git diff --cached --quiet; then
|
|
129
|
+
echo "No badge changes"
|
|
130
|
+
exit 0
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
git commit -m "Update spec badges (kill=${{ env.MUTATION_KILL_PCT }}%, σ̄=${{ env.MEAN_SIGMA }}, tests=${{ env.TEST_COUNT }}, ratio=${{ env.TEST_RATIO }})"
|
|
134
|
+
git push origin badges
|
wesker-0.4.0/.gitignore
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.pyc
|
|
3
|
+
*.egg-info/
|
|
4
|
+
dist/
|
|
5
|
+
build/
|
|
6
|
+
.wesker/
|
|
7
|
+
.wesker-report.json
|
|
8
|
+
# Detective's analysis artifacts — Wesker is dogfooded with it (ARCHITECTURE §11),
|
|
9
|
+
# which drops reports/caches here. Regeneratable; never part of the package.
|
|
10
|
+
.detective/
|
|
11
|
+
.coverage
|
|
12
|
+
coverage.xml
|
|
13
|
+
.venv/
|
|
14
|
+
|
|
15
|
+
# Dev tooling caches (not part of the package)
|
|
16
|
+
.serena/
|
|
17
|
+
.claude/
|
|
18
|
+
.DS_Store
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"_envelope":"v1","_meta":{"tool":"controlplane_apply_repairs","timestamp":1783745594.216842,"project":"/Users/rohanvinaik/tools/Wesker"},"_sections":{"meta":["run_id"],"findings":["repairs_executed","results"],"data":["pending_remaining"]},"run_id":"dd942832f273","summary":{"total_proposed":1,"collected":1,"succeeded":1,"failed":0,"skipped":0},"repairs_executed":1,"results":[{"action_id":"bd4f0431","command":"ruff check --fix .","status":"ok","returncode":0,"stderr":null}],"pending_remaining":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"_envelope":"v1","_meta":{"tool":"controlplane_apply_repairs","timestamp":1783745062.9444742,"project":"/Users/rohanvinaik/tools/Wesker"},"_sections":{"meta":["run_id"],"findings":["repairs_executed","results"],"data":["pending_remaining"]},"run_id":"c5be24f8a742","summary":{"total_proposed":2,"collected":2,"succeeded":1,"failed":1,"skipped":0},"repairs_executed":2,"results":[{"action_id":"7e0a22ed","command":"Create .python-version with your target version (e.g., '3.11')","status":"error","error":"[Errno 2] No such file or directory: 'Create'"},{"action_id":"4ffb3bfb","command":"ruff check --fix .","status":"ok","returncode":0,"stderr":null}],"pending_remaining":0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"_envelope":"v1","_meta":{"tool":"controlplane_get_details","timestamp":1783745052.9902341,"project":"/Users/rohanvinaik/tools/Wesker"},"_sections":{"meta":["run_id"],"status":["coherence"],"metrics":["duration_ms","total_matching"],"findings":["findings","repairs"],"actions":["next_actions"],"data":["finding_summary","channel_details","evidence"]},"run_id":"c5be24f8a742","duration_ms":16769.2,"coherence":{"state":"systemic","summary":"Multiple system failures: deps, git, specification, tests, lint, coherence. This suggests a structural problem, not isolated issues.","recommended_action":"Review overall approach. Failing channels: deps: 1 finding (top: python_version_file); git: 1 finding (top: missing_quality_infra); specification: 26 findings (top: SPEC012); tests: 4 findings (top: missing_test); lint: 71 findings (top: PERF011); coherence: 73 findings (top: COH101). Note: coherence findings are pre-existing and unrelated to your edit.","silent_channels":["behavior","structure","test_hygiene","test_effectiveness","performance"],"loud_channels":["deps","git","specification","tests","lint","coherence"]},"total_matching":5,"findings":[{"linter":"radon","kind":"complexity","message":"function '_discover_by_convention' has cyclomatic complexity 34 (grade E, threshold=25)","file":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","line":53,"severity":"blocking","confidence":1.0,"fixable":false,"evidence":{"complexity":34,"grade":"E","threshold":25,"scope":"committed"},"suggestions":["CC=34 is very high. Extract each independent branch in '_discover_by_convention' into its own helper function with a descriptive name.","If the function validates multiple conditions, extract a _validate_*() helper for each concern.","Each early-return guard clause removes one branch from CC count."],"estimated_effort_minutes":15.0,"issue_id":"798c039f6da7","channel":"lint","delegation_suitability":{"score":0.2,"category":"low","reason":"2 downstream dependents. blocking severity","requires_context":["import patterns from prior fixes"]}},{"linter":"structure","kind":"file-too-long","message":"File has 1787 lines (limit: 600). Consider splitting into focused modules.","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","severity":"blocking","confidence":1.0,"fixable":false,"evidence":{"lines":1787,"threshold":600,"cohesion":{"score":0.058,"components":[["BoundaryInput","CategoryResult","Mutant","MutantResult","MutationCategory","ProfilingResult","SamplingResult","_ArithmeticMutator","_BaseMutator","_BoundaryMutator","_LogicalMutator","_StateMutator","_SwapMutator","_TypeMutator","_ValueMutator","_callee_name","_count_arithmetic_target","_count_boundary_target","_count_logical_target","_count_state_assign_target","_count_state_return_target","_count_state_target","_count_targets","_count_value_target","_docstring_positions","_elapsed","_extract_compare_parts","_find_closure_cell","_generate_boundary_inputs","_generate_state_mutants","_get_closure_bindings","_get_raw_attr","_greedy_dimension_order","_is_dead","_is_self_assign","_isinstance_type_name","_make_transformer","_patch_mutant_into_test","_preserve_closure_binding_shape","_preserve_descriptor_shape","_record_dimensions","_record_state_dimensions","_resolve_qualified_owner","_run_test_with_timeout","_select_greedy","_stable_target_key","_stable_target_order","_unpatch_mutant","_unwrap_descriptor","check_equivalent","estimate_universe_size","evaluate_mutant","extract_boundary_inputs","generate_mutants","run_function_converged","run_function_profiling","run_function_sampling"],["_count_swap_target"],["_count_type_target"]],"component_count":3,"is_cli_mixed":false},"split_proposals":[{"kind":"split_file","target":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","action":"Extract component 1 (BoundaryInput, CategoryResult, Mutant, MutantResult, +53 more) into a separate module","source":"static","confidence":0.55,"basis":["cohesion_analysis","connected_components"],"inputs":["BoundaryInput","CategoryResult","Mutant","MutantResult","MutationCategory","ProfilingResult","SamplingResult","_ArithmeticMutator","_BaseMutator","_BoundaryMutator","_LogicalMutator","_StateMutator","_SwapMutator","_TypeMutator","_ValueMutator","_callee_name","_count_arithmetic_target","_count_boundary_target","_count_logical_target","_count_state_assign_target","_count_state_return_target","_count_state_target","_count_targets","_count_value_target","_docstring_positions","_elapsed","_extract_compare_parts","_find_closure_cell","_generate_boundary_inputs","_generate_state_mutants","_get_closure_bindings","_get_raw_attr","_greedy_dimension_order","_is_dead","_is_self_assign","_isinstance_type_name","_make_transformer","_patch_mutant_into_test","_preserve_closure_binding_shape","_preserve_descriptor_shape","_record_dimensions","_record_state_dimensions","_resolve_qualified_owner","_run_test_with_timeout","_select_greedy","_stable_target_key","_stable_target_order","_unpatch_mutant","_unwrap_descriptor","check_equivalent","estimate_universe_size","evaluate_mutant","extract_boundary_inputs","generate_mutants","run_function_converged","run_function_profiling","run_function_sampling"],"expected_delta":{"component_separation":3},"cochange_annotation":{"status":"no_data","reason":"No co-change data available for this file."}}],"scope":"committed"},"suggestions":["Extract component 1 (BoundaryInput, CategoryResult, Mutant, MutantResult, +53 more) into a separate module","Extract related functions into a separate module","Group by responsibility: data, logic, I/O"],"estimated_effort_minutes":15.0,"issue_id":"f6ea54150d23","channel":"lint","delegation_suitability":{"score":0.1,"category":"low","reason":"3 downstream dependents. blocking severity","requires_context":["import patterns from prior fixes"]}},{"linter":"radon","kind":"maintainability","message":"Maintainability index 0.0 (grade C, threshold=5)","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","severity":"blocking","confidence":1.0,"fixable":false,"evidence":{"mi_score":0.0,"grade":"C","scope":"committed"},"suggestions":["File is difficult to maintain. Consider breaking into smaller modules."],"estimated_effort_minutes":15.0,"issue_id":"565b66f383e8","channel":"lint","delegation_suitability":{"score":0.1,"category":"low","reason":"3 downstream dependents. blocking severity","requires_context":["import patterns from prior fixes"]}},{"linter":"structure","kind":"deep-nesting","message":"Function '_collect_signals' has nesting depth 9 (limit: 6). Deeply nested code is hard to understand and maintain.","file":"/Users/rohanvinaik/tools/Wesker/Wesker/filter.py","line":41,"severity":"blocking","confidence":1.0,"fixable":false,"evidence":{"depth":9,"threshold":6,"scope":"committed"},"suggestions":["Use early returns (guard clauses) to flatten nesting","Extract nested blocks into named helper functions","Consider whether the logic can be simplified"],"estimated_effort_minutes":15.0,"issue_id":"60c9fc78a087","channel":"lint","delegation_suitability":{"score":0.3,"category":"low","reason":"1 downstream dependents. blocking severity","requires_context":["import patterns from prior fixes"]}},{"linter":"ty","kind":"unresolved-import","message":"unresolved-import: Cannot resolve imported module `pytest`","file":"tests/test_engine.py","line":18,"severity":"blocking","confidence":1.0,"fixable":false,"evidence":{"check_name":"unresolved-import","ty_severity":"major","sys_path_dynamic_import":false,"scope":"committed"},"estimated_effort_minutes":10.0,"issue_id":"2fc765f0c8ba","channel":"lint","delegation_suitability":{"score":0.4,"category":"medium","reason":"blocking severity","requires_context":[]}}],"finding_summary":{"domains":{"code":{"total":5,"blocking":5,"warning":0,"informational":0},"environment":{"total":0,"blocking":0,"warning":0,"informational":0}},"channels":{"lint":5}},"channel_details":{"deps":{"status":"fail","severity":"warning","finding_count":1,"duration_ms":12.4,"error":null},"behavior":{"status":"pass","severity":"none","finding_count":0,"duration_ms":11.6,"error":null},"git":{"status":"fail","severity":"warning","finding_count":1,"duration_ms":145.6,"error":null},"structure":{"status":"pass","severity":"none","finding_count":0,"duration_ms":252.4,"error":null},"test_effectiveness":{"status":"fail","severity":"informational","finding_count":1,"duration_ms":275.8,"error":null},"performance":{"status":"fail","severity":"informational","finding_count":2,"duration_ms":1574.5,"error":null},"test_hygiene":{"status":"pass","severity":"none","finding_count":0,"duration_ms":46.9,"error":null},"specification":{"status":"fail","severity":"warning","finding_count":26,"duration_ms":1348.4,"error":null},"tests":{"status":"fail","severity":"informational","finding_count":4,"duration_ms":3752.5,"error":null},"lint":{"status":"fail","severity":"blocking","finding_count":71,"duration_ms":16619.5,"error":null},"coherence":{"status":"fail","severity":"warning","finding_count":73,"duration_ms":0,"error":null}},"repairs":[{"action_id":"7e0a22ed","kind":"command","summary":"Create .python-version with your target version (e.g., '3.11')","safe":true,"payload":{"command":"Create .python-version with your target version (e.g., '3.11')","cwd":"/Users/rohanvinaik/tools/Wesker"}},{"action_id":"e3d9be71","kind":"command","summary":"Deploy missing quality infrastructure","safe":true,"payload":{"tool":"setup_github_quality","args":{"path":"/Users/rohanvinaik/tools/Wesker","write":true}}},{"action_id":"76d64b35","kind":"create_test_skeleton","summary":"Create test skeleton for ci.py (error_handling)","safe":true,"payload":{"source_file":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","archetypes":["error_handling","round_trip","mock_isolation","input_validation","regression"]}},{"action_id":"1665a1b0","kind":"create_test_skeleton","summary":"Create test skeleton for cli.py (round_trip)","safe":true,"payload":{"source_file":"/Users/rohanvinaik/tools/Wesker/Wesker/cli.py","archetypes":["round_trip","input_validation"]}},{"action_id":"8b526c7f","kind":"create_test_skeleton","summary":"Create test skeleton for filter.py (configuration)","safe":true,"payload":{"source_file":"/Users/rohanvinaik/tools/Wesker/Wesker/filter.py","archetypes":["configuration","input_validation","regression"]}},{"action_id":"a1751f13","kind":"create_test_skeleton","summary":"Create test skeleton for metrics.py (mock_isolation)","safe":true,"payload":{"source_file":"/Users/rohanvinaik/tools/Wesker/Wesker/metrics.py","archetypes":["mock_isolation","error_handling","configuration","round_trip","input_validation"]}},{"action_id":"4ffb3bfb","kind":"command","summary":"Auto-fix 7 safe lint issues","safe":true,"payload":{"command":"ruff check --fix ."}}],"evidence":{"deps":{"issue_count":1,"repair_count":1,"surface":"mcp"},"behavior":{"alert_count":0,"hard_alerts":0,"soft_alerts":0,"next_actions":[],"compass_summary":{"hypotheses_active":0,"approaches_total":0,"prediction_recall":0.0},"behavior_compass_delta":{"last_fired":{},"signal_fire_counts":{},"early_nudge_emitted":false,"pending_nudge_signals":[],"pending_nudge_constraint_check_count":0,"nudge_outcomes":{},"_theory_recent_codas":{}},"intent_summary":{"window":0,"intent_counts":{}},"global_profile_delta":{"signal_fire_counts":{},"intent_summary":{},"nudge_outcomes":{}},"suppressed_nudges":0},"git":{"checks_run":6,"issue_count":1,"secrets_found":0,"quality_infra_findings":1},"structure":{"file_count":8,"total_loc":2412,"median_module_loc":134,"largest_modules":[{"file":"Wesker/engine.py","loc":1243},{"file":"Wesker/ci.py","loc":428},{"file":"Wesker/metrics.py","loc":346}],"package_count":3,"packages":{"<top-level>":1,"Wesker":6,"tests":1},"import_cycle_count":0,"orphan_count":0,"low_cohesion_packages":0,"checks_run":4,"zero_fan_in_count":3,"high_fan_in_modules":[{"module":"Wesker.engine","fan_in":3},{"module":"Wesker.ci","fan_in":2}],"_import_graph":{"Wesker.__main__":["Wesker.cli"],"Wesker.ci":["Wesker.engine","Wesker.filter"],"Wesker.cli":["Wesker.ci","Wesker.metrics"],"Wesker.filter":["Wesker.engine"],"Wesker.metrics":["Wesker.ci"],"tests.test_engine":["Wesker.engine"]},"_file_map":{"Wesker":"/Users/rohanvinaik/tools/Wesker/Wesker/__init__.py","Wesker.__main__":"/Users/rohanvinaik/tools/Wesker/Wesker/__main__.py","Wesker.ci":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","Wesker.cli":"/Users/rohanvinaik/tools/Wesker/Wesker/cli.py","Wesker.engine":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","Wesker.filter":"/Users/rohanvinaik/tools/Wesker/Wesker/filter.py","Wesker.metrics":"/Users/rohanvinaik/tools/Wesker/Wesker/metrics.py","tests.test_engine":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py"},"_module_fan_in":{"Wesker":0,"Wesker.__main__":0,"Wesker.ci":2,"Wesker.cli":1,"Wesker.engine":3,"Wesker.filter":1,"Wesker.metrics":1,"tests.test_engine":0},"_file_cohesion":{"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py":{"score":0.058,"component_count":3,"split_proposals":[{"kind":"split_file","target":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","action":"Extract component 1 (BoundaryInput, CategoryResult, Mutant, MutantResult, +53 more) into a separate module","confidence":0.55}]}},"file_convergence":{"total_files":7,"actionable_split":0,"actionable_investigate":7,"top_files":[{"target":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["cohesion"],"opposing_lenses":[],"actionability":"investigate","evidence_count":1,"target_type":"file","split_proposals":[{"kind":"split_file","target":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","action":"Extract component 1 (BoundaryInput, CategoryResult, Mutant, MutantResult, +53 more) into a separate module","confidence":0.55}]},{"target":"Wesker","support_prob":0.6,"oppose_prob":0.0,"net_confidence":0.6,"supporting_lenses":["fan_in"],"opposing_lenses":[],"actionability":"investigate","evidence_count":1,"target_type":"file"},{"target":"Wesker.__main__","support_prob":0.6,"oppose_prob":0.0,"net_confidence":0.6,"supporting_lenses":["fan_in"],"opposing_lenses":[],"actionability":"investigate","evidence_count":1,"target_type":"file"},{"target":"Wesker.cli","support_prob":0.6,"oppose_prob":0.0,"net_confidence":0.6,"supporting_lenses":["fan_in"],"opposing_lenses":[],"actionability":"investigate","evidence_count":1,"target_type":"file"},{"target":"Wesker.filter","support_prob":0.6,"oppose_prob":0.0,"net_confidence":0.6,"supporting_lenses":["fan_in"],"opposing_lenses":[],"actionability":"investigate","evidence_count":1,"target_type":"file"}]}},"test_effectiveness":{"project_effectiveness_score":0.029,"semantic_ratio":1.0,"functions_analyzed":59,"mutation_vulnerable_count":57},"performance":{"pure_functions":65,"impure_functions":57,"purity_ratio":0.533,"purity_tiers":{"pure":65,"stable_read":37,"stateful":20},"properties_detected":{"pure":65,"bounded":2,"monotonic":1,"idempotent":0,"commutative":0,"associative":0},"optimization_opportunities":65,"pure_function_list":[{"name":"Wesker/ci.py::_pct_color","file":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","hints":["cacheable"]},{"name":"Wesker/ci.py::walk_functions","file":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","hints":["cacheable"]},{"name":"Wesker/ci.py::_code_hash","file":"/Users/rohanvinaik/tools/Wesker/Wesker/ci.py","hints":["cacheable"]},{"name":"Wesker/cli.py::_parse_mcdc_targets","file":"/Users/rohanvinaik/tools/Wesker/Wesker/cli.py","hints":["cacheable"]},{"name":"Wesker/engine.py::CategoryResult.survival_rate","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::SamplingResult.to_dict","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::ProfilingResult.to_dict","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_BaseMutator.__init__","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_ValueMutator.__init__","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_StateMutator.__init__","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_docstring_positions","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_value_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_boundary_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_swap_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_is_self_assign","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["overflow-safe","cacheable"]},{"name":"Wesker/engine.py::_count_state_assign_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_state_return_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_state_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_type_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_arithmetic_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_count_logical_target","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_is_dead","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["overflow-safe","cacheable"]},{"name":"Wesker/engine.py::_callee_name","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_isinstance_type_name","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_greedy_dimension_order","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_select_greedy","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_stable_target_order","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_stable_target_key","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_extract_compare_parts","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_resolve_qualified_owner","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_get_closure_bindings","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_find_closure_cell","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_get_raw_attr","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_unwrap_descriptor","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_preserve_descriptor_shape","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_unpatch_mutant","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/engine.py::_generate_boundary_inputs","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","hints":["cacheable"]},{"name":"Wesker/metrics.py::_mutate_line","file":"/Users/rohanvinaik/tools/Wesker/Wesker/metrics.py","hints":["cacheable"]},{"name":"Wesker/metrics.py::_check_equivalent","file":"/Users/rohanvinaik/tools/Wesker/Wesker/metrics.py","hints":["cacheable"]},{"name":"tests/test_engine.py::_fn","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::_selected_indices","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_is_dead_only_true_for_sentinel","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_record_dimensions_aligns_with_universe_count","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_record_dimensions_keys_carry_construct_kind","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_record_dimensions_marks_non_swappable_ops_dead","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_record_dimensions_value_keys_by_python_type","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_record_dimensions_unknown_category_is_empty","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_order_covers_distinct_dimensions_first","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_order_round_robins_by_depth","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_order_sinks_dead_keys_to_end","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_order_is_deterministic","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_order_empty","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_greedy_coverage_is_optimal_for_singleton_covers","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_select_greedy_windows_are_disjoint_and_cover","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_select_greedy_first_window_maximizes_coverage","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_select_greedy_exhausted_pass_falls_back_to_top_window","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_select_greedy_covers_all_indices_when_keys_short","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_generate_mutants_greedy_spans_dimensions_under_budget","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_generate_mutants_passes_are_disjoint","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_generate_mutants_greedy_false_uses_ast_order","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_generate_mutants_exhaustive_ignores_selection","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_state_greedy_spreads_across_attributes","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_converged_union_grows_with_passes","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_callee_name_variants","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]},{"name":"tests/test_engine.py::test_isinstance_type_name_variants","file":"/Users/rohanvinaik/tools/Wesker/tests/test_engine.py","hints":["cacheable"]}]},"test_hygiene":{"test_files_scanned":1,"stub_tests":0,"weak_only_tests":0,"duplicate_tests":0,"subsumed_files":0,"total_findings":0,"safe_delete_proposals":0},"specification":{"specification_coverage":0.0,"regime_distribution":{"A":83,"B":39,"unknown":0},"pure_underspecified_count":65,"total_estimated_sigma":1578,"risk_distribution":{"P0":7,"P1":36,"P2":79},"mean_testability":0.775,"stop_criteria_met_count":0,"sheaf_obstruction":267.0,"specification_function_list":{"Wesker/ci.py::_pct_color":{"spec_level":0.0,"regime":"A","sigma":6,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_discover_by_convention":{"spec_level":0.0,"regime":"B","sigma":38,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_build_static_impact_map":{"spec_level":0.0,"regime":"B","sigma":23,"phase":"bulk","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_discover_all_test_files":{"spec_level":0.0,"regime":"A","sigma":20,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::discover_tests":{"spec_level":0.0,"regime":"B","sigma":20,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::load_test_callables":{"spec_level":0.0,"regime":"B","sigma":32,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::walk_functions":{"spec_level":0.0,"regime":"A","sigma":6,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_load_cached_state":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::profile_file":{"spec_level":0.0,"regime":"B","sigma":32,"phase":"bulk","is_pure":false,"risk_score":0.8,"priority_band":"P0","testability_score":0.5,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::profile_function":{"spec_level":0.0,"regime":"B","sigma":36,"phase":"bulk","is_pure":false,"risk_score":0.8,"priority_band":"P0","testability_score":0.5,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_code_hash":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_load_function_cache":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::_save_function_cache":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::profile_function_cached":{"spec_level":0.0,"regime":"B","sigma":39,"phase":"bulk","is_pure":false,"risk_score":0.8,"priority_band":"P0","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/ci.py::profile_codebase":{"spec_level":0.0,"regime":"B","sigma":38,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/cli.py::_discover_python_files":{"spec_level":0.0,"regime":"B","sigma":21,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/cli.py::_parse_mcdc_targets":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/cli.py::main":{"spec_level":0.0,"regime":"B","sigma":34,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::CategoryResult.survival_rate":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::SamplingResult.to_dict":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::ProfilingResult.to_dict":{"spec_level":0.0,"regime":"A","sigma":6,"phase":"tail","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_BaseMutator.__init__":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.6,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_BaseMutator._note":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"tail","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_ValueMutator.__init__":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_ValueMutator.visit_Constant":{"spec_level":0.0,"regime":"B","sigma":26,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_ValueMutator._mutate_constant":{"spec_level":0.0,"regime":"A","sigma":18,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_BoundaryMutator.visit_Compare":{"spec_level":0.0,"regime":"B","sigma":22,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_SwapMutator.visit_Call":{"spec_level":0.0,"regime":"B","sigma":18,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_StateMutator.__init__":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.6,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_StateMutator.visit_Assign":{"spec_level":0.0,"regime":"B","sigma":22,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_StateMutator.visit_Return":{"spec_level":0.0,"regime":"B","sigma":19,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_TypeMutator.visit_Call":{"spec_level":0.0,"regime":"B","sigma":19,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_ArithmeticMutator.visit_BinOp":{"spec_level":0.0,"regime":"B","sigma":17,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_ArithmeticMutator.visit_UnaryOp":{"spec_level":0.0,"regime":"B","sigma":16,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_LogicalMutator.visit_BoolOp":{"spec_level":0.0,"regime":"B","sigma":17,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_LogicalMutator.visit_UnaryOp":{"spec_level":0.0,"regime":"B","sigma":16,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_docstring_positions":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_targets":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_count_value_target":{"spec_level":0.0,"regime":"A","sigma":5,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_boundary_target":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_swap_target":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_is_self_assign":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["overflow-safe","cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_state_assign_target":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_state_return_target":{"spec_level":0.0,"regime":"A","sigma":3,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_state_target":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_type_target":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_arithmetic_target":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_count_logical_target":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_generate_state_mutants":{"spec_level":0.0,"regime":"B","sigma":24,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_is_dead":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["overflow-safe","cacheable"],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_callee_name":{"spec_level":0.0,"regime":"A","sigma":5,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_isinstance_type_name":{"spec_level":0.0,"regime":"A","sigma":8,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_record_dimensions":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_record_state_dimensions":{"spec_level":0.0,"regime":"A","sigma":12,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_greedy_dimension_order":{"spec_level":0.0,"regime":"A","sigma":11,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_select_greedy":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::generate_mutants":{"spec_level":0.0,"regime":"B","sigma":38,"phase":"tail","is_pure":false,"risk_score":0.7,"priority_band":"P0","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":1},"Wesker/engine.py::_stable_target_order":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_stable_target_key":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_make_transformer":{"spec_level":0.0,"regime":"B","sigma":27,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::extract_boundary_inputs":{"spec_level":0.0,"regime":"B","sigma":26,"phase":"tail","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_extract_compare_parts":{"spec_level":0.0,"regime":"A","sigma":8,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_patch_mutant_into_test":{"spec_level":0.0,"regime":"B","sigma":30,"phase":"tail","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_resolve_qualified_owner":{"spec_level":0.0,"regime":"A","sigma":28,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_get_closure_bindings":{"spec_level":0.0,"regime":"A","sigma":6,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_find_closure_cell":{"spec_level":0.0,"regime":"A","sigma":6,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_get_raw_attr":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_unwrap_descriptor":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_preserve_descriptor_shape":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_preserve_closure_binding_shape":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_unpatch_mutant":{"spec_level":0.0,"regime":"A","sigma":8,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::evaluate_mutant":{"spec_level":0.0,"regime":"B","sigma":32,"phase":"tail","is_pure":false,"risk_score":0.7,"priority_band":"P0","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_run_test_with_timeout":{"spec_level":0.0,"regime":"B","sigma":28,"phase":"tail","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_elapsed":{"spec_level":0.0,"regime":"A","sigma":8,"phase":"tail","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::run_function_sampling":{"spec_level":0.0,"regime":"B","sigma":34,"phase":"tail","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::run_function_profiling":{"spec_level":0.0,"regime":"B","sigma":36,"phase":"tail","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::estimate_universe_size":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"tail","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::_generate_boundary_inputs":{"spec_level":0.0,"regime":"A","sigma":11,"phase":"tail","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.6,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::check_equivalent":{"spec_level":0.0,"regime":"B","sigma":36,"phase":"tail","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/engine.py::run_function_converged":{"spec_level":0.0,"regime":"B","sigma":52,"phase":"tail","is_pure":false,"risk_score":0.7,"priority_band":"P0","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":1},"Wesker/filter.py::_collect_signals":{"spec_level":0.0,"regime":"B","sigma":28,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.9,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/filter.py::filter_categories":{"spec_level":0.0,"regime":"B","sigma":22,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/filter.py::prioritize_categories":{"spec_level":0.0,"regime":"B","sigma":26,"phase":"bulk","is_pure":false,"risk_score":0.6,"priority_band":"P1","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_load_config":{"spec_level":0.0,"regime":"B","sigma":34,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_discover_targets":{"spec_level":0.0,"regime":"B","sigma":21,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_count_functions":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"bulk","is_pure":false,"risk_score":0.4,"priority_band":"P1","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_compute_sigma":{"spec_level":0.0,"regime":"A","sigma":16,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_count_tests":{"spec_level":0.0,"regime":"A","sigma":10,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_count_source_loc":{"spec_level":0.0,"regime":"A","sigma":15,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.8,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_mutate_line":{"spec_level":0.0,"regime":"A","sigma":8,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_check_equivalent":{"spec_level":0.0,"regime":"A","sigma":4,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.7,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_verify_mcdc_single":{"spec_level":0.0,"regime":"B","sigma":42,"phase":"bulk","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_discover_mcdc_targets":{"spec_level":0.0,"regime":"B","sigma":23,"phase":"bulk","is_pure":false,"risk_score":0.5,"priority_band":"P1","testability_score":0.4,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_verify_mcdc":{"spec_level":0.0,"regime":"A","sigma":19,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.7,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::_write_metrics":{"spec_level":0.0,"regime":"A","sigma":15,"phase":"bulk","is_pure":false,"risk_score":0.3,"priority_band":"P2","testability_score":0.6,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"Wesker/metrics.py::main":{"spec_level":0.0,"regime":"B","sigma":20,"phase":"bulk","is_pure":false,"risk_score":0.8,"priority_band":"P0","testability_score":0.5,"optimization_hints":[],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::_fn":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"tests/test_engine.py::_selected_indices":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.0,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":1},"tests/test_engine.py::test_is_dead_only_true_for_sentinel":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_record_dimensions_aligns_with_universe_count":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_record_dimensions_keys_carry_construct_kind":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_record_dimensions_marks_non_swappable_ops_dead":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_record_dimensions_value_keys_by_python_type":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_record_dimensions_unknown_category_is_empty":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_order_covers_distinct_dimensions_first":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_order_round_robins_by_depth":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_order_sinks_dead_keys_to_end":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_order_is_deterministic":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_order_empty":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_greedy_coverage_is_optimal_for_singleton_covers":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.9,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_select_greedy_windows_are_disjoint_and_cover":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_select_greedy_first_window_maximizes_coverage":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_select_greedy_exhausted_pass_falls_back_to_top_window":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_select_greedy_covers_all_indices_when_keys_short":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_generate_mutants_greedy_spans_dimensions_under_budget":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_generate_mutants_passes_are_disjoint":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_generate_mutants_greedy_false_uses_ast_order":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_generate_mutants_exhaustive_ignores_selection":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_state_greedy_spreads_across_attributes":{"spec_level":0.0,"regime":"A","sigma":2,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_converged_union_grows_with_passes":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":0.8,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_callee_name_variants":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0},"tests/test_engine.py::test_isinstance_type_name_variants":{"spec_level":0.0,"regime":"A","sigma":1,"phase":"bulk","is_pure":true,"risk_score":0.2,"priority_band":"P2","testability_score":1.0,"optimization_hints":["cacheable"],"stop_criteria_met":false,"coupling_surface":0}},"composition_gaps":{"Wesker/ci.py::profile_file::Wesker/filter.py::prioritize_categories":{"gamma":4.0,"integration_surface":4.0,"spec_independent":false},"Wesker/ci.py::profile_file::Wesker/engine.py::run_function_converged":{"gamma":100.0,"integration_surface":100.0,"spec_independent":false},"Wesker/ci.py::profile_file::Wesker/filter.py::filter_categories":{"gamma":4.0,"integration_surface":4.0,"spec_independent":false},"Wesker/ci.py::profile_function::Wesker/filter.py::prioritize_categories":{"gamma":4.0,"integration_surface":4.0,"spec_independent":false},"Wesker/ci.py::profile_function::Wesker/engine.py::run_function_converged":{"gamma":100.0,"integration_surface":100.0,"spec_independent":false},"Wesker/ci.py::profile_function::Wesker/filter.py::filter_categories":{"gamma":4.0,"integration_surface":4.0,"spec_independent":false},"Wesker/cli.py::main::Wesker/metrics.py::_verify_mcdc":{"gamma":1.0,"integration_surface":1.0,"spec_independent":false},"Wesker/cli.py::main::Wesker/ci.py::profile_codebase":{"gamma":25.0,"integration_surface":25.0,"spec_independent":false},"Wesker/metrics.py::main::Wesker/ci.py::profile_codebase":{"gamma":25.0,"integration_surface":25.0,"spec_independent":false}}},"tests":{"impacted_tests_found":1,"missing_test_count":4,"test_failure_count":0},"lint":{"total_issues":71,"blocking_count":5,"warning_count":30,"info_count":36,"tuned_count":0,"fixable_count":7,"linters_run":12,"linters_skipped":0,"linters_errored":1,"recurrence":{"repeated_issue_count":38,"unique_signatures_tracked":750,"top_repeated":[{"count":21,"last_seen":1783745024.425185,"linter":"structure","kind":"file-too-long","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":null,"message":"File has 1787 lines (limit: 600). Consider splitting into focused modules."},{"count":21,"last_seen":1783745024.425185,"linter":"radon","kind":"maintainability","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":null,"message":"Maintainability index 0.0 (grade C, threshold=5)"},{"count":21,"last_seen":1783745024.425185,"linter":"structure","kind":"too-many-classes","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":null,"message":"File has 15 classes (limit: 6). This suggests mixed responsibilities."},{"count":21,"last_seen":1783745024.425185,"linter":"structure","kind":"too-many-attributes","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":130,"message":"Class 'ProfilingResult' has 16 attributes (limit: 15). This suggests the class has too many responsibilities."},{"count":21,"last_seen":1783745024.425185,"linter":"structure","kind":"too-many-functions","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":null,"message":"File has 44 top-level functions (limit: 20). Consider grouping into classes or modules."},{"count":21,"last_seen":1783745024.425185,"linter":"ruff_format","kind":"format","file":"Wesker/engine.py","line":null,"message":"File needs formatting"},{"count":6,"last_seen":1783745024.425185,"linter":"mypy","kind":"arg-type","file":"Wesker/ci.py","line":337,"message":"Argument 1 to \"filter_categories\" has incompatible type \"FunctionDef | AsyncFunctionDef\"; expected \"FunctionDef\""},{"count":6,"last_seen":1783745024.425185,"linter":"performance_checker","kind":"PERF011","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":636,"message":"Uncached pure call in loop. 'getattr' is called with loop-invariant arguments. Hoist this call before the loop or use @lru_cache to prevent redundant computation."},{"count":6,"last_seen":1783745024.425185,"linter":"performance_checker","kind":"PERF011","file":"/Users/rohanvinaik/tools/Wesker/Wesker/engine.py","line":952,"message":"Uncached pure call in loop. 'type' is called with loop-invariant arguments. Hoist this call before the loop or use @lru_cache to prevent redundant computation."},{"count":5,"last_seen":1783745024.425185,"linter":"ruff_format","kind":"format","file":"Wesker/ci.py","line":null,"message":"File needs formatting"}]},"pattern_alerts":[{"linter":"performance_checker","kind":"PERF011","count_this_run":20,"files_this_run":4,"recent_run_count":3,"total_count":178,"alert_reason":"recurring_across_runs"},{"linter":"ruff_format","kind":"format","count_this_run":7,"files_this_run":7,"recent_run_count":5,"total_count":37,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"cognitive-complexity","count_this_run":6,"files_this_run":4,"recent_run_count":3,"total_count":115,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-locals","count_this_run":3,"files_this_run":3,"recent_run_count":3,"total_count":57,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"file-too-long","count_this_run":2,"files_this_run":2,"recent_run_count":3,"total_count":25,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-args","count_this_run":2,"files_this_run":1,"recent_run_count":3,"total_count":69,"alert_reason":"recurring_across_runs"},{"linter":"mypy","kind":"assignment","count_this_run":2,"files_this_run":1,"recent_run_count":3,"total_count":44,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-functions","count_this_run":2,"files_this_run":2,"recent_run_count":4,"total_count":23,"alert_reason":"recurring_across_runs"},{"linter":"radon","kind":"maintainability","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":21,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-classes","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":21,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-attributes","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":40,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-statements","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":40,"alert_reason":"recurring_across_runs"},{"linter":"structure","kind":"too-many-returns","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":59,"alert_reason":"recurring_across_runs"},{"linter":"ty","kind":"unused-type-ignore-comment","count_this_run":1,"files_this_run":1,"recent_run_count":3,"total_count":21,"alert_reason":"recurring_across_runs"},{"linter":"ty","kind":"unresolved-attribute","count_this_run":6,"files_this_run":1,"recent_run_count":2,"total_count":12,"alert_reason":"single_run_volume"},{"linter":"mypy","kind":"arg-type","count_this_run":3,"files_this_run":2,"recent_run_count":2,"total_count":30,"alert_reason":"single_run_volume"}],"tier_used":"tier_2_structural","tier_reason":"Structural change (function/class modified)","tier_strictness":"relaxed","linter_statuses":{"ruff_format":"ok","ruff_check":"ok","ty":"ok","secret_checker":"ok","bandit_fast":"ok","structure_checker":"ok","complexity_checker":"ok","context_rule_checker":"ok","redefinition_checker":"ok","version_checker":"ok","performance_checker":"ok","mypy":"ok","pip_audit":"timeout"},"files_linted":["Wesker/__main__.py","Wesker/ci.py","Wesker/cli.py","Wesker/engine.py","Wesker/filter.py","Wesker/metrics.py","tests/test_engine.py"],"lint_timeout_ms":8448},"coherence":{"cross_channel_findings":73,"convergence":{"total_targets":134,"actionable_extract":0,"actionable_split":112,"top_targets":[{"target":"Wesker/ci.py::_discover_by_convention","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["contract_coverage","specification"],"opposing_lenses":[],"actionability":"split","evidence_count":2,"target_type":"function"},{"target":"Wesker/ci.py::_build_static_impact_map","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["contract_coverage","specification"],"opposing_lenses":[],"actionability":"split","evidence_count":2,"target_type":"function"},{"target":"Wesker/ci.py::discover_tests","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["contract_coverage","specification"],"opposing_lenses":[],"actionability":"split","evidence_count":2,"target_type":"function"},{"target":"Wesker/ci.py::load_test_callables","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["contract_coverage","specification"],"opposing_lenses":[],"actionability":"split","evidence_count":2,"target_type":"function"},{"target":"Wesker/ci.py::profile_file","support_prob":1.0,"oppose_prob":0.0,"net_confidence":1.0,"supporting_lenses":["contract_coverage","specification"],"opposing_lenses":[],"actionability":"split","evidence_count":2,"target_type":"function"}]}}},"next_actions":[{"tool":"controlplane_apply_repairs","args":{"path":".","run_id":"c5be24f8a742","safe_only":true},"reason":"Apply 7 safe auto-repairs found in these details.","priority":1},{"tool":"Bash / your file edit tools","reason":"Address the findings listed above by editing the corresponding files.","priority":2}]}
|