sourcecode 5.9.12__py3-none-any.whl → 5.9.14__py3-none-any.whl
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.
Potentially problematic release.
This version of sourcecode might be problematic. Click here for more details.
- sourcecode/__init__.py +1 -1
- sourcecode/_build_commit.py +3 -3
- sourcecode/_docs/DEFECT-LEDGER.md +48 -0
- sourcecode/_docs/USER_GUIDE.md +4 -4
- sourcecode/cli.py +88 -7
- sourcecode/parallel.py +9 -0
- sourcecode/release_info.py +1 -1
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/METADATA +5 -5
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/RECORD +13 -13
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/WHEEL +0 -0
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/entry_points.txt +0 -0
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/licenses/LICENSE +0 -0
- {sourcecode-5.9.12.dist-info → sourcecode-5.9.14.dist-info}/licenses/NOTICE +0 -0
sourcecode/__init__.py
CHANGED
sourcecode/_build_commit.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""Generated at build time by hatch_build.py. Do not edit (AUD-592-D04)."""
|
|
2
2
|
|
|
3
|
-
BUILD_COMMIT = '
|
|
4
|
-
CLOSURE_PROVENANCE = {'AUD-611-B05': {'commit': '', 'status': 'uncited'}, 'AUD-611-B06': {'commit': '', 'status': 'uncited'}, 'AUD-611-B07': {'commit': '', 'status': 'uncited'}, 'AUD-611-B08': {'commit': '', 'status': 'uncited'}, 'AUD-611-B09': {'commit': '', 'status': 'uncited'}, 'AUD-611-B10': {'commit': '', 'status': 'uncited'}, 'AUD-611-B11': {'commit': '', 'status': 'uncited'}, 'AUD-612-07': {'commit': '', 'status': 'uncited'}, 'AUD-612-09': {'commit': '', 'status': 'uncited'}, 'AUD-612-14': {'commit': '', 'status': 'uncited'}, 'AUD-612-B03': {'commit': '', 'status': 'uncited'}, 'AUD-612-B07': {'commit': '', 'status': 'uncited'}, 'AUD-612-B13': {'commit': '', 'status': 'uncited'}, 'AUD-612-E': {'commit': '', 'status': 'uncited'}, 'AUD-612-G': {'commit': '', 'status': 'uncited'}, 'AUD-612-I': {'commit': '', 'status': 'uncited'}, 'AUD-612-K': {'commit': '', 'status': 'uncited'}, 'AUD-612-M': {'commit': '', 'status': 'uncited'}, 'AUD-612-R': {'commit': '', 'status': 'uncited'}, 'AUD-613-ROOT': {'commit': '', 'status': 'uncited'}, 'AUD-614-07': {'commit': '', 'status': 'uncited'}, 'AUD-614-E': {'commit': '', 'status': 'uncited'}, 'AUD-614-F': {'commit': '', 'status': 'uncited'}, 'AUD-614-G': {'commit': '', 'status': 'uncited'}, 'AUD-614-I': {'commit': '', 'status': 'uncited'}, 'AUD-614-INTENT-TIE': {'commit': '', 'status': 'uncited'}, 'AUD-614-JUNIT4': {'commit': '', 'status': 'uncited'}, 'AUD-614-RISK-L0': {'commit': '', 'status': 'uncited'}, 'AUD-614-SELFTEST-TIMEOUT': {'commit': '', 'status': 'uncited'}, 'AUD-615-07': {'commit': '', 'status': 'uncited'}, 'AUD-615-COLD-COMPACT': {'commit': '', 'status': 'uncited'}, 'AUD-615-DRIFT': {'commit': '', 'status': 'uncited'}, 'AUD-615-E': {'commit': '', 'status': 'uncited'}, 'AUD-615-F': {'commit': '', 'status': 'uncited'}, 'AUD-615-INTENT-TIE': {'commit': '', 'status': 'uncited'}, 'AUD-615-JUNIT4': {'commit': '', 'status': 'uncited'}, 'AUD-615-RISK-L0': {'commit': '', 'status': 'uncited'}, 'AUD-615-SELFTEST-TIMEOUT': {'commit': '', 'status': 'uncited'}, 'AUD-616-E-PROV': {'commit': '', 'status': 'uncited'}, 'AUD-616-F, -RISK-L0, -SELFTEST-TIMEOUT, -INTENT-TIE, -DRIFT, -COLD-COMPACT, -E, -07': {'commit': '', 'status': 'uncited'}, 'AUD-616-INTENT-TIE-COV': {'commit': '', 'status': 'uncited'}, 'AUD-616-JUNIT4-SELF': {'commit': '', 'status': 'uncited'}, 'AUD-616-KOTLIN': {'commit': '', 'status': 'uncited'}, 'AUD-616-O': {'commit': '', 'status': 'uncited'}, 'AUD-616-P': {'commit': '', 'status': 'uncited'}, 'Window': {'commit': '', 'status': 'uncited'}, '`ASK-FIELD-01`': {'commit': '829f9fa', 'status': 'present'}, '`ASK-FIELD-02`': {'commit': '6a659fa', 'status': 'present'}, '`ASK-FIELD-03`': {'commit': '55b0d51', 'status': 'present'}, '`AUD-588-F05`': {'commit': '470e4a4', 'status': 'present'}, '`AUD-590-B01` / `B-01`, `F-01`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B02` / `B-02`, `F-02`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B03` / `B-03`, `F-03`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B04` / `B-04`, `F-04`': {'commit': '', 'status': 'uncited'}, '`AUD-590-R01` / `R-01`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A01` / `A-1`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A02` / `A-2`, `A-4`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A03` / `A-3`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A05` / `A-5`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A06` / `A-6`, `A-7`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A08` / `A-8`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A09` / `A-9`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A10` / `A-10`': {'commit': '', 'status': 'uncited'}, '`AUD-592-A02` / `A-1` second half, `§12.5`': {'commit': '63f3d61', 'status': 'present'}, '`AUD-592-B01` / `B-8`': {'commit': '8329614', 'status': 'present'}, '`AUD-592-D01` / `D-1`': {'commit': '0f8e03f', 'status': 'present'}, '`AUD-592-D02` / `D-2`': {'commit': '1d3db4d', 'status': 'present'}, '`AUD-592-D03` / `D-3`': {'commit': 'f28fe40', 'status': 'present'}, '`AUD-592-R01` / `A-1`': {'commit': '216025f', 'status': 'present'}, '`AUD-592-R02` / `N-4`, reopens `AUD-513-N04`': {'commit': 'ec3050d', 'status': 'present'}, '`AUD-593-N01` / `N-01`': {'commit': 'dd6a706', 'status': 'present'}, '`AUD-593-N02` / `N-02`': {'commit': 'f539787', 'status': 'present'}, '`AUD-593-N03` / `N-03`': {'commit': '1dd0b1c', 'status': 'present'}, '`AUD-593-N05` / `N-05`': {'commit': 'aa89388', 'status': 'present'}, '`AUD-593-N06` / `N-06`': {'commit': 'aa584a6', 'status': 'present'}, '`AUD-594-N04` / `D-5`, disclosure half of `B-3`': {'commit': 'a0060b7', 'status': 'present'}, '`AUD-594-X01` / `A-1`, residual of `AUD-593-N03`': {'commit': 'dd222b9', 'status': 'present'}, '`AUD-594-X02` / `A-1` second half': {'commit': '1193937', 'status': 'present'}, '`AUD-594-X03` / `X-03`, residual of `AUD-593-N01`': {'commit': 'e89e8f0', 'status': 'present'}, '`AUD-594-X04`': {'commit': '05b8cc9', 'status': 'present'}, '`AUD-595-A02` / `N-5`, advisory half of `AUD-588-B11`': {'commit': '3e15227', 'status': 'present'}, '`AUD-595-A03` / `B-6` exit-code half': {'commit': 'ab7285f', 'status': 'present'}, '`AUD-595-A05`': {'commit': 'e0b3d10', 'status': 'present'}, '`AUD-595-A07`, narrow half of `AUD-592-A02`': {'commit': 'cc15177', 'status': 'present'}, '`AUD-595-B01` / §B': {'commit': 'b77a1ad', 'status': 'present'}, '`AUD-595-Q01`': {'commit': '91a6566', 'status': 'present'}, '`AUD-596-A01` / `ASK-DET-001`': {'commit': 'fa508b4', 'status': 'present'}, '`AUD-596-A02` / `ASK-SELF-001`': {'commit': '4dfadc8', 'status': 'present'}, '`AUD-596-A03` / `ASK-C1-001`': {'commit': 'bffa3a6', 'status': 'present'}, '`AUD-596-A04` / `ASK-UX-003` + `ASK-UX-004`': {'commit': 'f0aac3c', 'status': 'present'}, '`AUD-596-B01` / `B-01`, harder witness for `BUG-6`': {'commit': '567d09d', 'status': 'present'}, '`AUD-596-B02` / `B-02`, class residual of `R2`': {'commit': '', 'status': 'uncited'}, '`AUD-596-B03` / `B-03`': {'commit': 'a8cb814', 'status': 'present'}, '`AUD-596-B06` / `B-06`': {'commit': '8107927', 'status': 'present'}, '`AUD-596-B07` / `B-07`, class residual of `AUD-592-R02`': {'commit': 'e060485', 'status': 'present'}, '`AUD-596-B09` / `B-09`': {'commit': '5b8146c', 'status': 'present'}, '`AUD-596-B10` / `B-10`': {'commit': '5cb994d', 'status': 'present'}, '`AUD-596-B16` / `B-16`': {'commit': '1507f69', 'status': 'present'}, '`AUD-596-D01` / `B-13` + `B-14`': {'commit': '0b1bdf0', 'status': 'present'}, '`AUD-596-D02` / `B-08`, residual of `AUD-594-N04`': {'commit': 'e7f73c3', 'status': 'present'}, '`AUD-596-D03` / `ASK-AGT-001`': {'commit': '8c46967', 'status': 'present'}, '`AUD-596-D04` / `B-18`': {'commit': '040f027', 'status': 'present'}, '`AUD-596-D05` / `B-19`': {'commit': 'fd2bf68', 'status': 'present'}, '`AUD-596-D06` / `B-20`': {'commit': '784cd83', 'status': 'present'}, '`AUD-596-D07` / `B-17`, half refuted': {'commit': 'c3ff822', 'status': 'present'}, '`AUD-596-D08` / `B-22`, class residual of `AUD-591-A06`': {'commit': 'b396c6a', 'status': 'present'}, '`AUD-596-D09` / `B-23`, surviving half of `B26`': {'commit': 'fd3d63f', 'status': 'present'}, '`AUD-596-D10` / `B-29`': {'commit': '', 'status': 'uncited'}, '`AUD-596-D11` / `ASK-UX-005`': {'commit': 'f4b4f77', 'status': 'present'}, '`AUD-596-D12` — six hints that send the reader back to the error': {'commit': '498df44', 'status': 'present'}, '`AUD-596-D13` / `B-28`': {'commit': '1014c72', 'status': 'present'}, '`AUD-596-D14` / `B-15`, narrow half of `B20`': {'commit': '10f2827', 'status': 'present'}, '`AUD-596-R01` / `B-05`': {'commit': '', 'status': 'uncited'}, '`AUD-596-X01` / `ASK-GATE-001`, gating half of `B24`': {'commit': 'e59c655', 'status': 'present'}, '`AUD-596-X02` / `ASK-UX-001` + `ASK-UX-002` + `B-21`': {'commit': 'f6ebf50', 'status': 'present'}, '`AUD-597-A01` / `ASK-UX-001` + `N-01`': {'commit': 'f8cf061', 'status': 'present'}, '`AUD-597-A02` / `ASK-UX-008` + `ASK-DOC-002`': {'commit': '9d47a4c', 'status': 'present'}, '`AUD-597-A03` / `ASK-DET-001`': {'commit': '4c7622a', 'status': 'present'}, '`AUD-597-A04` / `ASK-LEDGER-001`': {'commit': '46fb870', 'status': 'present'}, '`AUD-597-D01` / `B-04`': {'commit': '1094e6a', 'status': 'present'}, '`AUD-597-D02` / `ASK-DOC-001`': {'commit': 'ecb1bb7', 'status': 'present'}, '`AUD-597-D03` / `N-06`': {'commit': '9784333', 'status': 'present'}, '`AUD-597-D04` / `N-05`': {'commit': 'e51c087', 'status': 'present'}, '`AUD-597-D05` / `N-04`, fourth appearance of `C4-27`': {'commit': '9cccc15', 'status': 'present'}, '`AUD-597-D06` / `ASK-CLI-001`': {'commit': '178aa6d', 'status': 'present'}, '`AUD-597-D07` / `N-03`': {'commit': '9245e35', 'status': 'present'}, '`AUD-597-R01` / `ASK-PERF-001`': {'commit': '6910054', 'status': 'present'}, '`AUD-597-R02` / `ASK-ENC-001`': {'commit': 'ce6dac1', 'status': 'present'}, '`AUD-597-R03` / `ASK-UX-002`': {'commit': 'c57e50b', 'status': 'present'}, '`AUD-597-X01` / `ASK-BUILD-001` + `ASK-META-001` / `B-12`': {'commit': '354338b', 'status': 'present'}, '`AUD-598-B01` / `ASK-META-001`': {'commit': 'b2f7c65', 'status': 'present'}, '`AUD-598-B02` / `ASK-UX-002`': {'commit': '56a4bf7', 'status': 'present'}, '`AUD-598-B03` / `B-11`': {'commit': 'c63cb24', 'status': 'present'}, '`AUD-598-B04` / `N-02`': {'commit': '187937f', 'status': 'present'}, '`AUD-598-R01` / `ASK-PERF-002`': {'commit': '', 'status': 'uncited'}, '`AUD-598-X01` / `N-01` + `B-13` + `B-14` + `B-29` + `N-06`': {'commit': '6f2f5a4', 'status': 'present'}, '`AUD-600-B01` / `P-01`': {'commit': '366ffed', 'status': 'present'}, '`AUD-600-B02` / `P-02` + `ASK-PACK-002`': {'commit': '2a814c3', 'status': 'present'}, '`AUD-600-B03` / `ASK-PACK-001`': {'commit': '452f2a0', 'status': 'present'}, '`AUD-600-D01`': {'commit': '1224e1b', 'status': 'present'}, '`AUD-600-D02`': {'commit': 'eab8172', 'status': 'present'}, '`AUD-600-R01` / `R-01`': {'commit': '88add64', 'status': 'present'}, '`AUD-601-B01` / `N-02`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-B02` / `ASK-PACK-004`': {'commit': '', 'status': 'uncited'}, '`AUD-601-D01` / `N-01`, `ASK-UX-001`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-D02` / `B-13`, `B-14`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-M01` / `B-26`, `B-27` retracted': {'commit': '', 'status': 'uncited'}, '`AUD-601-R01` / `R-02`': {'commit': '', 'status': 'uncited'}, '`B-3`': {'commit': '773268d', 'status': 'present'}, '`B-6`': {'commit': '17c6e06', 'status': 'present'}, '`B-8`': {'commit': '8329614', 'status': 'present'}, '`BUG-3` / `443b345`': {'commit': '', 'status': 'uncited'}, '`BUG-4a` / `AUD-588-B11` residual': {'commit': '24b4185', 'status': 'present'}, '`BUG-4b` / `AUD-588-B11` residual': {'commit': '0376350', 'status': 'present'}, '`E-39`, class residual of `AUD-593-N06`': {'commit': '25fc11f', 'status': 'present'}, '`N-5`': {'commit': 'c68083f', 'status': 'present'}, '`N-7`': {'commit': '082e9de', 'status': 'present'}, '`R-1`': {'commit': '424fb1c', 'status': 'present'}, '`R-2`': {'commit': '5158b92', 'status': 'present'}, '`R-3`': {'commit': '88aec04', 'status': 'present'}, '`R-4`': {'commit': '04fd04f', 'status': 'present'}}
|
|
5
|
-
CLOSURE_COVERAGE = {'closed_rows':
|
|
3
|
+
BUILD_COMMIT = '653229e2baf68f37744139ef2573467a3d4f2f09'
|
|
4
|
+
CLOSURE_PROVENANCE = {'AUD-611-B05': {'commit': '', 'status': 'uncited'}, 'AUD-611-B06': {'commit': '', 'status': 'uncited'}, 'AUD-611-B07': {'commit': '', 'status': 'uncited'}, 'AUD-611-B08': {'commit': '', 'status': 'uncited'}, 'AUD-611-B09': {'commit': '', 'status': 'uncited'}, 'AUD-611-B10': {'commit': '', 'status': 'uncited'}, 'AUD-611-B11': {'commit': '', 'status': 'uncited'}, 'AUD-612-07': {'commit': '', 'status': 'uncited'}, 'AUD-612-09': {'commit': '', 'status': 'uncited'}, 'AUD-612-14': {'commit': '', 'status': 'uncited'}, 'AUD-612-B03': {'commit': '', 'status': 'uncited'}, 'AUD-612-B07': {'commit': '', 'status': 'uncited'}, 'AUD-612-B13': {'commit': '', 'status': 'uncited'}, 'AUD-612-E': {'commit': '', 'status': 'uncited'}, 'AUD-612-G': {'commit': '', 'status': 'uncited'}, 'AUD-612-I': {'commit': '', 'status': 'uncited'}, 'AUD-612-K': {'commit': '', 'status': 'uncited'}, 'AUD-612-M': {'commit': '', 'status': 'uncited'}, 'AUD-612-R': {'commit': '', 'status': 'uncited'}, 'AUD-613-ROOT': {'commit': '', 'status': 'uncited'}, 'AUD-614-07': {'commit': '', 'status': 'uncited'}, 'AUD-614-E': {'commit': '', 'status': 'uncited'}, 'AUD-614-F': {'commit': '', 'status': 'uncited'}, 'AUD-614-G': {'commit': '', 'status': 'uncited'}, 'AUD-614-I': {'commit': '', 'status': 'uncited'}, 'AUD-614-INTENT-TIE': {'commit': '', 'status': 'uncited'}, 'AUD-614-JUNIT4': {'commit': '', 'status': 'uncited'}, 'AUD-614-RISK-L0': {'commit': '', 'status': 'uncited'}, 'AUD-614-SELFTEST-TIMEOUT': {'commit': '', 'status': 'uncited'}, 'AUD-615-07': {'commit': '', 'status': 'uncited'}, 'AUD-615-COLD-COMPACT': {'commit': '', 'status': 'uncited'}, 'AUD-615-DRIFT': {'commit': '', 'status': 'uncited'}, 'AUD-615-E': {'commit': '', 'status': 'uncited'}, 'AUD-615-F': {'commit': '', 'status': 'uncited'}, 'AUD-615-INTENT-TIE': {'commit': '', 'status': 'uncited'}, 'AUD-615-JUNIT4': {'commit': '', 'status': 'uncited'}, 'AUD-615-RISK-L0': {'commit': '', 'status': 'uncited'}, 'AUD-615-SELFTEST-TIMEOUT': {'commit': '', 'status': 'uncited'}, 'AUD-616-E-PROV': {'commit': '', 'status': 'uncited'}, 'AUD-616-F, -RISK-L0, -SELFTEST-TIMEOUT, -INTENT-TIE, -DRIFT, -COLD-COMPACT, -E, -07': {'commit': '', 'status': 'uncited'}, 'AUD-616-INTENT-TIE-COV': {'commit': '', 'status': 'uncited'}, 'AUD-616-JUNIT4-SELF': {'commit': '', 'status': 'uncited'}, 'AUD-616-KOTLIN': {'commit': '', 'status': 'uncited'}, 'AUD-616-O': {'commit': '', 'status': 'uncited'}, 'AUD-616-P': {'commit': '', 'status': 'uncited'}, 'Window': {'commit': '', 'status': 'uncited'}, '`ASK-FIELD-01`': {'commit': '829f9fa', 'status': 'present'}, '`ASK-FIELD-02`': {'commit': '6a659fa', 'status': 'present'}, '`ASK-FIELD-03`': {'commit': '55b0d51', 'status': 'present'}, '`AUD-588-F05`': {'commit': '470e4a4', 'status': 'present'}, '`AUD-590-B01` / `B-01`, `F-01`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B02` / `B-02`, `F-02`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B03` / `B-03`, `F-03`': {'commit': '', 'status': 'uncited'}, '`AUD-590-B04` / `B-04`, `F-04`': {'commit': '', 'status': 'uncited'}, '`AUD-590-R01` / `R-01`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A01` / `A-1`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A02` / `A-2`, `A-4`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A03` / `A-3`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A05` / `A-5`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A06` / `A-6`, `A-7`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A08` / `A-8`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A09` / `A-9`': {'commit': '', 'status': 'uncited'}, '`AUD-591-A10` / `A-10`': {'commit': '', 'status': 'uncited'}, '`AUD-592-A02` / `A-1` second half, `§12.5`': {'commit': '63f3d61', 'status': 'present'}, '`AUD-592-B01` / `B-8`': {'commit': '8329614', 'status': 'present'}, '`AUD-592-D01` / `D-1`': {'commit': '0f8e03f', 'status': 'present'}, '`AUD-592-D02` / `D-2`': {'commit': '1d3db4d', 'status': 'present'}, '`AUD-592-D03` / `D-3`': {'commit': 'f28fe40', 'status': 'present'}, '`AUD-592-R01` / `A-1`': {'commit': '216025f', 'status': 'present'}, '`AUD-592-R02` / `N-4`, reopens `AUD-513-N04`': {'commit': 'ec3050d', 'status': 'present'}, '`AUD-593-N01` / `N-01`': {'commit': 'dd6a706', 'status': 'present'}, '`AUD-593-N02` / `N-02`': {'commit': 'f539787', 'status': 'present'}, '`AUD-593-N03` / `N-03`': {'commit': '1dd0b1c', 'status': 'present'}, '`AUD-593-N05` / `N-05`': {'commit': 'aa89388', 'status': 'present'}, '`AUD-593-N06` / `N-06`': {'commit': 'aa584a6', 'status': 'present'}, '`AUD-594-N04` / `D-5`, disclosure half of `B-3`': {'commit': 'a0060b7', 'status': 'present'}, '`AUD-594-X01` / `A-1`, residual of `AUD-593-N03`': {'commit': 'dd222b9', 'status': 'present'}, '`AUD-594-X02` / `A-1` second half': {'commit': '1193937', 'status': 'present'}, '`AUD-594-X03` / `X-03`, residual of `AUD-593-N01`': {'commit': 'e89e8f0', 'status': 'present'}, '`AUD-594-X04`': {'commit': '05b8cc9', 'status': 'present'}, '`AUD-595-A02` / `N-5`, advisory half of `AUD-588-B11`': {'commit': '3e15227', 'status': 'present'}, '`AUD-595-A03` / `B-6` exit-code half': {'commit': 'ab7285f', 'status': 'present'}, '`AUD-595-A05`': {'commit': 'e0b3d10', 'status': 'present'}, '`AUD-595-A07`, narrow half of `AUD-592-A02`': {'commit': 'cc15177', 'status': 'present'}, '`AUD-595-B01` / §B': {'commit': 'b77a1ad', 'status': 'present'}, '`AUD-595-Q01`': {'commit': '91a6566', 'status': 'present'}, '`AUD-596-A01` / `ASK-DET-001`': {'commit': 'fa508b4', 'status': 'present'}, '`AUD-596-A02` / `ASK-SELF-001`': {'commit': '4dfadc8', 'status': 'present'}, '`AUD-596-A03` / `ASK-C1-001`': {'commit': 'bffa3a6', 'status': 'present'}, '`AUD-596-A04` / `ASK-UX-003` + `ASK-UX-004`': {'commit': 'f0aac3c', 'status': 'present'}, '`AUD-596-B01` / `B-01`, harder witness for `BUG-6`': {'commit': '567d09d', 'status': 'present'}, '`AUD-596-B02` / `B-02`, class residual of `R2`': {'commit': '', 'status': 'uncited'}, '`AUD-596-B03` / `B-03`': {'commit': 'a8cb814', 'status': 'present'}, '`AUD-596-B06` / `B-06`': {'commit': '8107927', 'status': 'present'}, '`AUD-596-B07` / `B-07`, class residual of `AUD-592-R02`': {'commit': 'e060485', 'status': 'present'}, '`AUD-596-B09` / `B-09`': {'commit': '5b8146c', 'status': 'present'}, '`AUD-596-B10` / `B-10`': {'commit': '5cb994d', 'status': 'present'}, '`AUD-596-B16` / `B-16`': {'commit': '1507f69', 'status': 'present'}, '`AUD-596-D01` / `B-13` + `B-14`': {'commit': '0b1bdf0', 'status': 'present'}, '`AUD-596-D02` / `B-08`, residual of `AUD-594-N04`': {'commit': 'e7f73c3', 'status': 'present'}, '`AUD-596-D03` / `ASK-AGT-001`': {'commit': '8c46967', 'status': 'present'}, '`AUD-596-D04` / `B-18`': {'commit': '040f027', 'status': 'present'}, '`AUD-596-D05` / `B-19`': {'commit': 'fd2bf68', 'status': 'present'}, '`AUD-596-D06` / `B-20`': {'commit': '784cd83', 'status': 'present'}, '`AUD-596-D07` / `B-17`, half refuted': {'commit': 'c3ff822', 'status': 'present'}, '`AUD-596-D08` / `B-22`, class residual of `AUD-591-A06`': {'commit': 'b396c6a', 'status': 'present'}, '`AUD-596-D09` / `B-23`, surviving half of `B26`': {'commit': 'fd3d63f', 'status': 'present'}, '`AUD-596-D10` / `B-29`': {'commit': '', 'status': 'uncited'}, '`AUD-596-D11` / `ASK-UX-005`': {'commit': 'f4b4f77', 'status': 'present'}, '`AUD-596-D12` — six hints that send the reader back to the error': {'commit': '498df44', 'status': 'present'}, '`AUD-596-D13` / `B-28`': {'commit': '1014c72', 'status': 'present'}, '`AUD-596-D14` / `B-15`, narrow half of `B20`': {'commit': '10f2827', 'status': 'present'}, '`AUD-596-R01` / `B-05`': {'commit': '', 'status': 'uncited'}, '`AUD-596-X01` / `ASK-GATE-001`, gating half of `B24`': {'commit': 'e59c655', 'status': 'present'}, '`AUD-596-X02` / `ASK-UX-001` + `ASK-UX-002` + `B-21`': {'commit': 'f6ebf50', 'status': 'present'}, '`AUD-597-A01` / `ASK-UX-001` + `N-01`': {'commit': 'f8cf061', 'status': 'present'}, '`AUD-597-A02` / `ASK-UX-008` + `ASK-DOC-002`': {'commit': '9d47a4c', 'status': 'present'}, '`AUD-597-A03` / `ASK-DET-001`': {'commit': '4c7622a', 'status': 'present'}, '`AUD-597-A04` / `ASK-LEDGER-001`': {'commit': '46fb870', 'status': 'present'}, '`AUD-597-D01` / `B-04`': {'commit': '1094e6a', 'status': 'present'}, '`AUD-597-D02` / `ASK-DOC-001`': {'commit': 'ecb1bb7', 'status': 'present'}, '`AUD-597-D03` / `N-06`': {'commit': '9784333', 'status': 'present'}, '`AUD-597-D04` / `N-05`': {'commit': 'e51c087', 'status': 'present'}, '`AUD-597-D05` / `N-04`, fourth appearance of `C4-27`': {'commit': '9cccc15', 'status': 'present'}, '`AUD-597-D06` / `ASK-CLI-001`': {'commit': '178aa6d', 'status': 'present'}, '`AUD-597-D07` / `N-03`': {'commit': '9245e35', 'status': 'present'}, '`AUD-597-R01` / `ASK-PERF-001`': {'commit': '6910054', 'status': 'present'}, '`AUD-597-R02` / `ASK-ENC-001`': {'commit': 'ce6dac1', 'status': 'present'}, '`AUD-597-R03` / `ASK-UX-002`': {'commit': 'c57e50b', 'status': 'present'}, '`AUD-597-X01` / `ASK-BUILD-001` + `ASK-META-001` / `B-12`': {'commit': '354338b', 'status': 'present'}, '`AUD-598-B01` / `ASK-META-001`': {'commit': 'b2f7c65', 'status': 'present'}, '`AUD-598-B02` / `ASK-UX-002`': {'commit': '56a4bf7', 'status': 'present'}, '`AUD-598-B03` / `B-11`': {'commit': 'c63cb24', 'status': 'present'}, '`AUD-598-B04` / `N-02`': {'commit': '187937f', 'status': 'present'}, '`AUD-598-R01` / `ASK-PERF-002`': {'commit': '', 'status': 'uncited'}, '`AUD-598-X01` / `N-01` + `B-13` + `B-14` + `B-29` + `N-06`': {'commit': '6f2f5a4', 'status': 'present'}, '`AUD-600-B01` / `P-01`': {'commit': '366ffed', 'status': 'present'}, '`AUD-600-B02` / `P-02` + `ASK-PACK-002`': {'commit': '2a814c3', 'status': 'present'}, '`AUD-600-B03` / `ASK-PACK-001`': {'commit': '452f2a0', 'status': 'present'}, '`AUD-600-D01`': {'commit': '1224e1b', 'status': 'present'}, '`AUD-600-D02`': {'commit': 'eab8172', 'status': 'present'}, '`AUD-600-R01` / `R-01`': {'commit': '88add64', 'status': 'present'}, '`AUD-601-B01` / `N-02`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-B02` / `ASK-PACK-004`': {'commit': '', 'status': 'uncited'}, '`AUD-601-D01` / `N-01`, `ASK-UX-001`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-D02` / `B-13`, `B-14`, 5th round': {'commit': '', 'status': 'uncited'}, '`AUD-601-M01` / `B-26`, `B-27` retracted': {'commit': '', 'status': 'uncited'}, '`AUD-601-R01` / `R-02`': {'commit': '', 'status': 'uncited'}, '`AUD-619-WATCH`': {'commit': '', 'status': 'uncited'}, '`B-3`': {'commit': '773268d', 'status': 'present'}, '`B-6`': {'commit': '17c6e06', 'status': 'present'}, '`B-8`': {'commit': '8329614', 'status': 'present'}, '`BUG-3` / `443b345`': {'commit': '', 'status': 'uncited'}, '`BUG-4a` / `AUD-588-B11` residual': {'commit': '24b4185', 'status': 'present'}, '`BUG-4b` / `AUD-588-B11` residual': {'commit': '0376350', 'status': 'present'}, '`E-39`, class residual of `AUD-593-N06`': {'commit': '25fc11f', 'status': 'present'}, '`N-5`': {'commit': 'c68083f', 'status': 'present'}, '`N-7`': {'commit': '082e9de', 'status': 'present'}, '`R-1`': {'commit': '424fb1c', 'status': 'present'}, '`R-2`': {'commit': '5158b92', 'status': 'present'}, '`R-3`': {'commit': '88aec04', 'status': 'present'}, '`R-4`': {'commit': '04fd04f', 'status': 'present'}}
|
|
5
|
+
CLOSURE_COVERAGE = {'closed_rows': 162, 'present': 91, 'absent': 0, 'unresolved': 0, 'uncited': 71, 'unknown': 0}
|
|
@@ -14,6 +14,54 @@ Status values: `open` · `in-progress` · `closed <version>` · `by-design` (wit
|
|
|
14
14
|
The facts these rows are keyed to are published: `ask schema facts-v1` prints the registry
|
|
15
15
|
(authority, definition, consumers, parity test) that the release battery enforces.
|
|
16
16
|
|
|
17
|
+
## Current Synchronization — External Audit `AUD-619`
|
|
18
|
+
|
|
19
|
+
**Re-audit of release `5.9.13`, received 2026-08-28.** The previous apparent
|
|
20
|
+
closure of Bug R is withdrawn: identical Windows invocations failed five times and
|
|
21
|
+
then succeeded once, exposing a high-frequency race rather than a binary version
|
|
22
|
+
state. The score is 6.0/10. The decision remains **patch forward**, with a minimum
|
|
23
|
+
30-run per-command closure bar.
|
|
24
|
+
|
|
25
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
26
|
+
|---|---:|---|---|
|
|
27
|
+
| `AUD-619-R` | Critical maximum | **open, P0** | `migrate-check` failed 5/6 identical runs; `risk`, `verify`, `audit-report` and `migrate-apply` also remain silent or hang. The known mechanism is Windows `spawn`/`DuplicateHandle` followed by an unbounded wait. Implement deterministic fallback or fail-fast bounded worker handling, then run >=30 Windows/pipx repetitions per affected command. |
|
|
28
|
+
| `AUD-619-CACHE-WRITE` | High | **open, P1** | `tutorials` produced complete 21.7 KB output before a further minute in `building cache entry`. Profile serialization, filesystem and lock costs and separate answer delivery from post-delivery cache work. |
|
|
29
|
+
| `AUD-619-REVIEW-PR` | High | **open, P1** | One of seven runs on a valid Git repository returned lowercase `no_git_repo`; six returned canonical `NO_DIFF_SOURCE`. Find and normalize the nondeterministic fallback. |
|
|
30
|
+
| `AUD-619-WIN-PROC` | Medium | **open, platform-blocked** | Root `--agent` wrote valid 41,336-byte JSON but stayed alive to an external timeout; three descendants remained. Validate native Windows teardown and Job Object lifetime. |
|
|
31
|
+
| `AUD-619-I` | High | **re-opened for comparable measurement** | Compact sizes differed with RIS state: 3,496 bytes cold and 31,260 bytes after partial warm. Publish a reproducible priming sequence before deciding the contract. |
|
|
32
|
+
| `AUD-619-7` | Medium | **partially fixed** | Ambiguity is explained; suggestions remain correctly conditional on a close command candidate. |
|
|
33
|
+
| `AUD-619-WATCH` | Low | **closed/no-repro** | Clean small-repository run completed in 0.526s. |
|
|
34
|
+
|
|
35
|
+
`audit-report --from-risk` produced a valid 156 KB report, confirming that report
|
|
36
|
+
rendering is healthy when the risk computation is bypassed. Preserve the prior Q/E/F/P
|
|
37
|
+
and command-family closures. Commercial positioning remains bounded pilots only at
|
|
38
|
+
the provisional `$25-35/developer/month` hypothesis.
|
|
39
|
+
|
|
40
|
+
## Current Synchronization — External Audit `AUD-618`
|
|
41
|
+
|
|
42
|
+
**Re-audit of release `5.9.12`, received 2026-08-28.** The score improved modestly
|
|
43
|
+
from 6.0/10 to 6.3/10. Two of six Bug-R commands recovered, but `risk`, `verify`,
|
|
44
|
+
`audit-report` and `migrate-apply` remain unusable on the auditor's Windows corpus;
|
|
45
|
+
`risk` now waits indefinitely rather than failing quickly. The decision is **patch
|
|
46
|
+
forward, not rollback**: the release contains verified fixes and the failure is
|
|
47
|
+
localised to the shared Windows worker/composer path.
|
|
48
|
+
|
|
49
|
+
| ID | Severity | Status | Evidence and required closure |
|
|
50
|
+
|---|---:|---|---|
|
|
51
|
+
| `AUD-618-R` | Critical maximum | **open, P0** | `verify` captured 12 identical `PermissionError: [WinError 5]` failures in `multiprocessing/reduction.py:131` during `_winapi.DuplicateHandle` worker startup. `spring-audit` 3/3 and `migrate-check` 7/7 recovered; `verify` 6/6, `audit-report` in three formats, and `migrate-apply` 4/4 remain silent. `risk --limit 5/20` hangs in `composing risk factors / reading HTTP-input query sinks`; `risk --limit 0` is healthy. Add pool fallback or structured `WORKER_POOL_START_FAILED`, bounded joins and a matrix covering output, detach and formats. |
|
|
52
|
+
| `AUD-618-TUTORIALS` | Critical | **open, P1** | Native Windows root compact was observed at 6m20.1s/exit 124, but a later flush produced valid 21.7 KB JSON. Treat as extreme latency pending reproduction, publish the size envelope and remeasure on Windows. |
|
|
53
|
+
| `AUD-618-MIGRATE-APPLY` | High | **open, P1** | Plan mode remains exit 0 with zero bytes and no output file, 4/4. The `risk -o` to `audit-report --from-risk` mitigation is blocked by the producer failure. Emit a plan or `nothing_to_do`; prove non-mutation. |
|
|
54
|
+
| `AUD-618-I` | High | **open, P1** | `cold-start --compact` emits 88,265-89,139 bytes, about 22K estimated tokens, despite the `~10K` help promise. Enforce a ceiling or correct the contract, then add a size regression. |
|
|
55
|
+
| `AUD-618-7` | Medium | **open, P2** | Unknown command tokens are indistinguishable from missing implicit paths and receive no nearest-command suggestion. Add command admission before path fallback. |
|
|
56
|
+
| `AUD-618-WIN-PROC` | Medium | **open, platform-blocked** | Windows timeout can leave `ask.exe` descendants alive. Requires native Windows/Git Bash process-tree evidence and safe Job Object/equivalent teardown. |
|
|
57
|
+
| `AUD-618-WATCH` | Low | **open, unconfirmed** | One 42.8s `watch --once` sample after heavy work; clean-session reproduction required. |
|
|
58
|
+
|
|
59
|
+
The audit reconfirms Q and E as fixed, the root pipeline as unaffected, and the prior
|
|
60
|
+
F/P/C/#14/D/#9/G/M and other command closures. Commercially, retain bounded pilots and
|
|
61
|
+
a provisional `$25-35/developer/month` hypothesis; do not market annual reliability,
|
|
62
|
+
production CI gating or enterprise scale above roughly 3,000 files while the P0/P1 rows
|
|
63
|
+
remain open.
|
|
64
|
+
|
|
17
65
|
## Current Synchronization — External Audit `AUD-617`
|
|
18
66
|
|
|
19
67
|
**Re-audit of release `5.9.11`, received 2026-08-28.** The external battery covered only
|
sourcecode/_docs/USER_GUIDE.md
CHANGED
|
@@ -46,16 +46,16 @@ CLI commands — impact, endpoints, spring-audit, explain, … each a pro
|
|
|
46
46
|
The key idea: the extraction is **content-addressed**. Commands reuse the parse cache and,
|
|
47
47
|
where their analysed scope matches, the shared Canonical IR; `ask cache model` names what a
|
|
48
48
|
warm buys for each command rather than implying that every projection costs the same. In
|
|
49
|
-
5.9.
|
|
49
|
+
5.9.14, `validation` enters through that shared CIR and `data-exposure` reuses one semantic
|
|
50
50
|
model across all declared label seeds. (The extraction and consumption contract is fixed in
|
|
51
51
|
the architecture ADRs 0001–0004 under `docs/architecture/`.)
|
|
52
52
|
|
|
53
53
|
The current external pack audit intake is tracked in
|
|
54
54
|
[`AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md`](AUDIT-2026-08-26-EXTERNAL-5.8.28-PACK.md);
|
|
55
|
-
the two pack fixes are included in release 5.9.
|
|
55
|
+
the two pack fixes are included in release 5.9.14, with release-artifact verification
|
|
56
56
|
remaining for detached execution and pack evidence.
|
|
57
57
|
|
|
58
|
-
### Reliability contracts in 5.9.
|
|
58
|
+
### Reliability contracts in 5.9.14
|
|
59
59
|
|
|
60
60
|
**A deadline the root analysis honours.** `ASK_MAX_ANALYSIS_SECONDS=<seconds>` now
|
|
61
61
|
stops `ask <repo>` at a measured phase boundary. A run that spends its budget
|
|
@@ -260,7 +260,7 @@ pipx install sourcecode # isolated install, no venv needed
|
|
|
260
260
|
|
|
261
261
|
# Verify
|
|
262
262
|
ask version
|
|
263
|
-
# ask 5.9.
|
|
263
|
+
# ask 5.9.14
|
|
264
264
|
```
|
|
265
265
|
|
|
266
266
|
Requires Python 3.9+.
|
sourcecode/cli.py
CHANGED
|
@@ -1855,6 +1855,21 @@ def _admit_path(
|
|
|
1855
1855
|
pass
|
|
1856
1856
|
return admission.resolved
|
|
1857
1857
|
hint = rejection_hint(admission, usage=usage)
|
|
1858
|
+
raw_token = str(raw)
|
|
1859
|
+
if (
|
|
1860
|
+
admission.reason == "missing"
|
|
1861
|
+
and raw_token
|
|
1862
|
+
and "/" not in raw_token
|
|
1863
|
+
and "\\" not in raw_token
|
|
1864
|
+
):
|
|
1865
|
+
# A bare first token belongs to the documented `ask <path>` grammar.
|
|
1866
|
+
# Do not guess that it is a command and make a legitimate not-yet-created
|
|
1867
|
+
# repository impossible to name; instead make the interpretation visible
|
|
1868
|
+
# and point an operator who meant a command at the authoritative list.
|
|
1869
|
+
hint = (
|
|
1870
|
+
f"{hint} `{raw_token}` was interpreted as an implicit repository path. "
|
|
1871
|
+
"If you intended a command, run `ask --help` and retry its exact name."
|
|
1872
|
+
)
|
|
1858
1873
|
if extra_hint:
|
|
1859
1874
|
hint = f"{hint} {extra_hint}"
|
|
1860
1875
|
_emit_error_json(
|
|
@@ -2202,12 +2217,11 @@ def _active_command_context() -> "tuple[str, Optional[Path]]":
|
|
|
2202
2217
|
ctx = click.get_current_context(silent=True)
|
|
2203
2218
|
except Exception:
|
|
2204
2219
|
ctx = None
|
|
2205
|
-
|
|
2206
2220
|
if ctx is None:
|
|
2207
|
-
#
|
|
2208
|
-
#
|
|
2209
|
-
#
|
|
2210
|
-
argv = list(sys.argv[1:])
|
|
2221
|
+
# Click may have unwound before the unified emitter runs. Prefer the
|
|
2222
|
+
# invocation captured per thread, then fall back to argv for console
|
|
2223
|
+
# scripts and embedded entry points.
|
|
2224
|
+
argv = list(_tls.__dict__.get("invocation_args", ()) or sys.argv[1:])
|
|
2211
2225
|
known: set[str] = set()
|
|
2212
2226
|
try:
|
|
2213
2227
|
known.update(
|
|
@@ -2222,14 +2236,31 @@ def _active_command_context() -> "tuple[str, Optional[Path]]":
|
|
|
2222
2236
|
pass
|
|
2223
2237
|
command = ""
|
|
2224
2238
|
for index, token in enumerate(argv):
|
|
2225
|
-
if token.startswith("-") or token not in known:
|
|
2239
|
+
if token.startswith("-") or (token not in known and token not in _SUBCOMMANDS):
|
|
2226
2240
|
continue
|
|
2227
2241
|
command = token
|
|
2228
2242
|
if token in {"retrieve", "cache", "auth", "mcp", "telemetry", "baseline", "pack"}:
|
|
2229
2243
|
if index + 1 < len(argv) and argv[index + 1] in known:
|
|
2230
2244
|
command = f"{token} {argv[index + 1]}"
|
|
2231
2245
|
break
|
|
2232
|
-
|
|
2246
|
+
if not command:
|
|
2247
|
+
command = _ROOT_COMMAND_NAME
|
|
2248
|
+
target: "Optional[Path]" = None
|
|
2249
|
+
if command == _ROOT_COMMAND_NAME:
|
|
2250
|
+
detected = _get_detected_path()
|
|
2251
|
+
if detected:
|
|
2252
|
+
target = Path(detected)
|
|
2253
|
+
else:
|
|
2254
|
+
for token in argv:
|
|
2255
|
+
try:
|
|
2256
|
+
candidate = Path(token)
|
|
2257
|
+
if candidate.is_dir():
|
|
2258
|
+
target = candidate
|
|
2259
|
+
break
|
|
2260
|
+
except (OSError, ValueError):
|
|
2261
|
+
continue
|
|
2262
|
+
if target is None:
|
|
2263
|
+
target = Path(_get_detected_path() or Path.cwd())
|
|
2233
2264
|
return command or _ROOT_COMMAND_NAME, target
|
|
2234
2265
|
|
|
2235
2266
|
names: list[str] = []
|
|
@@ -2280,6 +2311,11 @@ _EXPENSIVE_ANALYSIS_TTL_SECONDS = 6 * 60 * 60
|
|
|
2280
2311
|
#: `cache_model.analysis_class` records.
|
|
2281
2312
|
_CLASS_FLOOR_SECONDS = {"core": 60, "repo-wide": 600, "deep": 1200}
|
|
2282
2313
|
|
|
2314
|
+
# AUD-598-B04. A valid duration is not necessarily a useful limit. This is a
|
|
2315
|
+
# disclosure threshold, never a new input restriction: a caller may choose a
|
|
2316
|
+
# very large budget, but must not be led to believe it will bind.
|
|
2317
|
+
_NON_BINDING_BUDGET_MULTIPLE = 10.0
|
|
2318
|
+
|
|
2283
2319
|
#: What to do instead when the budget will not cover the run. Per command where
|
|
2284
2320
|
#: there is something specific to say, per class otherwise.
|
|
2285
2321
|
_CLASS_FALLBACK = {
|
|
@@ -2420,12 +2456,40 @@ def _analysis_budget(command: str) -> dict[str, Any]:
|
|
|
2420
2456
|
configured, source, invalid_reason = _parse_analysis_budget_env()
|
|
2421
2457
|
from sourcecode.phased_run import budget_scope, budget_scope_reason
|
|
2422
2458
|
|
|
2459
|
+
advisory: Optional[str] = None
|
|
2460
|
+
if configured is not None:
|
|
2461
|
+
try:
|
|
2462
|
+
from sourcecode.execution_plan import cost_row
|
|
2463
|
+
|
|
2464
|
+
row = cost_row(command)
|
|
2465
|
+
anchors = [
|
|
2466
|
+
float(value)
|
|
2467
|
+
for value in (
|
|
2468
|
+
getattr(row, "cold_seconds", None),
|
|
2469
|
+
getattr(row, "warm_seconds", None),
|
|
2470
|
+
getattr(row, "field_seconds", None),
|
|
2471
|
+
)
|
|
2472
|
+
if isinstance(value, (int, float)) and float(value) > 0
|
|
2473
|
+
]
|
|
2474
|
+
if anchors:
|
|
2475
|
+
anchor = max(anchors)
|
|
2476
|
+
if float(configured) >= anchor * _NON_BINDING_BUDGET_MULTIPLE:
|
|
2477
|
+
advisory = (
|
|
2478
|
+
f"{_BUDGET_ENV_VAR}={configured:g}s is {float(configured) / anchor:.0f}x "
|
|
2479
|
+
f"the published {command} cost anchor ({anchor:g}s); it is "
|
|
2480
|
+
"unlikely to bind this run. The value remains valid and is "
|
|
2481
|
+
"recorded with the result."
|
|
2482
|
+
)
|
|
2483
|
+
except Exception:
|
|
2484
|
+
pass
|
|
2485
|
+
|
|
2423
2486
|
scope = budget_scope(command)
|
|
2424
2487
|
return {
|
|
2425
2488
|
"class": cls,
|
|
2426
2489
|
"recommended_min_seconds": recommended,
|
|
2427
2490
|
"configured_max_seconds": configured,
|
|
2428
2491
|
"configured_source": source,
|
|
2492
|
+
"configured_nonbinding_advisory": advisory,
|
|
2429
2493
|
# AUD-596-B03: an unreadable value is not an absent one. Carried beside
|
|
2430
2494
|
# the budget so `_enforce_analysis_budget` can refuse it by name, and
|
|
2431
2495
|
# `None` whenever the variable is unset or usable.
|
|
@@ -2470,6 +2534,7 @@ def _budget_disclosure(command: str) -> "dict[str, Any]":
|
|
|
2470
2534
|
"budget_binds": binding["binds"],
|
|
2471
2535
|
"budget_binds_basis": binding["basis"],
|
|
2472
2536
|
"measured_anchor_seconds": binding["anchor_seconds"],
|
|
2537
|
+
"configured_nonbinding_advisory": budget["configured_nonbinding_advisory"],
|
|
2473
2538
|
}
|
|
2474
2539
|
|
|
2475
2540
|
|
|
@@ -2549,6 +2614,13 @@ def _enforce_analysis_budget(
|
|
|
2549
2614
|
return
|
|
2550
2615
|
source = budget.get("configured_source")
|
|
2551
2616
|
from sourcecode.phased_run import budget_provenance, budget_warning
|
|
2617
|
+
advisory = budget.get("configured_nonbinding_advisory")
|
|
2618
|
+
if advisory and getattr(sys.stderr, "isatty", lambda: False)():
|
|
2619
|
+
try:
|
|
2620
|
+
sys.stderr.write(f"[ask] budget: {advisory}\n")
|
|
2621
|
+
sys.stderr.flush()
|
|
2622
|
+
except Exception:
|
|
2623
|
+
pass
|
|
2552
2624
|
if not getattr(sys.stderr, "isatty", lambda: False)() and float(configured) >= recommended:
|
|
2553
2625
|
return
|
|
2554
2626
|
|
|
@@ -4437,6 +4509,11 @@ def _get_command_with_preprocessing(typer_instance: Any) -> Any:
|
|
|
4437
4509
|
# CliRunner / programmatic call: preprocess the explicit args list.
|
|
4438
4510
|
_set_detected_path(".")
|
|
4439
4511
|
args = _preprocess_args(list(args))
|
|
4512
|
+
# The output seam is reached after Click may already have released its
|
|
4513
|
+
# context. Preserve this invocation per thread so its envelope cannot
|
|
4514
|
+
# silently lose command and repository provenance (AUD-598-B01).
|
|
4515
|
+
_previous_invocation = _tls.__dict__.get("invocation_args")
|
|
4516
|
+
_tls.invocation_args = tuple(args if args is not None else sys.argv[1:])
|
|
4440
4517
|
# args=None → Click reads sys.argv; _preprocess_argv() in main_entry handled it.
|
|
4441
4518
|
started = time.monotonic()
|
|
4442
4519
|
command = _telemetry_command(args)
|
|
@@ -4459,6 +4536,10 @@ def _get_command_with_preprocessing(typer_instance: Any) -> Any:
|
|
|
4459
4536
|
)
|
|
4460
4537
|
except Exception:
|
|
4461
4538
|
pass
|
|
4539
|
+
if _previous_invocation is None:
|
|
4540
|
+
_tls.__dict__.pop("invocation_args", None)
|
|
4541
|
+
else:
|
|
4542
|
+
_tls.invocation_args = _previous_invocation
|
|
4462
4543
|
|
|
4463
4544
|
cmd.main = _cmd_main
|
|
4464
4545
|
return cmd
|
sourcecode/parallel.py
CHANGED
|
@@ -202,6 +202,15 @@ def prefill_parse_cache(
|
|
|
202
202
|
# a build that forks itself on every analysis.
|
|
203
203
|
receipt["reason"] = "frozen build — worker processes would re-enter the CLI"
|
|
204
204
|
return receipt
|
|
205
|
+
if os.name == "nt":
|
|
206
|
+
# Windows workers use ``spawn`` and must duplicate the parent's IPC
|
|
207
|
+
# handles. A denied DuplicateHandle leaves a ProcessPoolExecutor with no
|
|
208
|
+
# usable workers; depending on which consumer waits for its cache entry,
|
|
209
|
+
# that used to become either silent success or an unbounded wait. The
|
|
210
|
+
# sequential loop below is the designed fallback and produces the same
|
|
211
|
+
# IR, so prefer a reliable answer to speculative parse parallelism.
|
|
212
|
+
receipt["reason"] = "Windows — parsing sequentially to avoid spawn worker-handle failures"
|
|
213
|
+
return receipt
|
|
205
214
|
|
|
206
215
|
# Retire dead generations once, here, rather than letting N workers race to
|
|
207
216
|
# do it (C3-70's purge is idempotent, but doing it once is cheaper).
|
sourcecode/release_info.py
CHANGED
|
@@ -27,7 +27,7 @@ from typing import Any, Optional
|
|
|
27
27
|
#: The date `__version__` was released, from that version's CHANGELOG entry.
|
|
28
28
|
#: `tests/test_release_info.py` fails the build if the two disagree, so this is
|
|
29
29
|
#: a copy of a fact rather than a second authority for it.
|
|
30
|
-
RELEASE_DATE = "2026-08-
|
|
30
|
+
RELEASE_DATE = "2026-08-30"
|
|
31
31
|
|
|
32
32
|
#: Releases per day, measured over the 30 releases before this one (the same
|
|
33
33
|
#: computation the test re-runs against the CHANGELOG). Stable across window
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sourcecode
|
|
3
|
-
Version: 5.9.
|
|
3
|
+
Version: 5.9.14
|
|
4
4
|
Summary: Persistent structural context and ultra-fast repeated analysis for AI coding agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/HarounDominique/sourcecode
|
|
6
6
|
Project-URL: Repository, https://github.com/HarounDominique/sourcecode
|
|
@@ -59,7 +59,7 @@ Description-Content-Type: text/markdown
|
|
|
59
59
|
> question. All analysis is local and deterministic; see [Privacy](#configuration--privacy)
|
|
60
60
|
> before inspecting a repository whose telemetry policy you need to control.
|
|
61
61
|
|
|
62
|
-

|
|
63
63
|

|
|
64
64
|
|
|
65
65
|
Copyright (c) 2026 Dominique Haroun. All rights reserved. ASK Engine 5.7.0 and
|
|
@@ -196,7 +196,7 @@ set `ASK_MAX_RSS_MB=<megabytes>`; if the process exceeds it, ASK refuses the
|
|
|
196
196
|
answer with `MEMORY_TOO_LARGE`, including the observed peak and limit. Leave it
|
|
197
197
|
unset, or set it to `0`, to disable the ceiling explicitly.
|
|
198
198
|
|
|
199
|
-
**Current performance status.** Release 5.9.
|
|
199
|
+
**Current performance status.** Release 5.9.14 retains the shared Canonical IR
|
|
200
200
|
path used by `validation` and now passes that same CIR into labelled `data-exposure`
|
|
201
201
|
runs; the no-label path remains parse-free. These are implementation properties,
|
|
202
202
|
not duration promises. It also removes two repeated walks of the same file tree in
|
|
@@ -233,7 +233,7 @@ in `overlapping_paths`; a missing or non-directory path is rejected as structure
|
|
|
233
233
|
invalid input rather than treated as an empty repository. This prevents silent
|
|
234
234
|
entitlement errors in CI and does not change per-repository gates or billing.
|
|
235
235
|
|
|
236
|
-
Release 5.9.
|
|
236
|
+
Release 5.9.14 also carries the boundary-contract hardening: missing consumer repositories,
|
|
237
237
|
malformed CVE feeds and unresolved `pack gate --since` refs fail as structured
|
|
238
238
|
input errors; duplicate same-commit baselines are never overwritten. `posture
|
|
239
239
|
--diff` validates unknown profiles when the repository declares profiles. In
|
|
@@ -266,7 +266,7 @@ brew tap haroundominique/sourcecode && brew install sourcecode
|
|
|
266
266
|
# pip / pipx
|
|
267
267
|
pipx install sourcecode # or: pip install sourcecode
|
|
268
268
|
|
|
269
|
-
ask version # ask 5.9.
|
|
269
|
+
ask version # ask 5.9.14 — and, on a build that has aged,
|
|
270
270
|
# how many releases have probably shipped since
|
|
271
271
|
```
|
|
272
272
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
sourcecode/__init__.py,sha256=
|
|
1
|
+
sourcecode/__init__.py,sha256=2ypO1p_pWELM3-rWz_uPIInUNDExNXgtsVluWWQP9D4,309
|
|
2
2
|
sourcecode/__main__.py,sha256=qDFVkobwsdZrX0B3stiRqsUNivVpybKO-egzAwCW4xw,165
|
|
3
|
-
sourcecode/_build_commit.py,sha256=
|
|
3
|
+
sourcecode/_build_commit.py,sha256=v-XBk0k40s80RavYharbWhR895P3tNcLExDV-KoYaYg,11452
|
|
4
4
|
sourcecode/access_drift.py,sha256=uYD8ipiEAaTnkz0IhG6ujU_KI3LghdY-6ycurs-BZnc,9355
|
|
5
5
|
sourcecode/adaptive_scanner.py,sha256=yJBKjNpkY6bpueYJ2YnRezen3sYZDecEt7WaaNWdqug,9466
|
|
6
6
|
sourcecode/analysis_budget.py,sha256=ZuNEboPF8A6GK-_V7WNt92ezgriga7_Rbr-vvSN4UEE,4183
|
|
@@ -35,7 +35,7 @@ sourcecode/change_plan.py,sha256=drAoDsqFplutCLc6Y0xue7sYkTls0SpYh7aOXvttv3I,129
|
|
|
35
35
|
sourcecode/ci_output.py,sha256=X4NRokWWMRF9Ex8OQrEO2g04GzJ00GDP5zYIoqI9YCc,4625
|
|
36
36
|
sourcecode/cir_graphs.py,sha256=RytqSv1WF8kdlfXj2fPQz16LY4akS2kyThbdWL8beCQ,14835
|
|
37
37
|
sourcecode/classifier.py,sha256=ft1RGPIChvO84q2QMrEH93x1J15AXNWMh26lnxvoRao,26476
|
|
38
|
-
sourcecode/cli.py,sha256=
|
|
38
|
+
sourcecode/cli.py,sha256=Wm31fCzbSZUZ7ULMBGg4JpV7gQ4m8byn5nWNYirREDg,951186
|
|
39
39
|
sourcecode/client_calls.py,sha256=YOPnfRZzRyqmdHvXSVeiunW8cuiuCuWXacNIQRgKMCw,22640
|
|
40
40
|
sourcecode/code_notes_analyzer.py,sha256=EJemNCNc9Dn-1RZYu-aNbK0ELzmsyC4s6FdHi3XyNEI,9392
|
|
41
41
|
sourcecode/compare.py,sha256=Lnfmm9I3k0H1jP1tV6ZJ-R7znjQPLPLCe5TzV1Jb_PM,15323
|
|
@@ -113,7 +113,7 @@ sourcecode/output_encoding.py,sha256=OxiZQtr7uWBDUtblNQviNHsTH1Xo9AZEpsegPlQWKFk
|
|
|
113
113
|
sourcecode/output_sink.py,sha256=Eya-PnXxqc3RGulJoLhuC9LUF73SZD0aO5O2B0xAMXU,8762
|
|
114
114
|
sourcecode/pack_manifest.py,sha256=Qm6et6SQsFCLc-HJ-Uhz1XlcOa77ZDHgks4JVDEENss,20820
|
|
115
115
|
sourcecode/packs.py,sha256=_f3bRzGIy_Cv2cSUMSco3e6nKxJbApT47PUYMEZwZEw,49506
|
|
116
|
-
sourcecode/parallel.py,sha256=
|
|
116
|
+
sourcecode/parallel.py,sha256=bf4NPQvit7ZHHFyIh1NTH6LbGarIGqgVUabWGqHgj-s,11165
|
|
117
117
|
sourcecode/parse_cache.py,sha256=BaPzh-KygmY4OpJQm2YGh6PWztYsj58vHWTu2eSF4s8,38769
|
|
118
118
|
sourcecode/partial_contract.py,sha256=FZUBACkClvRAmPeYVjxNWeQmP6Y22KW4fPeeTfmT80A,5951
|
|
119
119
|
sourcecode/path_admission.py,sha256=5IBfmHvOrSwrVLlXXwj9KAEg-ciVaHYHjcpAS8mriPg,5898
|
|
@@ -138,7 +138,7 @@ sourcecode/redactor.py,sha256=SB4hwIvg8h-hvcqKcDWaZvA-aSyn-at-BIRwa0tUv5E,3227
|
|
|
138
138
|
sourcecode/reference_facts.py,sha256=mx7H-Ax5y8sKAQHrnJCXlgjkUzqZtQTByv9Zy2lxKQQ,15500
|
|
139
139
|
sourcecode/regress.py,sha256=6rlFP2rsIzVKAA0spJ66To528GyBtnRI2Zg9vAGq8kQ,13264
|
|
140
140
|
sourcecode/regulatory_pack.py,sha256=xVWd8hYg6MjGfkFP8UWcYeLmNMxEk8k2uSbTcnGMbhg,3421
|
|
141
|
-
sourcecode/release_info.py,sha256=
|
|
141
|
+
sourcecode/release_info.py,sha256=ZGxRGRPqrY_tvByTsMTOlF6EiOQYhvKGs5AW7VIQ2jE,6064
|
|
142
142
|
sourcecode/relevance_scorer.py,sha256=0AgEt4KrV73nioMqBgjhGjtY7L2C7L7cSyKtj3IKcrw,9408
|
|
143
143
|
sourcecode/remediation_diff.py,sha256=fGYqPmQF7bO54L8ivztX5PgmW4fVu54gNcG6OEQ192U,9730
|
|
144
144
|
sourcecode/remediation_flow.py,sha256=OFlrNCD2dKw1WlX5cHqVl1yrQZHi2TjCThH8Q3X1PwI,10294
|
|
@@ -273,13 +273,13 @@ sourcecode/telemetry/consent.py,sha256=-Wb8BFGXEexOs8M0Eja7F-T6ZtLNPeRoZnHcHvlP7
|
|
|
273
273
|
sourcecode/telemetry/events.py,sha256=l3Z2SQUO4_C2D2ItXOOdVNimAmHedUHnUxqYFTxnsAE,2900
|
|
274
274
|
sourcecode/telemetry/filters.py,sha256=-lqT2oorECuqEIdeHb--7AZ6BCaUx0bya720a-Z5x6w,7335
|
|
275
275
|
sourcecode/telemetry/transport.py,sha256=4gGHsq0WeY9VywEZXA3vUxykfiYnw9uuqfjAAec7F8o,1681
|
|
276
|
-
sourcecode/_docs/DEFECT-LEDGER.md,sha256=
|
|
276
|
+
sourcecode/_docs/DEFECT-LEDGER.md,sha256=Kh7hCbLaIgvm6qkr5atYhNmRXDy0kStA9rhRrcN-ev4,1161144
|
|
277
277
|
sourcecode/_docs/LICENSE,sha256=23-fk61oSWGVmkWyka-FIM0rhAPM2hcYHnsaridL8Uo,1859
|
|
278
278
|
sourcecode/_docs/NOTICE,sha256=Br-AA8Y3iJo1WXa5uP8QBpzqI5nDu3iGLbFyvDt3BOs,321
|
|
279
|
-
sourcecode/_docs/USER_GUIDE.md,sha256=
|
|
280
|
-
sourcecode-5.9.
|
|
281
|
-
sourcecode-5.9.
|
|
282
|
-
sourcecode-5.9.
|
|
283
|
-
sourcecode-5.9.
|
|
284
|
-
sourcecode-5.9.
|
|
285
|
-
sourcecode-5.9.
|
|
279
|
+
sourcecode/_docs/USER_GUIDE.md,sha256=m1ljgTaPbWZSVmbO_A28IhG9x8fi1x2zNfkjcc1vGyU,106936
|
|
280
|
+
sourcecode-5.9.14.dist-info/METADATA,sha256=D6CT_mTT_Z12bC_KDvB9ViVNTV0elbuoPlx28WIQMCI,65992
|
|
281
|
+
sourcecode-5.9.14.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
282
|
+
sourcecode-5.9.14.dist-info/entry_points.txt,sha256=-JEAdChrK5We51kZcb7OaDcyil-dHBjBPL-NhuO-QY8,89
|
|
283
|
+
sourcecode-5.9.14.dist-info/licenses/LICENSE,sha256=23-fk61oSWGVmkWyka-FIM0rhAPM2hcYHnsaridL8Uo,1859
|
|
284
|
+
sourcecode-5.9.14.dist-info/licenses/NOTICE,sha256=Br-AA8Y3iJo1WXa5uP8QBpzqI5nDu3iGLbFyvDt3BOs,321
|
|
285
|
+
sourcecode-5.9.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|