{"$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":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"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"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"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":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"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"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"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"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"]}},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"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":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"R1","name":"Type Safety","shortDescription":{"text":"Type Safety"},"helpUri":"https://codehealth.canine.dev/dimensions/R1"},{"id":"R10","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/R10"},{"id":"R11","name":"Import Boundaries","shortDescription":{"text":"Import Boundaries"},"helpUri":"https://codehealth.canine.dev/dimensions/R11"},{"id":"R2","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/R2"},{"id":"R3","name":"Large Files","shortDescription":{"text":"Large Files"},"helpUri":"https://codehealth.canine.dev/dimensions/R3"},{"id":"R4","name":"Test Coverage","shortDescription":{"text":"Test Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/R4"},{"id":"R5","name":"Dependency Freshness","shortDescription":{"text":"Dependency Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/R5"},{"id":"R6","name":"Tooling","shortDescription":{"text":"Tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/R6"},{"id":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"id":"R8","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/R8"},{"id":"R9","name":"Circular Imports","shortDescription":{"text":"Circular Imports"},"helpUri":"https://codehealth.canine.dev/dimensions/R9"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getCurrentLanguageServerSnapshot is LSP-only: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/test/async/api.test.ts"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"28d844c930cf0163fa22ae3530f7bc835c226bbeaba9e674606207fc91710636"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: Benchmarks: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/test/sync/ast.test.ts"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"397e4d66d36a16206b99cd23c459c0d6f402811082aa05ccdcc462b6e20f5a5f"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: structural invariants hold recursively across a rich tree: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/test/sync/ast.test.ts"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6688fa285a114b802810584189013ed8c3702a6ed54c4bb84779387797f77f6"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: invariants: ${entry.name}: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/test/sync/ast.test.ts"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"af113d472f9df19fb5f47e2ffd40870696e3ebbb5fda6d74b72c612208b7cd1b"}},{"ruleId":"D10","level":"warning","message":{"text":"No assertions: getCurrentLanguageServerSnapshot is LSP-only: This method\u0027s body runs code, and no assertion call was recognised in it. Recognised by name: Assert*, *Should*/ShouldBe*, Verify, Expect, Throws, Record, Received/DidNotReceive, MustHaveHappened/MustNotHaveHappened, EnsureSuccessStatusCode and *AndEnsure* \u2014 so verification routed through a helper of your own naming, through a base-class or callback object whose members hold the assertions, or through a harness that fails by throwing under some other name, is not visible to this check and is not counted here. Read it as \u0027no assertion this check knows how to see\u0027, and if that is right, add one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/test/sync/api.test.ts"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3a64b8e428e7a57d73e4bc0213958f8c455536e6154f3d2ba0896ab53b617e"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 8 significant file(s) lose their only recent owner: tsc/internal/fswatch/fsevents_darwin_ffi.go, tsc/internal/diagnostics/generate.go, tsc/internal/lsp/lsproto/structcodec.go, tsc/internal/glob/glob.go, tsc/internal/fswatch/event.go, tsc/internal/jsnum/jsnum.go, tools/cmd/machotool/main.go, tsc/internal/json/json.go. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"455397bfbbd845dcf78d0c290fe13a19d86d36f506b34440b69d101af6ac24c4"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 7 significant file(s) lose their only recent owner: packages/typescript/src/ast/utils.ts, tsc/internal/ls/jsdoc.go, packages/typescript/src/api/timing.ts, packages/typescript/src/api/sourceFileCache.ts, packages/typescript/src/ast/clone.ts, tsc/internal/project/refcountcache.go, tsc/internal/testutil/contentmappertest/registry.go. Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"b9276176d375aa7d7afa1ebeaf9f4651d3dc25f0901e0c2e9a027a39745010e4"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 2 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (18 single-owned of 423 analysed files in total, counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 423 of the 600 production source files in this repository met that bar). They are anonymized user #3 (2 file(s)), anonymized user #4 (1 file(s)) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add request filesystem coverage for \u0060tsc -b\u0060 and \u0060tsc -b --clean\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":"packages/typescript/test/async/api.test.ts"},"region":{"startLine":4919}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75dfff9ab01e1232064fc2c570a3a7d7e82b3f84eade7068557a9ad13e842a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support the standard reload/go-to-project-config commands while \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/session.ts"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"a57763de97a13ca3f179626f20f59a2365a74387080deb49b347116d86860f66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement notification handling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/api/session.go"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f60e46f9d936cbbdc8e806de8ee6126d0ac711137a1a2a481f486b4210e582"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add logging support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/api/server.go"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"61bf196ac18a4624698ee36d884fd018ffa431614f7bfbb525f0d04fe0919499"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Move \u0060node != nil\u0060 test to call sites \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/utilities.go"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa2da45dac947eae078d138dfa8c7ae5db44167bde215d2a7fa90e7bfdb3fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Move \u0060node != nil\u0060 test to call sites \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/utilities.go"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7f4a4b43a73c626c8dda66283ac8d8a1d8037238be5ad660d6c3817ab6163f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should we deprecate \u0060IsExternalOrCommonJSModule\u0060 in favor of this 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":"tsc/internal/ast/utilities.go"},"region":{"startLine":1694}}}],"partialFingerprints":{"codehealthFindingId/v1":"38aab1e7da14c44a5398983b45e720805e38e9c733b584e0537df7ef88277daf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): ParameterDeclaration decorator support for ES decorators must wait until it is standardized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/utilities.go"},"region":{"startLine":4317}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de845164cec3a670f6485f657e842013a852ec90a3a397a5735a41dcc6b2797"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // UpdateExpression:            // TODO: Do we need to investigate the precedence here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/precedence.go"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"148484a6639656a7d079d0036b360d453b3762f12494a980a9cf4c581b7f77b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // UpdateExpression:            // TODO: Do we need to investigate the precedence here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":5834}}}],"partialFingerprints":{"codehealthFindingId/v1":"174f888fb8fcf0169081df19c8d4f60b1f392f18b6d4c8a9c61ea94d8e4ea3ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: JSXElement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/precedence.go"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"0333c963049164418cf59242a1f1bd2d1ac40a16527c60ac550a00e9a5c28d45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: JSXElement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":5871}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb541b816742e77291b815d8334cd4cfa50efd41c5d862cf3f64cf994da1d67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should prefix \u0060\u002B\u002B\u0060 and \u0060--\u0060 be moved to the \u0060Update\u0060 precedence? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ast/precedence.go"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02868316d5fd79ca3fa2292a04629d2cfa11de61f1b0555c62757e0993ba421"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should prefix \u0060\u002B\u002B\u0060 and \u0060--\u0060 be moved to the \u0060Update\u0060 precedence? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":5937}}}],"partialFingerprints":{"codehealthFindingId/v1":"20925b39842348b7119057bb73749395f0751f0d2377cc0b3b9b5416d5ae7384"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      TODO: Make this a more specific error and decouple it from the exclusion logic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/binder/binder.go"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d7abc85a1c24daef0eed5e94d927cb0d2d4e923c7f2299fbe49250cff657fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      TODO: Make this a more specific error and decouple it from the exclusion logic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/binder.ts"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae39067e6672da8ac862725b2f87edd2dd85bdc420948cf26b04746fbda7377a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/utilities.go"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a6254f8939968a009911377a9b698cc69f6a9dc791a905d4d0330c696ad443"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"73090eda62faa66bdd0928b315e13f90b312d63b7d741ca6e409dedf5c48c663"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/util.go"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d59abbaddd3d42ea31443de12be78dae72accf7f59614782fae9435351ad213"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc14fb8e9565ef2feb62f7922eb2947cc8b4ce645bccbc7d453043567fdc4a51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Strada bug? Why is this allowModules: false? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/symbolaccessibility.go"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3831ea50f5be3f873a5d8bff36f469b586c6763effda8a6891afc29939aeff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: going through emit resolver here is weird. Relayer these APIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/symbolaccessibility.go"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"36209f81323d8b19df698a711b0f9398a9a4ca64d4057f156be53a674e2a9370"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: going through emit resolver here is weird. Relayer these APIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2155}}}],"partialFingerprints":{"codehealthFindingId/v1":"c469dfa44b78cf6f76fa7620476ab8ff36501ff5961cc5ef8b1a84d8b7be81f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the below is shared with similar code in \u0060resolveName\u0060 - in fact, rephrasing all this symbol \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/symbolaccessibility.go"},"region":{"startLine":769}}}],"partialFingerprints":{"codehealthFindingId/v1":"c51ec40cccc3a22e1f27f7d2a6c1d921e984d5d5d32c581865ea65dce00e0932"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the below is shared with similar code in \u0060resolveName\u0060 - in fact, rephrasing all this symbol \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":5710}}}],"partialFingerprints":{"codehealthFindingId/v1":"8329b3154208d3a240f3a04f08415216d3229b405943abd40e713920742930cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should this filtered table be cached in some way? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/symbolaccessibility.go"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"58c434baa3d3dc3b1b5bd2ff353c4146f02e416b8a4a5d96a64bc9ff25a47afb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should this filtered table be cached in some way? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":5716}}}],"partialFingerprints":{"codehealthFindingId/v1":"b556f00c3dba877752bd07bf66200c876f1c4e89ab4c005205b026b7fcca332d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Cache symbol existence for files to save text search \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/services.go"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f4978a2626ee6b9f8a0a8eb01f6ba23a4160426b50591e3ceaa5375b5d8792"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when we support static private identifier fields and find other solutions to get privateNamesAndStaticFields test to pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/relater.go"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"50df18fbde5398fdb2968a8f7f93f67579d8c73b21e3dedc483154bb6b9752a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove this when we support static private identifier fields and find other solutions to get privateNamesAndStaticFields test to pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":26546}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6ca1d3d3cc3c7a523fa99126554c283e3508560a45638ea2b0b8e3fe799ec5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Stack errors so we get a pyramid for the \u0022normal\u0022 comparison above, _and_ a second for 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":"tsc/internal/checker/relater.go"},"region":{"startLine":3250}}}],"partialFingerprints":{"codehealthFindingId/v1":"f61d66bfabb90de746319873da5d7d5c8b2506a7eed251aa5ba6f9c4128271d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Stack errors so we get a pyramid for the \u0022normal\u0022 comparison above, _and_ a second for 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":23489}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2dc8acb97eaff17c60c5a7d1f477ac19b50f4872a4b51cd9495cc4479165876"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Find a nice way to include potential conditional type breakdowns in error output, if they seem good (they usually don\u0027t) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/relater.go"},"region":{"startLine":3587}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a512f1f8c5a1bcace5a2ca2a29d66db19c0c4727c047656173181695f19f4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Find a nice way to include potential conditional type breakdowns in error output, if they seem good (they usually don\u0027t) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":23865}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ff85736fe71816f0304a26307729e697e7b27ed6e93fc0c5f803e59bd19fa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: spread tuple params may mess with this 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":"tsc/internal/checker/pseudotypenodebuilder.go"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"146a4e3c244b9af4f58d7dbab20ad99df3923b70df9983f4aca885ad7940d455"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: only literal types currently mapped because this is only used to determine if literal contextual typing need apply to the pseudotype \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/pseudotypenodebuilder.go"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ca215e7147ecc1aaf1615eef03177f9ec9c328452d3a2e8256a233e07188b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extract type selection logic from \u0060serializeTypeForDeclaration\u0060, not needed for current usecases but needed if completeness becomes 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":"tsc/internal/checker/pseudotypenodebuilder.go"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe769eafe0b2206bfbc090348e1b18daa894500ffa207e90dc502f93f5375af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Memoize once per checker to retain threadsafety \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/printer.go"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ca30101161ffabec048811327b03a11889457d7d669afec74dc2eb8f0c37b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 28 files: The identical TodoComment appears in 28 files (81 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 81 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO: GH#18217\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/printer.go"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"6159d48ada51765510d4cc8ac0877f94a4d43e7ab22844206f0529af9ac4bc29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: Cache visitor and just reset bound\u002Bhost builder? We try this for a *lot* of nodes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a18a42f5ec09e93a98436f006c83f8fe6e8df8ba077d6717912b9c26aa672f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: wrap all these closures into methods on an object so we can guarantee we reuse the same memory on each invocation by reusing/resetting the 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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"6891022eceb9b49db5ae29c4ac11e0ab5e420fe112ed98e1c158766191de3692"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // refers to type parameter remapped by context (TODO improvement: just return the remapped param 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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd54c3c1b3be83ae547861251739ff0eba71759a3888552bc5a7600b211a4f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remappings like \u0060promise\u0060 -\u003E \u0060Promise\u003Cany\u003E\u0060 are static, we *could* statically remap the nodes, too. But that only matters for \u0060isolatedDeclarations\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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"15786c84820c9061751debccbeec6e529f7d53014b3848d20dfcafcc34b2767b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: the reparser *should* make all the jsdoc remapping logic here redundant, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae8a8197cfa4d422993bc0e7e75b7bec58400c2e7607b4754e078e26187b5fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: We don\u0027t _actually_ support jsdoc namepath types, emit \u0060any\u0060 instead; verify we handle as gracefully as strada \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2860eb8db643f3448fb0418ba8251070101a7f328bbf8552b3df7d8e72a97a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: verify JSDocUnknwonType is hopefully just parsed into \u0060unknown\u0060 upfront; the kind no longer exists \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b7b13bac9a202ee5d57fe31bcb26e959f687456a85b09cc271af512949c7e54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: verify this matches how jsdoc variadics are actually handled 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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"600db93a8e1130bc3d4715d1ecc3dbff2e0701978edd4ae7ce8fce46026e5969"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: without typesystem backup, doing this cast unguarded seems really suspect, even though it is what strada does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd3813ec50ef13c741a266debd0a288e43a84011c2a6b032bb2262745a41e1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: alternate lookup locations for the type? serialize on demand if it doesn\u0027t serialze? strada does something funky here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4017e3bba4efc497344453a9b42d4db68721b58705d589256440c506d5671c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // if (ast.IsExpressionWithTypeArguments(node) || ast.IsTypeReferenceNode(node)) \u0026\u0026 ast.IsJSDocIndexSignature(node) { /// !!! TODO: JSDocIndexSignature handling hasn\u0027t been ported - readd if it\u0027s readded \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"616275c58cb001515fb06819f2a18b3cf089cbb66622f1962b791b9c41468976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: strada never marks \u0060this\u0060 type nodes as an error - it calls \u0060canReuseTypeNode\u0060 on it, but that function always returns \u0060true\u0060 for \u0060this\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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"0113f5f09af9f2baba246b85248a88428fad625ed5714cfd3d872f5c51f5022c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: invalidate node reuse if js fallback logic used in type param list/typeof lookup (but isn\u0027t this logic gone?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2965fd45742775d8529c8f7b3cbaca01edd929ebb600fe412ecb34a634025ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: This matches strada, but rather than recursing, this should probably fall down to later 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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f8fe258fcb7f108344cec06808bc7b98e5bf575d154a40b46d80f0d523475c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: this condition matches strada, but it just seems wrong? Or at the very least extraordinarily approximate, and doesn\u0027t flag a builder error... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"e744fbf3fccfeb89eaa396b16c1c56634074d496617ae22f63c10c68f1543a75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: rewriting computed names based on evaluator/typecheck results? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7068688bd34fd578709773c594080e486014277b53bb9e10a358cf2116e592c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: impossible in combination with the scope start 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":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3cdb035b80e50a7bc766b00327077ddf132819f9c7b581e33975edbf96ab39e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this fallback matches strada behavior, but it lacks any verification that the type from \u0060node\u0060 actually matches \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodecopy.go"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac058003640dce09430135434f9d53f006a6d0de23cc99a4ddd0b99017af00d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: smuggle type arguments out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"274a30b9dae08e5c72f2c1045641259e616c75a6edfdfe957cead15d969412c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: smuggle type arguments out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8763139a188bb3d6f9ae76dfe7777bec3bc06818cb5de760b7ade2e0835619"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: smuggle type arguments out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1506}}}],"partialFingerprints":{"codehealthFindingId/v1":"249b69fb955f404c76ce46e84d8a547668e3ec3d6282098fc9cc1dd34ca554c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Audit usages of symbolToEntityNameNode - they should probably all be symbolToName \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"939c5a757ea159ff18c2b11f3690b0602f4893ced5edc185a8f718c8fb362c9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: shouldn\u0027t be possible, \u0060lookupSymbolChain\u0060 should always at least return the input symbol and issue an error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd0c78164c2d8f8a73d79ca6de30fb8c5b224122beae68fd2e6f07c1e44dc5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Just use b.ctx.enclosingFile ? Or is the delayed lookup important for context moves? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"11a69c57bfc4bbc0a06b8ae4baac4da70aa1ddeadd0cbe5df34990ee99441fcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the follwing in strada would assert if the number is negative, but no such assertion exists here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"855d3082b60d3016a039bd786db99aec041bd32b3edaaeb87c44d70eaed58918"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: in strada, this only used \u0060isIdentifierStart\u0060 on the first character, while this checks the whole string for validity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8511097fdf02e67a3105c2bfb0f71ebfbf2c558ea9e2c89591bdd40fc992d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JS Object.defineProperty declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"90205c76accc73ed92e70a5fa40cb0dfe0e5a0c53959c09ab83a8f356ca16fee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move \u0060lookupSymbolChain\u0060 and co to \u0060symbolaccessibility.go\u0060 (but getSpecifierForModuleSymbol uses much context which makes that hard?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a99113a706b415d4e6ea5f34095447244f584a5e26c98f59030b0e3a5ea7976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: shim, add node reuse \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a6a3bf72ff57569de9840703a1ebe65afc25bb88965b661c994477523c9395"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: assert name is Identifier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1964}}}],"partialFingerprints":{"codehealthFindingId/v1":"553a5d9d687b63d241a1b788f74521eaccffce27e26dbf6e961ff18d1a953d57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: assert name is Identifier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1967}}}],"partialFingerprints":{"codehealthFindingId/v1":"27364b0b677340dbf1433cdb131bb480c7a2457e675fee725f974ee760124874"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: Smuggle type arguments of signatures out for quickinfo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":1975}}}],"partialFingerprints":{"codehealthFindingId/v1":"09dc9a55a0b76d67a800da18f25f712588d716a5bf16ae0d4980a33d35a25e7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: getTupleElementLabel can no longer fail, investigate if this lack of falliability meaningfully changes 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":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb487cb12b873d42fbe6f7e1bb4ff0e33ae32103e5575cd42641ac2649593c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e16f6403fa1eadee30669298db25eebc5946a731fab55ff30e90532bfee928f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: If annotated type node is a reference with insufficient type arguments, we should still fall back to type serialization \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2322}}}],"partialFingerprints":{"codehealthFindingId/v1":"81229f34bca59358cf096761ee70b6e5528d21c813eea653c520c880e45ded6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: prefer annotated declarations like in strada (but does this ever even matter in practice? All callers should supply a declaration!) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"073dbcf755fba391ec14ab04607fb9fab9a7f92901901d7628923da878c18f09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc, getEmitResolver call is unfortunate layering for the helper - hoist it into checker \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2287}}}],"partialFingerprints":{"codehealthFindingId/v1":"967e92b5197eb5f5c7d161ab96c0906b55875a2759eaad3407b696473269522d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Why? Reasoning lost to time. this could probably stand to be improved? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2993a36415d7ff7f0fc7633ee9972128dd28585223d7d7bced6c1204e742a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:: check if we instead store late painted statements associated with 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":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":3236}}}],"partialFingerprints":{"codehealthFindingId/v1":"12993f307e0dcab9c36a0b3fe2906fded120ff65b460ab635eeb983180c452d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:: check if we instead store late painted statements associated with 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":7296}}}],"partialFingerprints":{"codehealthFindingId/v1":"0806a54dfb687d98ba7d6614964603d3ab25b131dea7150d1a070264449cd5b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: Attempt node reuse or parse nodes to minimize copying once text range setting is set up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/nodebuilderimpl.go"},"region":{"startLine":3281}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d9d78b2ada16e62218e72081646cbc2d585909d97838d13e956fc9ebfa7613"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danielr): should we return early here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/grammarchecks.go"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1db4a05eeaca6366f810427114b48ec14660b76d4d624fb56dde1d57d802e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danielr): why not error on the token? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/grammarchecks.go"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"06366e90a0c0b3fb614b8e142923e0a1ded54d6bdd1686f2363166d4df20b8cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The spec needs to be amended to reflect this grammar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/grammarchecks.go"},"region":{"startLine":2006}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fea29ec6a685ef878159058e0182671fb9387bdd6e8e9149c35e836865d5cff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The spec needs to be amended to reflect this grammar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":53468}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8ac1cbadb232b78eb3cd461cb2663110d1237ea46c6cfeccd90162c0b66ec1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Require an emitContext to construct an EmitResolver, remove all emitContext arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2627087d2d1293ea8bd02243e31ae71adef327b76874461d5e21b7f193243bd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // ast.KindJSDocEnumTag, // !!! TODO: JSDoc @enum support? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"04da3d4c5311c76f9666008c96a6cfa29b4b26139ba28f1a0d4eb208fcb1ef34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Does this even *have* to be an upfront walk? If it\u0027s not possible for a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd50e2daf0b829abe60795cca9743ba8fcf63a5901f8c0d480d3960999a9bfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JSDoc Support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"541022e4428fa830c4527a2b54e6c80b4c8c4f4ce548834ca27d27022d1dfdb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Split into locking and non-locking API methods - only current usage is the symbol tracker, which is non-locking, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"86be21e1416a6f6f267927a9f4b582f712a89eec38c546f19ca1457d968447d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: the emit resolver being responsible for some amount of node construction is a very leaky 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":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"96698ff1b7adbd9284f6d5dd76b26975dc3c4c8bcb069d03bc44d38d070842bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4db03f65e3530c102a287470be0508e10195b7c42ea3280a5c9122d98e64338"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02423ff4382c7e8b2cdaca05658c96a1b2f3e6abd20c2897e910b72f34389df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"81742b37f0788ddb0df0aa9eab0a27e475f9f9865b3a1cbb72f7987310374fbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b5882215d53677be3340a46c53c444b5963f6229c1f6dde3b24e92e7499f97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1057}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0e5ab1817adc06a448a1f2e33f896cd73187a4ce665da5b93d1c3592a67b15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efd01cead508c299e19e24ac2283dd450d721c02dea362431db9ddec4acd60d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache per-context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4bb57061b23812154f40a2cd7cec9e53119f20b2628a9dc087679c9edeec92f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: How!? Maybe this should be a panic. All symbols should have a 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":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fad9544fc2fad167f999bafba62db7f8642a8f9aa3b417046f0639b0d323871"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle those if this function is ever used for more than initializers in declaration emit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffd1fae0757facf77f0090c806108645ff41590187ad465adaf898064cd5f4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: Complete late-bound index info support - getObjectLiteralIndexInfo does not yet add late bound components to index signatures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/emitresolver.go"},"region":{"startLine":1094}}}],"partialFingerprints":{"codehealthFindingId/v1":"56b3cf50ec18f51d3f6628206ebb7790942e24972d856ce95da1e4de4f00d70a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable this code once we support region diagnostics 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":"tsc/internal/checker/checker.go"},"region":{"startLine":2461}}}],"partialFingerprints":{"codehealthFindingId/v1":"55119fd2d193d83714e0da3b7eda866659ec3fd1a9378642f3415925d9298a34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danielr): should these be grammar errors? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":5762}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e23126ea8519f057af2b82dd1c0c5ebeb2c2b26e2b8df904b23e85efd2ee98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The signature may reference any outer inference contexts, but we map pop off and then apply new inference contexts, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":7834}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa42b605b3564240eeb994ba460b0c6ee9e923ea2fc4cd64c1ca61e7e0979a4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe issue a better error than \u0027object is possibly undefined\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":12378}}}],"partialFingerprints":{"codehealthFindingId/v1":"56424ae0f0482c26591d7d0e39b401e2933ccd97d2ca9444cca68898030f8b4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe issue a better error than \u0027object is possibly undefined\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":31529}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7a32ed4f4f58630c4d3964340271a0fd63b059a1c274caf30d710faedb889c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to get name for 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":"tsc/internal/checker/checker.go"},"region":{"startLine":14732}}}],"partialFingerprints":{"codehealthFindingId/v1":"c568983b516bd484c1f88ebfe926afdedcfee6b359bdb29475bdd1b9232f782c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: how to get name for 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":3747}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f5d78f79315bfc4c3ce959495a424ca4b12268e94b583a10d9639e96a2f3842"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove ScriptTargetES2015 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":18299}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d17564bbccfcb03a1a8f9f4ddff4108cd4f45d4bb4fa7645881638e994cdaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Given that we allow type parameters here now, is this \u0060!isGenericMappedType(type)\u0060 check really needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":19882}}}],"partialFingerprints":{"codehealthFindingId/v1":"dffccf08b0a446c8ddb698f4a5bd487fb5cc6bda475dbccd0879726a1c995c98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 If \u0060checkBase\u0060 is undefined, we should not call this because this will always return false."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":19888}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c2f7c445e41cdab593e162818f252537cd89450dd420a5a084d604fc735141"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 If \u0060checkBase\u0060 is undefined, we should not call this because this will always return false."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":13011}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da58abfb39ded5556ae042ac7e5de569cf40377cee789c7db4f68c45c899214"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Adopt same permissive behavior in TS as in JS to reduce follow-on editing experience failures (requires editing fillMissingTypeArguments) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/checker/checker.go"},"region":{"startLine":23591}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08b7203a3b62a6e61cf0e8629da9a7cd3653d2a6ec823689361abd35b109b42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Adopt same permissive behavior in TS as in JS to reduce follow-on editing experience failures (requires editing fillMissingTypeArguments) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":17011}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fecdc1995108875fdecbe04a4bcc91df4bba731d87cebdced4ee1ada7951ef6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Future work: support unions/generics/whatever via a deferred import-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":"tsc/internal/checker/checker.go"},"region":{"startLine":24990}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b15437ee477f4f5e92e665be50eddfefe9aabdfd0e4bdac0674f4e52260ef3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Future work: support unions/generics/whatever via a deferred import-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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":20006}}}],"partialFingerprints":{"codehealthFindingId/v1":"26dbfea08dc69e8d839d19e1f8404c802c526715513c0cabcead21f168b0c6f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is this needed? Can we just MarshalEncode k 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":"tsc/internal/collections/ordered_map.go"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c032c7f43aa0fccde328cb6988ff31dc0ec11bd2cb74b8eac8e85b87b65649"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: reconsider \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/collections/ordered_map.go"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"59baf345c46bb48d83c598b3791b39e896fbc28014c8893ef0df672fe063c269"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The module loader in corsa is fairly different than strada, it should probably be able to expose this functionality at some point, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/program.go"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2ddd2e63ca7f4e954a551a9d0f1fce11bde84d441ec8e5899940c439068d96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: reverify compiler options when config has changed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/program.go"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"b704cbaa1e70cea2c2d978f6ee46a222c78725f998be99c309c3d7a89ffc858e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! todo sheetal 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":"tsc/internal/compiler/processingDiagnostic.go"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a4c999140369c3202ec66b174ea896a152e7e5d3513c9fbe73b2bfe71b8969d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): dedupe \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/fileloader.go"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcda2c2cbfa768a654380eb7576d1c770760ad5699c44e12e0b07c1f54351e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move this to outputpaths? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/emitter.go"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8f215cb67a9621d0f03ce037825532683a781becde01863589014533a54fb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use p.getSourceFilesToEmit cache \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/emitter.go"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"192834eeb491780ce2090c9adbbab552e28e38950afed8957002545b90f03894"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/compiler/emitHost.go"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"747d5a852ca59700f03107f5979c943703d31995c44a49c6014bd495f3e5e98c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this could be generated code instead of reflection. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/core/compileroptions.go"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"9396aaba44b2f97e576e2e4d570d1ad8c9ff3b644f6130f91f267c3db159fd1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO in 6.0: add Node16/Node18 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/core/compileroptions.go"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ccd76f91fe4bc2362465649e8c3392fef608c7f3b77beb0dd46211f99d51574"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (drosen): This was never localized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/diagnosticwriter/diagnosticwriter.go"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e6a26553bf1a98ee12958c7caba90d3ce4542c98ea75de0413f20f228641f6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: incremental suggestion diagnostics (only relevant in editor incremental 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":"tsc/internal/execute/incremental/program.go"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"308133a4833d99f0f4286ace2b81f08f4bbf71bcbe242695c9ee9d9dc0222a9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo watch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/execute/tsctests/sys.go"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e028524dfd981e999d8b8a4546238b355ecf8ab2c4080af231bc889f6257d2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: matches strada - seems like it could handle more pairs of braces, though? [] notably missing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/format/util.go"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf361ea49d4499bfb6305964c5b9ecff387331a965aac24bb457afd37661c67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: nil 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":"tsc/internal/format/span.go"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75549eef858934173c67bcb855a0a6ddf105ef5bb525699aa625e99e216bd2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: redundant? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/format/scanner.go"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"8025e521d334ada13affcced9ff5ad439f4d56b13cd92a29bf4b5ee1fe2706d1"}},{"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":"tsc/internal/format/rulecontext.go"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee95f0e2e769b902fa87bc404f1a0458d52b83322614a15c969b3f60e999c80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: very different from strada, but strada\u0027s logic here is wonky - find the first ancestor without a parent? that\u0027s just the source file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/format/rulecontext.go"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ded93342d8645b2576f7b46bfe9672251b31211e457a6f2975e7c34bc76fe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should this be a panic? It isn\u0027t in strada. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/format/indent.go"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceb1220b40f8cfa2402f093f5aa086fa3a4432715718cb890819521192bfa685"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Move into broader LS - more than just the formatter uses the newline editor setting/host new line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/format/api.go"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b857885d86ba8b0a5325193643506edf482a6cce0511efe69155ef17eb1bf79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: handle overwrites if we need 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":"tsc/internal/fourslash/fourslash.go"},"region":{"startLine":5115}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a0fe3c717a5e7275defac6da9ae6eabf7f24bc08356c6856a25759a0da8e32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"8487f0c9520a5509b90f78aaae065d12fd34dd2e44cd36b591cd143e1cbe3275"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f919b90bf448d5a5e43e5877bd1039e533a80e888c6ccd9f77c71339276824"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"3252844aa13bced9d79c5d64c4f3adde02780f711b60d264e377057a9780aaf0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e43bc50ebfde56e2766866743a82adb166e669472eed762c933f126f1449f00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b3795cb8b65c921f2a839a933498093cfe9e3f3e6c47b204d4762b817bdef0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO Verify errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fourslash/tests/statefindallrefs_test.go"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"61d80fca652d84ef80d023a9d039fd1ec1cebf55050fc3ef375e434d2d5290c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Re-enable this for Windows once coalesced recursive watches have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fswatch/watcher.go"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"d002c82eb76248dc4fab49d143da6a3d905d1f4550a8fa57c51a225a611119d1"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // XXX: self events don\u0027t have IN_ISDIR set. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/fswatch/inotify_linux.go"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"095581cc492aba78571fb782e354d2079339e0058e984beb8526ad3b21956b9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // case ast.KindThisType: TODO: GH#9267"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/utilities.go"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3ae8f2ceef37f2d5228b304a8468e659da54e85069fcb1f5fe670a42edafe8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: check if this function needs to be changed for jsdoc updates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/utilities.go"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3908035189be2702707e74c241f53d825cb666b391647af9d539d7d17534aa4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: check if this function needs to be changed for jsdoc updates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/utilities.go"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9c55e060b93833cc082e649f33448125ce92d807359c0aaf7ad9c22c2edf0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO check if the port is correct and the for loop is needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/utilities.go"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"312166e6f422ec47165b51a07306220b77e5a3100046c7564b87ef574ac1ea9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: rewrite as \u0060ast.FindAncestor\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":"tsc/internal/ls/utilities.go"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7b8db98702276e2a3edbc91cc2613c739949c443e8bf439ca9ad3bc9705eba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO : need to find file reference 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":"tsc/internal/ls/findallreferences.go"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa547bf5ca87142fe7d0735f48b1037fd77a24123f134188049de700979dd8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Cache symbol existence for files to save text search \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/findallreferences.go"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b54a1e89b132000152b7d7d4aa810c0f218e4ad87cecf2b032305d857b88ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO!! symlinks need to change the URI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/crossproject.go"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d39c59f07d3851da5586e2fc9b0115864ad34e668a74e01bee37cc23221e84a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Account for computed property 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":"tsc/internal/ls/completions.go"},"region":{"startLine":4524}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16c7a8d656c66321aa0127289f4baf71f65f5fd705cf6fa8d8669d94040a873"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ast.KindTypeAliasDeclaration? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/codelens.go"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"546258f96c3851941adedb5bb183e9cf5cd8c661a3c6933b63c288ae17ecf2f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    TODO: consider removing \u0060impliedNodeFormatForEmit\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":"tsc/internal/ls/autoimport/fix.go"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba367b46b4bc990381dfdeee08aea00e1d5a51193c555d211f67bca510f298b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: only if b would start with a \u0060(\u0060 or \u0060[\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":"tsc/internal/ls/change/trackerimpl.go"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc849b395318784c046eb4e773d0262a3cbbbaf42902016fee2f52bc78f987ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: There\u0027s currently no unused diagnostic for this, could be a suggestion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/change/delete.go"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c2ad14bf7d2f679dd7d11186764c21f960fe1254a523b9cdbc73f2869f93eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): collect ascii-only info per line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsconv/linemap.go"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb8b0b4d41f0e36e76176195edda63c59fa54d410767e15aceab1a7d68c3068"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add tsserver.web.typeAcquisition.enabled under the js/ts section for the web variant when web support 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":"tsc/internal/ls/lsutil/userpreferences.go"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"2420be58813deb5ec85159e109a00ac09a00ea9fac2c69d0a5f50fbdb3ee6e6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: These three are the only parsers whose fallback is a non-zero value; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsutil/userpreferences.go"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa0e9fc238f86598c9b6d0840e05c47ecdd577209aa26878e17ed2e1d1f42f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make consistent with other enums (see note above). Unlike the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsutil/userpreferences.go"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5046ef790f262647ef63472b018a917540bdd0077ec9ae432923a8a397030ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make consistent with other enums (see note above): have the parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsutil/userpreferences.go"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"016766fbe1d22e4b185d1ab7480645d678fba89ce8745df8da2f1e66bd961d22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make consistent with other enums (see note above): have the parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsutil/userpreferences.go"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8d8354dc0c13d1c3f2ca619af2d1316341674bc19e1fec2ca391ddd6f336d6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: getter and setter use the same symbol. And it is rare to use only setter without getter, so in most cases the symbol always has getter flag. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/ls/lsutil/symbol_display.go"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa838cc26913be1943bd7234b5c36be21e37989907e07f576b94b876b041824f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should we just look for the first \u0027(\u0027 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/stack_sanitizer.go"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"70eef0cd71f3f2036e99dca0542567a2ab467cd55210d6303b8e35592110d2ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): error data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/server.go"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"454d5dcd1905390a423446b892d1c1c6574344b7389a9681d8e614528648a791"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Maybe TODO: splitting extensions into two priorities should be unnecessary, except \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/module/resolver.go"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f75ea238ec19dab9b552684bab440942c0387c3afb31639fa7b68bf461246c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Maybe TODO: splitting extensions into two priorities should be unnecessary, except \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/moduleNameResolver.ts"},"region":{"startLine":2597}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23a90f1ea5b3c1829be33a82253edf4f1f08a3c644ea16c628a3a859dc9376f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Assert that \u0060resolvedTarget\u0060 is actually within the package directory? That\u0027s what the spec says.... but I\u0027m not sure we need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/module/resolver.go"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad6c4ce6b54d40529f0157be22ce12f982b91457d011cba28527475e9a8cd33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Assert that \u0060resolvedTarget\u0060 is actually within the package directory? That\u0027s what the spec says.... but I\u0027m not sure we need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/moduleNameResolver.ts"},"region":{"startLine":2796}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0240e0c10d8d0617ed81c116834a63e786e7fd7ab63c9a9a644890be27463b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should probably error if \u0060\u0022./a.tsx\u0022\u0060 resolved to \u0060\u0022./a.ts\u0022\u0060, right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/module/resolver.go"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0d0457cf3d3f86408f1f49900dfb8ebfa46a8873d44291c3befc96f5eeecc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should probably error if \u0060\u0022./a.tsx\u0022\u0060 resolved to \u0060\u0022./a.ts\u0022\u0060, right? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/moduleNameResolver.ts"},"region":{"startLine":2163}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ba78928e8c9469eebc62c0a8f23c22a6516d493731bbc4c00008c451e0c4ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: shouldn\u0027t this use readdir instead of fileexists for perf? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/util.go"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b151fad06e2a0a6bbdb511ec6e82d7d3e6a479a756449a8c10a162f995c988"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // GetModuleResolutionCache() any // !!! TODO: adapt new resolution cache model \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/types.go"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b851020e3c81af8459fe239d90c17903f3a10f7e57f08e8ae7bdac573b7bea6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // GetFileIncludeReasons() any // !!! TODO: adapt new resolution cache model \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/types.go"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b747749f6f0ba671f8634c002430b832a052beb46104792ddce9fa732b4e3305"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Possible strada bug - isn\u0027t this insufficient in the presence of merge symbols? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/specifiers.go"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"f065b6276295cbbfe10282128c92bb4c9aefe0533e7fe835340d39c5c6d8ba66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: possible strada bug? -1 in js slice removes characters from the end, in go it panics - js behavior seems unwanted here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/specifiers.go"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"573b556e9a6f64e2d8b98696cc86395083033437388ddab2240f19b57675279c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: possible strada bug: these are not case-switched in strada \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/specifiers.go"},"region":{"startLine":1173}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57a87120c8121e0f4a4320672b4629cdbc6c08c33d556ee5f2a037c9aa73079"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: JS support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/preferences.go"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d49358b62ab61dbfa0cee1727deff3d59c8d9ac065b2e603df0f0e7a636da7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: proper resolutionMode support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/modulespecifiers/preferences.go"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd3b00b7fec08eb544596525102d86a38ee6aa684cfca55adb2101efe31842f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: previously all symboltracker methods were optional, but now they\u0027re 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":"tsc/internal/nodebuilder/types.go"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0aeaa3024080b2fe993215bc3e7f6c53df84a62ac7aba69c197b23aa53fa35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Review for error recovery \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":1474}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce341b06defeaaf8c21efc908cf42c19cb511bc369a18259e07198fb6f2d179c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Review for error recovery \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":7077}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8713cfe3ef8bb80808e9987e5cf531b6b9bf861470b8c9304bd03fc92a02a9"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx : \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":3875}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bc5a2b6e8ac26e1473dc93c6736857c0fcf93f5d32a482889cef916d0a695c7"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx : \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":4895}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16686cebd693c94f04b99b855f823d0f418c35feb11752531f04de341b895d8"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx , \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":3876}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fec208e7769a687f1e0fac1a5785f14558961e1803f590247facbd30df13c78"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx , \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":4896}}}],"partialFingerprints":{"codehealthFindingId/v1":"32cef7255f0ccaf73f99e355c74ab6b874df5549aea48d97958ed00cf48f75bb"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":3877}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3cb4cdddffeb77535cdfcfc6fbcd4b63d5a3673a6faf7ae379cea84c54bd4f"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":4897}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad438172da22a52e756c35b4294bfedf1ea1d9653b84757639c1371c156bb8ef"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx = \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":3878}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8dace459130367e97c8addd6d8999d573171683737050a5452b28d38f1f0a7"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx = \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":4898}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5b9011957b6cb406e689fbc92cccf0573132de6a1755b0b3903a2acfcfdd9a"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx ) =\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/parser.go"},"region":{"startLine":3882}}}],"partialFingerprints":{"codehealthFindingId/v1":"f55a0cf82f7b6280cc5bc7146e8d775610803ec77fcebc0b9b703de097ef74e2"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // ( xxx ) =\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":4904}}}],"partialFingerprints":{"codehealthFindingId/v1":"f493f7cac19a5cee1cef5bf01e6cbd40683f2ff6467708075c166a9e1e5f8956"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should be a panic, unless parseSingleJSDocComment is calling this (not ported yet) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/jsdoc.go"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2d0b254e48eccaf26255f503a2807272faa0325fce55c1d244fbac8f441b6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Determine whether we should enforce this in the checker. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/jsdoc.go"},"region":{"startLine":1302}}}],"partialFingerprints":{"codehealthFindingId/v1":"628b67f57ca1f84cc95f5fe099b50013c9b9fab5dadc0c84657fb789cbcb3f72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Determine whether we should enforce this in the checker. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":9875}}}],"partialFingerprints":{"codehealthFindingId/v1":"f593af1bfab59f5b7a1a2c212793faf770e83efa1bf22a664f6e6dfea80768df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider moving the \u0060constraint\u0060 to the first type parameter as we could then remove \u0060getEffectiveConstraintOfTypeParameter\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":"tsc/internal/parser/jsdoc.go"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d6c495f24d93d0e0c3e2615b13c9cf02354f54e9031dc63f0ba1d251e6ffffa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider moving the \u0060constraint\u0060 to the first type parameter as we could then remove \u0060getEffectiveConstraintOfTypeParameter\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":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":9876}}}],"partialFingerprints":{"codehealthFindingId/v1":"1961a65c635edfa62da2c29990aa60738c3fcffd81851c399ee7a9a15e0e2d38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider only parsing a single type parameter if there is a constraint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/parser/jsdoc.go"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f4460617ebb4da2f6888859988793dbfbd552a8defb69ae7c4afd4e4defa09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider only parsing a single type parameter if there is a constraint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":9877}}}],"partialFingerprints":{"codehealthFindingId/v1":"3225eb923cdbcb4aee855297e98483e9c56c4b8f8e7bb862897f85071c3d2c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): The reason as to why we do not use the original text for bigints is not mentioned in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/utilities.go"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d2cbb2db7e70e95a57439992dadb811e01982e23276f6531c143cba2b139d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/utilities.go"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"42dbba65efc6238194a760e21a9033ecfd6cec14f33552027ff693afd4ab77bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is cached in tsc - should it be cached here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/textwriter.go"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3fc5f319e461a27ae2dd2b0a3e1083d3febb763ff1b3886c03a7b751211875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Preserve numeric literal separators after Strada migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer_test.go"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e806cc5eaac113989d5b94a0fe586327a362c04c00f84686366a2e5ea44fed38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Preserve numeric literal separators after Strada migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b39d0de392235d384b158abe50ba3771b594ddf4a08313c7dc95d90243f5772"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // {title: \u0022CallExpression#12\u0022, input: \u0060a\u003CT,\u003E()\u0060, output: \u0060a\u003CT,\u003E();\u0060}, // TODO: preserve trailing comma after Strada migration"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer_test.go"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca1bfbb928b6a315c911f69947ce07db6502dfbd77925eec28c13a01d400a09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // {title: \u0022ParameterDeclaration#7\u0022, input: \u0022function f(a,)\u0022, output: \u0022function f(a,);\u0022}, // TODO: preserve trailing comma after Strada migration"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer_test.go"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7f2995bf9d50da274e0071d1e4b9334277e7c01b2b16c130b21212b4387042"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // {title: \u0022TypeParameterDeclaration#7\u0022, input: \u0022function f\u003CT,\u003E();\u0022, output: \u0022function f\u003CT,\u003E();\u0022}, // TODO: preserve trailing comma after Strada migration"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer_test.go"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c84295763123ded79e19bf5f5dfa08a1ec0ba1e68a4ec60b318bf74abd69922"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //\t\t// Reuse singleton single-line writer (TODO: thread 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":"tsc/internal/printer/printer.go"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"530beb0202c2546f52441913dda93a80e8572fcface7218a4da4dfc1d6a2e7a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: preserve trailing comma after Strada migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"453108d8303a61e7e4c9d719b1185446c24a9f5bfaa332b8c182fb1d3abc55a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: preserve trailing comma after Strada migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":1547}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e005491c46cd32a4f19fa617dceea7c39a11fcec1a641668b45d0b2a801eca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: preserve trailing comma after Strada migration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":1908}}}],"partialFingerprints":{"codehealthFindingId/v1":"317bf6d5a998b40201edf86982bf8a63f33f84c3db34dce59d5b4cf7d1df0d51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use emitEmbeddedStatement rather than writeSpace/emitStatement here after Strada migration as it is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":3645}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd6a7e87ba990ce8b3409a2d5fda47dec8cea53348c57b48473d9587125978ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Should this be using \u0060getLiteralTextOfNode\u0060 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":"tsc/internal/printer/printer.go"},"region":{"startLine":4321}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f179ae5f8823625be0ed8e490c8c11dc142da186f12df5c30988518399858ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support emitting nameIndex for source maps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":5884}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab3835117194ddf6f1387a53894be2898ebf6b13fb0c81edf1f9b1dc804ad98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support emitting nameIndex for source maps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/printer.go"},"region":{"startLine":5919}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf4be650665e48552601bafb79123727e1c6a5211a87e5b8a8720accfd132126"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // assert.Equal(t, \u0022foo_1\u0022, g.GenerateName(name2)) // TODO: Fix after Strada port is complete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/namegenerator_test.go"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7c5a88f06cdb567503adbc3fdfb62daf3940a23287e44d2e2205bba1a25ceb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // assert.Equal(t, \u0022foo_1\u0022, text2) // TODO: Fix after Strada port is complete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/namegenerator_test.go"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"12aca499ba478f16223a329a7ba63bf950570b02d1a83f8f790367c15f06b38e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // (*scope).generatedNames.Add(name) // TODO: generated names should be scoped after Strada port is complete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/namegenerator.go"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8faed88759086394a11729f00bd4c21efccbc8e25f09b13d9f54ac4277512f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generated names should be scoped after Strada port is complete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/namegenerator.go"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"84693950813d72ac6304c378ab5f814ff9977c0392402f79387934fc4bdae424"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/factory.go"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e8b2a8581debe5b00e9d2698fb1937e62d1fd025117abcdb29ab5c9daefed5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/factory.go"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc986af1b221b607761983f482db6ff8b449fae86e435cbc6001c417de0e3c20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/utilities.ts"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"a304a3991fd7f17eeeb27e13951dbddfe2b470eb133b4bdc5531c6f4beb603d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/utilities.ts"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fb50baa2f6baa9a7cab3a406c2d34f212574ab071ee1c70dfdedb89b65f11ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/utilities.ts"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c4c90ab601a3b96ed0e26e51c64c2e817aa9d37c1b3bb9c0169032ddf75b92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/utilities.ts"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20873c6294b8a519b4827c8a0922c1f43ee0d4b01c0a6740b1036655d987380"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeFactory.ts"},"region":{"startLine":6762}}}],"partialFingerprints":{"codehealthFindingId/v1":"1156c331241eaa6ef027da24e14bd5aab4e9636e535fe7aab56e7fc3ba47cf9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/ts.ts"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c6be8a2b703e44640c5d0026fd75a44f3d74044b38f52012e9fa08270a3e5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/ts.ts"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"0799aebedc58f0a2210b0fe961bcd7f133b7692d7013c42e6c029bf31e1c8c3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/generators.ts"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e753589bbf101d726c5eb03efe5a7d7033cbc8edd4576bd47ce9e3e7a5cb160"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/generators.ts"},"region":{"startLine":2075}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45e69493cca436bfa1be11c08f3d41d3ce3becdf0dec8ea5abb428ea177ea55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/es2015.ts"},"region":{"startLine":1999}}}],"partialFingerprints":{"codehealthFindingId/v1":"a11db0c1f8cdec98374d058d987be4f5d1c574d9b31381d0ce683aa1693496f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/es2015.ts"},"region":{"startLine":2050}}}],"partialFingerprints":{"codehealthFindingId/v1":"182937819cfe3cead2e795a6a49fc645737a74991c0fd92b6975ef29735b5ca0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Does this need to be parented? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/es2015.ts"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f74bf78ffbed0444cdf53265600f47815e5ddec9b8236e11c06c4675b7787b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Callers passing -1 should pass actual indent options once indent-related formatting is ported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/printer/changetrackerwriter.go"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c2b434d7d0a1bd02ef24fcfe6d0f822cb63b65f395a67a458ecea7760bffca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO!! sheetal may be change this to handle symlinks!! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/project/snapshot.go"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"7849ab047d729f644ea4a69a2dfa4f3711e2af98a84a911aa3fe1791c2fa47c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: sheetal:  Get other projects that contain the file with symlink \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/project/session.go"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8bf9a498e503aaba8ee71aaf45f44e2a351fa858f5e05b1bcd8b4981640c7a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: sheetal:  Get other projects that contain the file with symlink \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/project/session.go"},"region":{"startLine":1143}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa6c65dc967b544b799251ca9b434360e2dfdd8fb5d2c639f61e9e0b422cffc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: How much of the checker\u0027s getTypeFromPropertyDescriptor is worth trying to emulate over ASTs? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bbe993520aeff5b8968d0d0671ecd29c33b30a8f69e32f4b07af2013111c3a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: also should bail on expando declarations; reuse syntactic expando check used in declaration emit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5dbf757cc7a89984ee98a3306a578007147760c021aee4c3949c9f13b88cd17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Strada forces an inference fallback on \u0060const\u0060 variables with template expression initializers, to leave space for template literal freshness in the future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4743175aa13782c4e9025044c38bab137b3661eaae55705a392625a1b801b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: support ripping return type off of .FullSignature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38661ebbd182533d4152769f2383c3856a44a79b492a64276803ae47e94b511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: support ripping return type off of .FullSignature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"d325fa9ff97d1d3e504aa5d99bf931a4b068515ec9e7f442e34712fcdd5959aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: in strada, this uses symbol information to ensure \u0060node\u0060 refers to the global \u0060undefined\u0060 symbol 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":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0d5b357273ff42d79f1e4192e9ff54ad85e2ccfe7d370cd7c3d5added8710c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: node preservation for late-bound accessor pairs? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"3984ef5080bd43024a833e17343bbe837b6f7561d22bc6d9e1dd8261f3c46660"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: handle pseudo-annotations from get accessor return positions? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"62249070ad7dd1b58dc734ed8e4500b16469eb00a5ad6e6f2b67ce2798ba657e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: why is this not \u0060core.Every\u0060? strada treated unions and intersections the same, but logically every intersection member needs to contain a possible \u0060undefined\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":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"a403dec4b6be6d8e4514397392eb1a8ec7c02d03da64e5b20b5d12549625c2ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: In strada, the ID checker doesn\u0027t infer a parameter type from binding pattern names, but the real checker _does_! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/lookup.go"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"34208be9938143105ecf4404e7057d45b5d061536a2a34cc3f8eb0d1c4260698"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Late binding/symbol merging? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/pseudochecker/checker.go"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"472977e54c1f093139d17d0c74ab0066da3dfbf13b80de3359844b5594c11ee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: baselines the entire fs, possibly doesn\u0027t correctly diff all cases of emitted files, since emit isn\u0027t fully implemented and doesn\u0027t always emit the same way as strada \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/testutil/fsbaselineutil/differ.go"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"94947aed553c95e07558dad0851eddf3e4a6f477bd494f6186cda10c982d4246"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo handle more cases of fs changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/testutil/fsbaselineutil/differ.go"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54d84971cdc90e62f57657f8a1d23a28d2cbe8e520cdb7e2e0762056bd7d121"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Strada is wrong here, we should be looking at \u0060currentJsLine\u0060, not \u0060currentJsLine\u002B1\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":"tsc/internal/testutil/harnessutil/sourcemap_recorder.go"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"46019d38075a06a90e6155d5cc93a72ea86f6dcdf67316ef37b196af0dcaacc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: port underline printer, memoize \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/testutil/tsbaseline/type_symbol_baseline.go"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"126119f2ee578808d1075762abd776d9820fbd66241c669fe34018debadd5064"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // underline: underline, // !!! TODO: underline \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/testutil/tsbaseline/type_symbol_baseline.go"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"da1318aa0b0ecb7f28bfc1a40f45219044b338a955f5163e1af80a6f7e4293ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: flatten nested chains? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/chain.go"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a43f62a942cb4d8602c84234a2917ed10047bcc1994714a2ccd214be643eb786"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // || // !!! TODO: JSDoc support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/util.go"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e7050f94863ba25856c39df9f30429fa7647aeae55e45b08f78fb20bcb4d4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: parseArrayBindingElement _never_ parses out an OmittedExpression anymore, instead producing a nameless binding element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/util.go"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9660b21172ff6a96529aa94cf981385b14f2c0f3809195f9b94502609090e6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Convert to transformers.TransformerFactory signature to allow more automatic composition with other transforms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a07012f2eb7a2e1067818600cb49642f6d3a59ea0c7becd6dd07b55e88897c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use new host GetOutputPathsFor method instead of passing in entrypoint paths (which will also better support bundled emit) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfde4d0c9da91b1dc9e2aa6152007b63362815579ef1762dea1b61e9fde7bc7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Shouldn\u0027t this be a crash or assert instead of a silent continue? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a88e061f90a7fb627e7441385e644dce956b5c202fd7175ddb27dda0e6547c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Probably unsafe to assume this isn\u0027t a URL, but that\u0027s what strada does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1b824a0f379d47e4b21a21252000d453c063bd6fdb110f3b56968b8b7e9e85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Is this actually reachable? should we error on 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":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f9a981304019282becbc090b816b220d174870898710663eb602e711b3ffae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: possible strada bug - not emitting const initialized binding pattern elements? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ad5bd3d2816188d3d0ba2ac0030a979be69f7afa12ab5e984e1a5d232caaee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: possible strada bug (fixed here) - const property signatures never initialized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"52406e4ec5fb490e5fe18c25a95148cfb592164ebd351d3a04db37fe7192eb7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: Also remove synthetic trailing/leading comments added by transforms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":1632}}}],"partialFingerprints":{"codehealthFindingId/v1":"80670eedd560682f77b42e5db943af83d77078903750a6d2ac71b8f02e46db54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // !!! TODO: module declarations are now parsed into nested module objects with export modifiers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":1831}}}],"partialFingerprints":{"codehealthFindingId/v1":"8538418d7426374f8ff40db72c219eb2017944b9dac199cab65893e14392b2d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If the property has an explicit \u0060@type\u0060 annotation, we should probably emit it (maybe with an \u0060override\u0060 modifier) instead of skipping 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":"tsc/internal/transformers/declarations/transform.go"},"region":{"startLine":2117}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cdff426ced7b428b5aca3e666d8d0e400de83fa748af2476c9b9882360b299a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Do all these accessibility checks inside/after the first pass in the checker when declarations are enabled, if 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":"tsc/internal/transformers/declarations/tracker.go"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a753d8874cbee9fb6de823fd476f684bea0aa86c41bc613080121336cfba8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Do all these accessibility checks inside/after the first pass in the checker when declarations are enabled, if 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":"tsc/testdata/fixtures/compiler/transformers/declarations.ts"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9d580d5b8a283487e0a4da5d6b025caa75e4ac9458affb229a198923074c0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jfreeman): Deal with computed properties in error reporting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/diagnostics.go"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d4c0c659bc12b7e352a9bb5f6916044de316655a58179294ec66084a3f038a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jfreeman): Deal with computed properties in error reporting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/declarations/diagnostics.ts"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"980eaa5ae0d4fdda37c7d530200fe4709d4b26e51150539aa02391af5eda8851"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Audit behavior - should this panic? potentially silent error state in strada \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/declarations/diagnostics.go"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a9dc61f2a1b552e8756cb9d20e2fe629737cecfcff1b49f782c90c3d25ca6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): We support decorating \u0060declare x\u0060 fields with legacyDecorators, but we currently don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/estransforms/esdecorator.go"},"region":{"startLine":1581}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9e7a0c1b136a7fce90d572c1bc27dff23ae3717ac3ca61af9cce30be193c35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): We support decorating \u0060declare x\u0060 fields with legacyDecorators, but we currently don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/esDecorators.ts"},"region":{"startLine":1502}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea8ff9a7fd7a5ad4185764ca3a8ded31fa8fc4ae28468b5faa09a6a9b2fa6e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/estransforms/classfields.go"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1b2a75a0f070035ae8dbc0c59dd5ca5c3120d7a3758bbadfe449477de883798"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/classFields.ts"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84a7aaf9f365a8def3b98fd8d2d2a466e95894958c36f1637604e386928f33a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: can we get rid of this original checking and better coordinate with runtimesyntax? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/estransforms/classfields.go"},"region":{"startLine":2779}}}],"partialFingerprints":{"codehealthFindingId/v1":"19cb8fdbd46f09181b82810669aded2786ff088cb5d4eeeba8a76abef84a8119"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: do we even need these? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/estransforms/classfields.go"},"region":{"startLine":3467}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7546e2894f9f589be0c4db1db2510b82ec57c5ade1e7fe2c4daf18bd4932a03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // flag and setting a parent node. TODO: Is this still true? The emit resolver is supposed to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/jsxtransforms/jsx.go"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c091e0595e591630e18120df23e1cad34f2ae292a848168c6821ea7ad0b4b18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: why is \u0060unique symbol\u0060 not handled as \u0060Symbol\u0060? This falls back to \u0060Object\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":"tsc/internal/transformers/tstransforms/typeserializer.go"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be9840124bee04b9e131f03773af280f510ec99463a61d505f11302826480e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //       // TODO, blah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/tstransforms/runtimesyntax.go"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"c399a659c41a827d4ad93992a5304a9afe28067be3d31be58e8a897696394d19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //              // TODO, blah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transformers/tstransforms/runtimesyntax.go"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"8347c0593b390d22b1f288d6c22d05341cfb65ef5ca4923166d836c05bb43960"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //nolint:customlint // .Parent set to get node to printback using text from original file instead of processed text; TODO: this should be achievable via EmitFlags 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":"tsc/internal/transformers/tstransforms/runtimesyntax.go"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3993c1e7701b4b0c4c9fda427926131a8d2045b7628fb9ca79da0301f9c7fb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //nolint:customlint // .Parent set to get node to printback using text from original file instead of processed text; TODO: this should be achievable via EmitFlags 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":"tsc/internal/transformers/tstransforms/runtimesyntax.go"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9a00cbb0ee6932d91f3cac71816042e10fdc7d85ce26093263308a9c3af55f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should *probably* just load the full, real \u0060lib\u0060 for the target. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/transpile/transpile.go"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c8912639948a1015efd95c34c614b7f41415899f23cb3c72411ada0b5b89908"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: how to manage null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/tsoptions/tsconfigparsing.go"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ecfcd30871628ff54c634ac7fb7c6888f32a297d528c928ed0545f6181a604"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: !!! should be ConfigFile.ParseDiagnostics, check if they are the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/tsoptions/parsedcommandline.go"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"0691354efedce380a9cd643f233088e2fb4d3f93487b540fde2264fecec8a621"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: make the following work for tests -- currently it is difficult to do extra options of enum 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":"tsc/internal/tsoptions/commandlineparser_test.go"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"3106e691c2972d530fb2228c282bcc6adf0b2edf0d50a2c3fab5b31a57f0508b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: watch options not 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":"tsc/internal/tsoptions/commandlineparser_test.go"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"21411e7a487869a5b5da7373078cd8c5037e06d8ff043d182e151f8a4a7c878e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: watch options not 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":"tsc/internal/tsoptions/commandlineparser_test.go"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"6546ba59b9fbe7a17feb15e8a7632a60dcf3b8a65d6c9bb209ffa9fd3f0a0b86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: revisit to see if this can be reduced to 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":"tsc/internal/tsoptions/commandlineoption.go"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"5448674e67a346ae17b4191245876abb5ffb0acef08ac1520b7b4faf1bcc306d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: revisit to see if this can be improved \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/tsoptions/commandlineoption.go"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e181d407fb487e7850d6ba9a0ba784b2c929c031e7fbcbd6204b5780b121deb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (drosen): There is potential for a fast path here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/tspath/path.go"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"80ea745ca67302ae46e33144acdb2a782538547f8d4b6d30855bf86ba7cf6665"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: #701 add retry mechanism?"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/vfs/osvfs/os.go"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f61af1866d15eafa709f489f2dbf122646c1926157cc2c558260dce1df0fcb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: TestFS doesn\u0027t understand case-insensitive file systems. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/vfs/vfstest/vfstest_test.go"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe75709fb0d5b3a65d57799a35c27cd3c37b4c033a9a29f145d6ddbc0dc38c8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Optional methods are frequently used as non-optional"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/watchUtilities.ts"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c51dfa7692fa1ca4829177d5eed6c140129936949cce2b102f4ecd29bc36fe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Optional methods are frequently asserted"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/watchPublic.ts"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"866a6e38c3d7bf89c74f1a334f4ddbee6dc5256f7b920fba89c26657360e2f08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Remove dependency on \u0060ts.factory\u0060 in favor of a provided factory. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/visitorPublic.ts"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7822cbca5108357ce56ec8ba3376e337970ac86687f557891e93bf0531fc574"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): It is very weird that we have BindingElement and ArrayBindingElement; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilitiesPublic.ts"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0171afc427b7c8b848358be54bcdcc92a82f8a42e744b58c3d02665c2d9cc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add codePage support for readFile? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilitiesPublic.ts"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"285a98ef78ecff3297a55c73001c3b6bfe394550dc4df12efa414acaa171e77d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): should we be exporting this function and not isStatement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilitiesPublic.ts"},"region":{"startLine":2436}}}],"partialFingerprints":{"codehealthFindingId/v1":"df42b34d73b10897b36ea664ffc4799cfbad00e522ca02a463cea18ba3428246"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: determine what this does before making it public. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilitiesPublic.ts"},"region":{"startLine":2532}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebd4d2caeae0a25669aba2987980b78d013802ac68b6196a485e8fb2d60cb36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#19856 Would like to return \u0060node is Node \u0026 { jsDoc: JSDoc[] }\u0060 but it causes long compile times"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilitiesPublic.ts"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"5247680231a042073e69c70a2e954925302d7f98c474968acbd20d03cac87f3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): These aren\u0027t valid TypeNodes, but we treat them as such because of \u0060isPartOfTypeNode\u0060, which returns \u0060true\u0060 for things that aren\u0027t \u0060TypeNode\u0060s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":3444}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b2bcdaf9cdef5687d9c083a7c2aa6d9c534052c3ddbac14a95cdb7098f8e7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): These aren\u0027t valid TypeNodes, but we treat them as such because of \u0060isPartOfTypeNode\u0060, which returns \u0060true\u0060 for things that aren\u0027t \u0060TypeNode\u0060s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":20527}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdfb6ea47ee75bec8f1d5e786fbab153a0ec99a09eae6b800c508d33cadccf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Parameter decorator support for ES decorators must wait until it is standardized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":3508}}}],"partialFingerprints":{"codehealthFindingId/v1":"640bcb77470e6189fc2d60ad4a11669aac117576b0b304166fd6a7eb9a86681e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): it\u0027s possible that node could be the name, too \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":3750}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9aa86ec9e3850b2d38a92bdc2a1c1599244797f512bd3602c02cf2c4de7143a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should this callback be cached? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":8982}}}],"partialFingerprints":{"codehealthFindingId/v1":"007804e8c376262ddfd9b3b57cb70277bf102426c2f5a80bc24c92f53966ff93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO in 6.0: uncomment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/utilities.ts"},"region":{"startLine":9180}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b988427f51c90c94ec56e7bb33c89ccfdfade7c4a60c9feb66188741a0d11a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Constraint \u0027TKind\u0027 to \u0027TokenSyntaxKind\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/types.ts"},"region":{"startLine":1594}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf6eec004f55096d285fd5a08a62ff0467e0276c2d167d79ef937975fa0a2bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 \u0060xToDeclaration\u0060 calls are frequently asserted as defined."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/types.ts"},"region":{"startLine":5132}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f4fa59836a88b21539c5de5f1f870b1770628366e68d86bcaf872689f11e31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Optional methods frequently used as non-optional"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/types.ts"},"region":{"startLine":7982}}}],"partialFingerprints":{"codehealthFindingId/v1":"625c95a07462cc60b703c177e3299e5f77c11c9f3823845c437b7a02d2b3b9ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: later handle this in better way in builder host instead once the api for tsbuild finalizes and doesn\u0027t use compilerHost as base \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/types.ts"},"region":{"startLine":8200}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50bef7c39b90e1d46765b695098a481e621a3b69688139214496254e05c2a0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: To do better with watch mode and normal build mode api that creates program and emits 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":"tsc/testdata/fixtures/compiler/tsbuildPublic.ts"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f1a9fc042dbed5359210efee6a4e1936c90518eeb50c87c43884449cb36ef9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Should be a \u0060Set\u0060, but that requires changing the code below that uses \u0060mutateMapSkippingNewValues\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":"tsc/testdata/fixtures/compiler/tsbuildPublic.ts"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee083267e5b024e3487c1e5f1121bec113e1e0a77f8c0692c678977385c7652b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(shkamat):: investigate later if we can emit even when there are declaration diagnostics \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/tsbuildPublic.ts"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"cedec3a39ed36765b7cdf23214831a590ea2c241c54e6bcc6e1d8902a314afc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: syntax errors???? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/tsbuildPublic.ts"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2108ba219d3629dd32fdf01361ff7c38d11ca0519549a9af412cc1eabdbb76f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove check and unconditionally use onEmitNode when API is breakingly changed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformer.ts"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"704d3d73abd6ee40c263d07954c51c16651a9ae17230569d25ba84c25fee5837"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Methods on System are often used as if they are certainly defined"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/sys.ts"},"region":{"startLine":1394}}}],"partialFingerprints":{"codehealthFindingId/v1":"06522cbbf6a07b1d4d275d5d09d8eb3896ea6960eb2b1cde29515bac79a3da22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 this is used as if it\u0027s certainly defined in many places."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/sys.ts"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cab7b5e28f107e05a099950ce8265f64a1961e4b0bde9762bc5737cfa09b862"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): can we implement this without writing next ourselves? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/sourcemap.ts"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e355cd7b332d3de1113fdf757f7bc24e9052cc92c32c199d2d12aeff3d22842"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Somehow track edits between file as it was during the creation of sourcemap we have and the current file and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/scanner.ts"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0e99acede08edfb9f7a41c71853973bf71c9393fee8249e39c2a07ebe8865f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t use slice \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/scanner.ts"},"region":{"startLine":3096}}}],"partialFingerprints":{"codehealthFindingId/v1":"634240ac5a14d37c9a712829acc700a2d45b97c4bf2b6bf5339a4fed41785c16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: don\u0027t use slice \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/scanner.ts"},"region":{"startLine":3208}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea3cfe6c7f7b1fbac9133a2919cd697f7ba192cefb1cf5fc1323845a274bdd38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): this is wrong and should have ?? 0; but all users are okay with 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":"tsc/testdata/fixtures/compiler/scanner.ts"},"region":{"startLine":4035}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a41d827679a0822018778efa2e95f785cfa52837f94f9fb24332a3a253965c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): this code makes assumptions about the format of the diagnostic messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/program.ts"},"region":{"startLine":4662}}}],"partialFingerprints":{"codehealthFindingId/v1":"c338a3ef36e9329d63712c2b70e285274d6d7129bc8db4d519ace4a3fe6f6289"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should we separate these branches out? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e136ce283ea7515ab14ffa4bc429b507fa6753168065c6ae60d692c282a7a2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): This type is a lie; this value actually contains the result \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":1516}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc3142b83788d82d24a7f36e78697bde6dc0c8d3c893a48169bb61880879c8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Do we need to call \u0060parseExpectedToken\u0060 or can we just call \u0060createMissingNode\u0060 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":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":3719}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1742753c391efbe4183e51c8ba78a29281304d1cd6eb6867f1ad30785bb40bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): JSDoc parameters don\u0027t have names (except \u0060this\u0060/\u0060new\u0060), should we manufacture an empty identifier? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":3900}}}],"partialFingerprints":{"codehealthFindingId/v1":"746972ef64669549c7d39b8dda3e5c0a9a9e9791310eed3ab41e5e2ba3f20384"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): We never set the type for a JSDocNamepathType. What should we put here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":3914}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b0ce41164b95df3a4aacb4283e0948a005576c3404d33e22671c0d55a88c5c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Consider manufacturing this when we need to report an error as it is otherwise not 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":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":6740}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f312abc80581b256a31e8d991c5da011ded0fb3f6be065d15a29be388e7c16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): this is totally wrong; \u0060parsingContext\u0060 is the result of ORing a bunch of \u00601 \u003C\u003C ParsingContext.XYZ\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":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":7493}}}],"partialFingerprints":{"codehealthFindingId/v1":"463518ad0fc8825f3e19c6e70f8d859f88f86dfbea429dee4c90d14156c3235c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The below should be strongly type-guarded and not need casts/explicit annotations, since entryOrList is related 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":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":10626}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f4eea06172404efabff764620a59bc64f5b317d2a8380b8c5a04484c957cfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: It\u0027s probably fine to issue this diagnostic on all instances of the pragma \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/parser.ts"},"region":{"startLine":10666}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec84697d8a1f62046382d4002e407e92ceeec63acb8606f87dea25c8f8a4cba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: maybe useful to keep around as an alternative option for certain contexts where the mode is overridable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/moduleSpecifiers.ts"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cc602a80f4376c7f35b4933369310f1cd1132cd3e216ea02dd000e28da6f3eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#19873"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/core.ts"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3fa4ebb2af1817681fc7ae8cc891d1d98330615e0ec1e139e7f70b19fc9e534"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO extend type typeAcquisition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/commandLineParser.ts"},"region":{"startLine":3485}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f4f87fd9c42d1a341351ff3e0c39693f9c8ed3c48746c298f99b32853d82d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use \u0060setOriginalNode\u0060 on original declaration names where possible so these declarations see some kind of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":9350}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc66dcb81a60f2ea26bc4e615066e95705e9f0b0c8669ed6d0601522ab5c007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Issue error via symbol tracker? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":9639}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fe3b151d9ef6720bf912af0fc998ed24630cab0fbe70cf52b091e09651d1bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060suppressNewPrivateContext\u0060 is questionable -we need to simply be emitting privates in whatever scope they were declared in, rather \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10036}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6048e3c2c91933a2738851116af58221ccf628c7ed2862cc54a5296cae64267"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle computed names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10111}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f2774838eef3b2c2fcc4208f9e936dd22e6815247fa27e891039fab2271824"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // prop in the outermost scope (TODO: a namespace within a namespace would need to be appropriately handled by 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10193}}}],"partialFingerprints":{"codehealthFindingId/v1":"886f0e1956533c1512e82348c605bb842b855f3efb1673bd37fa427f98dee0c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement handling for the localVsRemoteMap.get(\u0022remote\u0022) - should be difficult to trigger (see comment above), as only interesting cross-file js merges should make this 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10221}}}],"partialFingerprints":{"codehealthFindingId/v1":"327d6178e9a4deac523f0de59bd862fee7073394fca8537df95197f6b4fa1944"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Not part of a file\u0027s local or export symbol tables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10510}}}],"partialFingerprints":{"codehealthFindingId/v1":"7789e57e59282bd4ca7c6cf5eb41a1a274afc117f2345173f1a1a98b45e54b01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: could probably serialize as function \u002B ns \u002B class, now that that\u0027s OK \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10771}}}],"partialFingerprints":{"codehealthFindingId/v1":"657325968c752a19028d4be5da5fb45e9587543ab763d4386367e452020e4428"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/microsoft/TypeScript/pull/32372#discussion_r328386357"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":10907}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23fcf5d8c9eaa93b35d6ad90221cad66a174867031b081f4523172b7b5789bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If back compat with pre-3.0/4.0 libs isn\u0027t required, remove the following SymbolConstructor special case transforming \u0060symbol\u0060 into \u0060unique symbol\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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":12482}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aa3141a186fc078dca0524738ad12aee7fe801551eedeac3113865a373dd814"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Use SourceFile kind check instead"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":13039}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe27098d23570e5d7d79bae3afcdd36c010057ca15fb3a5b0cadbc9f9d8ed7f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Shouldn\u0027t this take an InterfaceType?"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":13374}}}],"partialFingerprints":{"codehealthFindingId/v1":"611a7a5be909e259c0b284a54d81f4e6f869550ff24a84cb59f94d08a2e89e82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Given that we allow type parmeters here now, is this \u0060!isGenericMappedType(type)\u0060 check really needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":13394}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd02305d7ca9d614913fab95bbd9dff29b3b2cc9789140338a7bbc6609794edf"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // Given a homomorphic mapped type { [K in keyof T]: XXX }, where T is constrained to an array or tuple type, in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":17285}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3e60b8e21be57ed4e3924d93f1e10065f36751b9ea5a7be14cef7f89044448"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // template type XXX, K has an added constraint of number | \u0060${number}\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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":17286}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77bc5e2ef3636601be470a5d511d245c5255daddeffba002011018962d93979"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): \u0060NullKeyword\u0060 is no longer a \u0060TypeNode\u0060, but we defensively allow it here because of incorrect casts in the Language 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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":20459}}}],"partialFingerprints":{"codehealthFindingId/v1":"26a23537f33492b9c2e20985ef554c87dd110dbcfdbc13f99d22423f56770915"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): \u0060ThisKeyword\u0060 is no longer a \u0060TypeNode\u0060, but we defensively allow it here because of incorrect casts in the Language Service and because of \u0060isPartOfTypeNode\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":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":20469}}}],"partialFingerprints":{"codehealthFindingId/v1":"a486a19539cb171633c205c249b2661c51d43ab8faa1ae34f3f2bc02f41f8121"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (drosen): De-duplicate code between related functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":21925}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b3d7b188a155bbcf2a9fc6dca5737a3bff703a64770e7dab3a3a3e4bc154654"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (drosen): De-duplicate code between related functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":25398}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c45575bc7ae46ad8bb240b9cd4283f2c1ebe715d2aca3b2412dc053eb42fe6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Use a different variable that\u0027s allowed to be undefined"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":34595}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec58a348027636cca99f0b03f5043456cc610853e6fd75b799e588ae50a6ba5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (yuisu): Remove this check in else-if when SyntaxKind.Construct is moved and ambient context is handled \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":42133}}}],"partialFingerprints":{"codehealthFindingId/v1":"555a093c230359ab4c24087a2dc4ae3e57a43a76da029f1584e7f5d629027044"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Should we start checking JSDoc types? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":42166}}}],"partialFingerprints":{"codehealthFindingId/v1":"1633b2576a04e72b6bd97d730f266ede3f5ac92b953cd8456f1ad1625b1fff3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#22580"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":44430}}}],"partialFingerprints":{"codehealthFindingId/v1":"81813430da58c0bbc57f5e3ab39d9e012b95f8a4bfc01d2d2040b681d69da4fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: following line is possible reason for bug #41974, unusedTypeParameters_TemplateTag"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":44564}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d44f3b8bd79ae07a55c9e838f59d58dbf2d2b3586e85f189cb4e96b595d0ff3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: following line is possible reason for bug #41974, unusedTypeParameters_TemplateTag"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":44572}}}],"partialFingerprints":{"codehealthFindingId/v1":"d75bd3d7275cb49929f41f0ec8d6dc31c18d3b618511a0b45c18584676c85204"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check that target label is valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":46506}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc2415b69e2235f0f793eb489018f5c2f3f15116a56ccb60653a5662aa5808c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakebailey): Just use isExpressionNode once that considers these identifiers to be expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":51014}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dac6fc8b8469cc24305ad07de6d8620408d00b6ffcf3b2ade35278fdbb37342"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Deprecate and remove support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/checker.ts"},"region":{"startLine":54227}}}],"partialFingerprints":{"codehealthFindingId/v1":"913e391eedeae31c72b4e877113491751297353a01677eaab5c80c9ffdf9b21f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: GH#18217 Properties of this interface are frequently asserted to be defined."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/builder.ts"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8b15211cfd0adcd5fbe6236df88dabb8fea74bccbf0e8cfdac603b83c1767d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: bindLogicalExpression is recursive - if we want to handle deeply nested \u0060\u0026\u0026\u0060 expressions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/binder.ts"},"region":{"startLine":1944}}}],"partialFingerprints":{"codehealthFindingId/v1":"126d624eaae20f092ec13a8ed73fc250a7d2408146491c6a17c3d923afae1bcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Why use \u0060isExpression\u0060 here? both Identifier and ThisKeyword are expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/binder.ts"},"region":{"startLine":2866}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb185eaa85d2da92aa02e6dbad8d2558aa6da1f72c6db33b3867e4bce87dfa27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: a \u0060ThisExpression\u0060 is not an Identifier, this cast is unsound \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/binder.ts"},"region":{"startLine":2870}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8fcc4aa71e663d23b674bc42e0189eab0803c822936aa38155dc93547dd4f85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verify this assertion holds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f7f3804119c530b44098bc374fde05170160a22023dc93a136c7d2dacf5452"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verify whether this assertion holds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ffe42b99a5dc6d02e377e05fea8e2f700df75db0083e17fd2c14d98bdcb2165"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"b41029f4d655d56440bbfd6ceb5ff1576bfce9506b4c3bc7915dae7ce30911a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2d60d189d7d0c1f60ab1018ac8e8d98b083d83b726cceb019460c65799cc4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b34ad72c8d3622d09789ba1f1b27fca226c5b82296115484269ae7d97c0159"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf81057d45fe8a9979295934f07137dd49ff0b99d3b3b7aa784fb2a697a4ed4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba8ae8712b87b0abb480591eecd2116296eba4894ba54d3a7400cc9c30ffe1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fa1f7e59080ec114c49bb8a070c962b84c0beda54afc2c884a8ab4f27b108f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Verifiy whether \u0060setTextRange\u0060 is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/parenthesizerRules.ts"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6c4c68a11508d0b72a0aef77dbb95efddee01b43a4b404b9fdae761c44a9271"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): Rename to \u0027isParameterDeclaration\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeTests.ts"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"e719dd1a23bb2fe75b592242c3e86d620f22dbbf78b936784e6302b43bffa65b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): isInputFiles \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeTests.ts"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5369d81d743dd28c1be46ed49a9691aaf7bcc211934709f770290779654963"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): We mark this as required in IndexSignatureDeclaration, but it looks like the parser allows it to be elided. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeFactory.ts"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cdb00103b593e54b9600a9997255c7cbce4910a7935df4fb99fe69a1957a8f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This mechanism for cloning results in megamorphic property reads and writes. In future perf-related \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeFactory.ts"},"region":{"startLine":6133}}}],"partialFingerprints":{"codehealthFindingId/v1":"552d784644a02b214528c643c43dd9a08a4cc262fee9ef7756b1f494265dd4d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060typeNode\u0060 should overwrite the destination \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/factory/nodeFactory.ts"},"region":{"startLine":7517}}}],"partialFingerprints":{"codehealthFindingId/v1":"35760b53ef21d75a50a06a5afe1aa4b45842e56cb7836a750228364942a87bf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      // TODO, blah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/ts.ts"},"region":{"startLine":2224}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb73bc5ce13ee1ccc469c44e9a259b26b5c78359dc4177c488abad237ee5f6b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //             // TODO, blah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/ts.ts"},"region":{"startLine":2236}}}],"partialFingerprints":{"codehealthFindingId/v1":"b933865855d675931ca2da9819cbe0b7242f97e4eb4622b2365e944b1c6fdc26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): \u0060expression\u0060 should be required on \u0060throw\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":"tsc/testdata/fixtures/compiler/transformers/generators.ts"},"region":{"startLine":1979}}}],"partialFingerprints":{"codehealthFindingId/v1":"8807442a3e01f8889fbbb40f92a78bcd984b484235d453206086d79947911f9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rbuckton): We should consider either improving the inlining here, or remove it entirely, since \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/es2015.ts"},"region":{"startLine":4466}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f4f9c3d1b96fb922d6aad7e82da4d0a9f4e55b474a10434ddef84ab279320f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Omit declaration files from bundle results, too // TODO: GH#18217"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/declarations.ts"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba3022ed1e0e3639b6b5c8c70a730b2e22d36878e02280ea6ba3f84c3cdf702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make safea \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/fixtures/compiler/transformers/declarations.ts"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a5669c2eebaa184e88b3df67e324a5b43bc7a2419f3591de305a415b46c52e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make sure that enum still disallow template literals as member names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/literalsInComputedProperties1.ts"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f94f14973c9822b3df677fc9c369bf9ada92066a13f2fa004278060663fa7dc"}},{"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":"tsc/testdata/tests/cases/compiler/lambdaArgCrash.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e85338121ed76b4117e3ee5212132d00506817038c5b84014321b59b5c0dc4"}},{"ruleId":"D17","level":"warning","message":{"text":"XxxComment: // Effect\u003C100, never, XXX\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/genericCallInferenceUsingThisTypeNoInvalidCacheReuseAfterMappedTypeApplication1.ts"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ef792c2689d6d3e3821e9d9986f8f9bbe90f0eb96726d88aba51980ceb2faa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO handle/use .Properties value eg: MUST_USE_PROPERTY is not HTML attr \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/controlFlowPropertyDeclarations.ts"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f2b6a0003a5084cd50bf9cdf835c3ded54ca112b63e1019d1ab35658e1c5d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/microsoft/TypeScript/issues/53255"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/contextualTupleTypeParameterReadonly.ts"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f351b4147bce339cb1f5a03db6243dee6aaeb9b0e28ee6cd2cf9f0ffbf96cd2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: use these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"be561fb7abc0552551a54c9a0f192636c0617f9ec223b423b0ed5d0d3eb5caf9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: FIXME: All the below cases labeled \u0060no error\u0060 _should be an error_, and are only prevented from so being \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/consistentAliasVsNonAliasRecordBehavior.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a1e5839d4b7e8cd78ad9198dc8cb150d5ed02d8e9837c88d01b38abaf3d411"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO, blah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/commentInNamespaceDeclarationWithIdentifierPathName.ts"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"374818362be79e1ab002393c167c2512f8249ac92072a4b5ee7eef9a2c84a5fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove lib hack when https://github.com/Microsoft/TypeScript/issues/20454 is fixed"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/arrayConcat3.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f73a8c241021128485c8a63d8f75056b41946e1e8f7cdc1078beca5f543836"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //var x = mod.id; // TODO needed hack that mod is loaded \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/aliasUsedAsNameValue.ts"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b41cc7ea731810ce4185c5f386ac84578342262f9a2e8ccd72077eca60a382"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: should be number =\u003E number, but JSX resolution is missing an inferential pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/compiler/contextualTypingOfOptionalMembers.tsx"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e33cdaf59c538761770c8275218672fbc500038b4fa1efa5013a19d4f5f30b2"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // fs2n_(...s2, ...s_); //           FIXME: should be a type error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/expressions/functionCalls/callWithSpread3.ts"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62760b54e5ed7203851bf311fe542d509c7e8d23f531c41da64f10d6cfd355e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // fs2n_(...s2, ...n_); // FIXME: should compile \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/expressions/functionCalls/callWithSpread3.ts"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"09803d9347a7e10222d9c21c3f6a93053e212ec39dc97f26ba0c4b296fa47956"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should be an error since signature doesn\u0027t match. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/jsdoc/checkJsdocTypeTag6.ts"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3d32b64168c89ce1485ebfcdfae0ed0a164b47ef9cf2bc9bdb870f015b0903"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // export const res = Point2D(2, 3).dot(origin); // TODO: when __proto__ works, validate 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":"tsc/testdata/tests/cases/conformance/jsdoc/declarations/jsDeclarationsFunctionLikeClasses2.ts"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d3da436880f751319cbc8dfb7042824c3606c09425dfdea9cbd5f281648f494"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Error on missing \u0027reqd\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/jsx/tsxTypeErrors.tsx"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b17e11bc5a8dcc247c748dd99a0c9fb3a757f02f64e1391548654e0a76b525e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should not be a parse error (should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/jsx/tsxElementResolution.tsx"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c34d372c08766256659b76e1f9f821e147fe78108ea1fcacdd49922e5370ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //    // todo: use these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserSyntaxWalker.generated.ts"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"d91a710167cc9ab566c9be1e35f33866d3ee8b30952e1c69cd0921974ab0ac15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: refactor indent logic for use in emit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource5.ts"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a11e5c7f1f15e9d8b1c9fb68f02e38e47680f238d39d0b9d4189d8256697f28a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: It would be nice to be able to get rid of 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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource14.ts"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce972fe308c5c4f0d8c63c446b8aade3d3094708b9f109d140ffe78c8584268"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Since AST is sometimes not correct wrt to position, only add \u0022cur\u0022 if it\u0027s 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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource14.ts"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"81447dad6c880b28f226f0b190d3459a2185d5a6a91c53bdecc5d3ec339a9e03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //logger.log(\u0022TODO: Ignoring node because minChar, limChar not better than previous node in stack\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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource14.ts"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf9a02a2406286021c8847c32f7a7f3f0cb89c6f0d23933eb1e6bbfa282af45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: Walk \u0022id\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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource12.ts"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"84624722dd7463710722551a1e555764de0e1a4ae8f6d47464bfa5f877b64630"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add successor as catch block/finally block if present \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b833ac6c1584202bd2053f75f9e8bf8f0334e43ca334a92a989cf716fabc77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check for while (true) and then only continue if afterLoop has predecessors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"813c1243fdf9dd11ba57115d238ea585224f7d1b58fd76280d747abd0379759d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: check for while (true) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts"},"region":{"startLine":1557}}}],"partialFingerprints":{"codehealthFindingId/v1":"b006ebb5c8e21e23ad54e130980f1db839bc019dd4205d2e2b9d6f6475989f87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: more reasoning about unreachable cases (such as duplicate literals as case expressions) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts"},"region":{"startLine":2042}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ce69605161ebe82c723d3afe5841f333b2f0f7fc8851327298b1b9278859e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: fall-through from previous (\u002B to end of switch) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource11.ts"},"region":{"startLine":2047}}}],"partialFingerprints":{"codehealthFindingId/v1":"be50ea5d1885489281a31de949fb4dacda87f5ac5beb16d132ddf71710a06b26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: new with length TokenID.LimFixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/parserRealSource10.ts"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2fb7a1c8e9dc0ea088e3659a8175904f2e23946fc091298dec8261ab3013ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Find an implementation of isIdenticalTo that 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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"387f232770017c640a8bd19c958ebdbabfe88a5652137eb5ac610bdfb6e59c31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: is there a reason to mess with all the special cases above and not just do this (ie take whatever property is there and 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":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc147dbd3967442d29fb03376938e2ec6c3f8a6bb583bd713e493b896ce24b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this toggleable, shouldn\u0027t be necessary once typecheck bugs are cleaned up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts"},"region":{"startLine":1270}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f75337fe997240c2ad5d0878fb27a691275cef4dee75338ab0f8ffc4b382420"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: no emit support with pull yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e7781c25a4e5eca2b9399951a04a6b0dc66ca53ae14eadf689e2eae874fe7a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Should render login page that shows auth options \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d5f77caba5faad280c875cccb2a6cb5d3783393677e478389d3022bd4dfd73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: See what the existing JS error is like for these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/salsa/plainJSGrammarErrors.ts"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf12415686568de2b2ead80dabfb3406d2b7b7e3ffbf11475fdc37d8ab6822f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Error, since ...ns is considered as string|number here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/types/rest/genericRestParameters1.ts"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"96648a29096529b4cd0428890d071035e40672bfc9ee6da794e66588084ac02c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Error, since ...ns is considered as string|number here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/types/rest/genericRestParameters1.ts"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df2be2a6fb777cdf70d25fad994de7185c90105329a89b5d5fcd73240b09bac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Allow \u0060this\u0060 types for interfaces \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/testdata/tests/cases/conformance/types/thisType/thisTypeInFunctionsNegative.ts"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bfcc98c07ad6d0c45e4352b74ba77d8ae362184f07ee0e6a47efbc264bb5a6b"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D30","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":"e8c63b2bd494cd9dfd22599789533055cf2a52e657e766d21d5a7d56dcd07334"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 6 of 423 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it (counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 423 of the 600 production source files in this repository met that bar). None is large enough to earn a read-through of its own, so this row stands in for the per-file rows rather than raising one each \u2014 most significant first: tsc/internal/evaluator/evaluator.go, packages/vscode-typescript/src/languageFeatures/onAutoInsert.ts, tsc/internal/execute/tsc/init.go, tsc/internal/symlinks/knownsymlinks.go, tsc/internal/project/ata/validatepackagename.go, tsc/internal/ast/tokenflags.go. Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: main.go \u2194 host.go: \u0060tsc/cmd/tsc/main.go\u0060 and \u0060tsc/internal/compiler/host.go\u0060 change together 72% of the time (13 of the 18 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 13 shared commits counted here, the most recent 3 are \u006004a99dee\u0060 Remove module resolution caching for now, make resolved modules avail\u2026 (at that commit the file was still \u0060tsc/cmd/tsgo/main.go\u0060); \u0060413f599a\u0060 Cache ASTs in test runner (with supporting changes) (microsoft/typesc\u2026 (at that commit the file was still \u0060tsc/cmd/tsgo/main.go\u0060); \u00606892d64c\u0060 Move DefaultLibraryPath onto hosts (microsoft/typescript-go#325) (at that commit the file was still \u0060tsc/cmd/tsgo/main.go\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/cmd/tsc/main.go"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c410bc8a5fef457ec173839e98e6a4aa037c4a74f5421d527e5cc5362023e81"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: main.go \u2194 diagnosticwriter.go: \u0060tsc/cmd/tsc/main.go\u0060 and \u0060tsc/internal/diagnosticwriter/diagnosticwriter.go\u0060 change together 53% of the time (8 of the 15 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well, and counted over this repository\u0027s 10,000 most recent commits rather than its whole history \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) with no explicit dependency \u2014 the edge is real but nothing declares it. Read the pair before acting: if one registers itself into the other through a hook or an initialiser, the missing dependency is DELIBERATE \u2014 the registration is the link, and it is meant not to be an import \u2014 and the thing to add is a comment on each side naming the other, not a merge; if they simply belong together, co-locate them; if neither holds, the coupling is hidden and worth breaking. You can check this without leaving the row: of the 8 shared commits counted here, the most recent 3 are \u00602a1e0eac\u0060 execute command line initial implementation (microsoft/typescript-go#\u2026 (at that commit the file was still \u0060tsc/cmd/tsgo/main.go\u0060); \u006085ee288f\u0060 Separate error reporting, string baselining from compiler baselining \u2026 (at that commit the file was still \u0060tsc/cmd/tsgo/main.go\u0060); \u0060be8433d1\u0060 Port more type checking (microsoft/typescript-go#133) (at that commit the files were still \u0060tsc/cmd/tsgo/main.go\u0060 and \u0060tsc/internal/compiler/error_reporting.go\u0060) \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/cmd/tsc/main.go"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"093cab07a72a3a60fa0a3ea3fbe89a634581cfa5252e7347bef2dbd8f6172e90"}},{"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":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"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":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"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":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"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":"4f1e7684f8281bd255ddef97105c7055c2ebae06964c8745716b83e174debe83"}},{"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":"M2","level":"note","message":{"text":"No architecture diagram/doc: No C4/Structurizr/PlantUML/Mermaid/Graphviz/D2 diagram, no drawn diagram named for the architecture, no file named \u0060architecture\u0060 or \u0060design\u0060 in any markup this check reads, and nothing in the README, docs or contributor guides that announces the shape \u2014 no \u0060## Architecture\u0060 heading, no \u0022architecture overview\u0022/\u0022high-level design\u0022 phrasing, no \u0022the architecture is \u2026\u0022 introduction, no guided code tour. A shape laid out in prose that never names itself as the architecture is not visible to this check, and neither is one kept outside the repository, so this row reports the absence of a re-findable shape document \u2014 not evidence that nobody wrote the shape down."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c190e7c159d1850ee706c3ac4486e151e8a4fe169de4bf61436b9f399654f06"}},{"ruleId":"P12","level":"warning","message":{"text":"Coverage collected but not gated: CI collects a coverage report but no step enforces a minimum \u2014 coverage could halve and CI stays green. Add a step that fails the build when coverage drops below a floor (your coverage tool\u0027s minimum-threshold flag, or a coverage-gate action) so the number guards something. What was searched, so you can tell an absence from a miss: this repository\u0027s CI files AND its coverage configuration \u2014 the well-known coverage and test-runner config files, read at the repository root and inside workspace package directories two levels down, so a floor declared beside the tests rather than in the pipeline is credited \u2014 matched against the threshold settings this check knows by name. A floor set in your coverage service\u0027s web UI rather than in a committed file, or under a setting whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"7f63c06044cf998d9a0698692df30d8873e29bc9b0c98ee829255017c1193d33"}},{"ruleId":"P6","level":"note","message":{"text":"Changelog looks stale/thin: The changelog this check read carries 1 versioned entry, against a bar of 3. Counted as either an \u0060x.y.z\u0060 string or a version-shaped section heading (\u0060## [1.2.0]\u0060, \u0060## V14.x.x\u0060, \u0060## Updates in 8.0.x\u0060), whichever is the larger \u2014 so a log sectioned by minor series counts its sections, not its individual patch numbers. Entries recorded somewhere this check does not read \u2014 release notes generated at tag time from a generator config it did not recognise, or a log kept outside the repository \u2014 are not counted here, and this row is about what is re-findable in the tree rather than about how often you release."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9a74c249fe67853238d9c15085f7f97d31f51bb82455046aa10c2cef82f67b8"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (37 matched lines \u00D7 2 locations): tools/scripts/tsc/generate-ts-ast.ts:857 \u00B7 tools/scripts/tsc/generate-ts-ast.ts:918 \u2014 the two spans are one implementation copied and then locally edited \u2014 310 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da633985b506be218960611f79c78063bd87dd3caa35cd8cef52f67ed9ef630"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2 locations): tools/scripts/tsc/generate-go-ast.ts:467 \u00B7 tools/scripts/tsc/generate-go-ast.ts:696 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-go-ast.ts"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c3518c4bf6d424d0dd7ce11debcd0a7c15ac40825c3d6e8857c3d9936433e7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:1138 \u00B7 packages/typescript/src/api/async/api.ts:1265 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e8ff4fb62d2e752a97ba744df49a0d172cb59966883d7ff6108d6d2088fd9a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:2145 \u00B7 packages/typescript/src/api/async/api.ts:2305 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":2145}}}],"partialFingerprints":{"codehealthFindingId/v1":"399bf56e1fad28f29f0432195939cbfbe66fd6caf6ce85ddefe5a16f60d1457d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (17 matched lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:563 \u00B7 packages/typescript/src/api/async/api.ts:643 \u2014 the two spans are one implementation copied and then locally edited \u2014 101 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a6af869cc133d96700e72da70148d50ba3c2eaf156b1e60d50a254f9a6499a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:344 \u00B7 tools/scripts/tsc/generate-encoder.ts:591 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fc39fc67abb563723ac8d1735fadb5fab04442d1d08de20321e8be5f3906a9c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2 locations): packages/typescript/src/api/node/msgpack.ts:73 \u00B7 packages/typescript/src/api/node/msgpack.ts:97 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/msgpack.ts"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b2d3eb6b114547081de82a0a760719ca84a857e64734e2276a81e11eec2032"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3 locations): packages/typescript/src/ast/scanner.ts:1814 \u00B7 packages/typescript/src/ast/scanner.ts:1843 \u00B7 packages/typescript/src/ast/scanner.ts:1905 \u2014 all 3 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f0888c2c1f9148081ee77f32b51c29c1d87f05bd07109531a1a1a48c4832554"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2 locations): packages/typescript/src/api/node/msgpack.ts:164 \u00B7 packages/typescript/src/api/node/msgpack.ts:181 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/msgpack.ts"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0a6920d6a55f9080b09efa90ac881228d0e28070516d0054cc63c1e57d567a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:370 \u00B7 tools/scripts/tsc/generate-encoder.ts:1139 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"674b73f151d1c34395cf69ebf39d51ff394c459a31a864777699513aade7e4e7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:1643 \u00B7 packages/typescript/src/api/async/api.ts:1689 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc15fc8a76983c2432ef42ecdb691fd50d868483b93126e4169b7de875ba61e7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:650 \u00B7 tools/scripts/tsc/generate-encoder.ts:922 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33c4103deaadc5983cc589a0a05328cd3ca328e2d4504e0d97d5e9934104939"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2 locations): tsc/internal/lsp/lsproto/_generate/generate.mts:3379 \u00B7 tsc/internal/lsp/lsproto/_generate/generate.mts:3412 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/lsproto/_generate/generate.mts"},"region":{"startLine":3379}}}],"partialFingerprints":{"codehealthFindingId/v1":"6912b81230648f0195ccddfcda4e0bb4e925b2648792dacf87d138bdaa7fe6e8"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (13 matched lines \u00D7 2 locations): packages/typescript/src/api/async/client.ts:233 \u00B7 packages/typescript/src/api/sync/client.ts:112 \u2014 the two spans are one implementation copied and then locally edited \u2014 76 tokens are still identical, in the same order in both files, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/client.ts"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db1f295180cbdb03b895994d82a997b0b4f8a3abb51d969857170e35e707467"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): packages/typescript/src/ast/scanner.ts:1631 \u00B7 packages/typescript/src/ast/scanner.ts:1887 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1631}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb3ae3b15229b6774a73c55fe59a19e2c48247eb959c099f2dc8023a320a086"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): packages/typescript/src/ast/scanner.ts:1838 \u00B7 packages/typescript/src/ast/scanner.ts:1861 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1838}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed9f35a636970a09eef1c0136537ec995d6c4879569381bd7ab7b5e847d25cc"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): packages/typescript/src/ast/scanner.ts:1937 \u00B7 packages/typescript/src/ast/scanner.ts:2416 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1937}}}],"partialFingerprints":{"codehealthFindingId/v1":"624ad3accf7d76343f6c6d92ccdaaa6d4decf9fa3be7e240ed183fe4697a7594"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:561 \u00B7 tools/scripts/tsc/generate-encoder.ts:678 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0341f71e3428166a2703b190c74913add56b967816557bc232f61a688f67b86"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:898 \u00B7 tools/scripts/tsc/generate-encoder.ts:911 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"f654c3909cf5177bd662123c117fd7257ecbe061147eadecdc0508bb4c3e95ed"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): tools/scripts/tsc/generate-ts-ast.ts:1019 \u00B7 tools/scripts/tsc/generate-ts-ast.ts:1185 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad961c07c7edeb64c09d53392acb6ab781c89c9017450ff218e76d1fddd18184"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): tools/scripts/tsc/generate-ts-ast.ts:1047 \u00B7 tools/scripts/tsc/generate-ts-ast.ts:1199 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"a076567976dc359f57a99fe40c47ed61b806bd5614ce526795f1b55c3d45c2d0"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): packages/typescript/src/ast/astnav.ts:747 \u00B7 packages/typescript/src/ast/astnav.ts:760 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/astnav.ts"},"region":{"startLine":747}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b7181e6968a3932401bfbbdc91a2b90c597b11c01b4a7b94f668fbd3456ee84"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): tools/scripts/tsc/generate-ts-ast.ts:932 \u00B7 tools/scripts/tsc/generate-ts-ast.ts:957 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf65a364fee3803758d86a90b67e43d9d246ddb323a14cc7e26dede66e74319c"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): tools/scripts/tsc/schema.ts:1092 \u00B7 tools/scripts/tsc/schema.ts:1108 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/schema.ts"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03eb1103b62dc857d64ceed519fda53d3ff378ab7d28d066fb07b612b628562"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5 locations): packages/typescript/src/api/async/api.ts:1812 \u00B7 packages/typescript/src/api/async/api.ts:1828 \u00B7 packages/typescript/src/api/async/api.ts:1844 \u00B7 packages/typescript/src/api/async/api.ts:1860 \u00B7 \u002B1 more site(s) not listed \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a98dc1291e26313c72c1529640fe7b73431fd69b0d48fb1038d027fee8b1a1"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3 locations): packages/typescript/src/api/async/api.ts:2365 \u00B7 packages/typescript/src/api/async/api.ts:2463 \u00B7 packages/typescript/src/api/async/api.ts:2760 \u2014 all 3 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":2365}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01ce2f04b84e7e6fc49c9d52c97b8e6addab68f9f19966efddbb89a1943b9f9"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): packages/typescript/src/api/async/client.ts:89 \u00B7 packages/typescript/src/api/sync/client.ts:43 \u2014 the 2 copies are spread across 2 directories, so the shared home is a decision rather than an obvious spot: check first whether one of them already owns this behaviour, and otherwise put the extracted module somewhere all of the sites already reach rather than making one of them depend on another."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/client.ts"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61f70d380fa552cdfae0a316aaad943f8f65a389ec8cd0db6e634464ab488e6"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3 locations): packages/typescript/src/api/node/node.ts:116 \u00B7 packages/typescript/src/api/node/node.ts:136 \u00B7 packages/typescript/src/api/node/node.ts:151 \u2014 all 3 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/node.ts"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0155499594e3aa1f0bc6f783d7476b56443a70d795adb0cf1cfd85770593781"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): packages/typescript/src/ast/scanner.ts:1660 \u00B7 packages/typescript/src/ast/scanner.ts:1672 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1660}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb95821f6cafc909ef09b410a810d83deb503641dde063802ee502601b326536"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): packages/vscode-typescript/src/client.ts:393 \u00B7 packages/vscode-typescript/src/client.ts:409 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/client.ts"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"db76229242f66985fe1152270ad0d79b92d0530446d3ed237594f7c5accb84ff"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): packages/vscode-typescript/src/session.ts:287 \u00B7 packages/vscode-typescript/src/session.ts:299 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/session.ts"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b78166fa5d1d7c06f01f22ea28df89678a0b2a4ef000825240d7f505928dfd8"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 8 locations): tools/scripts/tsc/generate-encoder.ts:399 \u00B7 tools/scripts/tsc/generate-encoder.ts:449 \u00B7 tools/scripts/tsc/generate-encoder.ts:546 \u00B7 tools/scripts/tsc/generate-encoder.ts:664 \u00B7 \u002B4 more site(s) not listed \u2014 the 8 copies are spread across 2 files, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea19c274a06384d7b6f7a18c787aa1b2dbad213f25516cc43abf2805370dc403"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): tools/scripts/tsc/generate-encoder.ts:850 \u00B7 tools/scripts/tsc/generate-encoder.ts:983 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"a44402a6d76f805669138e872aeb46672efb39a47c3b6e1aed67831ba793012f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): tools/scripts/tsc/generate-go-ast.ts:513 \u00B7 tools/scripts/tsc/generate-go-ast.ts:616 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-go-ast.ts"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d49bc78a3953aa09281c3ca8f704d7cc5b7364d9281b4de70dc1262d8ef906"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): tools/scripts/tsc/generate-ts-ast.ts:1206 \u00B7 tools/scripts/tsc/generate-ts-ast.ts:1247 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":1206}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5603bec5c88fa2f622a94614c25b3dfe73dabbe4b33ad6772e34c1befced825"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): tsc/internal/lsp/lsproto/_generate/generate.mts:3396 \u00B7 tsc/internal/lsp/lsproto/_generate/generate.mts:3433 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/lsproto/_generate/generate.mts"},"region":{"startLine":3396}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f1fbc6a22031fae7833cec2c75d832dee98752d3d1436039e5c4cfdda8473e"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): packages/typescript/scripts/generateSync.ts:457 \u00B7 packages/typescript/scripts/generateSync.ts:540 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generateSync.ts"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e99caec52a8c20f51a81c02d566f5ce3ceabb876465a86d7e09b06bd61a5a3"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:794 \u00B7 packages/typescript/src/api/async/api.ts:2025 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"751afde8c8c3aacbf2a5734dde9796b202c8c3833ed6f0d00c9f1621a07a3085"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4 locations): packages/typescript/src/api/async/api.ts:1715 \u00B7 packages/typescript/src/api/async/api.ts:1776 \u00B7 packages/typescript/src/api/async/api.ts:1885 \u00B7 packages/typescript/src/api/async/api.ts:1907 \u2014 all 4 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":1715}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d416e6e64de42c7d4edd873036e99087ce116654c597699e18325731e5244a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): packages/typescript/src/api/async/api.ts:2949 \u00B7 packages/typescript/src/api/async/api.ts:2960 \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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":2949}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36090cb6ecefc1d77f665f71aacbcd1580235ed7d81e000a9b57422bacfd1f4"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: Herebyfile.mjs:648 reaches into another package with a relative path (./packages/typescript/scripts/generateSync.ts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"Herebyfile.mjs"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"89eba46d3a7456d91757d0b38128abb150a83aacefa39f302857fd2758d4791f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/typescript/scripts/generate.ts:1 reaches into another package with a relative path (../../../tools/scripts/gen/utils.mts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generate.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"702f5664d7e7a81cea5f4ec6a3a68cd4c0ca11c09d2964d082a00ba1439d1d52"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/typescript/scripts/generate.ts:2 reaches into another package with a relative path (../../../tools/scripts/tsc/generate-encoder.ts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generate.ts"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a68a8399ed0c5acf639eb4d14ff7e25fdeadfa66b403f5bc30be6aadcf97ce7"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/typescript/scripts/generate.ts:3 reaches into another package with a relative path (../../../tools/scripts/tsc/generate-ts-ast.ts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generate.ts"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a697dff29982aa3a9f41db20c8e3c58837893df4cecb3af7977a8db3867d0f"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/typescript/scripts/generateSync.ts:30 reaches into another package with a relative path (../../../tools/scripts/gen/generatedFile.mts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generateSync.ts"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2dc1b11be01270dfe75df586e16e24cc6c5d7b26e39d62a14868c52979a6b69"}},{"ruleId":"R11","level":"warning","message":{"text":"Boundary violation [package:relative-cross-package]: packages/typescript/scripts/generateSync.ts:31 reaches into another package with a relative path (../../../tools/scripts/gen/utils.mts) \u2014 import the package by name instead."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generateSync.ts"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab5dc6b58104b8e94cc424b9ffbea4d46c80e9b1f526ff44e470546685cab56"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function scan (cyclomatic 164, cognitive 278): scan has cyclomatic complexity 164 and cognitive complexity 278; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1531}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1dc1c275bcd2ebc279d0c944a48ae725af89575fb51c99dcf8a09ff37815bb"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function generateCode (cyclomatic 129, cognitive 371): generateCode has cyclomatic complexity 129 and cognitive complexity 371; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/lsproto/_generate/generate.mts"},"region":{"startLine":2180}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab4422fcf977a2263869ce03aba6d0e8058350611209d26b377d56721092afc"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function generateFactory (cyclomatic 110, cognitive 236): generateFactory has cyclomatic complexity 110 and cognitive complexity 236; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4d65e475b0e24bea60e3020c74734dacd54bbbdc09a0458c58d3ae15f5af21"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function patchAndPreprocessModel (cyclomatic 57, cognitive 94): patchAndPreprocessModel has cyclomatic complexity 57 and cognitive complexity 94; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/lsproto/_generate/generate.mts"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"f127a28154b5995b41a46f4cb2c009c3273a60084c253812b785a2749b478aef"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function scanEscapeSequence (cyclomatic 55, cognitive 51): scanEscapeSequence has cyclomatic complexity 55 and cognitive complexity 51; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"8655a4248f765b4cb415f547237ef736080e2de673cf63d33fff556956e20844"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function isExpressionNode (cyclomatic 55, cognitive 9): isExpressionNode has cyclomatic complexity 55 and cognitive complexity 9; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/is.ts"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c174e9928dc7a1a8d000a8ca990eab0d06e5052269e9e7c224f9ee7f518cce0"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function generateIsGenerated (cyclomatic 41, cognitive 75): generateIsGenerated has cyclomatic complexity 41 and cognitive complexity 75; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":1319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b6425356081d3aca338dfca00adb495410d4113c08e10732cb1d23ec4a0b489"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function isInExpressionContext (cyclomatic 39, cognitive 8): isInExpressionContext has cyclomatic complexity 39 and cognitive complexity 8; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/is.ts"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"0570dd9e65a142bbc04ec9f482eaedbc4e14fc41310f8abf77d250e43e6d2ddf"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function generateTSNodeGenerated (cyclomatic 37, cognitive 71): generateTSNodeGenerated has cyclomatic complexity 37 and cognitive complexity 71; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-encoder.ts"},"region":{"startLine":1286}}}],"partialFingerprints":{"codehealthFindingId/v1":"58f17a6400c7c92372dcbda9b0fdeaedca88ba2f1c20725a84cb324539d28eba"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function reScanSlashToken (cyclomatic 37, cognitive 66): reScanSlashToken has cyclomatic complexity 37 and cognitive complexity 66; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":2068}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb36007c13ecb7fed7e9bdf3f16e41e6fa1279cce2311e9eef6d316c5ba95f0"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function constructor (cyclomatic 36, cognitive 40): constructor has cyclomatic complexity 36 and cognitive complexity 40; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/async/api.ts"},"region":{"startLine":3208}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94df88bd02ed06311705a61c4a196a3ac216456d6cc0e95c3b93e11d1b0c1b6"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function scanJsDocToken (cyclomatic 36, cognitive 21): scanJsDocToken has cyclomatic complexity 36 and cognitive complexity 21; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":2358}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ff1237e8979efa8fb548f0a1886eac4359ad355b1465b249b60df0d20c6afd"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function validate (cyclomatic 34, cognitive 63): validate has cyclomatic complexity 34 and cognitive complexity 63; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/schema.ts"},"region":{"startLine":1090}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0efd670f076c75cfd8a50d9e473f7bc1522c2698021b0ea4de7f946bf6ed96f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function iterateCommentRanges (cyclomatic 33, cognitive 78): iterateCommentRanges has cyclomatic complexity 33 and cognitive complexity 78; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"539341687d1fec126dc856539b7ccad8a6469aab6d46aa43d1405b09d6818d9a"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function skipTrivia (cyclomatic 32, cognitive 52): skipTrivia has cyclomatic complexity 32 and cognitive complexity 52; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/scanner.ts"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5400017720e4df1b23da7aa9943b6175830c7ef700ad07609d9dc4ebbafe6af"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function resolveType (cyclomatic 32, cognitive 22): resolveType has cyclomatic complexity 32 and cognitive complexity 22; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive sits below cyclomatic here, so much of the count is breadth \u2014 arms side by side rather than stacked \u2014 and splitting per arm would leave a function per arm; group the work between the checks into named steps instead. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/lsp/lsproto/_generate/generate.mts"},"region":{"startLine":1554}}}],"partialFingerprints":{"codehealthFindingId/v1":"730a3e389446f81ab6f1b4197eea684c12e8e4bc28823d015d7f2e6b781242ba"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function generateAstGenerated (cyclomatic 30, cognitive 56): generateAstGenerated has cyclomatic complexity 30 and cognitive complexity 56; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/tsc/generate-ts-ast.ts"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a821d7870c4f1c70164d21f1f562f440a33fd221f0a7315cb960b41f23a5c9"}},{"ruleId":"R3","level":"warning","message":{"text":"Large Files: 18 file(s) over 400 lines (counted as significant lines \u2014 blank lines excluded \u2014 over production source only, tests excluded), largest first: packages/typescript/src/api/async/api.ts (3344), Herebyfile.mjs (2546), packages/typescript/src/ast/scanner.ts (2328), tools/scripts/tsc/generate-encoder.ts (1907), tools/scripts/tsc/generate-ts-ast.ts (1686), tools/scripts/tsc/schema.ts (1078) (\u002B12 more)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cecee31b569df4f07e06db732f1ca037af27b5afef9023da51f9673d931a142f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/client.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c192cc4cb2bb86656973bc23f80b40cce0071fbcb0104ef104af742add34694c"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/session.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e56451a5299525b2d14aad955a7200ba7d4f7cf2e97ea18504c651d029d8f4"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/syncChannel.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b53e81276570717b81291cc8e8e9745ce4ca93633e72c8c37bb3d89b7bdcdab"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/util.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c169f5eee3dec5f362642b088c6cfe6c7462ebf7de0199dda5de64c45006d2e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/configurationMiddleware.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea5cfefb97e5a6ecf91f6d00e610142f32408213749eaf9821f2525a7b5f24b"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/extension.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ef863fdad81662d3c7a23d708e3d5aea53327d5f6cce74280871f3f0842ac5"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/sync/client.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9578fa7fe17775e42df016bdc212249506fdb0c35a5effe3494766a373a1e42e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/projectStatus.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd9b014ecc9956179cf3729b5614d82cf72b67c77267b63d71f733b208f6a7f"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/languageFeatures/onAutoInsert.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a5418b62df6a6f334fbffec9258cdcd209cd4f3020b6199a991d8a2f16d4329"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/characterCodes.enum.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34e0509d41dd9976db331c547ea5ded2e262a5876963b57b8586111c622b512"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/characterCodes.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"750c25865127988952045fc6da096085948ee92a8256b9eb2bfcd32c25dd35ff"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/post-vsts-artifact-comment.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06e2192ca7b38b5b7233cd5f8b6829005c97ec81b97b1c558bbe4d6cd8f1a03"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/telemetryReporting.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb068c14d34f89795ea963fa484ac7ecef0fef532fb07b65565c68195364904"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/commands.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"befcdc39813d9dcedfd061aee7285dc163cd19d305429aac46fd4b08ddb6e764"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/languageFeatures/util/dependentRegistration.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f54d5bc3d544f08e606eddeb10af41f69411bbf20ea5981da15b43ea2f74fab"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/languageFeatures/documentHighlight.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8efd7dcc013818a227efbb418bf04a115b66e9765ff520f8a0a4932915a1ad1"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/activeJsTsEditorTracker.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bac309a0c1c4ed79fee19ca4dbc494b87169898d31cb17d223228d0dca01497"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/languageFeatures/sourceDefinition.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4629b9008fa48f1a7d554810cd3afb8a611dcb8b8cf1084193019ea4561e6e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/languageFeatures/hover.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"545e19b4429810145a4fd2a7b4c116d51f42296ca6fcfac73d51dde303ef72a2"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/configure-release.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f830348781c670b29abefa10f8a53dbaa3e216a26f86c219b1ae13533372763"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/experimentationService.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e0fce4e29b011f9cb2df388e445c756b1010c7f377f8d701b471b25423801e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/managedFileContext.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2c4d271e6b3e232df289f9f0091a512e2604d0bf9794ebbae3f621af260a60"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/workspaceSymbolMiddleware.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eacc3fb3a29782ed01cb0156ec7a9640c905c1d6e642c40b81694bb3e134ca45"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/lib/tsc.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"44479a26aff5a7b4cf269d2e0bfc227e8fa31d2962be473b9001e2145404eaf5"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/link-hooks.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f35d10e794e78b81cb10353f1aad148253dfd3147db22d55738eca645a1de4e"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/scriptTarget.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03a7f00c55e242adc541496bb727b8cb6229003e03f23717636b7cba08e66b7"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/statusBar.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4de01a1257deb4eafb8db569be0eb60ed91e9f3052e81d53fcc8308a67ca156"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/scriptTarget.enum.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c3cb99b2721e09c22eefb231131fb10e0156114d56e31678777c14e219ebc99"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/regularExpressionFlags.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6cad84b41945f59a530e729c00f694bd9cf3086c4b5847ad93157acfda8f171"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/regularExpressionFlags.enum.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"212feb5e4e114d02c17d2871bda98b539ea23f1e55d6e3af694d7c0310b85e86"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/scripts/generate.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"45dec9564c79fe87f4a5fb80298c6299805597f0afa80e9dfd6f1c1e63c7a600"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/commentDirectiveType.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"978cb533bac82ed52a56f314415bdd3b46e58d2d9104603966b66ce20e9410a1"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/languageVariant.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"95dbc73dd765f181a6359810b058588e1cd7b038a496fdb71284b9d2ff4e32fa"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/commentDirectiveType.enum.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4ee55780209a80b464e328f58668ed0fbee854eca6ca8605b9934063fd0fda"}},{"ruleId":"R4","level":"warning","message":{"text":"No test reaches this file: No test imports this module directly or transitively. Import reachability cannot see a test that executes a file by path instead of importing it, nor one that drives it through a running browser by navigating to a URL \u2014 if neither does, no test reaches this one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/enums/languageVariant.enum.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"812a171a3f809772db87909deac0d9bb4043224d97b73f5a4a07327cb23908e8"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~624 LoC): no import path from any entry point (147 application, 118 tooling, 27 test roots considered), but 1 in-repo import(s) from 1 other file(s) do name it (packages/typescript/src/api/sync/client.ts) \u2014 every one of those referrers is itself unreachable, so this file is dead only as a member of that cluster: if any referrer is in fact alive, this row falls with it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/syncChannel.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26803dd5c68bc2d7a07cf5baf95855993880645c52055f01b26f465a197a5d3"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~201 LoC): no import path from any entry point (147 application, 118 tooling, 27 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/sync/client.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc97504aee6afbae22e5936205da70d3e257a7dd7addd94af2c72b670931e52"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~111 LoC): no import path from any entry point (147 application, 118 tooling, 27 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/scripts/post-vsts-artifact-comment.mjs"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e6299c8014a572bbba0f61f1bf8d309105a60553ad55ddccb47790187ef7f3"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~56 LoC): no import path from any entry point (147 application, 118 tooling, 27 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/managedFileContext.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa93e24b5ab6289b58e7be7f0f8538546e666ef5b155f1dca36e327284fb8829"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027sourceFileResponseToUint8Array\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/encoder.ts"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"47625fefcea623810ce60fe503b9ca61db67bbd966529dd50d37609294a8b979"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027popcount8\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/node.infrastructure.ts"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e04109916a04c0f699f0a36e9f633c43de5650efbd61818cf3143517254a836"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027NODE_STRING_INDEX_MASK\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/node.infrastructure.ts"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"970367afbc4f944cf9d37bffa1c41320806a3c289130f8b081fbf05f4e82d747"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027RemoteNodeBase\u0027: Nothing ultimately consumes this binding: its only referrer is the re-export in packages/typescript/src/api/node/node.ts, whose re-exported name has no consumer either. Removing it is therefore not a one-file change \u2014 drop the re-export line in packages/typescript/src/api/node/node.ts in the same commit, or the barrel will import a name that no longer exists."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/node.infrastructure.ts"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c245124b9ff34acf92e3f8e7088be5656b29444624399bf2f1de8b2f5d59ff"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027HEADER_OFFSET_SOURCE_FILE_ID\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/protocol.ts"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"609e9e675005949753c7d1cf31c83999a0f891d39866b68d99dd1cf48ab06c97"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027HEADER_OFFSET_BINDER_DATA\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/protocol.ts"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f4f7334c09f405e58da5ee6c6f852aa84bab9b73a6e3b8725a0eef0294b6059"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027NODE_OFFSET_FLAGS\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/protocol.ts"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a1dd237274466832d3c63d79e83914487fc49dfe541ebed3bafbd954e29db32"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027NODE_STRING_INDEX_MASK\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/protocol.ts"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ae6301f1bc806721ce63260f06919fb2ad75a294f83164ffd0312a234bb31c"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027NODE_EXTENDED_DATA_MASK\u0027: Nothing imports THIS copy of \u0027NODE_EXTENDED_DATA_MASK\u0027 \u2014 but packages/typescript/src/api/node/node.infrastructure.ts:36 in the same directory exports that same name, and it is the copy every import site resolves to. Grepping the name therefore finds live callers that do not reach this binding: it is the dead half of a duplicated pair, left behind when the API moved. Delete it here and keep packages/typescript/src/api/node/node.infrastructure.ts\u0027s, or, if this one is meant to be the survivor, repoint the importers before removing the other."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/node/protocol.ts"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc89604682c05177c9bd36f007d3b5526ad5b98c0bb89a26e208823804a2d358"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027cacheGeneratorMethod\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/sync/generatorSupport.ts"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12c6b4bcf842567e7302a1cf915618e3e88bf892614a51eeb0ff32475ae83e3"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027all\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/sync/generatorSupport.ts"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"c285387cfde3cc0b4613fd8e296520eccb3022575dccdec551c015c194616fd5"}},{"ruleId":"R7","level":"note","message":{"text":"Unused export \u0027defer\u0027: Nothing imports this binding \u2014 it is safe to review for removal."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/api/sync/generatorSupport.ts"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"733f1f48c04efb73ab2a1e15133312a8ace10f3841e54f3a8206c47c0ce616b3"}},{"ruleId":"R8","level":"warning","message":{"text":"Unlisted import \u0027vscode-languageserver-protocol\u0027: Imported only as a TYPE and declared in no reachable package.json. The import is erased at compile time, so nothing is installed and no runtime resolution depends on it \u2014 but type-checking a clean clone will fail. Declare the typings it resolves through (or the package itself) in the owning package.json."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/vscode-typescript/src/configurationMiddleware.ts"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"40790baf06e1154976256dd2b8fde6319158b64590cb9f50c3bb03fbba226239"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027@dprint/json\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"80ccc15f7165c636bf0f37c134072d9ec34dd18ff5cdc744e04e5945f17dbdf4"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027@jakebailey/dprint-plugin-gofumpt\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c8b60ce2d0d94dab17b863c70c99216d475389ec0b45103178c22c4712762b72"}},{"ruleId":"R8","level":"warning","message":{"text":"Unused dependency \u0027@unicode/unicode-15.1.0\u0027: Declared in the root package.json but never imported anywhere in that package or its workspace members \u2014 no static import reaches it. Usually that is dead weight and attack surface, but two shapes are indistinguishable from source and are NOT dead: an optional or native peer that another dependency loads dynamically at runtime, and a package a build, docs or test step installs and invokes separately. Confirm which of the three this is before removing it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cf9f53475b6ea44298644c5d50ad9c55cbdaf02f2cf582fb6da3c04e2a9b3c4d"}},{"ruleId":"R9","level":"error","message":{"text":"Import cycle (2 files): packages/typescript/src/ast/is.ts \u2192 packages/typescript/src/ast/utils.ts \u2192 packages/typescript/src/ast/is.ts"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/typescript/src/ast/is.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48fc224c12971cd793911b6995e3897b8c38aab721e84b9ea13b78c7cdfd4cca"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060strings.Contains(lit, \u0022.min.js\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060strings.Contains(lit, \u0022.min.js\u0022)\u0060 also satisfies \u0060strings.Contains(lit, \u0022.min.\u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tsc/internal/vfs/vfsmatch/vfsmatch.go"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff50f5dbaadd900b89f8592993c81feee88976097b5ea064278a451a82eb2a84"}}],"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-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.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-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.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-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-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"CWE-506","shortDescription":{"text":"CWE-506"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"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":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"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":5,"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."]}]}