{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"],"owasp":"A05:2025"}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"],"owasp":"A03:2025"}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AX6","name":"Interface segregation","shortDescription":{"text":"Interface segregation"},"helpUri":"https://codehealth.canine.dev/dimensions/AX6"},{"id":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"GD1","name":"Unfinished \u0026 placeholder code","shortDescription":{"text":"Unfinished \u0026 placeholder code"},"helpUri":"https://codehealth.canine.dev/dimensions/GD1"},{"id":"IC1","name":"Incompleteness \u0026 stubs","shortDescription":{"text":"Incompleteness \u0026 stubs"},"helpUri":"https://codehealth.canine.dev/dimensions/IC1"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"PF3","name":"Async \u0026 latency hygiene","shortDescription":{"text":"Async \u0026 latency hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/PF3"},{"id":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X16","name":"Unfloored truncation loop","shortDescription":{"text":"Unfloored truncation loop"},"helpUri":"https://codehealth.canine.dev/dimensions/X16"},{"id":"X17","name":"Uncapped recursion over a caller-supplied document","shortDescription":{"text":"Uncapped recursion over a caller-supplied document"},"helpUri":"https://codehealth.canine.dev/dimensions/X17"},{"id":"X18","name":"Disposal-pattern correctness","shortDescription":{"text":"Disposal-pattern correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X18"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X24","name":"Document value interpolated into markup unescaped","shortDescription":{"text":"Document value interpolated into markup unescaped"},"helpUri":"https://codehealth.canine.dev/dimensions/X24"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X27","name":"Collection changed while being enumerated","shortDescription":{"text":"Collection changed while being enumerated"},"helpUri":"https://codehealth.canine.dev/dimensions/X27"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X4","name":"Structured logging","shortDescription":{"text":"Structured logging"},"helpUri":"https://codehealth.canine.dev/dimensions/X4"},{"id":"X5","name":"Nullable reference types","shortDescription":{"text":"Nullable reference types"},"helpUri":"https://codehealth.canine.dev/dimensions/X5"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"setDocument (cyclomatic 97): setDocument has cyclomatic complexity 97 (threshold 15). Of this number, 25 points are the body\u0027s own statements and 72 belong to 20 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b59399a9fee2d2a2e83ac2cabcf784fb0549d09ee23daf521a629a839df467"}},{"ruleId":"D1","level":"warning","message":{"text":"setDocument (cyclomatic 85): setDocument has cyclomatic complexity 85 (threshold 15). Of this number, 24 points are the body\u0027s own statements and 61 belong to 18 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8546470c15b74d78def67b42dcf0bafdb87186b49ccf005580341f0db0433e3"}},{"ruleId":"D1","level":"warning","message":{"text":"CHILD (cyclomatic 51): CHILD has cyclomatic complexity 51 (threshold 15). Most of this is not in the body itself: 3 of the 51 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1405, 1401). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9ce0a6d695fbd955099be201cf23654cd9a3f2b9bb80284659da684bb95aa6"}},{"ruleId":"D1","level":"warning","message":{"text":"CHILD (cyclomatic 51): CHILD has cyclomatic complexity 51 (threshold 15). Most of this is not in the body itself: 3 of the 51 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1146, 1142). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d17d6f4e391388e2a6c84b456c180fd1b4b3773c7438d231bfa28b12ae2e05"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.Sizzle (cyclomatic 44): sizzle.Sizzle has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e382b850f4681d7830e118285009e9363acb58141e6a9bbcfd9406de75e120"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.Sizzle (cyclomatic 43): sizzle.Sizzle has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb31a84a8adf6c063e521e33d41fbefb7e252e29e289fcd82fcf4f877a322ab"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.matcherFromGroupMatchers::superMatcher (cyclomatic 36): sizzle.matcherFromGroupMatchers::superMatcher has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1851}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b51dda14fa7845114e6ecdda143b3b7183056645519f08563a7a3fc6d1ba583"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.matcherFromGroupMatchers::superMatcher (cyclomatic 36): sizzle.matcherFromGroupMatchers::superMatcher has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2151}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b61ec29abe4951538ddb34dc8fb552e71ffc7f75f9caed19f92807ab7e8d4f"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.setMatcher (cyclomatic 32): sizzle.setMatcher has cyclomatic complexity 32 (threshold 15). Most of this is not in the body itself: 5 of the 32 points are its own statements and the rest belongs to one function literal inside it that branches (line 1704). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6443fef659ed14c24d6c75de9fdcbe451d03f5d6b727c61fa343b891919366"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.setMatcher (cyclomatic 32): sizzle.setMatcher has cyclomatic complexity 32 (threshold 15). Most of this is not in the body itself: 5 of the 32 points are its own statements and the rest belongs to one function literal inside it that branches (line 1992). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1985}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5821c032d96241be91eb088615e4434d8135dd7852f15ff6902b6bd3938a03"}},{"ruleId":"D1","level":"warning","message":{"text":"select (cyclomatic 28): select has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"196345f4a35e297bf1a2a00247b0e46ed3e50c45b0ae1777d0950a63dfdb01c2"}},{"ruleId":"D1","level":"warning","message":{"text":"select (cyclomatic 27): select has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2316}}}],"partialFingerprints":{"codehealthFindingId/v1":"80cd8e89215650b2c54a969e3d5330f952d4e6462491e4bca134798ec7a0bf13"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.addCombinator (cyclomatic 24): sizzle.addCombinator has cyclomatic complexity 24 (threshold 15). Most of this is not in the body itself: 4 of the 24 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1894, 1884). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1874}}}],"partialFingerprints":{"codehealthFindingId/v1":"eedf6e3a9ebe406da8693d37a461a5bc97536fb919463aae7e5c18db4a69e308"}},{"ruleId":"D1","level":"warning","message":{"text":"Xml.toJson (cyclomatic 20): Xml.toJson has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38503f90ae385093de42e53656bc67ff90091c93900c26580b1c5f60041551a"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.addCombinator (cyclomatic 20): sizzle.addCombinator has cyclomatic complexity 20 (threshold 15). Most of this is not in the body itself: 3 of the 20 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1611, 1602). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c25d0d0e8bead3850a4c7d88e4d4c70cebbb84e728b8f27959d7b1f2d0d756"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.matcherFromTokens (cyclomatic 18): sizzle.matcherFromTokens has cyclomatic complexity 18 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1790}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b46f461233fbe2714f5b016d9fd138a994c96b9065de0958744cd8d684cf7c"}},{"ruleId":"D1","level":"warning","message":{"text":"sizzle.matcherFromTokens (cyclomatic 18): sizzle.matcherFromTokens has cyclomatic complexity 18 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2085}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b5fa9b565990d6752abdb3ca52bd970dbf08918e6cf95f46358ffa3e43e8c5"}},{"ruleId":"D1","level":"warning","message":{"text":"Xml.toXml (cyclomatic 16): Xml.toXml has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80d27520b68a0bfc56c62d09f9e0b2ac2e477a29bfc52b29614558068297ecc"}},{"ruleId":"D1","level":"warning","message":{"text":"tokenize (cyclomatic 16): tokenize has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c0948d939d696364ca5c2a29c121f905d93e266c9ff34d663b618522d068cc"}},{"ruleId":"D1","level":"warning","message":{"text":"tokenize (cyclomatic 16): tokenize has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a9d35c3e588612d63679562cdc5dae1213838b8ba878f1c99a22e0d4d0103ce"}},{"ruleId":"D2","level":"warning","message":{"text":"setDocument (cognitive 130): setDocument has cognitive complexity 130 (threshold 15). Drivers by points: if/else 37 (64 pts), boolean chains 29, ternaries 18 (26 pts), loops 6 (11 pts) (nesting depth added 40). Of this number, 21 points are the body\u0027s own statements and 109 belong to 20 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"e206a4f712dc1258f8408e3d51a2fb4e4806baf73336d0fefe7e2a58f49c7afc"}},{"ruleId":"D2","level":"warning","message":{"text":"setDocument (cognitive 104): setDocument has cognitive complexity 104 (threshold 15). Drivers by points: if/else 31 (46 pts), ternaries 18 (26 pts), boolean chains 25, loops 5 (7 pts) (nesting depth added 25). Of this number, 21 points are the body\u0027s own statements and 83 belong to 18 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee4503ff4847aa0368f6cfe85cc1c3f33884a2a71e4c0f79958c0bb51098818"}},{"ruleId":"D2","level":"warning","message":{"text":"Sizzle (cognitive 97): Sizzle has cognitive complexity 97 (threshold 15). Drivers by points: if/else 21 (64 pts), boolean chains 14, ternaries 3 (9 pts), error handling 1 (5 pts), loops 1 (5 pts) (nesting depth added 57). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"df571fed34e9dc5a69cfe35d45d9458961dd4246bc298cb80ec303c3bd75c2bc"}},{"ruleId":"D2","level":"warning","message":{"text":"Sizzle (cognitive 96): Sizzle has cognitive complexity 96 (threshold 15). Drivers by points: if/else 19 (62 pts), boolean chains 18, ternaries 2 (7 pts), loops 1 (5 pts), error handling 1 (4 pts) (nesting depth added 55). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa8ce6222a7e6dd3ccf0332162b6c6e139ad1da5a3917ffa8ac91699ff724a91"}},{"ruleId":"D2","level":"warning","message":{"text":"CHILD (cognitive 93): CHILD has cognitive complexity 93 (threshold 15). Drivers by points: if/else 11 (38 pts), boolean chains 25, ternaries 5 (16 pts), loops 4 (14 pts) (nesting depth added 48). Most of this is not in the body itself: 2 of the 93 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1405, 1401). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac114b48e4e4434d668ba25216c9b5a9fec1c1fcf694a524ae9c1e38fd3c76dc"}},{"ruleId":"D2","level":"warning","message":{"text":"CHILD (cognitive 93): CHILD has cognitive complexity 93 (threshold 15). Drivers by points: if/else 11 (38 pts), boolean chains 25, ternaries 5 (16 pts), loops 4 (14 pts) (nesting depth added 48). Most of this is not in the body itself: 2 of the 93 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1146, 1142). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"030864ae8f2e6e22b63fc9faee654d247cecf3ecf8161513f462ce0c17555507"}},{"ruleId":"D2","level":"warning","message":{"text":"matcherFromGroupMatchers::superMatcher (cognitive 59): matcherFromGroupMatchers::superMatcher has cognitive complexity 59 (threshold 15). Drivers by points: if/else 14 (35 pts), boolean chains 13, loops 4 (10 pts), ternaries 1 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2151}}}],"partialFingerprints":{"codehealthFindingId/v1":"d285dec6818fe56e81400af7564558fb6ba4361b1d0d1f56756cb38818dce77c"}},{"ruleId":"D2","level":"warning","message":{"text":"matcherFromGroupMatchers::superMatcher (cognitive 59): matcherFromGroupMatchers::superMatcher has cognitive complexity 59 (threshold 15). Drivers by points: if/else 14 (35 pts), boolean chains 13, loops 4 (10 pts), ternaries 1 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1851}}}],"partialFingerprints":{"codehealthFindingId/v1":"60672185d26babba3471ff72d9e8c4e083ff9a760efa23815ee8c4aed59eeabe"}},{"ruleId":"D2","level":"warning","message":{"text":"setMatcher (cognitive 56): setMatcher has cognitive complexity 56 (threshold 15). Drivers by points: if/else 13 (26 pts), ternaries 7 (12 pts), boolean chains 9, loops 3 (9 pts) (nesting depth added 24). Most of this is not in the body itself: 4 of the 56 points are its own statements and the rest belongs to one function literal inside it that branches (line 1992). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1985}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1f9c4fce7261fc0a7e28be5755bdedaf4b063287d235233cc820a305e3109c"}},{"ruleId":"D2","level":"warning","message":{"text":"setMatcher (cognitive 56): setMatcher has cognitive complexity 56 (threshold 15). Drivers by points: if/else 13 (26 pts), ternaries 7 (12 pts), boolean chains 9, loops 3 (9 pts) (nesting depth added 24). Most of this is not in the body itself: 4 of the 56 points are its own statements and the rest belongs to one function literal inside it that branches (line 1704). The decisions are inside the literal, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literal\u0027s work into a named function or method at the enclosing scope and have the literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"147131049d0a25d204a89d5a1107364585b7fac0b1946b15abf30d54406af3ff"}},{"ruleId":"D2","level":"warning","message":{"text":"sizzle.addCombinator (cognitive 51): sizzle.addCombinator has cognitive complexity 51 (threshold 15). Drivers by points: if/else 10 (32 pts), boolean chains 10, loops 3 (8 pts), ternaries 1 (nesting depth added 27). Most of this is not in the body itself: 3 of the 51 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1894, 1884). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1874}}}],"partialFingerprints":{"codehealthFindingId/v1":"82606abd97644688707ab19927ae20e127869d6c53b4f53590b4c7fd5aa39488"}},{"ruleId":"D2","level":"warning","message":{"text":"sizzle.addCombinator (cognitive 47): sizzle.addCombinator has cognitive complexity 47 (threshold 15). Drivers by points: if/else 9 (31 pts), loops 3 (8 pts), boolean chains 7, ternaries 1 (nesting depth added 27). Most of this is not in the body itself: 2 of the 47 points are its own statements and the rest belongs to 2 function literals inside it that branch (lines 1611, 1602). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"6821e2bf51c93b892d7790b4f9d555b3e30475b113d1a2f181071d9988fe62aa"}},{"ruleId":"D2","level":"warning","message":{"text":"select (cognitive 39): select has cognitive complexity 39 (threshold 15). Drivers by points: if/else 8 (22 pts), boolean chains 13, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2316}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa8adf5248b7885040f987082e07ceee55513b82fce6a5da192c882d5249b0ba"}},{"ruleId":"D2","level":"warning","message":{"text":"select (cognitive 39): select has cognitive complexity 39 (threshold 15). Drivers by points: if/else 8 (22 pts), boolean chains 13, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"4224ec9ff07dad0d623bac779293fee03d8cbe1591cafff49bba81352f295e45"}},{"ruleId":"D2","level":"warning","message":{"text":"matcherFromTokens (cognitive 30): matcherFromTokens has cognitive complexity 30 (threshold 15). Drivers by points: if/else 4 (11 pts), boolean chains 8, ternaries 3 (6 pts), loops 2 (5 pts) (nesting depth added 13). Of this number, 27 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2085}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1085f37c3524ebfc96bcf06c8d9a89a6e2e958cbdd1692b11c059ee0fa0d699"}},{"ruleId":"D2","level":"warning","message":{"text":"matcherFromTokens (cognitive 30): matcherFromTokens has cognitive complexity 30 (threshold 15). Drivers by points: if/else 4 (11 pts), boolean chains 8, ternaries 3 (6 pts), loops 2 (5 pts) (nesting depth added 13). Of this number, 27 points are the body\u0027s own statements and 3 belong to 3 function literals inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1790}}}],"partialFingerprints":{"codehealthFindingId/v1":"10199991d548e6773f781c7b9496449ee4b2465fb00e543aababd65189a3cc1c"}},{"ruleId":"D2","level":"warning","message":{"text":"Xml.toJson (cognitive 26): Xml.toJson has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (17 pts), match/switch 6 (7 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8bc2bb6f91aa5e3445b725b21fa5df9e3f971019eb2a59731f54e5e79ee04d"}},{"ruleId":"D2","level":"warning","message":{"text":"tokenize (cognitive 24): tokenize has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 4, ternaries 3 (4 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b97c584277bf00e6b872c1fc5bb2bd6871a832ee9d77a5570b9db2e94d8fa2"}},{"ruleId":"D2","level":"warning","message":{"text":"tokenize (cognitive 24): tokenize has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 4, ternaries 3 (4 pts), loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86f62651bf03dc260168c997f843a3945ea8f98db6e4fef91fb11ea7e5f2567"}},{"ruleId":"D2","level":"warning","message":{"text":"Trace.doFetch (cognitive 19): Trace.doFetch has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), match/switch 1 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Trace.scala"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab104aabbe9b18101c727780a080183686ec54266710dbc0ef268ee04292a5e5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/sizzle.js: FileTooLong \u2014 1185 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 685 over it, 2.37\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a489f9bbfa307206a813ccd30342d1a6968aceffe2e5a3ae147ebb2defd112f5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/sizzle.js: FileTooLong \u2014 1078 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 578 over it, 2.16\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ba88b7de657e89424c7a61f0b80f5221fe19d957c504274e313c880fc3c470"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala:104-122 | module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala:142-159 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala:104\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52680f9c938b545fca2940c64e9bde0bbff3dab187c22929be6d44024261813"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): module/core/src/main/scala/com/tribbloids/spookystuff/actions/Export.scala:77-89 | module/core/src/main/scala/com/tribbloids/spookystuff/actions/Export.scala:95-107 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Each matched range is the entire body of the declaration above it, so the region is already a complete unit: move that whole declaration to the shared location and have each site call it, rather than lifting the lines out of their bodies. Any \u0060return\u0060 inside it is the body\u0027s own exit and keeps its meaning in the moved unit."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Export.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc67ce2d126ae7e57709950e6a6f0360cd0760b2eeadebbb634c8644f2ca39c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxyConnectionSocketFactory.java:14-23 | module/web/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxyConnectionSocketFactory.java:13-22 \u2014 before extracting anything, compare \u0060module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxyConnectionSocketFactory.java\u0060 and \u0060module/web/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxyConnectionSocketFactory.java\u0060 as WHOLE FILES: 100% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxyConnectionSocketFactory.java"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"f894bdb0c7d818372fe958c2775fe9ecd8278ac63f8762ff495c3e882506eced"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxySSLConnectionSocketFactory.java:49-58 | module/web/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxySSLConnectionSocketFactory.java:52-61 \u2014 before extracting anything, compare \u0060module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxySSLConnectionSocketFactory.java\u0060 and \u0060module/web/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxySSLConnectionSocketFactory.java\u0060 as WHOLE FILES: 98% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/utils/http/SocksProxySSLConnectionSocketFactory.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f112d6d48e0ce5570fbf1870c87b4857d6265ac2a0c206ac9fe233e3c73f890"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, already have an independent reporting step for every submodule \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/assembly/src/test/scala/com/tribbloids/spookystuff/assembly/JarHellDetection.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9de7d6be7988e05c759c67047c8432573e7c1ee050a7b8cfb5a7202cc2501ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      //TODO: probably not a strong evidence \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/assembly/src/test/scala/com/tribbloids/spookystuff/assembly/JarHellDetection.scala"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"399a05aac29b464f4274a8e1002a75f2e2121fcabeae58f01de7bcf2c700cb2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: need assertion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/assembly/src/test/scala/com/tribbloids/spookystuff/assembly/JarHellDetection.scala"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b4f641312a79da2bd83f7a4e337fad6bd70aa6bbab00006200665a7056fb13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: enable! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/benchmark/src/test/scala/com/tribbloids/spookystuff/parsing/ParsersBenchmark.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"793a0620b0f611b3e8dde37f8c6b84d6f68b6a19668904508471b1c8a93890df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to unit test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/benchmark/src/test/scala/com/tribbloids/spookystuff/utils/RangeHashBenchmark.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49f01e8956f162e9390968fdc8a438873421db14ebd33b4af24a4948093b9b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this class has to go , move to multiverse CanToString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/Verbose.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"834cbcf83aab82cfe2cd2770497cca98c20882c9ab26d678a154e546f26eafa7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //          if (msgBlock.lines.size \u003E 1) { TODO: remove, only useful if subgraph is required \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/TreeException.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b48788c006773b9b5946cbc93a11651b813bb193208884c9879ac6a5249dbb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, use object API everywhere. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/CommonUtils.scala"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5cd15ae051473214b550d5867267abf90dfd6dbe4d1d2728c073d72de197536"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this may not be efficient as every new _Execution requires a new can, but for safety ... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/classpath/ClasspathResolver.scala"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"860c722bd0bfbe39f437db66680e7dfda204500e5ff373e1b24d219ae1922673"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: classpath jar file should use absolute path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/classpath/ClasspathResolver.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c21d36747f94cdcd486a8b05292724ba4f6726a4ff8c2da8771c063e2e9d43b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compile-time parsing is janky, should be replaced shortly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/data/ReflCanUnapply.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11374351d5cef960dec5c03b91c6fc1ad96291ca33a5bbdd1eb42cfe6d9bfd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t know how to do this, causing problem in generating KVs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/data/EAVSchema.scala"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"999428d5a9e0410bbd3cf4529f63402eab3b9bd86533bb9e8e347314c910804c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add Job impl \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/lifespan/SparkTypes.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb45dd7d5711283d2ff9fa21904ea34804d0ded1977cddd1fbbe36683cdbda8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: useless, blocked by https://stackoverflow.com/questions/77290708/in-java-9-with-scala-how-to-make-a-cleanable-that-can-be-triggered-by-system"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/lifespan/Cleanable.scala"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"99809ca5d4e42a37811ca577c3c2002341b82c0b15ed50f25b40a91b83a5b480"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this implementation is slow, but barely works. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeUtils.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"cffa191582dea2fb17137b8fc7c8432de78ceb882bf6d1e85d32a8b77c5b576d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: TypeCreator is not in Developer\u0027s API and usage is not recommended \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeUtils.scala"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa5a086355dc1758d917913389f0dac085827869a2e688b648c2d7f97a5503e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this needs improvement due to: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeUtils.scala"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"98511032b12345cf2bed8b8886349916ae7ad0e371cd32ff95f07419a0fc23ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: change to ThreadLocal to be faster? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnet.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca31bb547dd5c8b91559c79a7671acf7d7a039f5896992e4c2bfc3537fea260c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: should be \u0022WeakTypeMagnet\u0022, erasure may happen \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnet.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6f8449259ad236899a575b47e5a29b4400c3713710f0656e16247646e665b50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: should have a codec \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnet.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c00fedb160bbe2c91ac0d99066f525a0928cb13482efe7b3b00ed58868d71d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: dropped in Scala 3, switch to manifest or TASTy typetag \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnet.scala"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"3070f467d6736728157d1e009fb242a6f326cf9dc9739a3c94dadbfefe0e39cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: kryo is better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/ScalaUDT.scala"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e73c903f9a77aa254d18f2f7dbee750327139f40e9a6cb87226c101715bc62a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: simply by using a common relay that different type representation can be cast into \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/ReflectionUtils.scala"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"10f1f0818104285c5516de9a0452869269652e4d3bc612fec64bda84e54036c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move most of them to ScalaType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/ReflectionUtils.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a95ebbe681235491b4d7ac1d9c4927590281700b59ee002d4f72b307d3e3cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to get rid of these boilerplates? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/FromClassMixin.scala"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"50f8f8c7e247faad2d3a49c2ff023f966b56b361539c842668aa2e4d6ea6b990"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: need to decode to Scala name instead of JVM name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/ClassOpsMixin.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4c64733afbc3425b238b49daf39f49204d6287ead52e394079a715e3412e75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should rely on spark impls including Literal, ScalaReflection \u0026 CatalystTypeConverters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/CatalystTypeOps.scala"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5cffc001d895af0054ccbb7209992d2b8c14909a2a35d35640233b0e8d3fc4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: keep going for this, OR find more general solution, using shapeless? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/CatalystTypeOps.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c076c487faf2e4acfe90bce84741a97c0bb120bab6be0a8204384392e9fd41a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do we need this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/WriteMode.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"575e77d035cee0bcb598037a52b551211904a3f79bb9fa7dbda5fbdd1b02df03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do we need this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRecInterface.scala"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8054b8abc5590f042a2ce7e03edea759dad5e8efeb9d1d750c674122598617"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add back with some high-level implementation using apache-io NullOutputStream \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/WriteMode.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3365923bae211f00a02da0cda0b63a304317f47c71584805654d33706287983"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should embrace NIO 100%? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/LocalResolver.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e5719ca1fd0207c5f2d14b331d48f73df4fc5592a6a3d385d3a8acc15ad413"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use Files.getFileAttributeView \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/LocalResolver.scala"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ed8e0c3dbecf5f054f0f35cfa9e3743a740d90341bf44be1601296f1666e9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can fold into inductive tree impl with Inspection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/TreeIR.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"9507d5a1b2c20d34ef83ff7af349bfc15e23752a71e9cffb2d6fe8d78e62b06f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0060BiRelay\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/Relay.scala"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd621dcc9cdd0f90e334adea013c6317bf1fbfc0af54684271e3e390e71b69b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not possible! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/Relay.scala"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d17f485c6fb8757e12f93e3288785640cfb72ba71b01f1a4ebece8e74a56c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if chain summoning is stable, should only define \u0060asDecoder\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/Relay.scala"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc11cfe8e7eb53ede6bfe9d4fde8056b4f143cf00e143f1fdb953988336240b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/AutomaticRelay.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7e20aeccf0a83daa8ddf8b252bdc99ddfeeae70c439b7794da290951b5c352f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Cast may fail, IR should be an extendable interface \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/AutomaticRelay.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a93bbaf4ccd90b756082c2247924f3137a4256386ef5ec0dbc31fc9921169f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: need impl \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/io/MLReadWriteSupports.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce653b454966aedacce5ac0b83f493b157d2614cd69e393726d9c67bc8f5340"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move into case class WFormats(.) and enable lazy val \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/io/Encoder.scala"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7f437d31e0349946b22001048c7fc76676d81a615028f4cf0db55c9d028127"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this implementation is incomplete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/io/Decoder.scala"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"af97a156f5041c70530c62ac5204855826b530d00443d26f244091231285990c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: need testing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"da0534637085a4331fe95b647018af3bebbd7fdbf1300746c83b46d3b77db6e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add boxed type, or use try/errorToNone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/StringToNumberDeserializer.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e242197577e3ab0f80323838865561290c2b3899e2c1aecfe21fbd710e5247"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the delay of 4s is too long, should tighten after switching to lightweight cats-effect fibre \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/CommonUtilsSuite.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"69480408e4094a89dd6804770e22b1982d1c4f9ad5bdc8d730628410560a4dea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This test requires Spark-specific functionality (TestSC.uuidSeed) not available in commons module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/CommonUtilsSuite.scala"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b3864efff1c56d98fbb8b73ceb9f9000f5e7b97c157f8a416953c8747e4579"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      //    tupleSchema -\u003E typeTag[(Int, String)], //TODO: urge spark team to fix the bug and re-enable it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSuite.scala"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"427a901e0a6359c98e688bab0a24743491bfeef861795973026442d1ba883463"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      //TODO: this failed on CI for UDT with unknown reason, why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSuite.scala"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13a27b0533e154805df8e06aa84096f5bd5e80cf1436858afd043f227c9a379"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    //TODO: add 1 test to ensure that ScalaUDT can be used in DataFrame with codegen. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSuite.scala"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f1a5acf4455f0dfcd6afaf8520ae506151510c44e81f1be57dc441212c9e60b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      //      typeTag[Map[_,_]], //TODO: why this fails? Add back! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSuite.scala"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b50c69a1a3b30afc7f9022af487b423a50d8ae523588fb033d95a4c80497086"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to fix these two cases? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/spike/Json4sSpike.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f8086fcbf054df52f9b723d39dd5c43b1a96d33cd0e90d877256d6fd238d94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can we use tree visualization capabilities of prover-commons? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/testFixtures/scala/com/tribbloids/spookystuff/testutils/BaseSpec.scala"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a87e57e362a638fc28d1b7221e54f0263237653d473db20c5ccb2904bf6e67b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: is it thread safe? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"72749e893edcb63d127383a0e7e8dd4729fd61eb92461a53731359bfd31ec3e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: findPid use a private field of UNIXProcess and may be OS-dependent, need more test on other OS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"113f71975d3cc272a2a307d9bc50883cc6b423f19196432fd00cc7e3cee9ff92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: change to StringBuffer! current impl is not thread safe \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1414d0b2fdfd8235ef583eade59fe341df6f46c7bb387b8865211bb2cd453c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: cause extra empty lines between outputs in Linux, fix it! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"aacc562318c52038ed25ee985022cb902cec8f9571ad30c9d45cdfc6aab6572e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: change to SpookyUtils.blockingCopy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/utils/CopyDirectoryFileVisitor.java"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67adcd716baa7910d6ba8ecea233fb366fca655610649c3b0f8b9e21e4e5688"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: cause confusion! replace with IllegalArgumentException or use mixin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/exceptions.scala"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"263c199b57221b8804984f4323076b46b678bda579250355012feba4869f7a90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: not all classes are registered, need an adaptive codegen to register them automatically \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyKryoRegistrator.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd5c92025fc2c29e219738eb53de0543b1d4c0518bebacf1be721592a9bbfe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: with AnyVal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"b113981755a903e0aeeb19548338a843a8e7d14fb29c851b2aaf5d949bdfe46e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // can\u0027t be used on executors, TODO: change to SparkSession \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8377656ff6eb45e6a49e8a31635c160bb40387ef621eb4cfbe92df74b48f57a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is still memory-consuming, can it be done only once? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e6baf87a9a04e3e4c27e03c8a10bd371911ed3200bfb1bb73fb3591f432ab7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: clean \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f27c49dec4de9ce6e821c6632350b5b6b37b78341605108662c08109a61c05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: clean \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/PluginSystem.scala"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3269a845cf4e56c472be99672c51e3f5fd1743aef8bb6d3c5f7f5ba872a074e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this doesn\u0027t fork configuration and may still cause interference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8b29d0a568797c9697a75d56d2f8a22af9b9c6f72cd9d705a71c9287744936"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: create Dataset directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a215ad7f33b3ffb079c7a0a99f8485070f5bd48c0124884b26c87e41cf106b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cannot be dumped or serialized, fix it! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Wpost.scala"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"2974c65f8e2b5632cbcc94d26cd6214265bf36eaf3b52ce66d597c1f35e2ffa6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO change to better time repr \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Wayback.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8dc044e7bfde963a72c1eac59f9b95d3170414b97130bcbca710c26f9a7419f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: returned type will become a class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Trace.scala"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aeb30f005e78c7a28e7b149b977041a7c6fcdb0e8c3aa0514b0f8684efdce0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be gone, delegating to Same.By.Wrapper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Trace.scala"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"54dcda19fc50a992b19d511b8ce353238ff13fcfc4efbc7f1b0b1a89f71d252c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: doc.content can now use the file saved for auditing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Trace.scala"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea57f929789d6097e0466c8e447d7c8f7d88d4b6cc5de41a895fdf9c5d698236"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be an HTTP method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/OAuthV2.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e076dc32dd71e600c683b149da6a66378ecf49be18ad3e7e5e381cd8b9054f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be export \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Mock.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab59047c33f7e98da79fb712b9cc1918ebe608db5058c742eb8966295333e1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to make it immutable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/MayTimeout.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"898387d8d42cbc7de0827b9902fc11e0fc7e8684f314a255bc75dfdf301f92ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, irrelevant, action will only be accessed by 1 thread \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/MayTimeout.scala"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"334c98fc62401c395934eb83058183abf9cd77a617df64b9fe813d68b7753b3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0022DriverInteraction\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Interaction.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeed44e98132e77f426e042fa286175d88c1832491d408a7dca960960388393a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: handle RedirectException for too many redirections. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/HttpMethod.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2035ae00439900888476a4d83ad95a7b896d8e8153a33aec507635dbbd47e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: aggregate all object that has children \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/HasTrace.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff55b7842ec924ca5c8439ccd4ef3a036e35ac458d504ffda65cfc03d888c367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        case (_, NoOp) =\u003E NoOp // TODO: should this be changed to EndOfStream? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/HasTrace.scala"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9828f2c0c6cb39f27311d83403b1b2f8ac4cc841e6e7555444656af6b809a17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, use Ser/De deep copy in case all variables needs to be copied \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/HasTrace.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db3e98370ed963b5bef2d89154107711aeba1f4e61169dabd5d5c8e280b8f04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support chaining \u0026 extends ExpressionLike/TreeNode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Export.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc79d5dc62a9c54b1ddb0cd81dc0ec584f949b5e137735042f4c72fdf6fc840f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be removed completely after define-by-run \u0026 tracing API is implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/ControlBlock.scala"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e13f6bc5116f797c347cb9d62606013b55494f1abdca2f92787791d82440491"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, all control blocks delegated to Scala language \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Assertion.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"184c39c1676253b19a40ca707777b7e0af22de2acb072999b5fc9a158a153c3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, stateful update cannot be reasoned with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Actions.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"f628aca07401fd0537e8a175b4270f65f37720468576bfdbdc1fcfbe871effb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is not an actual builder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Action.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"877f4cc2ce43df964a7a95e807e0084dfc1e92f4b0398823844596c384ed1bc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: according to RL convention, should only return 1 Observation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Action.scala"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"709dbf05000ba8832c2d24cf8c66a09b5e681d9a44e1e6020502ff1a7f970174"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can it be merged into StateChangeTag?? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Action.scala"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"474a817492702cc99b486172b9cfd007768f2e23715b07c2754bb17c59d86101"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: not reusing Python worker for spark, is it not optimal? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/agent/PythonDriver.scala"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b6a44396cdac7c6fe761ba31b14afcf8caf62c7a8a93e27c489220d5540d401"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: due to unchecked use of thread-unsafe mutable objects (e.g. ArrayBuffer), all following APIs are rendered synchronized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/agent/PythonDriver.scala"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cda694ca672b2b66a24ac9527637a2c16e72bfaeeb4bdcf6f9eb729b32eaffe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is actually the harness, not the agent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/agent/Agent.scala"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05dcda43c148fe8ba8921284e0966c1a1a48bb05c9f2061fcd0999a0b642bd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not used at the moment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/caching/Foundation.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f37e01725a1ddaa226ece431803e4346697f33e2d28cbf3c7a36a140b13643"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not necessary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/SpookyConf.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a73404deb9679d5997d2545ba83e452c4aaa7f8a7013c6581113d15e2426d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this enable both in-memory and DFS cache, should allow more refined control \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/SpookyConf.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7be4273ecb62becb507cb32b127ff5234149ffa9ed23c7a4611ad0cddcc9212"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: get(session) should have 2 impl: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/DriverFactory.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4488d565e4d2f321ae505d0089350e5640bd066429b4d49d3f6702df5fccfb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: delay Future-based waiting control until asynchronous Action exe is implemented. Right now it works just fine \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/DriverFactory.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea981bc27669e263a9e051ae0a58c4e26962d3e28b92054c81794d4d691a789"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should wait until its no longer busy, instead of destroying it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/DriverFactory.scala"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5491ddc7717a31abd3ba3f263e0103754db1650e5b24b4b43d6eeb0871d8daaf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the following boilerplates can be delegated to pureconfig \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/Dir.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b384aa08ff4e081ca6a81b185cbebd8b0b932eecb556878211a6901f08ecd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, useless \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Observation.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"7210e378e73e98be4b5c8e7bb0397d5c8579f00c7055a8b131649b5d67454c46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, useless \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/LocalityRDDView.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dcf43f42e32a42c84623112a0b3b6a1723b441a215eebfe568f6b448a0a5fed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be a compile-time theorem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Observation.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"7256d3c8d7e6ab56dac94eeaaa25b55238e1ef62af8e303661fc03d0a141669d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: unsupported, does it make sense \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/JsonNode.scala"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5b730845889a9ecf5b27144069527706bffe9721c42f37bb93f5361b9fcfa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: switch to more efficient NodeFilter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/HtmlNode.scala"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"01145612770b2236244194df0dd8f88959cd28988566611137bfec9b43ccf823"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ditto \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/HtmlNode.scala"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32dcfc119dd97e68bcdbc2d33d713a60945b801ce289a641f77b091c1e61bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: if this is identical to the uri itself, it should be considered an inline/invalid link and have None output \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/HtmlNode.scala"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7acca2f5369c15b643215e5caed8a04f8a31da952e9b0dd99fe5c840c748f4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: has a lot of duplications, need to be abstracted away \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Error.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"47fac37151c6825a8307a82193a185be94ed779dc1b2fe2f2f16de1c567c3054"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        if (spooky.spookyConf.failOnDFSRead) throw ex // TODO: add failOnDFSWrite \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/DocUtils.scala"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7d4d56937611fd6dc8516ed03c01449d80412ec141d5f34758dbf1abc5ad29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: may have disk write delay! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/DocUtils.scala"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eff874532ab0ec0df614789111ad0cc18bb7e51255cce260012db9a9f14410d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: will be enabled after all parsers can yield XML tree \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/DocSelector.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4f8a8a224dd2eb065c86d28551cca9ba82a939403f08d43357ad7ecbbda127"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Doc.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"525ec17fc466914a28b0a80989fb2fc35d1f967a043d80cabd762f9aba03fed6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use compile-time summoning to find an element implementation that can resolve supplied MIME type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Doc.scala"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a9cdca94a9cbe1ff8ae7df1b43d2273597f3320ac473eb43c1e547ebf56753"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: disabled, will delegate to Univocity or Apache Tika later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Doc.scala"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d5dcd054fd1b247bf14b0ebaf1bdd34d2b3b2ab042b4503c7ab297e01d7096"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge into cascade retries \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Doc.scala"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9666e5d84fdfbca828d390bc830665f4b5ca69ead06d73d577a81b2d3f7faf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //          val resolver = ctx.pathResolver // TODO: simplify using this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/Content.scala"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"384f23022c10046e42e9e70ec058b2c0ffe03e45b20c4ae12e7632f188b16c8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should yield a OptionMagnet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/package.scala"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c495f1126e997dc6cacac27d991df21b0193d4f267d86fe97d32de55a61ba8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is it memory efficient? Write a test case for it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/package.scala"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5059bab2b0422c21725c8dc7a1fd18b3dfbcbe69be6741dfca67fd7f381913"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this may need validation, not sure if consistent with old impl \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/PathPlanning_Simple.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"98751ea0c64d0c8c3206a9e49849943e0d26a131de467a5d37677341dc54d4f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: over-defined, only need to implement min selection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/PathPlanning.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"079aa26bac953c10ccec5531063b2483fa5c7d2f3e6b4ebc60bcbbcc6d3eaa43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should I use pre-sorted collection like SortedMap? Or is it over-engineering? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/PathPlanning.scala"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"51458c15c515dbe7a837c1a60403b14a832b740a2e31093b671ec5d6ff3b6735"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be DownSampling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DownSampling.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"321b62262b0952d8bbc8006b67b8b23f2f46f320f4fdbcb2f0b8660e8278dddf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO : can be faster \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DownSampling.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"c30885650ec95aca85ee79486ce116567b2f05a495bc2033232b5388eaa22506"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO : can be faster \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DownSampling.scala"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad53d7a6efaef03bcc2e4a351cef59e2e29dce0afa52e762d1938ad76f664840"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be mixed into DataView \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRecInterface.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6995b2619d3f06425eb94cefc656130d292a672a68fa4db65c063e3c3699e620"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable this for recursive exploration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRecInterface.scala"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"7849871dddc5820097125c9e5d51ccefba40df5528dafc8ce2af78eb8a624ee5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: most of the following impl can be reduced to RDDPlan or LogicalPlan \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRDDInterface.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b6e330692514d2cace2a2a488d59a7af2d30b5318e807df076b2384e373ac8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: advanced caching: persist an Execution Plan and make its deep copies reusable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRDDInterface.scala"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"6550bbefbf56766cccc610de28b821c3fd9fec50a0e1940138e023c6cebfd9c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0022ExecutionPlanView\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"47889225dae9122b2c5ab70d16df7796d5b221d6ddd2e7866e26f8148bc30a0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use reflection for more clear API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee741b202a1db224e55e0002fd9afc8f2110a1dbcc42318107dad1520aade360"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  /** TODO: remove, caching should be handled else \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"33aa8deaf613d4ad5d0fa3ecea399d0b00f28128013155c3b6c78111641518a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: trace/expose circuit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"713fe7dabb8d9ef65865d77985b81fd31a346ce072570ae752b1c93d16e10ccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove duplication \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e9e5c264a74b28844955bc3fecb42e1d837c4320afe80f6dd601a5c9b5736a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: all selected data prior to fetch will become inductive data update \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"0920981d3291aeb717e9d232171e626b8ee6906eec19393fc92d95d3901e3f43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: comparing to old implementation, does this create too much object overhead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataLocality.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b333f52934a3e98916420aef7f69b517fcd37c811aa2e8d2e76b15dde7c222"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: optional? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataLocality.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f312bf23626dfbc602c1da799f0a39fc8e664d289817c77c7cadfd99a2e176ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also use PartitionerAwareUnionRDD \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/UnionPlan.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a887a4f82d8c621e498cda9e1c5a07b459d8dc16766de98606a17787d0992b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this name should be validated against current DB to ensure that such name doesn\u0027t exist \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7438d82b90e61fd58d636a1849eb9fc11cb2c3eccaa9aa873b55c614d9d658"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0022RefCounting\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"45939e052605859731dc8971fe429ef4926e8a82db67f35c5cb1b6ddc8ab56a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge into tempTables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f842eb3169121fb6d8df9cd36812d8de1b5ae5079cb8654bbcec12a96a22587"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add a utility function to make RDD to be uncached automatically once a number of downstream RDDs (can be filtered) are caculated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba912897aaf6263db22f37799ba0219884943198741d6a4ee1bcbe6cb72bda0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: right now GC may clean it prematurely, disabled until better solution. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c03b7f31f80e9a502bc0f0b9f80921be8132e0932afd3bfbcfc106b00cf9a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: since SortPlan work on squashedRDD, not computed RDD \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/SortPlan.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f160fd9f56c4b6988deeabfff3c186896c92b4ffdfb276f7562e8d2c5081d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: HasTraceSet will be gone, Agent can be manipulated directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/FetchPlan.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"21247b9c17707c5ccd61385a3d6022aaeb4e1011e502d88a949112ff635500fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    with CanChain[O] // TODO: remove, no advantage after rewriting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/FetchPlan.scala"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a3296f0016a6728291a8900709114687878871646526d3d223993687998cc5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add fast sorted implementation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExploreRunner.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b29b52cd85b4f8afeb40e90bd21cf1306cd00da7414f8223c2fc5324c9ac71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: are there more memory-light buffer with length 1? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExploreRunner.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"542dc0a2114f85ac9817df52a78ad32519d39a41825663a39b2c03a4e46cd305"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: no need to mark, just delete immediately \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExploreRunner.scala"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6d75cbcd1f4b14aadac5e5c7a18e070434786863308813da155508758a1d2c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO relax synchronized check to accelerate? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExploreRunner.scala"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e53125cc6216ad5d75ba35c10bf639aa38b15b3a4c4e30519def8cacac73330"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: impl is too complex, can it be rewritten as a simple loop of FetchPlan, with shuffling enabled intermittenly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExplorePlan.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c379d3046a5b201c8bcc393db3c365b4038c201a82f24376f1e2c773ead5d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable more flexible stopping condition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExplorePlan.scala"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce34f4c1d2d8be98ede43c2bc69fd10dd308d76c37580498daa6583ba2e8edc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: test if proceeding to next epoch is necessary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExplorePlan.scala"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b2cd5b3b19f6b90ca5dd3cbaf94c87a77640e82bfc8d7f9cc2978e36d80dd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:: remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExplorePlan.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd8f1067abacbe012273ff8c42e773a6b4ba39276d7ed23d86097a6969c71a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to simplify? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/Explore.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacfd0c8a92782b02dd750f8bc9738df06a1c5b7a37e24a15d5ebb7a7a8d77b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge into outputSchema \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExecutionPlan.scala"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f70eeeecd148141e338fcc8f70e09d5761e7d6c5259ad56552c1eda1e3481a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: too complex? Should follow DeltaPlan.Fn \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/Delta.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"d78c41106df93997c732831afb5ecdf665c597e79cb9fc4b9ed7a0ed8f32c9e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be moved into prover-commons function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/extractors/Unlift.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a88d77d1c1dcbd352b1bd2125a2a0a435f75be308fe1d82e359e841153431b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not supported by java library! should switch to a more professional one like org.apache.commons.net.ftp.FTPClient \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/URLConnectionResolver.scala"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba7c9234b77557ca9fd6b717ebba20275442486055ccdb1d6b1f38f094019ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //                         output2Request: URI =\u003E HttpEntityEnclosingRequestBase = { //TODO: need test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/HTTPResolver.scala"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b4f9c9bcc04b659ee172399136e7017be4f2db54dedb38fd7e0257b2b7b7197"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0022FileService\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/CompoundResolver.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"67faf613888fc071cc49a0afeeac2803ee010d0e272990638711918ec6c34f9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: useless? identical to \u0022file://\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/CompoundResolver.scala"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"40fcede2b45bdedb36f5f9729e5c3fafc054172f7b0fb726d2a55f73a80da278"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be \u0022Omni\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/CompoundResolver.scala"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb68bec757715ffa91ec2d00c04ba2968d33f6d347592499e2925dcc72e5f25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: DO NOT override this, use __del__() in python implementation as much as you can so it will be called by python interpreter shutdown hook \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyRef.scala"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42522575a72718d6f0f0c6ae85f597f892ef5597b8236daa328a7d405ed89df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: rename to something that is illegal in python syntax \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyBinding.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a7431108a0f0a5e0f8aa2d12bab9f8be771610ff2613ba1d107d96c91a2a0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: so far, doesn\u0027t support nested object \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyBinding.scala"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"018ceaa483fc46ca30f8e66186b7e50a03ab2c88636eff385cd7ac32578d586b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: this options should be delegated to PyConverter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/ClassRef.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b672f4e1d0692de07341f6d95711976ff1e5f62e112f3b80ca15db229f7ec0ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: override sqlType, serialize \u0026 deserialize to compress into InternalRow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/SpookySchema.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a1e5dd85d6a7838a9800efe644fa8c03bc157c1594af12d565300be12cfadd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ////    val encoder: TypedEncoder[D] TODO: will be made typed in the next stage, TypedEncoder  for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/SpookySchema.scala"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfdb135479312ffa2ce7ff8b652c3a9634acf13908d1261846b0e49cdf28c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge with BuildRow, move into object \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/Data.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f54f7eed56d9a3e9cab6064d8bfbf3ad2c6478f07b760129a9eff59717bbb0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can this be a dependent type since scopeUIDs has to be tied to a Rollout? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/Data.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c47c1516c36dec4efccdae543a80d0ac836f0ed8b9b1c7412220a23116e2dd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:  case class Fetching \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/Data.scala"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c457b4d305ea2cfad268589c29688a64db410e506260018504e7a9946ef1739"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    assert(data.isInstanceOf[Serializable]) // fail early  TODO: this should be moved into Debugging mode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/Data.scala"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c15220a4c480809ae52dd0d4a19b49be26999c6f5f5d21303605cf3aabd1b32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fold into a SpookyDataset backed by a local/non-distributed data structure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentRow.scala"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d19fba9dae568a976bb83fb4d6b6d30713831ae66108c15f09f459c80b0223a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This class is minimal before imperative/define-by-run Agent API: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"80fd517eede98736884098fdfacdc89054972862942083d214093399072d4032"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This class is minimal before imperative/define-by-run Agent API: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5194343816024e9e20b0ece0df7099d9e7387bda3dc01216174ba113a87d429"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: finish this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3f43918640b9f1a305ecfdda0169f94df659b01e9dfa0cd43d7aaa273903fd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to PathMag \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f87f075b28c207bc550b47403d2e6886db65ce8e9c5e05f7ee7269e5f5292d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // end TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4febf9926bcc6647bf61a663b97734ac912616a2ef048096d7910a08a79da44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to class \u0026 try @Specialized? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"467c84946305e46b0aeb2dc629415edd9eb842f476da9e222d48ef034dd623ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: need test, or its already superceded by try catch? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"81024ada778d47cd106af61d1edbcfa9f10b6f1df11232e8e6c473654bfe913b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is not tested on workers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e9efefa68b105b270b24209397ef559e05af3756ac3ef836e5c352a85e975f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, this feature should no longer work after dataframe integration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/RDDImplicits_Imp0.scala"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"f263d43deaf3177bfa43146500fa129b1e9a826ca7692d366edf1f38875b8b06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should use internal RDD for smaller serialization size \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/PreemptiveLocalOps.scala"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94098e3811813bf2c2531626d974a9b8253c4efd52131cfd04384972488814b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be plural? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/PartitionExecution.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3174d69d3f7de14407c1c748edff856afd3151560167aa7a598f5db9004e72f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: INCOMPLETE! this implementation always replace old KV instead of updating it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/accumulator/MapAccumulator.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fc42a194c3137265897d8343128e57939b860d10e2a3d69aeb7df4b9fdae3d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: may cause OOM! optimize later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/SortingLocalityImpl.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"6649f370b176f1bf6582f3e64d3a79ac8efb9b07269b36503b1bad310dc5b221"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      else //TODO: enable after testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/LocalityRDDView.scala"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"9843293195550f077d9b7e8cb643805aacc66ad7ace648612394907a48784b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: change to ExternalAppendOnlyMap \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/IndexingLocalityImpl.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd84a33b4ca5cfd07dea330165b80a4eb43bf457f6d67b282aacb5e658d13d79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: change to CompactBuffer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/IndexingLocalityImpl.scala"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec56ddc815b1fc0345312736ed6bce5a00bd45aec5854e247f4cf9ddd70bcaae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this syntax error is really weird \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/PythonDriverSuite.scala"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b949a5119bbffd1e6d367d53534dcac1932e54de83eccb220486c4470bdacb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add sanity check for local TOR service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/actions/WgetWithTORSpec.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa4a3798c2dfc922caffb59602a3114085842ab6f1214345ff48c01720040c85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add canonized URI check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/actions/WgetSpec.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f518429d0a8579662832d13be6b155ce65096f9fab938b98ef1750c2396f59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: find a new way to test it! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/actions/WgetSpec.scala"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d08a21ea83945a2788dcd8e200ccb998e40be3a51a771fe831400edc6cfdea3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: find a new way to test it! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/actions/WgetSpec.scala"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cf63d6e5d807b65196856d4e93b1d6c81cb6149cd63a13383df395fe9fc2453"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to simulate circular redirection? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/actions/WgetSpec.scala"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f49a574d9886990a2dbbe98e419ac766da5377c0050762888c626564911c677"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add more non-primary-construtor params \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/dsl/TracePathSpec.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf09427e8d075fe124f87f515dbdca89352344468fd837bdbd56cdc95575ecb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to core module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/dsl/TracePathSpec.scala"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4087b6de2580821d7bc05c2b674f961d40be3fe63a54464382ef2a129b89d46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge repetition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/dsl/TracePathSpec.scala"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"929c43080f28c284ade2c65132b40cf9a4b92132aebfea0232ad4a52d792ac08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  // TODO: move to a new module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/dsl/DataViewSpec.scala"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"c90407f54acea23273723c55434492c12179aacdca834443829ef34160774594"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: doesn\u0027t work, no guarantee \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e52dee3befe7e7fe8e0c8333eb0b7c8f4b2fe95ec2adb4fd2607abe8ed3eaf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: doesn\u0027t work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e1b1c3174bfe5c978ad5e6a1f84f490b3480ca63506d97e72d6e6e4bc670a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: doesn\u0027t work \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"addb7552d9c4792056d5a73222985a2edc128816cfe2888e05dee81de9325ecb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the following doesn\u0027t work, why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/lifespan/GCCleaningSpike.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c53b95528733066dd8dfebd88c023657e70b8d299acfeeb19b6bd729c8389d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to previous module \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/lifespan/CleanableSuite.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e0f91f339c36d93f70932c11813b1e6cbca1465e84d9efa63c50d1157647d6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: it is not working \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/metrics/AccSuite.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"058a8c40eaa5c12bef9cf6ddc3b4c714d86938ed33b053a90233a4e6497410c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: delete after https://stackoverflow.com/questions/57482120/in-apache-spark-how-to-convert-a-slow-rdd-dataset-into-a-stream"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/spike/SlowRDDSpike.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"9178db6ee4d1b6b7b387a2ff513547ede7a1c9756f0c05d8ea3cb0f5661a4799"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: doesn\u0027t work by now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/SpookyViewsSuite.scala"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a92dbe7fd2c45ed7694fabfeba3f897960f90a54bc99c3ee8f761a3f25c15a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this RDD is extremely partitioned, can we use coalesce to reduce it? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/SpookyViewsSuite.scala"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"b60f7d84ca67edbc8c5c2a97278ed0e469d1b2bf8107d6ca017598cd5c14f38e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not anymore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/ScalaUDTSuite.scala"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ddd6879b0ee76f4f19b394ebfb852e257891dbad3ef3dae83c7d03c82add45c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to benchmark and implement! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/RDDDisperseSuite.scala"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"5822b5fe24b24d5e46e3ff62cc8f83ce6261af753991b4d4b7be9e9ae30f27ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: duplicate, delete! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/locality/LocalityImplSuite.scala"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84a5b083ecc2870dd42159b9b5491d7ff406a1c190f2318156cbe0953b8df7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // run once and for all TODO: or clean up at shutdown hook \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/testFixtures/scala/com/tribbloids/spookystuff/testutils/UnpackResources.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6610cc8ee34ab9cf0e60a59e61d3a7706dd15af9db438ee24a5f84b5138bbb76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: change to File(..).getURL? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/testFixtures/scala/com/tribbloids/spookystuff/testutils/UnpackResources.scala"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5d95a5cbcc450878a7a5f50df7a92434b12b82361d0a2c1383f61acb1bccf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add this after fetch can semi-auto-detect content-type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/testFixtures/scala/com/tribbloids/spookystuff/testutils/RemoteDocsFixture.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"0710cb817530d3f6d547608061177abf4f04ca02c3ec87d92eb461d706a9cb48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: for local-cluster mode, some of these metrics may have higher than expected results because. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/ITBaseSpec.scala"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ed1c7ddfa73fce62fcaeec977149c9027a91aa7bcbdd0f5d586d7be78df857"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    assert(metrics.DFSReadSuccess.value \u003E 0) //TODO: enable this after more detailed control over 2 caches. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/ITBaseSpec.scala"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc783f6ebb8fcce8f6e6216c02081069e7dbd512421c141c6444bb72302edc82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be smaller, at least 13 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/explore/simple/ExplorePagesIT.scala"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b3d5cc06e0b7628008e50388a89b896668622e45fd3b18c73a67375cabb049"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be 6, why local retry and cluster-wise retry doesn\u0027t count? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/fetch/FetchTryWgetIT.scala"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c811de451af0cce5a9cfbc49b044d61235f73d64c96bfd2a520743da640ccdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be 6, why local retry and cluster-wise retry doesn\u0027t count? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/fetch/FetchTryOAuthWgetIT.scala"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"be4ce186578b1e8aa47d6979dd9e75c8dde6265a52968dfff869357c454fd683"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: adapt to new default grouping: ab b \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/fetch/FetchClickNextPageIT.scala"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"deabcdfd2c2b34fff76f96e872b2879ee5fef3d546e47780a51b82dd8ebb0f21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    phantomJS //TODO: HtmlUnit does not support Backbone.js \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/fork/VisitInnerForkIT.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e04b7d18ca82f1e4aeb2ffdb8acc270ad2cfc6208f1f1df9b8b0dc7c5fc093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the following definition for Col will be obsolete in shapeless 2.4 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/package.scala"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf4d4841fc5a92e8c744de4c18dd9558e3ac10e04a73505617ef587c07ac9b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is unnecessary, tuple is good enough \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/SemiRow.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cef9325bf9c4d2d6e825f8a3f2e19d815be8dea003e561b5a4e838484953ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   ??? // TODO: impl after TupleX and Product/Tuple has been unified in Scala 3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Rec.scala"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cda0a76f96bbea32f634b98968a2dec53b22329f0d3802ccd891631e600b1d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should use unboxed binary data structure, Java 21 or Apache Arrow maybe helpful \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Rec.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcfd35c35d647c12e5c9a8171a4022a1beee6b31f29ac307acd0942edd3054c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: there should be a few 3rd party libraries in Scala 3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Rec.scala"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"a853dcc900ea522aa2c3c240e8c02127492f1b21906fba3673309b5476bbbe80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to easily reconstruct vertices/edges for graphX/graphframe? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Rec.scala"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"066c6e3b1269fc0aeeb5480a47b8b36a6600a211dbaabe33c2dbc887d482fb4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: why do I need this? shoud all be in the Record \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Foundation.scala"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d92be5a7ddad6d2cb78dc20a1d7a3e1da7223f9b50a592e46ad4ecb3e9159eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be %, as in record4s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Foundation.scala"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b9ddee4ebd02d395328a53e2f2c3e6966994759a55447f89bce2a324951f05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: name usually associated with in-place update, should use copy() or update() instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/FieldAccessor.scala"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace1537a16dc8a0aee014b7722588efe0a0daed5e2f1b9706492b0052810ea29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  // TODO: can this be merged into K := V ? to maintain shapeless compatibility? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Field.scala"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"0792187d43f61c7415e464e08b7d07950025a91d5c36e3d3fbeb4e33844fd036"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: it is useless right now, precedence of fields in merging are totally determined by whether to use \u002B\u002B\u003C or \u003E\u002B\u002B \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Field.scala"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde8a60f6391c6cd3c2ab9cceb9f7f73d3ebb906a4e5adb7b5d578f08530f97d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO implementations of records.UpdateAll are defective due to macro \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/test/scala/com/tribbloids/spookystuff/linq/RecSpec.scala"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e125d2408fbe17f36fd198bee0fd192135a15fbe1245a37aafccd3c6e19ddfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this should be an ill-posed problem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/test/scala/com/tribbloids/spookystuff/linq/RecSpec.scala"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"e69a5b03feb141e17f044977d3a908b80c1ef3a9e6f9c6567635670c1d4974f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    condition: DocCondition, // TODO: merge with Extraction[Boolean] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/blocks.scala"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8003f84b14b7e12d8c14bcb8484bf62a07bcef1883074acfa822d3c6e104c49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      // TODO: this no longer works after moving to define-by-run API \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/WebAction.scala"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1efdeb654d9192528a767508520778e443037910d1859c5d44626271e81e570"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this, and supercede with Selector \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/Foundation.scala"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1801c4c7f65644eb937ca3a5d45eda7ec17aacebcfe3af126895c4d07c5c4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: not possible to switch back, need a better abstraction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/Foundation.scala"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ed0439b4758271029ee01057912d11e3fca91782d27db02f6d14f4454b2851"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// TODO: remove, no need if manipulation agent directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/Assert.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"1575c3bc5350cd1139f0e9c907c0970fa8e8abbfb57802afb90eae698c61dc67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: unfortuantely Selenium have 2 competing APIs that are both unreliable, can it be simplified? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"665eab636b3c6558086cc0e010987f5c5ff36d22c4dc0d2d1a4a38eb771286d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, should be a constructor of WebDriverService \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1e9cf060757fe416bc6171ed53e3a3f5493875f70193a98b2cbf2691d9a2fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this can only distribute driver, not browser (which contains mutliple files) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f9c935641cb472f86b1ddf6e0161bba3deacca5bcfce0a281eca39d24c6008"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: set this in browser capabilities \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/package.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e3659c16b3d143b69278c1ed2992f79425612edcb281806bba0356fd8a45b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: need global deployment to minimise download time \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/package.scala"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a333ff576706dc4beffeefac283da13b5a14a87de90e2d2c5a08e3f82d7a98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //// TODO: mark for removal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/DesiredCapabilitiesView.scala"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f645506eddae64585a8515acb498205f22afdba0b137cbf0039a9636ff89f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // TODO: remove, obsolete comparing to the latest selenium \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/DesiredCapabilitiesView.scala"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d60e1741270d7effd6c9cccfe508144330bd5f7c2d81aecbdde366a6f20545"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: finish assertion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/actions/WebActionSpec.scala"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9201ee72f1131a6f38a5242e5b271568e8f68478d4b4dedbd5ea7ad751c0c655"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the following 2 has external site dependencies, should be removed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/actions/WebActionCase.scala"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1197050e5e79abe270e406e4dd704267fff396178e3e511b35c63610625c581"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add as a trait \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/actions/WebActionCase.scala"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b129235c7e420726a5709642ee4e79392ddd082fdbdd30d39e9ff825c4c06519"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add as a trait \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/actions/WebActionCase.scala"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dda06688db415d68bff5432f06579e1b2c16095c815c55d1ec3addfa65cab01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add more StorageLevels \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/ExternalAppendOnlyArray.scala"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a9a5b09149e8834986437ec1d37add0b31601fa73e5d66e57c5f79fa129fee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is defective as new Base64Magnet(\u0022AM28t0\u0022).asBase64Str = \u0022AM28\u0022, same problem may happen to other impl, need to fix properly! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/EncodedBinaryMagnet.scala"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e3be80d2cf9dd6717adf6f58216efb13d120afc54e370c1e0379f36194c83d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: start should be customisable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDD.scala"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac5537e52eb0d7770adc1d189f311dcb59186551fbc89cd38a6f605fdacc100"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This will render all CachedIterators to be broken and force all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDD.scala"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5dff09db085d899ff3362cf35b38bf842c82b818eeba979693c7ad141eadd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this doesn\u0027t work at the moment, fix and enable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/com/tribbloids/spookystuff/unused/IncrementallyCachedRDDMatrix.scala"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba7b16d499d50d6841459265234ca4e8a9aef583eba60883985d70bc22b6e344"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In UnionRDD the scheduler may choose to recompute depending partition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/com/tribbloids/spookystuff/unused/ExternalAppendOnlyArraySuite.scala"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4ce4ae23f4939b3e92d240497716f61d723ecdbfce4c62fa2a8cd387f13073"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this setting still can\u0027t guarantee 100% of the time when parallelism is high \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/com/tribbloids/spookystuff/unused/ExternalAppendOnlyArraySuite.scala"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d93de8ac5acb9f727a150192267b6e3664f595c0ae2c8c4ea8db37fcbee43b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: redundant for different rendering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDDSuite.scala"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f69af11782c959cacb4342137cfe41aa4156cf609bad25216793fcfbe9bee86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this doesn\u0027t work at the moment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDDSuite.scala"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5ce76ffaae7e7b983b4e1d6644f36cc673979009c34c1a29b3f97d1d95cea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this is too slow at the moment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/org/apache/spark/rdd/spookystuff/benchmark/IncrementallyCachedRDDBenchmark.scala"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2915e2f7c8243470072262e884cc7e017910d054808371e51376cfee3d0fdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: merge following 2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Visualisation.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff750979eb2141212ddc7033ad8e58160550d482411cf95fa9c3d6f4705961b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t remove! set ordering varies depending on scala versions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Visualisation.scala"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"1be8368e2178f42bb8fbf63f546a4f003d2c94c946781c1f4f68e76a1583a45e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge into algebra? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Visualisation.scala"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa5948467a20de72b2c857b3a14c5bcf3b94f1922356ec311b24bedd72f1b1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this API need to change to facilitate big Heads and Tails in the format of RDD \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/StaticGraph.scala"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ca55901dcfdc155824ae8ed72650d2049736c5d4bd6abe0673a725937f106c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: this may leverage an existing java/scala graph library \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/LocalGraph.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf0ebb3cf52132a33092a77882eb057950de5458fbf824d1490b545fd40b8f9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: also need SparkGraphImpl, use GraphX or GraphFrame depending on their maturity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/LocalGraph.scala"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"6027be428691d4431d529be51cf830b7530a79b0a38851d93ca316903a7e776a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: using fromSeq can make it trivial! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/LocalGraph.scala"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2e9d530d3ab901fc7c52e1984b60860f18aabf40e6d4b59f3008ab78d90650"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add operation to render all lazy val eagerly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Layout.scala"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5b72596c8a81fd37bf4ff3a5623301bf4598e5698ba82f579592a1cd715a30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: these symbols are lame \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Layout.scala"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaed0103f690024f1b8766c1a05d7b33d76b546fc0d7aa1fbbdea02e2b95e367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be part of EdgeFilter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Layout.scala"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1750acbe1127781164e9ad589aa08686c2359162d55da2913c1ede211a2334f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: need local caching? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/IDAlgebra.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e0d9f10188a8cebc797f6112769e44c0a53d92f889a82a0b9a1017237720fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fast-forward handling: if right is reused for many times, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/FlowLayout.scala"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f854b2fc2144f96072b0b04c040d23af5707e65b336f836d11353099338b896"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: follow :\u003E\u003E \u0026 \u003C\u003C: convention \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/FlowLayout.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0292f722ab12440fcc05bef6db7918ea88f80cfea551aa672450df06e85c72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: not optimized, children are repeatedly created when calling .path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/ElementTreeNode.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a2a943335d438c365affa7b35d47ee77c11659a863a679ed34f4d2753e2a3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: use mapChildren to recursively get TreeNode[(Seq[String] -\u003E Tree)] efficiently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/ElementTreeNode.scala"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b30e1c773db3ca515859990d797fab5d6a4a7b5cb65244bdb43a8d57ff27e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add following optimisations into FSM compiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/package.scala"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef332444ba7aca3fbe7d17d96d10d61063dce29cce15387c78e31ec4bca36a1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove rendered useless by !!.-- \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/RuleInput.scala"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f437eece5a0e588d546ebc6e98292a6bdf0170e1597e9c2a80de00cac8eaa8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generalise! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/PhaseVec.scala"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dcf86ff7d232914749072298e7d046e908d2a799f23348d0d8f0c1c098a5946"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //        case None       =\u003E bm.transitionQueueII \u002B= 1 //TODO: is it really useful? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/PhaseVec.scala"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"8217cce47e305d459af26836a047110e9c95515e6f810088bca7fff61e55e4d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable it! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/ParsingRun.scala"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6c6c3d9bf6344178c7a4f4da4c64e756d456a65a25b6b9606dec3d4310a522"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //          top \u003C\u003C: (top.entry) TODO: why this doesn\u0027t work? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/FSMParserDSL.scala"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2bf7267813bbb7c5e9500f7bf6d01c003784d61fae5afa84eff4ffb5eac627f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: convert the following to AtomicInteger/Long and benchmark again. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/BacktrackingManager.scala"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55c6d780adbeaec8e21c86b60897797984aa50a381ae0452b99afe8b75d5ce9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove, no need to take extra memory space! a slice of input is good enough \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/BacktrackingManager.scala"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"81a7ed066bb82f0b4db6770cc7611547e182401cd911d0cd1953c6d7c13e3040"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to index by long \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/BacktrackingManager.scala"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"370532d6c0b3234298ab608f3293bd770aa9e0bee4dd71d8a637493bb184647e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: inefficient! only the last update require refreshing transitionQueue \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/BacktrackingManager.scala"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f778ce7b8008bf8635e6cba9170ef53b136a19dabe5be7a78c6d45db1fe74b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should use ioMapToString in all assertions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/test/scala/com/tribbloids/spookystuff/parsing/ParsingRunSuite.scala"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"1448ec6056aef78dd7ef6dfb4162cbd09d783bcd7d58351e8c4e566c9aacf51d"}},{"ruleId":"D26","level":"note","message":{"text":"Split module/commons: A catch-all name that is huge (6k LoC) and sprawls across 13 unrelated namespaces like io/relay/commons/refl/classpath/data. Suggested: split into io, relay, commons/io, commons/reflection, commons/data"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5ce77535a6bc03de5afb5460cb3080354c5d34270839f48c60a36d959d31c718"}},{"ruleId":"D26","level":"note","message":{"text":"Split module/core: A catch-all name that is huge (11k LoC) and sprawls across 22 namespaces like actions/dsl/conf/row/metrics. Suggested: split into actions, dsl, conf, row, metrics"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b5125c9d7d4ee44f0e84f363b455bcca69c8c80ada471cd376ddc7bf5ec7ae5d"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"47778939935661d1b1e3e1296d73b33b4eb79c1c976e269492caa7f705a949d5"},"properties":{"commitSha":"e9c190154afe3683e45d56ed741a90b5d89c3ffb"},"taxa":[{"id":"CICD-SEC-6","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9bfee2652edc313314d4daa07104395165ba05d829730b5380e1b39859112ba4"},"properties":{"commitSha":"5695ba8ff41dbbf3f1f2fb7ceea4e033f338f45e"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"48bedc48580babeb16654e758779284e9c9737301a4718986d2e8e910a39c1e8"},"properties":{"commitSha":"5695ba8ff41dbbf3f1f2fb7ceea4e033f338f45e"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b7660a49001f2f5862623b782c85459cd6951f1469748273e21690773378b2e3"},"properties":{"commitSha":"5695ba8ff41dbbf3f1f2fb7ceea4e033f338f45e"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a601ee2b6e201aa1a0e40730be9f4fcca76a7c22eafdf99f9a5524913a234dbb"},"properties":{"commitSha":"b1b8f911e37ea5037da951be8fa72d38e6683735"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fbaec996a1b6c116d805877fa9c16b360e4c393f5544b75b8cbfba4147020601"},"properties":{"commitSha":"0483f4e4c6184578bd98ea6a54f1c675363dc147"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b5ccdbb4f94bf4ccf0ca287f2ad270f88200f7b47357057f8b4aaca0872fd8fb"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-8","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2d4a941906ee01744df019fe1d5043e939414ca3b5beab0554d05fa10425b158"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"61c3a4688be7f0912d8705bf6428a530f4d75f85d0b9cb606d0c23c83189117e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4189b075c46c3e990b7ba2e96042618ae49d77abc74eec732bbd66b326da4dcc"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"45349f6239e2400cb362ee004dcad31b5c521c173147d133f03693899a2d262c"},"taxa":[{"id":"CWE-1104","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-1329","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},{"id":"CICD-SEC-8","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3189e78f9feff66f985d02c3fd645d4ac129402ef1610d7463c7a6d17d95fd6a"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b1839963f906dc9fa4531112ad9ddf8f6166669e7bf164f856f9a2702b14a98c"},"taxa":[{"id":"CWE-125","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A06:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d3b07cdeda15f0dd94561658f568c8e5d5659d6687b32730766d0284995de28"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5964e9d95a08dee79ae396edd04621543efa9cceab7801a55c760387c42cd44f"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f9d19a9ec33f243177298b6538635dc38b24c8d4b37638009abfbaf551ca4ca2"},"taxa":[{"id":"CWE-1333","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c5ec0a90df89fd36b038f1ffac054f4971f642a3847c916454ffc02b032ae4c5"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"09171eea4361e32034d642906b5965d4892c1697faae23ee3589963de1558285"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dff30c1202421bb8878ec59bc5082080be9a9827aaf70379dac4221c27b27db3"},"taxa":[{"id":"CWE-1333","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A02:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0c240a6871f02c31f092e982597ec38901bc56d316fff77886576790a8bfe33e"},"taxa":[{"id":"CWE-295","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"df89c73de16f3d4dc09d491b534a4356ad9bef80a1fdc47be88421b2be2d071f"},"taxa":[{"id":"CWE-295","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"091c549938a3985fde570db7da2338be1d1d45633f245f4a70890cfe7d86df88"},"taxa":[{"id":"CWE-295","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"63698e49cdf191f3bb386855a8c974901939aa0e8b4c90e656afdbd621906a2f"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b05f17aadb9999bc21eb973bf29fc57034f8ddc79452d904a46f6b316a4dbb9"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bad70ffed4b4a4fc3586d98df11f16c67de30623fe503abe4930c98a89e797c7"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0f3b602d5788721f42ad052ccd5727a7707167568e37324bc5ea8a88cbc7fcfe"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d3810b06c3eed52108a06d78477593a5f392d45499ef6406ef51092610158d08"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"936f1675874ac94bf6df4090dd20cbc640d1abf0a65867e4021ac88f67c6673e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"def6b77a061dbf5321092fcd8806d39406b6dea9131aa80cebc247a364887890"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f99b80f24c0c684d8996926f6d3538ae18a7dc6a4b83206560a364503cd3b117"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1c683aa8b97c4c251d3d60b4f079a41d7d665ac31aedd602d9ddec282232c097"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"945eaa7ecb37bc0e7cd7d312ae3ae12d266f32de3b156b980c8953a8a239731d"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ef165a39677dbe9fa947a485dfb49807b8befbea46a6aa2fadfe136a1d9e7121"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f48a25790b2cb8a0d7272f1ed105cd1687a0de7277c2074b4c9b996edff3858f"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0b8248b07cd020db1aa8c7ff573d4c991241ff5f0a3e355592a131c6b57d3f83"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8d6db942dd21175002b9b91146e3adbd068a144ecb10e5acd962241a6bbd58d2"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8ace0abb319834a5db87529ea515caa0bebed13e89f09a51f08b51618d2ba904"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"057723eb666f9910bff0024d73c775fbf45ce915434a34e2f33cfc12d04b8702"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"685934fa9e2630161457a07e86f3c6c015a2c1c33a51ab64078041ae9665d184"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f35fa1ab8aad789929699b80833feb834f87963eba205583de30925ea53a875e"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a9027423668a408ae0f59946f87b5c39d055e73768053d13cb973ab63ed74895"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"07631ce360bcfdec3719046c50080168b92db97060e76350c3e3afde81917002"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"122768b4f8c609918940b578c73a65541417843eef27d9f0a3a89223a4a0caab"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"465e03722c988793477717c7b270a76a5a49860b71b5f357a664ec34ff5a6e26"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b29d21f8356c2abda6331d75a489633db88843c70bd873c6216733cb3a0057d5"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A04:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D34","level":"note","message":{"text":"Dormant codebase: 97 of 97 significant files have no living knowledge \u2014 the codebase as a whole is dormant, not 97 separate risks. Counted over 97 of the 322 production source files in this repository: the rest are under the ~2,400-byte size floor this dimension measures over. Re-engage owners or document before change."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4c69f1e54b7dd6fe9029dd02df6ba8f8145b789f2f18dbdaa086c40ded49dba6"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Layout.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e351d9cfa853cc09e44f07cc373b4502616ca9c5dac96e7f487e4c93845edc3"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/agent/PythonDriver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ee27e6ade210e4c615c59424a106bd589343bb7813cad2e4e50f2086dd3e93"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/TestFileHelpers.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a02ad74e4fb128a729e4ef406cff2a0171f622a526601eaf4475aa880d5e99"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDD.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e02e3602bb745319f835c2bd5b0eef115623a703ea11b8eebf9b742c3332b32"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/classpath/ClasspathResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a769e4f29a6cffbef437f55686b7fc21dde7880cef0609fdd129f5f728d2018a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/actions/Foundation.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd86a5d23e011146838fcaf87db015491393ba311a1ca20a234adc7c33b4acdc"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/WindowsFileCompatibility.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71a8fe1a88243f14bbf3c169f9712c5e53ffb7b4c84ae79123184f0e3c1b1f27"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataView.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b521426090f6339a726349a2b70ae69fb5be980e42cc652cfb5e0ed27b469023"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/ExternalAppendOnlyArray.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c66c610eac5d28cb898d40f3fc07133f8b079cae5001d81e0d7eafbd15ac430"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/benchmark/src/main/java/org/apache/spark/benchmark/__inline/Benchmark.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b32e5422af66ef4f59c0a846da69ed103ec6a7c4d9faa4bc98eaebd2b489f8f"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExploreRunner.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2bbc5f049691368655431fbecddebd914106ceee501345918e19138a9fd86e3"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/LocalResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dedbdbb9dbae7129339892cf9e1e222a9fc86176a8a1ec2d6970d2e3f7d8c9a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/CrossPlatformFileUtils.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3527612faa9e1c39d7cf104e4d5b268d6b73807b29039e82ce989a33a87bb690"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Trace.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc80e73c6b7c5ca4909769f20ce7ba56d85cbbf55f0ef5ec865c6954b09817b"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/SpookyUtils.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0a34e765afe9f71856faf62c9623cab2f3ccd00aae41ca0031caeccd873660"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"32596e9e6b6f745d7667d62563fff9ba13ebd44800ff125f6dd4e27d29ff55fb"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/SpookyContext.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a3e6d9ab07e6bdb7c669b5f296a627fe9ff812707b275f211289712bd88e78"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/package.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60fedeb33909b6d3bab173162457a4812b9692b55edb4ad442cf6292e4a4f7e9"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/agent/WebDriverDeployment.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9913042940edfbed75201784ad46910c6c559a67d68c6a65bd011932be3e2d7"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/HTTPResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"83047657a95a1971c72b91b3cdc29b839c8ab9dd102f31fd906ed8e4f2523586"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/TreeIR.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4958d1880e398a66c7ea7e5adf3f301a11b06e86f71a5e6083870352232f95fb"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExplorePlan.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ecd89495d5ec70cb78359b94a39994861f257dba11144e2f2c9a3738b08e3f7"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/Relay.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7ad7a11b8be7ddba77ea6df177703f11941c6e74212ac71d645496440959133"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/org/apache/spark/rdd/spookystuff/NarrowDispersedRDD.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c45373a838ba914be56784a1f7fbe3d8a92b95220c542d55c430cb51de1ed0e"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/URIResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1497b8acfbf609d478496dbdadce3f06e66dee1dbf639bab89bcdc22af7b431"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/lifespan/Cleanable.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"69f4534f726344da1a2803e7ae5e7bea8296f73621cea53856f6bc5761b2adec"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Action.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62b583406e358d24ed988517e6c681da7ebf51447a9bae769eb2edf4f9c9666"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/HDFSResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"608bd4ed22e18f441b6f4ef4d6e894c03ebf9b041bdebca2951dd702aac77ee4"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/CatalystTypeOps.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d1fba4d7d1006206e16ddc6da1184403633210da6fe6ff950b5cf8b766ce3cd"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/data/EAVLike.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0edbeb434decdbb026e8d021fdba5510e587f760de6ac6687959940771870c7"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Visualisation.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f480faa30061cfdfe2cae922c3abc1243e6f614e04fbe01f1aa50ef8a512744"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/LocalGraph.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e0f5cef8b04309cd5b95e3d3373571b61f034005734fc3e7ad530fda09a898c"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/FSMParserDSL.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b78ef1db75c78ade1c10e348b85f5615d6d5833f4647f67378f5995bd50a191e"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f513ac7785eb548d93f2af2075fefe8783c09643515a250f664517ab75f210f3"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/NextExternalAppendOnlyArray.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62c1e511ae6e4cd1167b3d884f99563488d7735b7e6d1169adefbe1cddee51e"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Foundation.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"012389bd5d492f0c5f59acd7e49a8450db9b31896031d2a5309070ee7442f723"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/DriverFactory.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8af0169b9c0a120c4d6e511c266b997dc62e39b3ac8e8d318ec741effc525fd"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/parsing/BacktrackingManager.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd7661799e547f32ddc103d67fb6a61bea6e505636a27966e26f5b36febe119"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/__RowDesign.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a58ea2f2147259050a800d9114dff75547ce329524d04f37a7312d293a08bd4"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/Element.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8419a2bb3e754ccef7a9e3f6d04fa3e6ae5e41affb08abbcb5a0ef4a056b2f"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/unused.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c752dc7ef77c5a143f1314f70e88be466220477585b73485ed9d22ef52215f5"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/package.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd068b97e245e4549382f04e51b5a05e9d71a2e8a9217d80b055b4c37e21c6d"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/RDDImplicits.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1626d4063f03d2050bca1ac3da2ee543459f32515e406e9f99871fe0a1f0293c"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/BinaryDeployment.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98744e66492666389bb7614bcf3fe1b50e6a7b68fc276207d5ed26ecf584f40"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1017344cb08106f2e1056400255bcc19cbfa71564820e98fbe3ecb5a06a1583"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/metrics/Acc.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8762f49a3a8cc5e154f5a53e146707366b4e53702872c36ca8b1c190f55b41e"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/data/EAVSchema.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"719e89b2878e1340ad1ed344db091b04171c776ff3628ce23ca05ea105300578"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/ControlBlock.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e8266f392d8ef00d985bd8d4c6f56bd6259beb2c169742aca3b9995fff0f95"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/CommonUtils.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b8e6ce79753fe79cc8ad8434748b650f0164df51fda3b0192644f657319a05e"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeUtils.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b081f55de77dc7d44ffe3cae54873e5dd0cdbe42d990fa4e22a167ee04ec577"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/Delta.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d9e0118433f7837bcd3d37c308aaa1c06c9cbb439e6d851b5b0436d30281446"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/internal/ElementWisePoly.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d99c875a67c9f75fb87475e827d1bf7207bc33816acf75ea3f4d6633c67d1da5"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/Resource.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15aa6cb2f9d564e07d9c740b55f64d38a8a21b312dd37b1777966a6fe3ab7db2"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/XMLCompat.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8421dd06aada533bf83865b98c922b0fb86f5bc3d9441b868d2dfe88bbd9b804"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/TemporaryRefs.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"694f9a99643ea9825a422b81b0b7a8bd0029f8452b61fd3c8dfe64dca36460fc"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/EncodedBinaryMagnet.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3512cbec9ad0aa6762da645957f7a01da6d47078b0432b65a718a38ba0230ad2"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnet.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae55f36dc4124486549808d8f114b462843c05658a768ad3b8fec529e11bf75"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/ExecutionPlan.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc985b8ca4f449e3ea3027a1031b9b180ee0d0d40d6695d0c51ba3000f09382"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentRow.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e27a6e942f0ce0d9e1a99dec88efcaa68f39013fc4221b6b82abe1b40c763ada"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/org/apache/spark/rdd/spookystuff/UncleanTaskContext.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e5dd8e56683e4f1f5402d69c61d47da195a0ca48d5e5b33a5025d1a8bab914"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/Rec.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a862121b953615e59f17943587d22026feda3935895d0063386cfcf14d4121a4"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyRef.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5910dd576c316ee478827ee1063729385d9ad0654af92b57458954cdded11c56"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/SpookyConf.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46da541b3922907c13fc2e2c0976a981cbf68a5dc8ba63664069bb5164878354"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/ElementView.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07689ca04022aa237ac24c713eaae6e0316af66f2d49d6398112e0ab6c5ec6c1"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/PreemptiveLocalOps.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"36caa1282d0692a0fc73ca776c766c50bfaee04ae29f508e6ff32b4df89ccf5b"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/io/FormattedText.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a02a62a90e3dde9cdf8437166af06a2dc8274816135f75c9a4e6c6ef87748a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/scala/com/tribbloids/spookystuff/web/conf/DesiredCapabilitiesView.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e59ee818a60c58b1c1107860f340cd3b4ccf56a711a0d06ae3a7daa5b29893"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/partition/FallbackIterator.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"132af29b4ebc2181e3d9a7ebee1fe9058080e2b801b23c4a37f341fe689d8602"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Export.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00d2a1271eb42ce3db7a8a12dc80cd2a339efd7b42aa0d9b91d773719085c5a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/TreeException.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4d7d1f21550af6a6d28cfaaaaf2044722e830bb4432d072d0d3dbcf4a6bedf"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/execution/__DefineByRun.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ea9d05198c3b4d84f31d0cbcfbe006ecdadad7641048801275bf660a6de10c"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/Dir.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb98d573c77b60245a1277c43ef1bfca52053e33926f2e262a578d3248cb3c4d"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/AwaitWithHeartbeat.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"32f9e3cd1db0f7033b9bbcf3733c2c1cb9a3cf5ffeae1a5c2e724ecf9e44e20a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/ElementTreeNode.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6473de1d287ca4cf593cdd80586fa3dca95d4489b22796fc0cc5cfe857adcc9d"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/actions/Wpost.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54e25e5fbda97d708966d0a3eeb2a567d716ac83fe7789c94032891a1f711048"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyBinding.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"999f62ebfd29a90ffd34708f0482c2605693c16ff37ebf0e9f2e7995d1c2df31"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/FieldAccessor.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45247db50140caac48fc25466e7527645c3bf7e96449e802ad910dbe1845fe2"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/caching/AbstractDocCache.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d647074ccfd3058b4df55f844320062ee8c26bb4d93bc5477c92965b22fc329"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/PathPlanning_Simple.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d4359894c738588fc5dc21ed6c8097cc204f50fceaf4ea031078d7a3250268"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataLocality.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"59abf3d595ed8067e0001e909859160e700bdfc91751234269d5647727ed9f47"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/utils/http/HttpUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b446686e75a19795324d226ad9a0677e3a025338247c469410745f1ad788a24a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/agent/Agent.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9eb79a0589414b1cef0f2bd99c8129c88d985eaebbec9e7f6183bf3c54dcca6"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/locality/IndexingLocalityImpl.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adbb6fc6eb577be63676c1231fdb6c4398e4f9f4f1ddc412094c0c70fe6e3086"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/java/com/tribbloids/spookystuff/selenium/BySizzleSelector.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e356e06d2e412395d95042c23d05626f5adf3920d4f9f3dbfa97da7a453fd850"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/build.gradle.kts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7ee1816b349f4ea9fcc13d744a08947b53a3880f59aa171ec3483585817106"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/StaticGraph.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee33bcbfd12387e5f1d3f39d30ed2e5a72821ee9ccb8117e4f958f551bdc272"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/CompoundResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ba93558b84220cb5890da14a587c01eab27e741c3bf3677fbb0960af3a8074"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/refl/ReflectionUtils.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1bfb7d199a9678e0428dc308c9b311fcc20128e4b6821e515be783379acb844"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/io/MLReadWriteSupports.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3e14f83c3403ad445d3576d22bb0f7ff090f750daa87647ba78823a53c84a1"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/parsing/src/main/scala/com/tribbloids/spookystuff/graph/FlowLayout.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0019d8270a9b222cd678b9d4c37b8c8e67739ae95981eee1639402bd00faa74a"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/PathPlanning.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e85847f4eddf055578492d64538b08259c9411e3c5f32ef69914232996fd22"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/json/ToBinaryCompat.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e573c4b33e5c7c0eac55b729502e0146678322b8eda3d2537c42f43108d1b7c0"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/Data.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b409b9b0d98928552ee48e862ed59bfd324a1ab10315095ae865a982a0c9aca"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/TempFile.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cbe23399f37501ce25636afec56f79746b511f3536d5402b6dc1e8f842b6d59"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRDDInterface.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b603a0a5cc76cd3e19016c119cfa74090c0e9ab7d7a675b4f826b756ebd0a1"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/io/URLConnectionResolver.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78cca973203474c7531a880939cee46182866eeba3c7d3328868619ead59cfa0"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/linq/src/main/scala/com/tribbloids/spookystuff/linq/catalyst/RowEncoder.scala"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef9b692496c4e5ef8f4e7984ac0876190e7ac1bc6c37ea3504efc858e839320"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9e759935bc673c1bbcc6c3a0b71d4c7fad5f018c82bda27e04c84ef98fe18b58"},"taxa":[{"id":"CICD-SEC-5","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ace515990e7ee0f17b5c17e44dd168a5bdecf90804a3a3dd845cf05540978013"},"taxa":[{"id":"CICD-SEC-3","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060deserialize\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/json/FailoverSerializer.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d17ff660fed808c469cd52ee4c747f2419ad26d979a84d5a7fe197e8b4506e6"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060breadcrumb\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/JsonNode.scala"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e26d7d8575ad9a334929a8ae27bc982398f23a10a6f2d2c90a602985160b736"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060apply\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRecInterface.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2362655fd439e82a06a2726d744dbd27b90f6b82b8c18bb071668beaa44d84"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060$TYPE\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyBinding.scala"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"198693be782e9adf92b38ce9e5d8b1c579e84083982a4d209c0b1ad2d7a35f28"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060localityGroup\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"baed9e1fdc6a30d0483044d323bfcb49492f784936d3aba0156cb09df7efc4a9"}},{"ruleId":"GD1","level":"warning","message":{"text":"Unfinished stub \u2014 body is \u0060???\u0060: \u0060trajectoryBase\u0060 is a shipped member whose whole body is still \u0060???\u0060, and nothing in the repository overrides it \u2014 generated scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"16fee711d441c5a4905d94016d5056acef3324ebcfe5604dbdc39a8078c7d8a2"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060deserialize\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/json/FailoverSerializer.scala"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c795b3607ad1922b3e299730405a6a981bcc0b3f72d59f1b08dcd450ecf8e76"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060breadcrumb\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/doc/JsonNode.scala"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4edd62cfeab589effe978a3d7452296658e8a15afd4836b5eb0eb9aeb147c9"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060apply\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/dsl/DataViewRecInterface.scala"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cfebf5019b67a71f39d12836d270de9c6df5afaf8cd9dc987df43d5c12910b5"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060$TYPE\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/python/ref/PyBinding.scala"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80b9cbfd163230d73cde50351f26f1ed6f6abb900435b899bbe1abf9ed47abf"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060localityGroup\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd9d8bd232032a3519f644757f64ec51ce3dcec7b66fee6514afa2c3f12a52f"}},{"ruleId":"IC1","level":"warning","message":{"text":"Unfinished stub \u2014 body is ??? / NotImplementedError: \u0060trajectoryBase\u0060 is a shipped method whose whole body is \u0060???\u0060 (or throws NotImplementedError), and nothing in the repository overrides it \u2014 scaffolding that was never completed. Implement it or remove the dead surface."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/row/AgentContext.scala"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"076bd1f26572360e1f7d86002848160d098f8ac09ec0b252236ae3e384516ca1"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/assembly/src/test/scala/com/tribbloids/spookystuff/assembly/JarHellDetection.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"75e4cda0f78f9346e134b03d1c46b52d907f98460e5cc01519cbda5d479fcda2"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/benchmark/src/test/scala/com/tribbloids/spookystuff/parsing/ParsersBenchmark.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa4c93878f810cc4fe41e815ea16d7b88dcdaf3982883b3e5ff1e0f1c826caa"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/WaitBeforeAppExitSpike.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec955018dffb230172c7574d711772fb49b205e6aa2154c99a36f4d0de446e60"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSpike.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"7940bb3ca3ac9fa21d7e1f3ab247595d1feae79f68ef41e0db7d4a6ddb6949fd"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSpike.scala"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3212a561b223ef3bc29e3672b123b1e8e78b2cdbca66dcd9f3fed332542bc0f9"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSpike.scala"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae997793c971960fdb5d17d880f7b65e4545494cf9c4a306c6890fbd69f78207"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/refl/TypeMagnetSuite.scala"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"b472fbbaf8a25f9b3820a3d1e6e1bc19261f961f06c8ec02f88a69e579ace39e"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/spike/JacksonScalaSpike.scala"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b3fadd0dba9784fc774c37e51971175a3dc409236f064f954488681b8fe996"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/spike/Json4sSpike.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"32fa1a491f1610034c8a51cca3ac72aa3fbb3bbd489e260279e4d7964abaa392"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/commons/spike/ReflectorSpike.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"375d4ab69647f1b06da132b0d7f968e4c08209567a7051c4b61f53a7f0130a35"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/test/scala/com/tribbloids/spookystuff/relay/xml/XMLCompatSpec.scala"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5944bcc8bffcb9cd8600a7df07e3600fe91a1f531d718dbcb02d82c4463b285"}},{"ruleId":"IC1","level":"note","message":{"text":"Empty method body: \u0060onStart\u0060 has an empty body \u2014 confirm it\u0027s an intentional no-op and not an unfinished method."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/PartitionExecution.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e1ff5a69c4cea84675c3138e0102d51dd4d581b45ea51999b4463099d285c6"}},{"ruleId":"IC1","level":"note","message":{"text":"Empty method body: \u0060onCompletion\u0060 has an empty body \u2014 confirm it\u0027s an intentional no-op and not an unfinished method."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/utils/PartitionExecution.scala"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"9234ad11fb96bc9a074d9c213aef77bd6f7927a232929a1f5a9117e69a30fe16"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/doc/DocSpec.scala"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d14fe0605a4f73106ceecb383e06fa6dc721a82cb4c49673095447f5b94cf0a"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f953e4f30ef7b547e7bd17fb209b8cbe99733f53cea3863d54aec841012ece"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"859b824da5a3470b4bcd4e2adf89abbdd898aba841ce8a07fdfbcaa51803424a"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b69f7dd291479a153c901eec3f30002fd3d1cc6d8165e589e2e6b9b9c17db7"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"e651e1603b413bc09073f34e07e06f3d2a28def4628c87eeaddb0d2e1ca9b74c"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/AbstractURIResolverSuite.scala"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c6b8a0d710dd6ae1b5792278a2a5bfcf8f45c45a9c522c3afed83a5482e8bb8"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/io/HDFSResolverSpike.scala"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad72202037c460f8f4f35eb1de874da583472a5780dd747af34adc0955f8d6e"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/lifespan/GCCleaningSpike.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"538931eea629ac1c249839af85e652d760adc91c4219c94e4adea8da7bcdfb35"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/spike/SlowRDDSpike.scala"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e22cb650390dbaf2e8f2d2f0fc5dc16f376c47b4a589dc9cee914feaa7ff26"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/testutils/BaseSpecSpike.scala"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"5804019715ac9f3d06cad1e6e1f2b9a275c07c5dc5b34b9001de9e2cab0037d9"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/SpookyViewsSuite.scala"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d0c7ac1f5d3d9078e4dc47748065c028cdb8c3ddbc9a35b1344da38ec0a7609"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/test/scala/com/tribbloids/spookystuff/utils/locality/LocalityImplSuite.scala"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee6cd434164063643fa9f32835de37a50492d7ab05a7675de315dad9337334f9"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/integration/src/test/scala/com/tribbloids/spookystuff/integration/fetch/FetchInteractionsIT.scala"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8b56d3d1e435898591f819b96daecc92718c776a24a0ef7f862909bc4b28c63"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/conf/SeleniumAutoDriverSpike.scala"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"23eae739979e8f65862a68018b200fb15b0ee8d369bdd130b4bc885c67cacb26"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/test/scala/com/tribbloids/spookystuff/web/conf/SeleniumAutoDriverSpike.scala"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a9f13653737ac94be701fe9d50bcdcbadcb1a6e2b614a96d0af8fc6c5a343ae"}},{"ruleId":"IC1","level":"note","message":{"text":"Disabled test: A test is skipped/ignored \u2014 coverage that looks present but never runs. Re-enable it or delete it so the green run means something."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/test/scala/org/apache/spark/rdd/spookystuff/IncrementallyCachedRDDSuite.scala"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"835283a08cdaca62af253b5a4267ceb3b978fbddfc280c10ae17bda5471883c1"}},{"ruleId":"M1","level":"note","message":{"text":"Thin README: The root README is 104 words, against a bar of 120. Of the three newcomer-critical sections this check looks for by heading, it found no a build/run or getting-started section, no a testing section, no an architecture or project-map section. Sections are matched on HEADING text only, so material written under a heading this check does not recognise \u2014 or with no heading at all \u2014 is not seen and this row may understate what the document covers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5fc8f78bec0b6b3daab9d9139ba49b687f61b54f8310b64c159df9616f47e38e"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"P3","level":"note","message":{"text":"No SAST: No static application security testing detected. For this repository\u0027s stack, add scalafix or scapegoat (or \u0060semgrep --config=auto\u0060, which runs on any language) as a CI step. What was searched, so you can tell an absence from a miss: the 1628 CI workflow file(s) in this repository, and the scanner and linter configuration checked in beside them. A scan that runs outside CI, one configured in your forge\u0027s web UI rather than in a committed file, or a tool whose name is none of those this check carries, is not seen \u2014 if that is your case the row is wrong, and saying so is more useful than adding a second scanner."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6e54424179c892f03ef2fd003130ac4bd43f39bbf3b1ca0a0143e25acb80ec87"}},{"ruleId":"P6","level":"note","message":{"text":"No changelog: No CHANGELOG/HISTORY/RELEASES file \u2014 what shipped when isn\u0027t easy to reconstruct for support or audit. (Versioning/tagging makes releases traceable, but a changelog records the what.)"},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dda5aa5aed8cbb292c3ef2b733bc138f614293ae6426c85e98bf31ef330d9415"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!context || rsibling.test( selector ) \u0026\u0026 testContext( context.parentNode ) || context\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2064}}}],"partialFingerprints":{"codehealthFindingId/v1":"a87e17f8a6da9e68ea08f399473deece4951f6ab80bb744102d273330e32ae74"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!document.getElementsByName || !document.getElementsByName( expando ).length\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"1055845d695f7ab69087377f89ee896b1a3050fffe021ae3492e241cc2bba4e1"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!document.hasFocus || document.hasFocus()\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1385}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1785d7e00c466ddb2983fd949e862623740c607126f0e574e6a739bc0a44a0"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!isXML \u0026\u0026 elem.nodeName.toLowerCase() === \u0022input\u0022\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":2110}}}],"partialFingerprints":{"codehealthFindingId/v1":"132027a5c30a251ca6034a5f566172934ca93083be46e1a6a849e92627a1a9a4"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!leadingRelative \u0026\u0026 ( xml || context !== outermostContext )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1805}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f4ef5a82d8d90ff13fa762db9ecb3ac445d043a6bc8bf33b37309661fa7cf99"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!support.sortDetached \u0026\u0026 b.compareDocumentPosition( a ) === compare\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e9c99e67f9dcf0529900ac9ec9d0b78217de3e06f032878d027aa4a3ebe4dd"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060!support.sortStable \u0026\u0026 results.slice( 0 )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92be8e51210eba91af2e71441076ba0de80dbaf21c0b84297370dddb7134e02"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( \u0022unsupported pseudo: \u0022 \u002B pseudo )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ead2517388a15056b82e03db056a192dd894037ace82898efa45e9f0e329a69"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060check \u0026\u0026 result.slice( -check.length ) === check\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"939c043525469aec0901b90b00d68b612a9488fb98d6d93059ac320ebd444f18"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060context \u0026\u0026 typeof context.getElementsByTagName !== \u0022undefined\u0022 \u0026\u0026 context\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b044f391d3f13f5dbc588a6dd4399562aa7719a1c7b883219d0505df4e00a74"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060diff === first || ( diff % first === 0 \u0026\u0026 diff / first \u003E= 0 )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1258}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4a610129657aae8438cab7b3c58e1820bdb8b88388b34343910e93d111c861d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"447fff98dd2b21215fe63d50b4479bbcd5af45c03a415503414de7ae5aa154c4"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060elem.nodeName \u0026\u0026 elem.nodeName.toLowerCase() === nodeName\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"1573b79708b3509b63713769141b0021bb4439d21506fb710bf4301399221d5a"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060elemLang === lang || elemLang.indexOf( lang \u002B \u0022-\u0022 ) === 0\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1367}}}],"partialFingerprints":{"codehealthFindingId/v1":"242fbf8fa9845a36ceef79a059a24c3d6723504ad6c8e4d6817f7e7490894aab"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060fn \u0026\u0026 hasOwn.call( Expr.attrHandle, name.toLowerCase() )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1704b9d845d08f496eb81067a9f014735ce4913d3d8d7821ca63529115a7b70"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060hasCompare || rnative.test( docElem.contains )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0842e1047bb121b6682c7dc11da8bb5ea094162bc088aa48e993f5eb742a9dc"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060i \u003C j \u0026\u0026 matcherFromTokens( tokens.slice( i, j ) )\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1836}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1d3d742f57a27a0532ecb785ab036716e9ac35233780b1612da1816b65ca68d"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060name === \u0022input\u0022 \u0026\u0026 elem.type === \u0022button\u0022 || name === \u0022button\u0022\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"63953b89497e4860193e1453479f0cc92b7df3d23a212b7bb470b9b3566c2a36"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060nodeIndex \u0026\u0026 parent.childNodes[ nodeIndex ]\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc443bd20b946b0ff824cf76da32b2ba57d67e5d48af745634b661dc19eaf401"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060nodeType === 1 || nodeType === 9 || nodeType === 11\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"6137a31725bf5288563eac68cd529670ea78873cbb169fc6fb8716487ace3bfe"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060outermost \u0026\u0026 !seed \u0026\u0026 setMatched.length \u003E 0 \u0026\u0026 ( matchedCount \u002B setMatchers.length ) \u003E 1\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1938}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84738c403bdcbf1cf7426fd18ec4d067ca2c1a8421ae7dafacfcce9d2ace7a3"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060result === check || result.slice( 0, check.length \u002B 1 ) === check \u002B \u0022-\u0022\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":1129}}}],"partialFingerprints":{"codehealthFindingId/v1":"521f7a15db40aaed5aa5f1409802a76298eda5d20f7d5db10b88979902324524"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060ret || support.disconnectedMatch || elem.document \u0026\u0026 elem.document.nodeType !== 11\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"06526ca036cdaffdcf5fae5c1799cd460f2b7cd14594ac5ec559e7db9dc7a2b3"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060rsibling.test( selector ) \u0026\u0026 testContext( context.parentNode ) || context\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"54a9480a6129560b14a7cf30fee87aceaa464834ab2dbe57dd126de17c9103f4"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060typeof context.getElementById !== \u0022undefined\u0022 \u0026\u0026 documentIsHTML\u0060 appears character-identically in 2 files \u2014 module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js, module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"5923a6a968e5f7020307603ef29793ac03719126276449cd5d04b718796bff83"}},{"ruleId":"X17","level":"warning","message":{"text":"Recursive walk over a caller-supplied document has no depth cap: \u0060Xml.toJson\u0060 is public, takes a document from its caller (line 33) and hands it to \u0060descendant\u0060, which calls itself at line 42 with a piece of \u0060n\u0060 (and at line 45), not as a tail call the compiler turns into a loop \u2014 and nowhere in \u0060descendant\u0060 is there a depth parameter, a descent counter, or any other cap. The walk therefore spends one stack frame per LEVEL of the value it is handed, so the nesting of the caller\u0027s document \u2014 not this code \u2014 decides how deep the stack goes. On the JVM\u0027s default 1 MB thread stack a walk like this one throws \u0060StackOverflowError\u0060 from about 500\u20132,000 levels on a cold first call and 6,000\u201317,000 once warmed up (OpenJDK 21 and 25), while \u0060ujson.read\u0060, Jackson\u0027s \u0060readTree\u0060 before 2.15 and circe before 0.14.16 accept any nesting (2,000,000 levels from 4 MB) and circe 0.14.16 accepts 4,096 \u2014 on a cold JVM even play-json\u0027s cap of 1,000 is past the point the walk fails. \u0060StackOverflowError\u0060 is not \u0060NonFatal\u0060: \u0060Try\u0060, \u0060case NonFatal(e)\u0060 and \u0060recover\u0060 do not stop it, and in a \u0060Future\u0060 on the global execution context it leaves the future forever incomplete. Thread a depth argument through \u0060descendant\u0060 and reject the value past a fixed maximum, or rewrite the descent with an explicit stack."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"50883d3d8814112d28c5a465ce37a49787ea0482974f3040b43951fd925f4637"}},{"ruleId":"X17","level":"warning","message":{"text":"Recursive walk over a caller-supplied document has no depth cap: \u0060Xml.toJson\u0060 is public, takes a document from its caller (line 33) and hands it to \u0060buildNodes\u0060, which calls itself at line 102 with a piece of \u0060xml\u0060 (and at line 109, line 112), not as a tail call the compiler turns into a loop \u2014 and nowhere in \u0060buildNodes\u0060 is there a depth parameter, a descent counter, or any other cap. The walk therefore spends one stack frame per LEVEL of the value it is handed, so the nesting of the caller\u0027s document \u2014 not this code \u2014 decides how deep the stack goes. On the JVM\u0027s default 1 MB thread stack a walk like this one throws \u0060StackOverflowError\u0060 from about 500\u20132,000 levels on a cold first call and 6,000\u201317,000 once warmed up (OpenJDK 21 and 25), while \u0060ujson.read\u0060, Jackson\u0027s \u0060readTree\u0060 before 2.15 and circe before 0.14.16 accept any nesting (2,000,000 levels from 4 MB) and circe 0.14.16 accepts 4,096 \u2014 on a cold JVM even play-json\u0027s cap of 1,000 is past the point the walk fails. \u0060StackOverflowError\u0060 is not \u0060NonFatal\u0060: \u0060Try\u0060, \u0060case NonFatal(e)\u0060 and \u0060recover\u0060 do not stop it, and in a \u0060Future\u0060 on the global execution context it leaves the future forever incomplete. Thread a depth argument through \u0060buildNodes\u0060 and reject the value past a fixed maximum, or rewrite the descent with an explicit stack."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/xml/Xml.scala"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d6e4af88772404205d95d9f8e9cd69376a4ccb3cd5db14dedc7ee62ee668cf"}},{"ruleId":"X24","level":"warning","message":{"text":"Untrusted text written into markup unescaped: \u0060expando\u0060 is text this program did not author, and it is written into a quoted attribute value through \u0060innerHTML\u0060 with nothing encoding it for that place. Whoever controls the value controls the markup: it can close the element or attribute it sits in and open a script of its own. Encode it for HTML at this site, render it through the framework\u0027s escaping output, or sanitise it if it must stay markup."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c72498cca2722276021346dfbc5cc185d6e76bb3d6eee97a141d064043ff20d"}},{"ruleId":"X24","level":"warning","message":{"text":"Untrusted text written into markup unescaped: \u0060expando\u0060 is text this program did not author, and it is written into a quoted attribute value through \u0060innerHTML\u0060 with nothing encoding it for that place. Whoever controls the value controls the markup: it can close the element or attribute it sits in and open a script of its own. Encode it for HTML at this site, render it through the framework\u0027s escaping output, or sanitise it if it must stay markup."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"250a5765e8ad8e58df92077ffbd015aac46625f8a8e15604855b8226051e308d"}},{"ruleId":"X24","level":"warning","message":{"text":"Untrusted text written into markup unescaped: \u0060expando\u0060 is text this program did not author, and it is written into a quoted attribute value through \u0060innerHTML\u0060 with nothing encoding it for that place. Whoever controls the value controls the markup: it can close the element or attribute it sits in and open a script of its own. Encode it for HTML at this site, render it through the framework\u0027s escaping output, or sanitise it if it must stay markup."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"553b2c99db178924953d8bbaa867b352c87086172aa1b0da45ba3f60bb24d54f"}},{"ruleId":"X24","level":"warning","message":{"text":"Untrusted text written into markup unescaped: \u0060expando\u0060 is text this program did not author, and it is written into a quoted attribute value through \u0060innerHTML\u0060 with nothing encoding it for that place. Whoever controls the value controls the markup: it can close the element or attribute it sits in and open a script of its own. Encode it for HTML at this site, render it through the framework\u0027s escaping output, or sanitise it if it must stay markup."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/web/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"62605a42358fe2f212208f4607afb9d9ee3943dee8068e3349df590bebd16507"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/io/TempFile.scala"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"690786b28fe20f3a4d6d4fb1bcb81073af239bd47ec7217ce282111deeac9aa0"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060case _: Exception\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/json/ToBinaryCompat.scala"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba8d1c7e3da7dabb93e279a0390bd02e5f4ccdefe2a23beddddd989328c476e"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060case _: Exception\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/relay/json/ToBinaryCompat.scala"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8da9dcf610dad9fba7c7044d51b258ef944d473f99d16b773b0a462df8dbd02"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"29d0553f3f1a9a1abbbd8988c9516d8b9bf273dbf4528632441003395de9febc"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (empty catch): An empty catch block silently discards the error \u2014 failures vanish with no log and no rethrow. Log it, handle it, or don\u0027t catch it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/resources/com/tribbloids/spookystuff/lib/js/sizzle.js"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"89bd814eb862cb336ec8f2b8f381c2d802f1b5b763276cfb94e13b4b620dea05"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060case _: Exception\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/conf/DriverFactory.scala"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ee81c7676d54ced880d850aefea5f310c3ed961628e98cd593b8e17a798568"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060case _: EOFException | _: RuntimeException\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"~unused/interleaved/src/main/scala/com/tribbloids/spookystuff/unused/DataInput2AsStream.scala"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"70b635e9101eb2dab315fde8b199a9e4f71bd8d8cb8d859b469abdf3b300df87"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060warn\u0060 at line 45 is handed an interpolated string as its message through SLF4J, so the logger receives one finished string \u2014 the values in it cannot be queried, filtered or aggregated as fields, every occurrence reads as a different message, and the string is built even when the level is filtered out. Pass a constant pattern and the values beside it instead: \u0060log.warn(\u0022Order {} moved to {}\u0022, orderId, status)\u0060, which keeps the pattern and its arguments apart on the event for a structured encoder (logstash-logback-encoder, OpenTelemetry), or \u0060log.atInfo().addKeyValue(\u0022order_id\u0022, orderId).log(\u0022order moved\u0022)\u0060 with SLF4J 2\u0027s fluent API. scala-logging\u0027s \u0060LazyLogging\u0060 logger takes an \u0060s\u0022\u2026\u0022\u0060 message apart into that pattern at compile time, so switching to it is also a fix."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/main/scala/com/tribbloids/spookystuff/commons/AwaitWithHeartbeat.scala"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"211a6a7956b9335c072f8db7eff468c2a0ce64b3b018738e8373a6e4ecafafd9"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060error\u0060 at line 26 is handed an interpolated string as its message through SLF4J, so the logger receives one finished string \u2014 the values in it cannot be queried, filtered or aggregated as fields, every occurrence reads as a different message, and the string is built even when the level is filtered out. Pass a constant pattern and the values beside it instead: \u0060log.error(\u0022Order {} moved to {}\u0022, orderId, status)\u0060, which keeps the pattern and its arguments apart on the event for a structured encoder (logstash-logback-encoder, OpenTelemetry), or \u0060log.atInfo().addKeyValue(\u0022order_id\u0022, orderId).log(\u0022order moved\u0022)\u0060 with SLF4J 2\u0027s fluent API. scala-logging\u0027s \u0060LazyLogging\u0060 logger takes an \u0060s\u0022\u2026\u0022\u0060 message apart into that pattern at compile time, so switching to it is also a fix."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/scala/com/tribbloids/spookystuff/partition/FallbackIterator.scala"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"042482e5e4fdcd2dfbf7f1a9a98e2ace4d3a59254e2e9f5885c60b7fad8f711f"}},{"ruleId":"X4","level":"note","message":{"text":"Interpolated log message defeats structured logging: \u0060info\u0060 at line 88 is handed a message assembled at the call \u2014 a string concatenated with a value, or \u0060String.format\u0060 \u2014 through SLF4J or log4j 2, so the logger receives one finished string: the values in it cannot be queried, filtered or aggregated as fields, every occurrence reads as a different message, and the string is built even when the level is filtered out. Pass a constant pattern and the values beside it instead: \u0060log.info(\u0022Order {} moved to {}\u0022, orderId, status)\u0060, which keeps the pattern and its arguments apart on the event for a structured encoder (logstash-logback-encoder, log4j 2\u0027s JsonTemplateLayout, OpenTelemetry), or \u0060log.atInfo().addKeyValue(\u0022order_id\u0022, orderId).log(\u0022order moved\u0022)\u0060 with SLF4J 2\u0027s fluent API. An exception goes last, as the throwable argument, not into the text."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/core/src/main/java/com/tribbloids/spookystuff/driver/PythonProcess.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b3ddc3ad5909064b8243e1f618ab76f86c8387eebdc9831f93fb8bc20728af6"}},{"ruleId":"X5","level":"note","message":{"text":"Scala\u0027s null is not held to the type system everywhere: No build over this repository\u0027s 311 Scala product file(s) passes \u0060-Yexplicit-nulls\u0060, enables WartRemover\u0027s \u0060Null\u0060 wart or runs Scalafix\u0027s \u0060DisableSyntax.noNulls\u0060, so every reference type admits null and nothing reports a \u0060null\u0060 written into the code or returned from a Java API \u2014 the first one to reach a method call is a \u0060NullPointerException\u0060. \u0060Option\u0060 by convention is a habit no tool here holds the code to."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"23e7c3c6da50151f07723c64ca4f881fd5903e713d143161a7c0594ad7ba29cc"}},{"ruleId":"X7","level":"note","message":{"text":"Silent fallback default in catch: \u0060assert\u0060 swallows every exception into \u0060return false\u0060 \u2014 a data error becomes a silent behavior change with no trail. Log the failure or let it raise. If that constant is the correct answer rather than a stand-in for a value that could not be read, say so in a comment on the handler or in the docstring, and the row stops firing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"module/commons/src/testFixtures/resources/testutils/__toBeRemoved/jquery-1.8.3.js"},"region":{"startLine":3801}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdefe1da629cf36d06de75a646d4d8d62d502b0cb752805e3d7372796fe4fb1c"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1104","guid":"4c918cb5-b2a6-6c55-9963-a44ee464305e","name":"Use of Unmaintained Third Party Components","shortDescription":{"text":"Use of Unmaintained Third Party Components"},"helpUri":"https://cwe.mitre.org/data/definitions/1104.html"},{"id":"CWE-125","guid":"98717707-96bf-ca5b-9568-8d1d257574c1","name":"CWE-125","shortDescription":{"text":"CWE-125"},"helpUri":"https://cwe.mitre.org/data/definitions/125.html"},{"id":"CWE-1329","guid":"f70f1c3f-4ccf-cb5e-bdd3-03ba4868d36d","name":"Reliance on Component That is Not Updateable","shortDescription":{"text":"Reliance on Component That is Not Updateable"},"helpUri":"https://cwe.mitre.org/data/definitions/1329.html"},{"id":"CWE-1333","guid":"11a336ce-63de-c45c-845e-29ca1e8df13d","name":"CWE-1333","shortDescription":{"text":"CWE-1333"},"helpUri":"https://cwe.mitre.org/data/definitions/1333.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-295","guid":"a706c4e2-1232-8859-ae2e-17aa2d41f8e2","name":"Improper Certificate Validation","shortDescription":{"text":"Improper Certificate Validation"},"helpUri":"https://cwe.mitre.org/data/definitions/295.html"},{"id":"CWE-319","guid":"7af97476-9f0d-4458-9163-3d2043918a1a","name":"Cleartext Transmission of Sensitive Information","shortDescription":{"text":"Cleartext Transmission of Sensitive Information"},"helpUri":"https://cwe.mitre.org/data/definitions/319.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"Missing Support for Integrity Check","shortDescription":{"text":"Missing Support for Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)","shortDescription":{"text":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Improper Control of Generation of Code (\u0027Code Injection\u0027)","shortDescription":{"text":"Improper Control of Generation of Code (\u0027Code Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]},{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61","version":"2025","organization":"OWASP Foundation","informationUri":"https://top10.owasp.org/2025/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10:2025 web application security risks."},"taxa":[{"id":"A02:2025","guid":"668dee9e-41bc-6354-97d0-fdf8f40c50c1","name":"Security Misconfiguration","shortDescription":{"text":"Security Misconfiguration"},"helpUri":"https://top10.owasp.org/2025/A02_2025-Security_Misconfiguration/"},{"id":"A03:2025","guid":"168e227c-7735-2e57-bc6e-997affe644c5","name":"Software Supply Chain Failures","shortDescription":{"text":"Software Supply Chain Failures"},"helpUri":"https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/"},{"id":"A04:2025","guid":"6a9f5bfd-1a56-6453-beec-a7eff0ba3007","name":"Cryptographic Failures","shortDescription":{"text":"Cryptographic Failures"},"helpUri":"https://top10.owasp.org/2025/A04_2025-Cryptographic_Failures/"},{"id":"A05:2025","guid":"87e86033-3231-8458-8e4a-5cb82743553a","name":"Injection","shortDescription":{"text":"Injection"},"helpUri":"https://top10.owasp.org/2025/A05_2025-Injection/"},{"id":"A06:2025","guid":"491554d7-b8e4-9652-91a9-53700dc92ece","name":"Insecure Design","shortDescription":{"text":"Insecure Design"},"helpUri":"https://top10.owasp.org/2025/A06_2025-Insecure_Design/"},{"id":"A07:2025","guid":"334ddd78-539d-d35c-83dd-253647eb7eaf","name":"Authentication Failures","shortDescription":{"text":"Authentication Failures"},"helpUri":"https://top10.owasp.org/2025/A07_2025-Authentication_Failures/"}]},{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35","organization":"OWASP Foundation","informationUri":"https://owasp.org/www-project-top-10-ci-cd-security-risks/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10 CI/CD Security Risks."},"taxa":[{"id":"CICD-SEC-3","guid":"458c83a6-ebf7-cf55-8cc3-b4d949bbf271","name":"Dependency Chain Abuse","shortDescription":{"text":"Dependency Chain Abuse"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-03-Dependency-Chain-Abuse"},{"id":"CICD-SEC-5","guid":"cc7f4610-8859-e654-9029-d5f97d992220","name":"Insufficient PBAC (Pipeline-Based Access Controls)","shortDescription":{"text":"Insufficient PBAC (Pipeline-Based Access Controls)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-05-Insufficient-PBAC"},{"id":"CICD-SEC-6","guid":"f2ee2486-b260-2952-a41f-6b67fa713940","name":"Insufficient Credential Hygiene","shortDescription":{"text":"Insufficient Credential Hygiene"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-06-Insufficient-Credential-Hygiene"},{"id":"CICD-SEC-8","guid":"b6b2dacf-a168-4957-876e-a8c73ee00eb0","name":"Ungoverned Usage of 3rd Party Services","shortDescription":{"text":"Ungoverned Usage of 3rd Party Services"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-08-Ungoverned-Usage-of-3rd-Party-Services"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":48,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}