Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Migration] FINAL v0.47.x ==> v0.50.x #396

Merged
merged 55 commits into from
Feb 23, 2024
Merged

Conversation

bryanchriswhite
Copy link
Contributor

@bryanchriswhite bryanchriswhite commented Feb 21, 2024

Summary

Human Summary

Issue

Type of change

Select one or more:

  • New feature, functionality or library
  • Bug fix
  • Code health or cleanup
  • Documentation
  • Other (specify): Cosmos-SDK v0.50.x migration

Testing

  • Run all unit tests: make go_develop_and_test
  • Run E2E tests locally: make test_e2e
  • Run E2E tests on DevNet: Add the devnet-test-e2e label to the PR. This is VERY expensive, only do it after all the reviews are complete.

Sanity Checklist

  • I have tested my changes using the available tooling
  • I have performed a self-review of my own code
  • I have commented my code, updated documentation and left TODOs throughout the codebase

Copy link

The CI will now also run the e2e tests on devnet, which increases the time it takes to complete all CI checks. If you just created a pull request, you might need to push another commit to produce a container image DevNet can utilize to spin up infrastructure. You can use make trigger_ci to push an empty commit.

@github-actions github-actions bot added devnet push-image CI related - pushes images to ghcr.io labels Feb 21, 2024
h5law and others added 22 commits February 21, 2024 23:18
(cherry picked from commit 7b88b3de89a27a3aff34ee34729e10ddf23085b3)
scaffold: module tokenomics --dep bank,account,application,supplier

ignite scaffold module tokenomics --dep bank,account,application,supplier --params compute_units_to_tokens_multiplier:uint

reconcile: tokenomics files

reconcile: add missing network utils

chore: add params cli long description

reconcile: reduce formatting noise with main

fix: CLI overrides
@red-0ne red-0ne added this to the Shannon TestNet milestone Feb 21, 2024
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: h5law <[email protected]>
Co-authored-by: Dima Kniazev <[email protected]>
@bryanchriswhite bryanchriswhite linked an issue Feb 21, 2024 that may be closed by this pull request
2 tasks
@bryanchriswhite bryanchriswhite marked this pull request as ready for review February 21, 2024 22:39
@okdas
Copy link
Member

okdas commented Feb 21, 2024

The reason e2e tests are not passing on this branch is because the DevNet are configured to utilize the helm charts for cosmos-sdk 0.47.x.

As long as e2e tests pass locally, I say we should ignore that failure. I'm actively working to fix the e2e tests on new cosmos-sdk.

@bryanchriswhite bryanchriswhite mentioned this pull request Feb 22, 2024
11 tasks
@bryanchriswhite
Copy link
Contributor Author

---
title: Migration branch logical structure
---

gitGraph

commit
branch migration/base-restore
commit id: "Delete off-chain pkgs and most of `testutils`"
commit id: "Infra migration squash (#367)"
commit id: "Squash merge all module migration branches (#s 365,371,378,373,382,391,388)"
commit id: "Checkout (copy) off-chain packages and off-chain testutils"
commit id: "Fix off-chain errors (get tests passing)"
commit id: "Checkout (copy) `docusaurus` from main"
commit id: "[For Each `module`]: `module` review improvements"
Loading

1. Look at the new TODO_IN_THIS_PR added
2. Need to prevent endless creation of new `-E` files on macOS by filtering for `*.go` in proto_fix_self_import
3. Requires running `gco api/poktroll/application/genesis.pulsar.go api/poktroll/application/query.pulsar.go api/poktroll/session/query.pulsar.go` after `make proto_regen`
4. Need to make sure `make go_develop_and_test` works
… re-run

$ gco api/poktroll/application/genesis.pulsar.go api/poktroll/application/query.pulsar.go api/poktroll/session/query.pulsar.go
$ find . -name "*.go-E*" | xargs rm
- Needed to use a local `helm-charts` repo
- Helm charts repo needed to be on branch `chore/v0.50-migration-celestia-da`
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
Makefile Outdated Show resolved Hide resolved
pkg/client/tx/client.go Outdated Show resolved Hide resolved
@Olshansk
Copy link
Member

@bryanchriswhite I got a bit of help from @okdas so this does have a dependency on the latest origin/chore/v0.50-migration-celestia-da branch in helm-charts. But I have:

  • Verified make go_develop_and_test
  • Verified make test_e2e
  • Verified make docusaurus_start
  • Used the python script below to do spot checks of various files for anything weird. The only accidental addition I found were the docs
  • The only I found was in config.yaml w.r.t genesis params
  • The only issue was really in making sure it all works on a mac
  • Diff from my review can be found via git diff 689123bd61e72ec6034d0acd9d5295ca1ff39044
  • If we encounter other things along the way, we'll fix them
import os
import subprocess
from dataclasses import dataclass


@dataclass
class FileStats:
    added: int
    removed: int
    total: int
    added_bool: bool
    removed_bool: bool
    rename: bool
    filename: str


def git_diff_numstat(filter_ext=None):
    """
    Executes git diff --numstat and returns the output.
    """
    result = subprocess.run(
        ["git", "diff", "--numstat", "main"], stdout=subprocess.PIPE
    )
    lines = result.stdout.decode("utf-8").split("\n")
    stats = []
    for line in lines:
        parts = line.split("\t")
        if len(parts) >= 3:
            added, removed, filename = parts
            stats.append((int(added), int(removed), filename))
    return stats


def file_length(filename):
    """
    Returns the total number of lines in a file.
    """
    with open(filename, "r", encoding="utf-8") as file:
        return len(file.readlines())


def filter_files(stats, exclude):
    """
    Filters files by extension and checks if a file was completely added or removed.
    """
    filtered_stats = []
    for added, removed, filename in stats:
        should_exclude = False
        for exc in exclude:
            if exc in filename:
                should_exclude = True
                break
        if should_exclude:
            continue
        total_lines = file_length(filename) if os.path.exists(filename) else 0
        removed_bool = (total_lines == 0) or (removed == total_lines)
        added_bool = (added == total_lines) and (not removed_bool)
        rename = "=>" in filename
        if rename:
            added_bool = False
            removed_bool = False

        filtered_stats.append(
            FileStats(
                added, removed, total_lines, added_bool, removed_bool, rename, filename
            )
        )
    return filtered_stats


def check_line_review(filename):
    """
    Hook for checking if a specific line in a file needs review.
    Placeholder for custom logic.
    """
    # Implement your custom check here.
    # Return True if the file needs review based on specific line content.
    return False


def sort_by_name(stats):
    """
    Sorts the stats by filename.
    """
    return sorted(stats, key=lambda x: x.filename.split("/")[-1])


def get_unique_filenames(file_stats_list):
    unique_filenames = set()  # Use a set to ensure uniqueness
    for file_stat in file_stats_list:
        unique_filenames.add(file_stat.filename.split("/")[-1])
    return list(unique_filenames)


def main():
    stats = git_diff_numstat()
    filtered_stats = filter_files(stats, ["sim", "pulsar.go", ".gen", "autocli"])

    removed_files = sort_by_name([stat for stat in filtered_stats if stat.removed_bool])
    added_files = sort_by_name([stat for stat in filtered_stats if stat.added_bool])
    renamed_files = sort_by_name([stat for stat in filtered_stats if stat.rename])
    major_changes_files = sort_by_name(
        [
            stat
            for stat in filtered_stats
            if stat.total > 0
            and (not stat.added_bool)
            and (not stat.removed_bool)
            and ((stat.added + stat.removed) / stat.total > 0.5)
        ]
    )

    option = 5

    if option == 1:
        for stat in added_files:
            print(stat)
        for unique_stat in get_unique_filenames(added_files):
            print(unique_stat)

    if option == 2:
        for stat in removed_files:
            print(stat)
        for unique_stat in get_unique_filenames(removed_files):
            print(unique_stat)

    if option == 3:
        for stat in renamed_files:
            print(stat)
        for unique_stat in get_unique_filenames(renamed_files):
            print(unique_stat)

    if option == 4:
        for stat in major_changes_files:
            print(stat)
        for unique_stat in get_unique_filenames(major_changes_files):
            print(unique_stat)

    if option == 5:
        before = [todo.split(":")[-1] for todo in TODO_BEFORE]
        after = [todo.split(":")[-1] for todo in TODO_AFTER]
        todos_missing = set(before) - set(after)
        for todo in todos_missing:
            print(todo)


TODO_BEFORE = [
    "./localnet/poktrolld/config/supplier1_stake_config.yaml:# TODO(@Olshansk, @okdas): Add more services (in addition to anvil) for apps and suppliers to stake for.",
    "./localnet/poktrolld/config/supplier1_stake_config.yaml:# TODO_TECHDEBT: svc1 below are only in place to make GetSession testable",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:# TODO_CONSIDERATION: We don't need this now, but it would be beneficial if the",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:  # TODO_CONSIDERATION: if we enforce DNS compliant names, it can potentially",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:  # TODO_IMPROVE: https is not currently supported, but this is how it could potentially look.",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:      # TODO_IMPROVE: This is not supported in code yet,",
    "./localnet/kubernetes/anvil.yaml:      # TODO: Add resource limits",
    "./localnet/kubernetes/celestia-rollkit.yaml:      # TODO: Add resource limits",
    "./localnet/kubernetes/celestia-rollkit.yaml:          # TODO(@okdas): Very scary line. Basically, waits until the node key (NJ3XILLTMVRXEZLUFZVHO5A) exists, signs the JWT and pushes it to k8s secret.",
    "./cmd/pocketd/cmd/config.go:// TODO_DISCUSS: Exporting publically for testing purposes only.",
    "./go.mod:// TODO_DOCUMENT(@okdas): Updating this line alone bumps the rest of the dependencies",
    "./tools/scripts/itest.sh:    # TODO_HACK: this is a workaround as it seems that make is striping the",
    "./app/app.go:	// TODO_CLEANUP: Find a way to centralize the use of `upokt` throughout the codebase",
    "./app/app.go:		// TODO_DISCUSS: Should we rename all instances of `Validator` to `Sequencer`?",
    "./app/app.go:	// TODO_BLOCKER(#322): Change this to `authtypes.NewModuleAddress(govtypes.ModuleName)`",
    "./app/app.go:	// TODO_TECHDEBT: Evaluate if this NB goes away after we upgrade to cosmos 0.5x",
    "./proto/pocket/shared/service.proto:// TODO_CLEANUP(@Olshansk): Add native optional identifiers once its supported; https://github.com/ignite/cli/issues/3698",
    "./proto/pocket/shared/service.proto:    // TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary",
    "./proto/pocket/shared/service.proto:    // TODO_RESEARCH: There is an opportunity for applications to advertise the max",
    "./proto/pocket/shared/service.proto:    // TODO_RESEARCH: There is an opportunity for supplier to advertise the min",
    "./proto/pocket/shared/service.proto:// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./proto/pocket/supplier/query.proto:  // TODO_IMPROVE: Rename to `Claims` (plural).",
    "./proto/pocket/supplier/query.proto:  // TODO_IMPROVE: Rename to `Proofs` (plural).",
    "./proto/pocket/supplier/params.proto:  // TODO_BLOCKER: Add proof-related submission window params",
    "./proto/pocket/supplier/params.proto:  // TODO_BLOCKER: Add claim-related submission window params",
    "./proto/pocket/service/tx.proto:// TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./proto/pocket/tokenomics/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/pocket/tokenomics/params.proto:// TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance parameters.",
    "./proto/pocket/tokenomics/params.proto:  // TODO_DOCUMENT(@Olshansk): Make sure to document the units of this parameter (or the map) once finalized.",
    "./proto/pocket/tokenomics/params.proto:  // TODO: Some parameters we should consider adding next:",
    "./Makefile:# TODO: Add other dependencies (ignite, docker, k8s, etc) here",
    "./Makefile:# TODO(@okdas): bump `golangci-lint` when we upgrade golang to 1.21+",
    "./Makefile:# TODO_DOCUMENT: All of the `check_` helpers can be installed differently depending",
    "./Makefile:# TODO_BLOCKER(@okdas): Figure out how to copy these over w/ a functional state.",
    "./Makefile:### TODOS ###",
    "./Makefile:# How do I use TODOs?",
    "./Makefile:# 	e.g. TODO_HACK: This is a hack, we need to fix it later",
    "./Makefile:#   e.g. TODO(@Olshansk): Automatically link to the Github user https://github.com/olshansk",
    "./Makefile:#   e.g. TODO_INVESTIGATE(#420): Automatically link this to github issue https://github.com/pokt-network/pocket/issues/420",
    "./Makefile:#   e.g. TODO_DISCUSS(@Olshansk, #420): Specific individual should tend to the action item in the specific ticket",
    "./Makefile:#   e.g. TODO_CLEANUP(core): This is not tied to an issue, or a person, but should only be done by the core team.",
    "./Makefile:#   e.g. TODO_CLEANUP: This is not tied to an issue, or a person, and can be done by the core team or external contributors.",
    "./Makefile:# TODO                        - General Purpose catch-all.",
    "./Makefile:# TODO_COMMUNITY              - A TODO that may be a candidate for outsourcing to the community.",
    "./Makefile:# TODO_DECIDE                 - A TODO indicating we need to make a decision and document it using an ADR in the future; https://github.com/pokt-network/pocket-network-protocol/tree/main/ADRs",
    "./Makefile:# TODO_TECHDEBT               - Not a great implementation, but we need to fix it later.",
    "./Makefile:# TODO_BLOCKER                - Similar to TECHDEBT, but of higher priority, urgency & risk prior to the next release",
    "./Makefile:# TODO_IMPROVE                - A nice to have, but not a priority. It's okay if we never get to this.",
    "./Makefile:# TODO_OPTIMIZE               - An opportunity for performance improvement if/when it's necessary",
    "./Makefile:# TODO_DISCUSS                - Probably requires a lengthy offline discussion to understand next steps.",
    "./Makefile:# TODO_INCOMPLETE             - A change which was out of scope of a specific PR but needed to be documented.",
    "./Makefile:# TODO_INVESTIGATE            - TBD what was going on, but needed to continue moving and not get distracted.",
    "./Makefile:# TODO_CLEANUP                - Like TECHDEBT, but not as bad.  It's okay if we never get to this.",
    "./Makefile:# TODO_HACK                   - Like TECHDEBT, but much worse. This needs to be prioritized",
    "./Makefile:# TODO_REFACTOR               - Similar to TECHDEBT, but will require a substantial rewrite and change across the codebase",
    "./Makefile:# TODO_CONSIDERATION          - A comment that involves extra work but was thoughts / considered as part of some implementation",
    "./Makefile:# TODO_CONSOLIDATE            - We likely have similar implementations/types of the same thing, and we should consolidate them.",
    "./Makefile:# TODO_ADDTEST                - Add more tests for a specific code section",
    "./Makefile:# TODO_DEPRECATE              - Code that should be removed in the future",
    "./Makefile:# TODO_RESEARCH               - A non-trivial action item that requires deep research and investigation being next steps can be taken",
    "./Makefile:# TODO_DOCUMENT		          - A comment that involves the creation of a README or other documentation",
    "./Makefile:# TODO_BUG                    - There is a known existing bug in this code",
    "./Makefile:# TODO_NB                     - An important note to reference later",
    "./Makefile:# TODO_DISCUSS_IN_THIS_COMMIT - SHOULD NEVER BE COMMITTED TO MASTER. It is a way for the reviewer of a PR to start / reply to a discussion.",
    "./Makefile:# TODO_IN_THIS_COMMIT         - SHOULD NEVER BE COMMITTED TO MASTER. It is a way to start the review process while non-critical changes are still in progress",
    "./Makefile:todo_list: ## List all the TODOs in the project (excludes vendor and prototype directories)",
    "./Makefile:	grep --exclude-dir={.git,vendor,./docusaurus} -r TODO  .",
    "./Makefile:todo_count: ## Print a count of all the TODOs in the project",
    "./Makefile:	grep --exclude-dir={.git,vendor,./docusaurus} -r TODO  . | wc -l",
    "./Makefile:todo_this_commit: ## List all the TODOs needed to be done in this commit",
    './Makefile:	grep --exclude-dir={.git,vendor,.vscode} --exclude=Makefile -r -e "TODO_IN_THIS_"',
    "./Makefile:# TODO_IMPROVE(#322): Improve once we decide how to handle parameter updates",
    "./docs/static/openapi.yml:                                  TODO_TECHDEBT: Name is currently unused but",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                    TODO_TECHDEBT: Name is currently unused but",
    "./docs/static/openapi.yml:                                      TODO_TECHDEBT: Name is currently unused",
    "./docs/static/openapi.yml:                                              TODO_RESEARCH: Should these be configs,",
    "./docs/static/openapi.yml:            TODO_TECHDEBT: Name is currently unused but acts as a reminder than",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                description: 'TODO_IMPROVE: Rename to `Claims` (plural).'",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                description: 'TODO_IMPROVE: Rename to `Proofs` (plural).'",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                        TODO_RESEARCH: Should these be configs,",
    "./docs/static/openapi.yml:                                  TODO_TECHDEBT: Name is currently unused but",
    "./docs/static/openapi.yml:                                          TODO_RESEARCH: Should these be configs,",
    "./docs/static/openapi.yml:                      TODO_DOCUMENT(@Olshansk): Make sure to document the units",
    "./docs/static/openapi.yml:                    TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                          TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:          TODO_TECHDEBT: Name is currently unused but acts as a reminder than an",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                            TODO_TECHDEBT: Name is currently unused but acts as",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                      TODO_RESEARCH: Should these be configs,",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                          TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                                  TODO_RESEARCH: Should these be configs, SLAs",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:          TODO_RESEARCH: Should these be configs, SLAs or something else? There",
    "./docs/static/openapi.yml:      TODO_RESEARCH: Should these be configs, SLAs or something else? There will",
    "./docs/static/openapi.yml:                    TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                            TODO_RESEARCH: Should these be configs, SLAs or",
    "./docs/static/openapi.yml:                TODO_RESEARCH: Should these be configs, SLAs or something else?",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                      TODO_RESEARCH: Should these be configs, SLAs or something",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:        description: 'TODO_IMPROVE: Rename to `Claims` (plural).'",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:        description: 'TODO_IMPROVE: Rename to `Proofs` (plural).'",
    "./docs/static/openapi.yml:                          TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                                  TODO_RESEARCH: Should these be configs, SLAs",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                                TODO_RESEARCH: Should these be configs, SLAs or",
    "./docs/static/openapi.yml:          TODO_DOCUMENT(@Olshansk): Make sure to document the units of this",
    "./docs/static/openapi.yml:      TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance",
    "./docs/static/openapi.yml:              TODO_DOCUMENT(@Olshansk): Make sure to document the units of this",
    "./.golangci.yml:# TODO_TECHDEBT: Enable each linter listed, 1 by 1, fixing issues as they appear.",
    "./.golangci.yml:  # TODO_CONSIDERATION/TODO_TECHDEBT: Perhaps we should prefer enforcing the best",
    "./.golangci.yml:  # TODO_IMPROVE: see https://golangci-lint.run/usage/configuration/#issues-configuration",
    "./Dockerfile.dev:# TODO_TECHDEBT(@okdas): Ports are not documented as they will soon be changed with a document to follow",
    "./.gitignore:# TODO_TECHDEBT(#126, @red-0ne):  Rename `smt` to `smt_stores` and make it configurable so it can be stored anywhere on this",
    "./.gitignore:# TODO_TECHDEBT: It seems that .dot files come and go so we need to figure out the root cause: https://github.com/pokt-network/poktroll/pull/177/files#r1392521547",
    "./.github/workflows-helpers/run-e2e-test.sh:# TODO_TECHDEBT(@okdas): also check readiness of appgate and relayminer to avoid false negatives due to race-conditions",
    "./.github/workflows/run-tests.yml:        # TODO_TECHDEBT: upgrade to the latest Ignite (the latest at the moment of creating a note is 0.28). Need to downgrade to fix CI pipelines. Might be done in scope of #240.",
    "./.github/workflows/reviewdog.yml:  # Makes sure that comments like TODO_IN_THIS_PR or TODO_IN_THIS_COMMIT block",
    "./.github/workflows/reviewdog.yml:    name: Check TODO_IN_THIS_",
    "./.github/workflows/reviewdog.yml:          pattern: TODO_IN_THIS_",
    "./.github/workflows/main-build.yml:        # TODO_TECHDEBT: upgrade to the latest Ignite (the latest at the moment of creating a note is 0.28). Need to downgrade to fix CI pipelines. Might be done in scope of #240.",
    "./.github/pull_request_template.md:- [ ] I have commented my code, updated documentation and left TODOs throughout the codebase",
    "./.github/ISSUE_TEMPLATE/issue.md:- [ ] **Comments**: Add/update TODOs and comments alongside the source code so it is easier to follow.",
    "./load-testing/tests/appGateServerEtherium.js:// TODO(@okdas): expand options to allow multiple stages:",
    "./e2e/tests/relay.feature:    # TODO_TEST(@Olshansk):",
    "./e2e/tests/init_test.go:	// TODO_TECHDEBT: rename to `poktrolld`.",
    "./e2e/tests/init_test.go:// TODO_TECHDEBT: rename `pocketd` to `poktrolld`.",
    "./e2e/tests/init_test.go:// TODO_IMPROVE: use `sessionId` and `supplierName` since those are the two values",
    "./e2e/tests/session_steps_test.go:	// TODO_TECHDEBT: Due to the speed of the blocks of the LocalNet sequencer, along with the small number",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: assert that the root hash of the claim contains the correct",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: add assertions about serviceId and appName and/or incorporate",
    "./e2e/tests/session_steps_test.go:	// TODO_TECHDEBT: Due to the speed of the blocks of the LocalNet sequencer, along with the small number",
    "./e2e/tests/session_steps_test.go:	// TODO_UPNEXT(@bryanchriswhite): assert that the root hash of the proof contains the correct",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: add assertions about serviceId and appName and/or incorporate",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE/TODO_COMMUNITY: hard-code a default set of RPC calls to iterate over for coverage.",
    "./e2e/tests/tokenomics.feature:        # TODO_UPNEXT(@Olshansk, #359): Expand on the two expectations below after integrating the tokenomics module",
    "./e2e/tests/session.feature:  # TODO_TECHDEBT(@Olshansk, #180): This test requires you to run `make supplier1_stake && make app1_stake` first",
    "./e2e/tests/session.feature:    # TODO_TECHDEBT: Once the session grace period is configurable, set it to 0 at the beginning of this test.",
    "./e2e/tests/session.feature:    # TODO_IMPROVE: And an event should be emitted...",
    "./e2e/tests/session.feature:    # TODO_IMPROVE: And an event should be emitted...",
    "./e2e/tests/session.feature:# TODO_BLOCKER(@red-0ne): Make sure to implement and validate this test",
    "./e2e/tests/node.go:// TODO_TECHDEBT(https://github.com/ignite/cli/issues/3737): We're using a combination",
    "./testutil/testrelayer/relays.go:	// TODO_BLOCKER: use canonical codec to serialize the relay",
    "./testutil/testrelayer/hash.go:// TODO_TECHDEBT(@h5law): Retrieve the relay hasher mechanism from the `smt` repo.",
    "./testutil/testchannel/drain.go:// TODO_CONSIDERATION: this function could easily take a timeout parameter and add",
    "./testutil/testpolylog/event.go:	// TODO_TECHDEBT/TODO_COMMUNITY: `strings.Title()` is deprecated. Follow",
    "./testutil/testkeyring/keyring.go:// TODO_CONSIDERATION: Returning a new PreGeneratedAccountIterator instead of",
    "./testutil/network/config.go:// TODO_UPNEXT(@bryanchriswhite #285): Remove _ prefix after DebugConfig is removed from network.go.",
    "./testutil/network/network.go:// TODO_CLEANUP: Refactor the genesis state helpers below to consolidate usage",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:// TODO_CLEANUP: Consolidate all of the helpers below to use shared business",
    "./testutil/network/network.go:// TODO_TECHDEBT: Reuse this helper in all test helpers where appropriate.",
    "./testutil/testclient/testtx/client.go:// TODO_CONSIDERATION: functions like these (NewLocalnetXXX) could probably accept",
    "./testutil/testclient/testtx/context.go:// TODO_IMPROVE: these mock constructor helpers could include parameters for the",
    "./testutil/testclient/localnet.go:	// TODO_IMPROVE: It would be nice if the value could be set correctly based",
    "./testutil/testproxy/relayerproxy.go:// TODO_TECHDEBT(@red-0ne): This function only supports JSON-RPC requests and",
    "./testutil/keeper/tokenomics.go:// TODO_TECHDEBT: Replace `AnyTimes` w/ `Times/MinTimes/MaxTimes` as the tests",
    "./testutil/keeper/session.go:	// TODO_TECHDEBT: See the comment at the bottom of this file explaining",
    "./testutil/keeper/session.go:	// TODO_IMPROVE: Use fixtures populated by block hashes and their corresponding",
    "./testutil/keeper/session.go:// TODO_TECHDEBT: Figure out how to vary the supplierKeep on a per test basis with exposing `SupplierKeeper publically`",
    "./x/shared/types/service.pb.go:// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./x/shared/types/service.pb.go:	// TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary",
    "./x/shared/helpers/service_configs.go:			// TODO: Validate configs once they are being used",
    "./x/supplier/types/message_create_claim.go:	// TODO_IMPROVE: Only checking to make sure a non-nil hash was provided for now, but we can validate the length as well.",
    "./x/supplier/types/message_stake_supplier.go:	// TODO_TECHDEBT: Centralize stake related verification and share across different parts of the source code",
    "./x/supplier/types/message_stake_supplier_test.go:// TODO_CLEANUP: This test has a lot of copy-pasted code from test to test.",
    "./x/supplier/types/message_stake_supplier_test.go:		// TODO_TEST: Need to add more tests around config types",
    "./x/supplier/types/query_validation.go:	// TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it",
    './x/supplier/types/query_validation.go:			Msg("TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it")',
    "./x/supplier/types/query_validation.go:	// TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it",
    "./x/supplier/types/query_validation.go:	// TODO_TECHDEBT: update function signature to receive a context.",
    "./x/supplier/types/query_validation.go:	logger := polylog.Ctx(context.TODO())",
    './x/supplier/types/query_validation.go:			Msg("TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it")',
    "./x/supplier/types/query.pb.go:	// TODO_IMPROVE: Rename to `Claims` (plural).",
    "./x/supplier/types/query.pb.go:	// TODO_IMPROVE: Rename to `Proofs` (plural).",
    "./x/supplier/types/message_submit_proof.go:// TODO_TECHDEBT: Call `msg.GetSessionHeader().ValidateBasic()` once its implemented",
    "./x/supplier/types/message_submit_proof.go:	// TODO_BLOCKER: attempt to deserialize the proof for additional validation.",
    "./x/supplier/types/genesis.go:		// TODO_TECHDEBT: Consider creating shared helpers across the board for stake validation,",
    "./x/supplier/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/simulation/submit_proof.go:		// TODO: Handling the SubmitProof simulation",
    "./x/supplier/simulation/stake_supplier.go:			// TODO: Update all stake message fields",
    "./x/supplier/simulation/stake_supplier.go:		// TODO: Handling the StakeSupplier simulation",
    "./x/supplier/simulation/unstake_supplier.go:		// TODO: Handling the UnstakeSupplier simulation",
    "./x/supplier/simulation/create_claim.go:		// TODO: Handling the CreateClaim simulation",
    "./x/supplier/keeper/query_claim_test.go:					// TODO_CONSIDERATION: factor out error message format strings to constants.",
    "./x/supplier/keeper/msg_server_unstake_supplier.go:// TODO(#73): Determine if an application needs an unbonding period after unstaking.",
    "./x/supplier/keeper/keeper.go:// TODO_TECHDEBT: Evaluate if this is still necessary after the upgrade to cosmos 0.5x",
    "./x/supplier/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: Prevent Claim upserts after the ClaimWindow is closed.",
    "./x/supplier/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: Validate the signature on the Claim message corresponds to the supplier before Upserting.",
    "./x/supplier/keeper/msg_server_create_claim.go:		TODO_INCOMPLETE:",
    "./x/supplier/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: check if this claim already exists and return an appropriate error",
    "./x/supplier/keeper/msg_server_create_claim.go:	// TODO: return the claim in the response.",
    "./x/supplier/keeper/query_supplier.go:		// TODO_TECHDEBT(#181): conform to logging conventions once established",
    "./x/supplier/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: Prevent Proof upserts after the tokenomics module has processes the respective session.",
    "./x/supplier/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: Validate the signature on the Proof message corresponds to the supplier before Upserting.",
    "./x/supplier/keeper/msg_server_submit_proof.go:		TODO_INCOMPLETE: Handling the message",
    "./x/supplier/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: check if this proof already exists and return an appropriate error",
    "./x/supplier/keeper/msg_server_submit_proof.go:	// TODO_UPNEXT(@Olshansk, #359): Call `tokenomics.SettleSessionAccounting()` here",
    "./x/supplier/keeper/msg_server_stake_supplier.go:	// TODO_IMPROVE: Should we avoid making this call if `coinsToDelegate` = 0?",
    "./x/supplier/keeper/supplier.go:// TODO_OPTIMIZE: Index suppliers by service so we can easily query `k.GetAllSupplier(ctx, Service)`",
    "./x/supplier/genesis.go:// TODO_TECHDEBT(@Olshansk): Remove existing claims from genesis.",
    "./x/supplier/client/cli/tx_create_claim.go:// TODO(@bryanchriswhite): Add unit tests for the CLI command when implementing the business logic.",
    './x/supplier/client/cli/query_claim_test.go:				// TODO_CONSIDERATION: prefer using "%q" in error format strings',
    "./x/supplier/client/cli/tx_create_claim_test.go:// TODO_NEXT(@bryanchriswhite #140): add comprehensive CLI test coverage for creating claims.",
    "./x/supplier/client/cli/tx_submit_proof_test.go:// TODO_NEXT(@bryanchriswhite #141): add comprehensive CLI test coverage for submitting proofs.",
    "./x/supplier/client/cli/tx_submit_proof.go:// TODO(@bryanchriswhite): Add unit tests for the CLI command when implementing the business logic.",
    "./x/supplier/client/cli/helpers_test.go:// TODO_TECHDEBT: This should not be hardcoded once the num blocks per session is configurable.",
    "./x/supplier/client/cli/helpers_test.go:// TODO_CONSIDERATION: perhaps this (and/or other similar helpers) can be refactored",
    "./x/supplier/client/cli/helpers_test.go:// TODO_TECHDEBT: refactor; this function has more than a single responsibility,",
    "./x/supplier/client/cli/helpers_test.go:				// TODO_TECHDEBT(#196): Move this outside of the forloop so that the test iteration is faster",
    "./x/supplier/client/cli/helpers_test.go:	// TODO_TECHDEBT: Forward the actual claim in the response once the response is updated to return it.",
    "./x/supplier/client/cli/helpers_test.go:	ctx := context.TODO()",
    "./x/supplier/client/cli/query_proof_test.go:// TODO_UPNEXT(@Olshansk): Add these tests back in after merging on-chain Proof persistence.",
    "./x/application/types/params.go:// TODO: Revisit default param values",
    "./x/application/types/genesis.go:		// TODO_TECHDEBT: Consider creating shared helpers across the board for stake validation,",
    "./x/application/types/message_stake_application.go:// TODO_TECHDEBT: See `NewMsgStakeSupplier` and follow the same pattern for the `Services` parameter",
    "./x/application/types/message_stake_application.go:	// TODO_TECHDEBT: Centralize stake related verification and share across different parts of the source code",
    "./x/application/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/simulation/unstake_application.go:// TODO(@Olshansk): Implement simulation for application staking",
    "./x/application/simulation/unstake_application.go:		// TODO: Handling the UnstakeApplication simulation",
    "./x/application/simulation/undelegate_from_gateway.go:		// TODO: Handling the UndelegateFromGateway simulation",
    "./x/application/simulation/delegate_to_gateway.go:		// TODO: Handling the DelegateToGateway simulation",
    "./x/application/simulation/stake_application.go:// TODO(@Olshansk): Implement simulation for application staking",
    "./x/application/simulation/stake_application.go:		// TODO: Handling the StakeApplication simulation",
    "./x/application/keeper/msg_server_stake_application.go:	// TODO_IMPROVE: Should we avoid making this call if `coinsToDelegate` = 0?",
    "./x/application/keeper/msg_server_unstake_application.go:// TODO(#73): Determine if an application needs an unbonding period after unstaking.",
    "./x/application/client/config/application_configs_reader.go:// TODO_DOCUMENT(@red-0ne): Add additional documentation on app config files.",
    "./x/service/types/tx.pb.go:// TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./x/service/types/message_add_service.go:	// TODO_TECHDEBT: Add a validate basic function to the `Service` object",
    "./x/service/types/params.go:// TODO_BLOCKER: Revisit default param values for service fee",
    "./x/service/types/params.go:	// TODO(@h5law): Look into better validation",
    "./x/service/types/relay.go:	// TODO_FUTURE: if a client gets a response with an invalid/incomplete",
    "./x/service/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/service/simulation/add_service.go:		// TODO: Handling the AddService simulation",
    "./x/tokenomics/types/params.go:	// TODO: Determine the default value",
    "./x/tokenomics/types/params.pb.go:// TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance parameters.",
    "./x/tokenomics/types/params.pb.go:	// TODO_DOCUMENT(@Olshansk): Make sure to document the units of this parameter (or the map) once finalized.",
    "./x/tokenomics/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/tokenomics/simulation/update_params.go:		// TODO: Handling the UpdateParams simulation",
    "./x/tokenomics/keeper/settle_session_accounting.go:	// TODO_TECHDEBT: Retrieve this from the SMT package",
    "./x/tokenomics/keeper/settle_session_accounting.go:// TODO_BLOCKER(@Olshansk): Is there a way to limit who can call this function?",
    "./x/tokenomics/keeper/settle_session_accounting.go:		// TODO_BLOCKER(@Olshansk, @RawthiL): The application was over-serviced in the last session so it basically",
    "./x/tokenomics/keeper/settle_session_accounting_test.go:// TODO_TEST(@bryanchriswhite, @Olshansk): Improve tokenomics tests (i.e. checking balances)",
    './x/tokenomics/keeper/settle_session_accounting_test.go:	t.Skip("TODO_BLOCKER(@Olshansk): Add E2E and integration tests so we validate the actual state changes of the bank & account keepers.")',
    './x/tokenomics/keeper/settle_session_accounting_test.go:	t.Skip("TODO_BLOCKER(@Olshansk): Add E2E and integration tests so we validate the actual state changes of the bank & account keepers.")',
    "./x/tokenomics/keeper/keeper.go:// TODO_TECHDEBT(#240): See `x/nft/keeper.keeper.go` in the Cosmos SDK on how",
    "./x/tokenomics/keeper/msg_server_update_params.go:	// TODO_BLOCKER(@Olshansk): How do we validate this is the same address that signed the request?",
    "./x/tokenomics/keeper/msg_server_update_params.go:// TODO_IMPROVE: We are following a pattern from `Cosmos v0.50` that does not",
    "./x/tokenomics/client/cli/tx_update_params.go:// TODO_BLOCKER(#322): Update the CLI once we determine settle on how to maintain and update parameters.",
    "./x/tokenomics/client/cli/tx_update_params.go:// TODO_TECHDEBT(@red-0ne): Add a config file for on-chain parameters.",
    "./x/gateway/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/gateway/module_simulation.go:	// TODO: Determine the simulation weight value",
    "./x/gateway/simulation/unstake_gateway.go:		// TODO: Handling the UnstakeGateway simulation",
    "./x/gateway/simulation/stake_gateway.go:		// TODO: Handling the StakeGateway simulation",
    "./x/gateway/keeper/msg_server_unstake_gateway.go:// TODO_TECHDEBT(#49): Add un-delegation from delegated apps",
    "./x/gateway/keeper/msg_server_unstake_gateway.go:// TODO(#73): Determine if a gateway needs an unbonding period after unstaking.",
    "./x/session/types/session_header.go:// TODO_TECHDEBT: Make sure this is used everywhere we validate components",
    "./x/session/types/session_header.go:	// TODO_TECHDEBT: Introduce a `SessionId#ValidateBasic` method.",
    "./x/session/types/session_header.go:	// TODO_TECHDEBT: Introduce a `Service#ValidateBasic` method.",
    "./x/session/keeper/session_hydrator.go:// TODO_TECHDEBT(#377): The business logic in this file assume that genesis has",
    "./x/session/keeper/session_hydrator.go:// TODO_BLOCKER(#21): Make these configurable governance param",
    "./x/session/keeper/session_hydrator.go:	// TODO_BLOCKER: Remove direct usage of these constants in helper functions",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT: Add a test if `blockHeight` is ahead of the current chain or what this node is aware of",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT: In the future, we will need to valid that the Service is a valid service depending on whether",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT(@Olshansk, @bryanchriswhite): Need to retrieve the suppliers at SessionStartBlockHeight,",
    "./x/session/keeper/session_hydrator.go:	// TODO(@bryanchriswhite): Investigate if `BlockClient` + `ReplayObservable` where `N = SessionLength` could be used here.`",
    "./x/session/keeper/session_hydrator.go:		// TODO_OPTIMIZE: If `supplier.Services` was a map[string]struct{}, we could eliminate `slices.Contains()`'s loop",
    "./x/session/keeper/session_hydrator.go:// TODO_INVESTIGATE: We are using a `Go` native implementation for a pseudo-random number generator. In order",
    "./x/session/keeper/query_get_session_test.go:	// TODO_TECHDEBT(#377): These test assume that the genesis block has a height of 0,",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT(#377): All the tests in this file assume genesis has a block",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT: Expand these tests to account for application joining/leaving the network at different heights as well changing the services they support",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add tests for when:",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT: Expand these tests to account for supplier joining/leaving the network at different heights as well changing the services they support",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add this test once we make the num suppliers per session configurable",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add tests for when:",
    "./pkg/crypto/rings/cache.go:		// TODO_HACK: We are adding the appAddress twice because a ring",
    "./pkg/crypto/rings/cache.go:		// TODO_TECHDEBT: implement and use `polylog.Event#Strs([]string)` instead of formatting here.",
    "./pkg/retry/retry_test.go:/* TODO_TECHDEBT: improve this test:",
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    "./pkg/retry/retry_test.go:// TODO_TECHDEBT: assert that the retry loop exits when the context is closed.",
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    "./pkg/relayer/cmd/cmd.go:// TODO_CONSIDERATION: Consider moving all flags defined in `/pkg` to a `flags.go` file.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT(#256): Remove unneeded cosmos flags.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT: add logger level and output options to the config.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT: populate logger from the config (ideally, from viper).",
    "./pkg/relayer/cmd/cmd.go:	// TODO(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/relayer/cmd/cmd.go:	// TODO(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/relayer/cmd/cmd.go:			// TODO_TECHDEBT: populate this from some config.",
    "./pkg/relayer/proxy/metrics.go:	// TODO(@okdas): add `response_size_bytes`. Postponing to avoid new HTTP server writer implementation;",
    "./pkg/relayer/proxy/proxy.go:// TODO_TEST: Have tests for the relayer proxy.",
    "./pkg/relayer/proxy/proxy.go:// TODO_TEST: Add tests for validating these configurations.",
    "./pkg/relayer/proxy/synchronous.go:	// TODO_IMPROVE(red-0ne): Checking that the originHost is currently done by",
    "./pkg/relayer/proxy/synchronous.go:	// TODO_TECHDEBT(red-0ne): Currently, the relayer proxy is responsible for verifying",
    "./pkg/relayer/proxy/proxy_test.go:				// TODO_EXTEND: Consider adding support for non JSON RPC services in the future",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:				// TODO_EXTEND: Consider adding support for non JSON RPC services in the future",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/server_builder.go:		// TODO(@h5law): Implement a switch that handles all synchronous",
    "./pkg/relayer/proxy/relay_signer.go:// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/proxy/relay_verifier.go:	// TODO_INVESTIGATE: Revisit the assumptions above at some point in the future, but good enough for now.",
    "./pkg/relayer/config/types.go:	// TODO: Support other proxy types: HTTPS, TCP, UNIX socket, UDP, QUIC, WebRTC ...",
    "./pkg/relayer/config/types.go:// TODO_DOCUMENT(@red-0ne): Add proper README documentation for yaml config files",
    "./pkg/relayer/config/types.go:	// TODO_TECHDEBT(@red-0ne): Pass the authentication to the service instance",
    "./pkg/relayer/config/types.go:	// TODO_TECHDEBT(@red-0ne): Add these headers to the forwarded request",
    "./pkg/relayer/config/relayminer_configs_reader_test.go:		// TODO_NB: Test for supplier and proxy types mismatch once we have more",
    "./pkg/relayer/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/relayer/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/interface.go:// TODO_TECHDEBT: add architecture diagrams covering observable flows throughout",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT: Either add a mechanism to wait for draining to complete",
    "./pkg/relayer/interface.go:	// TODO_DISCUSS: This function should not be part of the interface as it is an optimization",
    "./pkg/relayer/protocol/block_heights.go:// TODO_TEST(@bryanchriswhite): Add test coverage and more logs",
    "./pkg/relayer/protocol/block_heights.go:			// TODO_TECHDEBT: add polylog.Event#Hex() type method.",
    "./pkg/relayer/protocol/block_heights.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/protocol/block_heights.go:// TODO_TEST(@bryanchriswhite): Add test coverage and more logs",
    "./pkg/relayer/protocol/block_heights.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/protocol/difficulty.go:// TODO_BLOCKER: Revisit this part of the algorithm after initial TestNet Launch.",
    "./pkg/relayer/protocol/difficulty.go:// TODO_TEST: Add extensive tests for the core relay mining business logic.",
    "./pkg/relayer/miner/miner.go:	// TODO_TECHDEBT(@h5law): Retrieve the relay hasher mechanism from the `smt` repo.",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: query on-chain governance params once available.",
    "./pkg/relayer/miner/miner.go:// TODO_BLOCKER: The relay hashing and relay difficulty mechanisms & values must come",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: marshal using canonical codec.",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: Centralize the logic of hashing a relay. It should live",
    "./pkg/relayer/miner/miner.go:	// TODO_IMPROVE: We need to hash the key; it would be nice if smst.Update() could do it",
    "./pkg/relayer/miner/gen/gen_fixtures.go:// TODO_TECHDEBT: remove once marshaling using canonical codec.",
    "./pkg/relayer/miner/gen/gen_fixtures.go:			// TODO_BLOCKER: use canonical codec.",
    "./pkg/relayer/miner/gen/gen_fixtures.go:		// TODO_BLOCKER: marshal using canonical codec.",
    "./pkg/relayer/session/sessiontree.go:// TODO_TEST: Add tests to the sessionTree.",
    "./pkg/relayer/session/sessiontree_test.go:// TODO: Add tests to the sessionTree logic",
    "./pkg/relayer/session/session.go:// TODO_TEST: Add tests to the relayerSessionsManager.",
    "./pkg/relayer/session/session.go:// TODO_TECHDEBT: Either add a mechanism to wait for draining to complete",
    "./pkg/relayer/session/session.go:// TODO_TEST: Add unit tests to validate these configurations.",
    "./pkg/relayer/session/session.go:	// TODO_CONSIDERATION: if we get the session header from the response, there",
    "./pkg/relayer/session/session.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/relayer/session/session.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/relayer/session/proof.go:	// TODO_TECHDEBT: pass failed submit proof sessions to some retry mechanism.",
    "./pkg/relayer/session/proof.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/session/proof.go:		// TODO_BLOCKER: The block that'll be used as a source of entropy for which",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: pass failed create claim sessions to some retry mechanism.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: refactor this logic to a shared package.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: query the on-chain governance SessionGracePeriod parameter once available.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/session/session_test.go:	// TODO_TECHDEBT: assumes claiming at sessionGracePeriodEndBlockHeight is valid.",
    "./pkg/relayer/session/session_test.go:	// TODO_IMPROVE: ensure correctness of persisted session trees here.",
    "./pkg/relayer/session/session_test.go:	// TODO_TECHDEBT: assumes proving at sessionGracePeriodEndBlockHeight + 1 is valid.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#256): Remove unneeded cosmos flags.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT: add logger level and output options to the config.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT: populate logger from the config (ideally, from viper).",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/appgateserver/server.go:	// TODO_CONSIDERATION: Use app.listeningEndpoint scheme to determine which",
    "./pkg/appgateserver/server.go:// TODO_TECHDEBT: Revisit the requestPath above based on the SDK that'll be exposed in the future.",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO(@h5law, @red0ne): Add support for asynchronous relays, and switch on",
    "./pkg/appgateserver/server.go:	// TODO_RESEARCH: Should this be started in a goroutine, to allow for",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/config/appgate_configs_reader.go:// TODO_DOCUMENT(@red-0ne): Add proper README documentation for yaml config files.",
    "./pkg/appgateserver/endpoint_selector.go:// TODO_IMPROVE: This implements a naive greedy approach that defaults to the",
    "./pkg/appgateserver/endpoint_selector.go:// TODO(@h5law): Look into different endpoint selection depending on their suitability.",
    "./pkg/appgateserver/synchronous.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/polylog/polyzero/options.go:// TODO_TEST/TODO_COMMUNITY: add test coverage and example usage around this method.",
    "./pkg/polylog/polyzero/logger.go:// TODO_IMPROVE/TODO_COMMUNITY: Add `NewProductionLogger`, `NewDevelopmentLogger`,",
    "./pkg/polylog/polyzero/logger.go:// TODO_TEST/TODO_COMMUNITY: add support for #UpdateContext() and update this",
    "./pkg/polylog/polyzero/logger.go:// TODO_TEST/TODO_COMMUNITY: add coverage for `polyzero.Logger#WithContext()`.",
    "./pkg/polylog/polyzero/levels.go:// TODO_TECHDEBT: support a Disabled level.",
    "./pkg/polylog/polyzero/logger_test.go:	// TODO_CONSIDERATION: redesign the test helper to support regular expressions",
    "./pkg/polylog/polyzero/logger_test.go:		// TODO_TECHDEBT: figure out why this fails in CI but not locally,",
    "./pkg/polylog/interface.go:// TODO_CONSIDERATION: this may be a good candidate package for extraction to",
    "./pkg/polylog/interface.go:// TODO_INVESTIGATE: check whether the pkg dependency tree includes all logging",
    "./pkg/polylog/interface.go:	// TODO_IMPROVE/TODO_COMMUNITY: support #UpdateContext() and  update this",
    "./pkg/polylog/interface.go:// TODO_IMPROVE/TODO_COMMUNITY: support #Dict(), #Stack(), #Any() type methods.",
    "./pkg/polylog/interface.go:// TODO_IMPROVE/TODO_COMMUNITY: support #Ctx() and #GetCtx() methods.",
    "./pkg/polylog/interface.go:	// TODO_TEST: ensure implementation tests cover this: do not add a field",
    "./pkg/polylog/interface.go:	// TODO_UPNEXT(@bryanchriswhite): ensure implementations' godoc examples cover",
    "./pkg/polylog/interface.go:	// TODO_UPNEXT(@bryanchriswhite): ensure implementations' godoc examples cover",
    "./pkg/sdk/sdk.go:	// TODO_TECHDEBT: Add a size limit to the cache.",
    "./pkg/sdk/deps_builder.go:	// TODO_TECHDEBT: Configure the grpc client options from the config.",
    "./pkg/sdk/application.go:	// TODO_CONSIDERATION: Look into updating the on-chain `QueryAllApplicationRequest` for filtering",
    "./pkg/sdk/send_relay.go:	// TODO_TECHDEBT: if the RelayResponse is an internal error response, we should not verify the signature",
    "./pkg/sdk/send_relay.go:	// TODO_IMPROVE: Add more logging & telemetry so we can get visibility and signal into",
    "./pkg/sdk/errors.go:// TODO_TECHDEBT: Do a source code wise find-replace using regex pattern match",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/deps/config/suppliers.go:// TODO_TECHDEBT(#256): Remove this function once the as we may no longer",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/observable/channel/observer.go:	// TODO_DISCUSS: what should this be? should it be configurable? It seems to be most",
    "./pkg/observable/channel/observer.go:			// TODO_IMPROVE/TODO_CONSIDERATION: this is where we would implement",
    "./pkg/observable/channel/observable.go:// TODO_DISCUSS: what should this be? should it be configurable? It seems to be most",
    "./pkg/observable/channel/observer_manager.go:// TODO_CONSIDERATION: Consider whether `observerManager` and `Observable` should remain as separate",
    "./pkg/observable/channel/observer_manager.go:// TODO_CONSIDERATION: if this were a generic implementation, we wouldn't need",
    "./pkg/observable/channel/observer_manager.go:		// TODO_TECHDEBT: since this synchronously notifies all observers in a loop,",
    "./pkg/observable/channel/replay.go:// TODO_CONSIDERATION: perhaps this should be parameterized.",
    "./pkg/observable/channel/replay.go:	// TODO_IMPROVE: this assumes that the observer channel buffer is large enough",
    "./pkg/observable/channel/observable_test.go:	// NB: see TODO_INCOMPLETE comment below",
    "./pkg/observable/channel/observable_test.go:		// TODO_INCOMPLETE(#81): publisher channels which are full are proving harder to test",
    "./pkg/observable/channel/observable_test.go:// TODO_INCOMPLETE/TODO_TECHDEBT: Implement `TestChannelObservable_ConcurrentSubUnSub`",
    "./pkg/observable/channel/observable_test.go:// TODO_TECHDEBT/TODO_INCOMPLETE: add coverage for active observers closing when publishCh closes.",
    "./pkg/client/interface.go:// TODO_IMPROVE: Avoid depending on cosmos-sdk structs or interfaces; add Pocket",
    "./pkg/client/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/client/interface.go:// TODO_CONSIDERATION: the cosmos-sdk CLI code seems to use a cometbft RPC client",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `blocksReplayLimit` field to the blockClient",
    "./pkg/client/tx/client.go:// TODO_TECHDEBT(@bryanchriswhite/@h5law): Refactor this to use the EventsReplayClient",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT: this should be configurable & integrated w/ viper, flags, etc.",
    "./pkg/client/tx/client.go:	// TODO_CONSIDERATION: move this into a #Start() method",
    "./pkg/client/tx/client.go:	// TODO_CONSIDERATION: move this into a #Start() method",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT: this should be configurable",
    "./pkg/client/tx/client.go:		// TODO_INVESTIGATE: it seems like it may not be possible for the",
    './pkg/client/tx/client_integration_test.go:		"TODO_TECHDEBT: this test depends on some setup which is currently not implemented in this test: staked application and servicer with matching services",',
    "./pkg/client/tx/client_test.go:// TODO_TECHDEBT: add coverage for the transactions client handling an events bytes error either.",
    "./pkg/client/tx/client_test.go:		// TODO_TECHDEBT: add coverage for this error case",
    "./pkg/client/tx/client_test.go:// TODO_INCOMPLETE: add coverage for async error; i.e. insufficient gas or on-chain error",
    "./pkg/client/tx/client_test.go:// TODO_TECHDEBT: add coverage for sending multiple messages simultaneously",
    "./pkg/client/delegation/client.go:	// TODO_HACK(#280): Instead of listening to all events and doing a verbose",
    "./pkg/client/delegation/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `redelegationsReplayLimit` field to the",
    "./pkg/client/delegation/redelegation.go:// TODO_TECHDEBT(#280): Refactor to use merged observables and subscribe to",
    "./pkg/client/delegation/client_integration_test.go:// TODO(@h5law): Figure out how to use real components of the localnet",
    "./pkg/client/delegation/client_integration_test.go:// TODO_UPNEXT(@h5law): Figure out the correct way to subscribe to events on the",
    './pkg/client/delegation/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    "./pkg/client/supplier/client.go:	// TODO_IMPROVE: log details related to what & how much is being proven",
    "./pkg/client/supplier/client.go:	// TODO_IMPROVE: log details related to how much is claimed",
    './pkg/client/supplier/client_integration_test.go:	t.Skip("TODO_TECHDEBT: this test depends on some setup which is currently not implemented in this test: staked application and servicer with matching services")',
    "./pkg/client/supplier/client_test.go:	// TODO_IMPROVE: this could be rewritten to record the times at which",
    "./pkg/client/supplier/client_test.go:	// TODO_IMPROVE: this could be rewritten to record the times at which",
    "./pkg/client/events/websocket/dialer.go:	// TODO_IMPROVE: check http response status and potential err",
    "./pkg/client/events/websocket/dialer.go:	// TODO_TECHDEBT: add test coverage and ensure support for a 3xx responses",
    "./pkg/client/events/query_client_test.go:// TODO_INVESTIGATE: why this test fails?",
    './pkg/client/events/query_client_test.go:	t.Skip("TODO_INVESTIGATE: why this test ")',
    "./pkg/client/events/query_client_test.go:// TODO_TECHDEBT: add test coverage for multiple observers with distinct and overlapping queries",
    './pkg/client/events/query_client_test.go:	t.Skip("TODO_TECHDEBT: add test coverage for multiple observers with distinct and overlapping queries")',
    "./pkg/client/events/query_client_test.go:			// TODO_IMPROVE: to make this test helper more generic, it should accept",
    "./pkg/client/events/query_client_test.go:		// TODO_THIS_COMMIT: is this necessary?",
    "./pkg/client/events/replay_client.go:	// TODO_REFACTOR(@h5law): Look into making this a regular observable as",
    "./pkg/client/events/replay_client.go:	// TODO_REFACTOR(@h5law): Look into making this a regular observable as",
    "./pkg/client/events/query_client.go:// TODO_TECHDEBT: the cosmos-sdk CLI code seems to use a cometbft RPC client",
    "./pkg/client/events/query_client.go:			// TODO_CONSIDERATION: should we close the publish channel here too?",
    "./pkg/client/block/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `blocksReplayLimit` field to the blockClient",
    "./pkg/client/block/client_integration_test.go:// TODO(#255): Refactor this integration test to use an in-memory simulated network",
    './pkg/client/block/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    './pkg/client/block/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    "./pkg/client/block/client_test.go:TODO_TECHDEBT/TODO_CONSIDERATION(#XXX): this duplicates the unexported block event",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this function",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this function",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/payloads/jsonrpc.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/partials_test.go:// TODO(@h5law): Expand coverage with more test cases when more request types",
    "./pkg/partials/partial.go:// TODO_BLOCKER(@h5law): This function currently only supports JSON-RPC and must",
    "./pkg/partials/partial.go:	// TODO(@h5law): Handle other request types",
]

TODO_AFTER = [
    "./localnet/poktrolld/config/supplier1_stake_config.yaml:# TODO(@Olshansk, @okdas): Add more services (in addition to anvil) for apps and suppliers to stake for.",
    "./localnet/poktrolld/config/supplier1_stake_config.yaml:# TODO_TECHDEBT: svc1 below are only in place to make GetSession testable",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:# TODO_CONSIDERATION: We don't need this now, but it would be beneficial if the",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:  # TODO_CONSIDERATION: if we enforce DNS compliant names, it can potentially",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:  # TODO_IMPROVE: https is not currently supported, but this is how it could potentially look.",
    "./localnet/poktrolld/config/relayminer_config_full_example.yaml:      # TODO_IMPROVE: This is not supported in code yet,",
    "./localnet/kubernetes/anvil.yaml:      # TODO: Add resource limits",
    "./localnet/kubernetes/celestia-rollkit.yaml:      # TODO: Add resource limits",
    "./tools/scripts/itest.sh:    # TODO_HACK: this is a workaround as it seems that make is striping the",
    "./app/app.go:	// TODO_CLEANUP: Find a way to centralize the use of `upokt` throughout the codebase",
    "./app/app.go:		// TODO_BLOCKER(@Olshansk): Revisit the advanced configuration and understand if/where it fits in Shannon",
    "./proto/poktroll/proof/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/poktroll/shared/service.proto:// TODO_CLEANUP(@Olshansk): Add native optional identifiers once its supported; https://github.com/ignite/cli/issues/3698",
    "./proto/poktroll/shared/service.proto:  // TODO_TECHDEBT: Name is currently unused but acts as a reminder that an optional onchain representation of the service is necessary",
    "./proto/poktroll/shared/service.proto:  // TODO_RESEARCH: There is an opportunity for applications to advertise the max",
    "./proto/poktroll/shared/service.proto:  // TODO_RESEARCH: There is an opportunity for supplier to advertise the min",
    "./proto/poktroll/shared/service.proto:// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./proto/poktroll/supplier/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/poktroll/application/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    './proto/poktroll/application/event.proto:  // TODO: Check if this tag is relevant for events: (gogoproto.jsontag) = "app_address"',
    "./proto/poktroll/service/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/poktroll/service/tx.proto:// TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./proto/poktroll/service/query.proto:  // TODO: We could support getting services by name.",
    "./proto/poktroll/tokenomics/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/poktroll/tokenomics/params.proto:// TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance parameters.",
    "./proto/poktroll/tokenomics/params.proto:  // TODO_DOCUMENT(@Olshansk): Make sure to document the units of this parameter (or the map) once finalized.",
    "./proto/poktroll/tokenomics/params.proto:  // TODO: Some parameters we should consider adding next:",
    "./proto/poktroll/gateway/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "./proto/poktroll/session/tx.proto:  // TODO_IMPROVE(#322): The requirement to provide all params is adopted from the",
    "Binary file ./bin/poktrolld matches",
    "Binary file ./bin/pocketd matches",
    "./Makefile:# TODO: Add other dependencies (ignite, docker, k8s, etc) here",
    "./Makefile:# TODO(@okdas): bump `golangci-lint` when we upgrade golang to 1.21+",
    "./Makefile:# TODO_DOCUMENT: All of the `check_` helpers can be installed differently depending",
    "./Makefile:# TODO_IN_THIS_PR: Understand why Olshansky needs to run `gco api/poktroll/application/genesis.pulsar.go api/poktroll/application/query.pulsar.go api/poktroll/session/query.pulsar.go`",
    "./Makefile:# TODO_IN_THIS_PR: Filter for `*.go` files",
    "./Makefile:proto_fix_self_import: ## TODO_IN_THIS_PR: explain",
    "./Makefile:# TODO_IN_THIS_PR: Can we consolidate this with `proto_clean` and use proper make targets instead of $(MAKE)?",
    "./Makefile:proto_clean_pulsar: ## TODO_IN_THIS_PR: explain...",
    "./Makefile:# TODO_IN_THIS_PR: Unclear where/when we shold be calling `proto_clean_pulsar`",
    "./Makefile:# TODO_TECHDEBT: Currently the stake => power calculation is constant; however, cosmos-sdk",
    "./Makefile:# TODO_BLOCKER(@okdas): Figure out how to copy these over w/ a functional state.",
    "./Makefile:## TODO_IN_THIS_PR: Make this work again",
    "./Makefile:### TODOS ###",
    "./Makefile:# How do I use TODOs?",
    "./Makefile:# 	e.g. TODO_HACK: This is a hack, we need to fix it later",
    "./Makefile:#   e.g. TODO(@Olshansk): Automatically link to the Github user https://github.com/olshansk",
    "./Makefile:#   e.g. TODO_INVESTIGATE(#420): Automatically link this to github issue https://github.com/pokt-network/pocket/issues/420",
    "./Makefile:#   e.g. TODO_DISCUSS(@Olshansk, #420): Specific individual should tend to the action item in the specific ticket",
    "./Makefile:#   e.g. TODO_CLEANUP(core): This is not tied to an issue, or a person, but should only be done by the core team.",
    "./Makefile:#   e.g. TODO_CLEANUP: This is not tied to an issue, or a person, and can be done by the core team or external contributors.",
    "./Makefile:# TODO                        - General Purpose catch-all.",
    "./Makefile:# TODO_COMMUNITY              - A TODO that may be a candidate for outsourcing to the community.",
    "./Makefile:# TODO_DECIDE                 - A TODO indicating we need to make a decision and document it using an ADR in the future; https://github.com/pokt-network/pocket-network-protocol/tree/main/ADRs",
    "./Makefile:# TODO_TECHDEBT               - Not a great implementation, but we need to fix it later.",
    "./Makefile:# TODO_BLOCKER                - Similar to TECHDEBT, but of higher priority, urgency & risk prior to the next release",
    "./Makefile:# TODO_IMPROVE                - A nice to have, but not a priority. It's okay if we never get to this.",
    "./Makefile:# TODO_OPTIMIZE               - An opportunity for performance improvement if/when it's necessary",
    "./Makefile:# TODO_DISCUSS                - Probably requires a lengthy offline discussion to understand next steps.",
    "./Makefile:# TODO_INCOMPLETE             - A change which was out of scope of a specific PR but needed to be documented.",
    "./Makefile:# TODO_INVESTIGATE            - TBD what was going on, but needed to continue moving and not get distracted.",
    "./Makefile:# TODO_CLEANUP                - Like TECHDEBT, but not as bad.  It's okay if we never get to this.",
    "./Makefile:# TODO_HACK                   - Like TECHDEBT, but much worse. This needs to be prioritized",
    "./Makefile:# TODO_REFACTOR               - Similar to TECHDEBT, but will require a substantial rewrite and change across the codebase",
    "./Makefile:# TODO_CONSIDERATION          - A comment that involves extra work but was thoughts / considered as part of some implementation",
    "./Makefile:# TODO_CONSOLIDATE            - We likely have similar implementations/types of the same thing, and we should consolidate them.",
    "./Makefile:# TODO_ADDTEST                - Add more tests for a specific code section",
    "./Makefile:# TODO_DEPRECATE              - Code that should be removed in the future",
    "./Makefile:# TODO_RESEARCH               - A non-trivial action item that requires deep research and investigation being next steps can be taken",
    "./Makefile:# TODO_DOCUMENT		          - A comment that involves the creation of a README or other documentation",
    "./Makefile:# TODO_BUG                    - There is a known existing bug in this code",
    "./Makefile:# TODO_NB                     - An important note to reference later",
    "./Makefile:# TODO_DISCUSS_IN_THIS_COMMIT - SHOULD NEVER BE COMMITTED TO MASTER. It is a way for the reviewer of a PR to start / reply to a discussion.",
    "./Makefile:# TODO_IN_THIS_COMMIT         - SHOULD NEVER BE COMMITTED TO MASTER. It is a way to start the review process while non-critical changes are still in progress",
    "./Makefile:todo_list: ## List all the TODOs in the project (excludes vendor and prototype directories)",
    "./Makefile:	grep --exclude-dir={.git,vendor,./docusaurus} -r TODO  .",
    "./Makefile:todo_count: ## Print a count of all the TODOs in the project",
    "./Makefile:	grep --exclude-dir={.git,vendor,./docusaurus} -r TODO  . | wc -l",
    "./Makefile:todo_this_commit: ## List all the TODOs needed to be done in this commit",
    './Makefile:	grep --exclude-dir={.git,vendor,.vscode} --exclude=Makefile -r -e "TODO_IN_THIS_"',
    "./Makefile:# TODO_TECHDEBT: One of the accounts involved in this command",
    "./Makefile:# TODO_IMPROVE(#322): Improve once we decide how to handle parameter updates",
    "./docs/static/openapi.yml:                            TODO_TECHDEBT: Name is currently unused but acts as",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                                TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                              TODO_TECHDEBT: Name is currently unused but acts",
    "./docs/static/openapi.yml:                          TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                          TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:            TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:              TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./docs/static/openapi.yml:                            TODO_TECHDEBT: Name is currently unused but acts as",
    "./docs/static/openapi.yml:                                    TODO_RESEARCH: Should these be configs, SLAs",
    "./docs/static/openapi.yml:                    TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:          TODO_TECHDEBT: Name is currently unused but acts as a reminder than an",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                        TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                      TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                  TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:      TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./docs/static/openapi.yml:          TODO_RESEARCH: Should these be configs, SLAs or something else? There",
    "./docs/static/openapi.yml:      TODO_RESEARCH: Should these be configs, SLAs or something else? There will",
    "./docs/static/openapi.yml:                TODO_RESEARCH: Should these be configs, SLAs or something else?",
    "./docs/static/openapi.yml:              TODO_TECHDEBT: Name is currently unused but acts as a reminder",
    "./docs/static/openapi.yml:                      TODO_RESEARCH: Should these be configs, SLAs or something",
    "./docs/static/openapi.yml:                    TODO_TECHDEBT: Name is currently unused but acts as a",
    "./docs/static/openapi.yml:                            TODO_RESEARCH: Should these be configs, SLAs or",
    "./.golangci.yml:# TODO_TECHDEBT: Enable each linter listed, 1 by 1, fixing issues as they appear.",
    "./.golangci.yml:  # TODO_CONSIDERATION/TODO_TECHDEBT: Perhaps we should prefer enforcing the best",
    "./.golangci.yml:  # TODO_IMPROVE: see https://golangci-lint.run/usage/configuration/#issues-configuration",
    "./Dockerfile.dev:# TODO_TECHDEBT(@okdas): Ports are not documented as they will soon be changed with a document to follow",
    "./.gitignore:# TODO_TECHDEBT(#126, @red-0ne):  Rename `smt` to `smt_stores` and make it configurable so it can be stored anywhere on this",
    "./.gitignore:# TODO_TECHDEBT: It seems that .dot files come and go so we need to figure out the root cause: https://github.com/pokt-network/poktroll/pull/177/files#r1392521547",
    "./.github/workflows-helpers/run-e2e-test.sh:# TODO_TECHDEBT(@okdas): also check readiness of appgate and relayminer to avoid false negatives due to race-conditions",
    "./.github/workflows/run-tests.yml:        # TODO_TECHDEBT: upgrade to the latest Ignite (the latest at the moment of creating a note is 0.28). Need to downgrade to fix CI pipelines. Might be done in scope of #240.",
    "./.github/workflows/reviewdog.yml:  # Makes sure that comments like TODO_IN_THIS_PR or TODO_IN_THIS_COMMIT block",
    "./.github/workflows/reviewdog.yml:    name: Check TODO_IN_THIS_",
    "./.github/workflows/reviewdog.yml:          pattern: TODO_IN_THIS_",
    "./.github/workflows/reviewdog.yml:# TODO_IMPROVE: Enforce using k.Logger() when logging in the `x/` directory code.",
    "./.github/workflows/main-build.yml:        # TODO_TECHDEBT: upgrade to the latest Ignite (the latest at the moment of creating a note is 0.28). Need to downgrade to fix CI pipelines. Might be done in scope of #240.",
    "./.github/pull_request_template.md:- [ ] I have commented my code, updated documentation and left TODOs throughout the codebase",
    "./.github/ISSUE_TEMPLATE/issue.md:- [ ] **Comments**: Add/update TODOs and comments alongside the source code so it is easier to follow.",
    "./api/poktroll/shared/service.pulsar.go:// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./api/poktroll/shared/service.pulsar.go:	// TODO_TECHDEBT: Name is currently unused but acts as a reminder that an optional onchain representation of the service is necessary",
    './api/poktroll/application/event.pulsar.go:	// TODO: Check if this tag is relevant for events: (gogoproto.jsontag) = "app_address"',
    "./api/poktroll/service/tx.pulsar.go:// TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./api/poktroll/service/query.pulsar.go:	// TODO: We could support getting services by name.",
    "./api/poktroll/tokenomics/params.pulsar.go:// TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance parameters.",
    "./api/poktroll/tokenomics/params.pulsar.go:	// TODO_DOCUMENT(@Olshansk): Make sure to document the units of this parameter (or the map) once finalized.",
    "./load-testing/tests/appGateServerEtherium.js:// TODO(@okdas): expand options to allow multiple stages:",
    "./e2e/tests/relay.feature:    # TODO_TEST(@Olshansk):",
    "./e2e/tests/init_test.go:	// TODO_TECHDEBT: rename to `poktrolld`.",
    "./e2e/tests/init_test.go:// TODO_TECHDEBT: rename `pocketd` to `poktrolld`.",
    "./e2e/tests/init_test.go:// TODO_IMPROVE: use `sessionId` and `supplierName` since those are the two values",
    "./e2e/tests/session_steps_test.go:	// TODO_TECHDEBT: Due to the speed of the blocks of the LocalNet sequencer, along with the small number",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: assert that the root hash of the claim contains the correct",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: add assertions about serviceId and appName and/or incorporate",
    "./e2e/tests/session_steps_test.go:	// TODO_TECHDEBT: Due to the speed of the blocks of the LocalNet sequencer, along with the small number",
    "./e2e/tests/session_steps_test.go:	// TODO_UPNEXT(@bryanchriswhite): assert that the root hash of the proof contains the correct",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE: add assertions about serviceId and appName and/or incorporate",
    "./e2e/tests/session_steps_test.go:	// TODO_IMPROVE/TODO_COMMUNITY: hard-code a default set of RPC calls to iterate over for coverage.",
    "./e2e/tests/tokenomics.feature:        # TODO_UPNEXT(@Olshansk, #359): Expand on the two expectations below after integrating the tokenomics module",
    "./e2e/tests/session.feature:  # TODO_TECHDEBT(@Olshansk, #180): This test requires you to run `make supplier1_stake && make app1_stake` first",
    "./e2e/tests/session.feature:    # TODO_TECHDEBT: Once the session grace period is configurable, set it to 0 at the beginning of this test.",
    "./e2e/tests/session.feature:    # TODO_IMPROVE: And an event should be emitted...",
    "./e2e/tests/session.feature:    # TODO_IMPROVE: And an event should be emitted...",
    "./e2e/tests/session.feature:# TODO_BLOCKER(@red-0ne): Make sure to implement and validate this test",
    "./e2e/tests/node.go:// TODO_TECHDEBT(https://github.com/ignite/cli/issues/3737): We're using a combination",
    "./testutil/testrelayer/relays.go:	// TODO_BLOCKER: use canonical codec to serialize the relay",
    "./testutil/testrelayer/hash.go:// TODO_TECHDEBT(@h5law): Retrieve the relay hasher mechanism from the `smt` repo.",
    "./testutil/testchannel/drain.go:// TODO_CONSIDERATION: this function could easily take a timeout parameter and add",
    "./testutil/testpolylog/event.go:	// TODO_TECHDEBT/TODO_COMMUNITY: `strings.Title()` is deprecated. Follow",
    "./testutil/testkeyring/keyring.go:// TODO_CONSIDERATION: Returning a new PreGeneratedAccountIterator instead of",
    "./testutil/network/network.go:// TODO_CLEANUP: Refactor the genesis state helpers below to consolidate usage",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:		// TODO_CONSIDERATION: Evaluate whether we need `nullify.Fill` or if we should enforce `(gogoproto.nullable) = false` everywhere",
    "./testutil/network/network.go:// TODO_CLEANUP: Consolidate all of the helpers below to use shared business",
    "./testutil/network/network.go:// TODO_TECHDEBT: Reuse this helper in all test helpers where appropriate.",
    "./testutil/testclient/testtx/client.go:// TODO_CONSIDERATION: functions like these (NewLocalnetXXX) could probably accept",
    "./testutil/testclient/testtx/context.go:// TODO_IMPROVE: these mock constructor helpers could include parameters for the",
    "./testutil/testclient/localnet.go:	// TODO_IN_THIS_COMMIT: godoc comments...",
    "./testutil/testclient/localnet.go:	// TODO_IMPROVE: It would be nice if the value could be set correctly based",
    "./testutil/testproxy/relayerproxy.go:// TODO_TECHDEBT(@red-0ne): This function only supports JSON-RPC requests and",
    "./testutil/keeper/tokenomics.go:// TODO_TECHDEBT: Replace `AnyTimes` w/ `Times/MinTimes/MaxTimes` as the tests",
    "./testutil/keeper/session.go:	// TODO_TECHDEBT: See the comment at the bottom of this file explaining",
    "./testutil/keeper/session.go:	// TODO_IMPROVE: Use fixtures populated by block hashes and their corresponding",
    "./testutil/keeper/session.go:// TODO_TECHDEBT: Figure out how to vary the supplierKeep on a per test basis with exposing `SupplierKeeper publically`",
    "./testutil/keeper/supplier.go:// TODO_OPTIMIZE: Index suppliers by service so we can easily query k.GetAllSuppliers(ctx, Service)",
    "./ts-client/ibc.core.channel.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.service/types/pocket/shared/service.ts: * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.service/types/pocket/shared/service.ts:  /** TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary */",
    "./ts-client/pocket.service/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.group.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.bank.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.feegrant.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.evidence.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.upgrade.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.session/types/pocket/shared/service.ts: * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.session/types/pocket/shared/service.ts:  /** TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary */",
    "./ts-client/pocket.session/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.session/rest.ts:   * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.session/rest.ts:TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.session/rest.ts:   * TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary",
    "./ts-client/cosmos.params.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.gov.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.gateway/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.auth.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.gov.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.application/types/pocket/shared/service.ts: * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.application/types/pocket/shared/service.ts:  /** TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary */",
    "./ts-client/pocket.application/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.application/rest.ts:   * TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary",
    "./ts-client/cosmos.distribution.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.nft.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.supplier/types/pocket/shared/service.ts: * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.supplier/types/pocket/shared/service.ts:  /** TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary */",
    "./ts-client/pocket.supplier/types/pocket/supplier/proof.ts: * TODO_UPNEXT(@Olshansk): The structure below is the default (untouched) scaffolded type. Update",
    "./ts-client/pocket.supplier/types/pocket/supplier/query.ts:   * TODO_UPNEXT(@Olshansk): Update these endpoints after implementing proof persistence",
    "./ts-client/pocket.supplier/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.supplier/rest.ts:   * TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.supplier/rest.ts:TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./ts-client/pocket.supplier/rest.ts:   * TODO_TECHDEBT: Name is currently unused but acts as a reminder than an optional onchain representation of the service is necessary",
    "./ts-client/pocket.supplier/rest.ts:* TODO_UPNEXT(@Olshansk): The structure below is the default (untouched) scaffolded type. Update",
    "./ts-client/pocket.supplier/rest.ts:   * TODO_UPNEXT(@Olshansk): The structure below is the default (untouched) scaffolded type. Update",
    "./ts-client/pocket.supplier/rest.ts: * @summary TODO_UPNEXT(@Olshansk): Update these endpoints after implementing proof persistence",
    "./ts-client/ibc.applications.interchain_accounts.host.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/ibc.applications.interchain_accounts.controller.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/ibc.core.connection.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/ibc.core.connection.v1/types/cosmos/ics23/v1/proofs.ts:  /** TODO: remove this as unnecessary??? we prove a range */",
    "./ts-client/ibc.core.connection.v1/types/cosmos/ics23/v1/proofs.ts:  /** TODO: remove this as unnecessary??? we prove a range */",
    "./ts-client/cosmos.slashing.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.consensus.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/ibc.applications.transfer.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.staking.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.staking.v1beta1/types/cosmos/staking/v1beta1/staking.ts: * TODO: explore moving this to proto/cosmos/base to separate modules from tendermint dependence",
    "./ts-client/pocket.pocket/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/poktroll.tokenomics/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.authz.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.base.node.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/pocket.tokenomics/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.mint.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/ibc.core.client.v1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.crisis.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.tx.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.vesting.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./ts-client/cosmos.base.tendermint.v1beta1/types/google/protobuf/descriptor.ts:   * TODO(kenton):  Base-64 encode?",
    "./x/proof/types/genesis_test.go:				// TODO_BLOCKER: finish genesis proof list validation.",
    "./x/proof/types/genesis_test.go:		// TODO_BLOCKER: finish genesis proof list validation.",
    "./x/proof/types/message_create_claim.go:	// TODO_IMPROVE: Only checking to make sure a non-nil hash was provided for now, but we can validate the length as well.",
    "./x/proof/types/key_claim.go:	// TODO_TECHDEBT: consider renaming to ClaimSessionIDPrefix.",
    "./x/proof/types/key_claim.go:// TODO_TECHDEBT(@olshanks): add helpers for composing query-side key prefixes & document key/value prefix design.",
    "./x/proof/types/query_validation.go:	// TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it",
    './x/proof/types/query_validation.go:			Msg("TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it")',
    "./x/proof/types/query_validation.go:	// TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it",
    "./x/proof/types/query_validation.go:	// TODO_TECHDEBT: update function signature to receive a context.",
    "./x/proof/types/query_validation.go:	logger := polylog.Ctx(context.TODO())",
    './x/proof/types/query_validation.go:			Msg("TODO_TECHDEBT: Validate the session ID once we have a deterministic way to generate it")',
    "./x/proof/types/key_proof.go:	// TODO_TECHDEBT: consider renaming to ProofSessionIDPrefix.",
    "./x/proof/types/key_proof.go:// TODO_TECHDEBT(@olshanks): add helpers for composing query-side key prefixes & document key/value prefix design.",
    "./x/proof/types/message_submit_proof.go:// TODO_TECHDEBT: Call `msg.GetSessionHeader().ValidateBasic()` once its implemented",
    "./x/proof/types/message_submit_proof.go:	// TODO_BLOCKER: attempt to deserialize the proof for additional validation.",
    "./x/proof/types/genesis.go:		// TODO_BLOCKER: ensure the corresponding supplier exists and is staked.",
    "./x/proof/module/genesis_test.go:		// TODO_BLOCKER: finish genesis proof list validation.",
    "./x/proof/module/query.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/proof/module/tx_create_claim.go:// TODO(@bryanchriswhite): Add unit tests for the CLI command when implementing the business logic.",
    './x/proof/module/query_claim_test.go:				// TODO_CONSIDERATION: prefer using "%q" in error format strings',
    "./x/proof/module/tx_create_claim_test.go:// TODO_NEXT(@bryanchriswhite #140): add comprehensive CLI test coverage for creating claims.",
    "./x/proof/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/proof/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/proof/module/tx_submit_proof_test.go:// TODO_NEXT(@bryanchriswhite #141): add comprehensive CLI test coverage for submitting proofs.",
    "./x/proof/module/tx_submit_proof.go:// TODO(@bryanchriswhite): Add unit tests for the CLI command when implementing the business logic.",
    "./x/proof/module/helpers_test.go:// TODO_TECHDEBT: This should not be hardcoded once the num blocks per session is configurable.",
    "./x/proof/module/helpers_test.go:// TODO_CONSIDERATION: perhaps this (and/or other similar helpers) can be refactored",
    "./x/proof/module/helpers_test.go:// TODO_TECHDEBT: refactor; this function has more than a single responsibility,",
    "./x/proof/module/helpers_test.go:				// TODO_TECHDEBT(#196): Move this outside of the forloop so that the test iteration is faster",
    "./x/proof/module/helpers_test.go:	// TODO_TECHDEBT: Forward the actual claim in the response once the response is updated to return it.",
    "./x/proof/module/genesis.go:// TODO_TECHDEBT(@Olshansk): Remove existing claims from genesis.",
    "./x/proof/module/query_proof_test.go:// TODO_UPNEXT(@Olshansk): Add these tests back in after merging on-chain Proof persistence.",
    './x/proof/module/query_proof_test.go://  TODO_BLOCKER: add "BySupplierAddress", "BySession", "ByHeight" tests.',
    "./x/proof/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/proof/simulation/submit_proof.go:		// TODO: Handling the SubmitProof simulation",
    "./x/proof/simulation/create_claim.go:		// TODO: Handling the CreateClaim simulation",
    "./x/proof/keeper/query_claim_test.go:					// TODO_CONSIDERATION: factor out error message format strings to constants.",
    "./x/proof/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: Prevent Claim upserts after the ClaimWindow is closed.",
    "./x/proof/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: Validate the signature on the Claim message corresponds to the supplier before Upserting.",
    "./x/proof/keeper/msg_server_create_claim.go:		TODO_INCOMPLETE:",
    "./x/proof/keeper/msg_server_create_claim.go:	// TODO_BLOCKER: check if this claim already exists and return an appropriate error",
    "./x/proof/keeper/msg_server_create_claim.go:	// TODO: return the claim in the response.",
    "./x/proof/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: Prevent Proof upserts after the tokenomics module has processes the respective session.",
    "./x/proof/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: Validate the signature on the Proof message corresponds to the supplier before Upserting.",
    "./x/proof/keeper/msg_server_submit_proof.go:		TODO_INCOMPLETE: Handling the message",
    "./x/proof/keeper/msg_server_submit_proof.go:	// TODO_BLOCKER: check if this proof already exists and return an appropriate error",
    "./x/proof/keeper/msg_server_submit_proof.go:	// TODO_UPNEXT(@Olshansk, #359): Call `tokenomics.SettleSessionAccounting()` here",
    "./x/shared/types/service.pb.go:// TODO_RESEARCH: Should these be configs, SLAs or something else? There will be more discussion once we get closer to implementing on-chain QoS.",
    "./x/shared/types/service.pb.go:	// TODO_TECHDEBT: Name is currently unused but acts as a reminder that an optional onchain representation of the service is necessary",
    "./x/shared/helpers/service_configs.go:			// TODO: Validate configs once they are being used",
    "./x/supplier/types/message_stake_supplier.go:	// TODO_TECHDEBT: Centralize stake related verification and share across different parts of the source code",
    "./x/supplier/types/message_stake_supplier_test.go:// TODO_CLEANUP: This test has a lot of copy-pasted code from test to test.",
    "./x/supplier/types/message_stake_supplier_test.go:		// TODO_TEST: Need to add more tests around config types",
    "./x/supplier/types/genesis.go:		// TODO_TECHDEBT: Consider creating shared helpers across the board for stake validation,",
    "./x/supplier/module/query.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/supplier/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/supplier/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/supplier/simulation/stake_supplier.go:			// TODO: Update all stake message fields",
    "./x/supplier/simulation/stake_supplier.go:		// TODO: Handling the StakeSupplier simulation",
    "./x/supplier/simulation/unstake_supplier.go:		// TODO: Handling the UnstakeSupplier simulation",
    "./x/supplier/keeper/msg_server_unstake_supplier.go:// TODO(#73): Determine if an application needs an unbonding period after unstaking.",
    "./x/supplier/keeper/query_supplier.go:		// TODO_TECHDEBT(#384): conform to logging conventions once established",
    "./x/supplier/keeper/msg_server_stake_supplier.go:	// TODO_IMPROVE: Should we avoid making this call if `coinsToDelegate` = 0?",
    "./x/supplier/keeper/supplier.go:// TODO_OPTIMIZE: Index suppliers by service so we can easily query k.GetAllSuppliers(ctx, Service)",
    "./x/supplier/client/cli/tx_create_claim_test.go:// TODO_NEXT(@bryanchriswhite #140): add comprehensive CLI test coverage for creating claims.",
    "./x/supplier/client/cli/tx_submit_proof_test.go:// TODO_NEXT(@bryanchriswhite #141): add comprehensive CLI test coverage for submitting proofs.",
    "./x/application/types/params.go:	// TODO: Determine the default value",
    './x/application/types/event.pb.go:	// TODO: Check if this tag is relevant for events: (gogoproto.jsontag) = "app_address"',
    "./x/application/types/genesis.go:		// TODO_TECHDEBT: Consider creating shared helpers across the board for stake validation,",
    "./x/application/types/message_stake_application.go:// TODO_TECHDEBT: See `NewMsgStakeSupplier` and follow the same pattern for the `Services` parameter",
    "./x/application/types/message_stake_application.go:	// TODO_TECHDEBT: Centralize stake related verification and share across different parts of the source code",
    "./x/application/module/query.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/application/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/application/module/config/application_configs_reader.go:// TODO_DOCUMENT(@red-0ne): Add additional documentation on app config files.",
    "./x/application/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/application/simulation/unstake_application.go:		// TODO: Handling the UnstakeApplication simulation",
    "./x/application/simulation/undelegate_from_gateway.go:		// TODO: Handling the UndelegateFromGateway simulation",
    "./x/application/simulation/delegate_to_gateway.go:		// TODO: Handling the DelegateToGateway simulation",
    "./x/application/simulation/stake_application.go:// TODO(@Olshansk): Implement simulation for application staking",
    "./x/application/simulation/stake_application.go:		// TODO: Handling the StakeApplication simulation",
    "./x/application/keeper/msg_server_stake_application.go:	// TODO_IMPROVE: Should we avoid making this call if `coinsToDelegate` = 0?",
    "./x/application/keeper/msg_server_unstake_application.go:// TODO(#73): Determine if an application needs an unbonding period after unstaking.",
    "./x/service/types/tx.pb.go:// TODO_DOCUMENT(@h5law): This is a key function in making services",
    "./x/service/types/message_add_service.go:	// TODO_TECHDEBT: Add a validate basic function to the `Service` object",
    "./x/service/types/params.go:// TODO_BLOCKER: Revisit default param values for service fee",
    "./x/service/types/params.go:	// TODO(@h5law): Look into better validation",
    "./x/service/types/params.go:	// TODO_BLOCKER: implement validation",
    "./x/service/types/query.pb.go:	// TODO: We could support getting services by name.",
    "./x/service/types/relay.go:	// TODO_FUTURE: if a client gets a response with an invalid/incomplete",
    "./x/service/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/service/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/service/module/module.go:// TODO_TECHDEBT(#395): Make consensus version configurable",
    "./x/service/simulation/add_service.go:		// TODO: Handling the AddService simulation",
    "./x/tokenomics/types/params.go:	// TODO: Determine the default value",
    "./x/tokenomics/types/params.pb.go:// TODO_DOCUMENT(@Olshansk): Document all of the on-chain governance parameters.",
    "./x/tokenomics/types/params.pb.go:	// TODO_DOCUMENT(@Olshansk): Make sure to document the units of this parameter (or the map) once finalized.",
    "./x/tokenomics/module/query.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/tokenomics/module/tx_update_params.go:// TODO_BLOCKER(#322): Update the CLI once we determine settle on how to maintain and update parameters.",
    "./x/tokenomics/module/tx_update_params.go:// TODO_TECHDEBT(@red-0ne): Add a config file for on-chain parameters.",
    "./x/tokenomics/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/tokenomics/keeper/settle_session_accounting.go:	// TODO_TECHDEBT: Retrieve this from the SMT package",
    "./x/tokenomics/keeper/settle_session_accounting.go:// TODO_BLOCKER(@Olshansk): Is there a way to limit who can call this function?",
    "./x/tokenomics/keeper/settle_session_accounting.go:	// TODO_DISCUSS: This check should be the responsibility of the SMST package",
    "./x/tokenomics/keeper/settle_session_accounting.go:		// TODO_BLOCKER(@Olshansk, @RawthiL): The application was over-serviced in the last session so it basically",
    "./x/tokenomics/keeper/query_params_test.go:	// TODO_INVESTIGATE(#394): Params tests don't assert initial state.",
    "./x/tokenomics/keeper/settle_session_accounting_test.go:// TODO_TEST(@bryanchriswhite, @Olshansk): Improve tokenomics tests (i.e. checking balances)",
    './x/tokenomics/keeper/settle_session_accounting_test.go:	t.Skip("TODO_BLOCKER(@Olshansk): Add E2E and integration tests so we validate the actual state changes of the bank & account keepers.")',
    './x/tokenomics/keeper/settle_session_accounting_test.go:	t.Skip("TODO_BLOCKER(@Olshansk): Add E2E and integration tests so we validate the actual state changes of the bank & account keepers.")',
    "./x/tokenomics/keeper/keeper.go:// TODO_TECHDEBT(#240): See `x/nft/keeper.keeper.go` in the Cosmos SDK on how",
    "./x/tokenomics/keeper/keeper.go:		// TODO_DISCUSS: The supplier keeper is not used in the tokenomics module,",
    "./x/tokenomics/keeper/msg_update_params.go:	// TODO_BLOCKER(@Olshansk): How do we validate this is the same address that signed the request?",
    "./x/gateway/module/query.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/gateway/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/gateway/module/simulation.go:	// TODO: Determine the simulation weight value",
    "./x/gateway/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/gateway/module/module.go:// TODO_TECHDEBT(#395): Make consensus version configurable",
    "./x/gateway/simulation/unstake_gateway.go:		// TODO: Handling the UnstakeGateway simulation",
    "./x/gateway/simulation/stake_gateway.go:		// TODO: Handling the StakeGateway simulation",
    "./x/gateway/keeper/msg_server_stake_gateway.go:		// TODO_TECHDEBT(#384): determine whether to continue using cosmos logger for debug level.",
    "./x/gateway/keeper/msg_server_stake_gateway.go:		// TODO_TECHDEBT(#384): determine whether to continue using cosmos logger for debug level.",
    "./x/gateway/keeper/msg_server_unstake_gateway.go:// TODO_TECHDEBT(#49): Add un-delegation from delegated apps",
    "./x/gateway/keeper/msg_server_unstake_gateway.go:// TODO(#73): Determine if a gateway needs an unbonding period after unstaking.",
    "./x/session/types/session_header.go:// TODO_TECHDEBT: Make sure this is used everywhere we validate components",
    "./x/session/types/session_header.go:	// TODO_TECHDEBT: Introduce a `SessionId#ValidateBasic` method.",
    "./x/session/types/session_header.go:	// TODO_TECHDEBT: Introduce a `Service#ValidateBasic` method.",
    "./x/session/module/tx.go:// TODO_TECHDEBT(#370): remove if custom query commands are consolidated into AutoCLI.",
    "./x/session/keeper/session_hydrator.go:// TODO_TECHDEBT(#377): The business logic in this file assume that genesis has",
    "./x/session/keeper/session_hydrator.go:// TODO_BLOCKER(#21): Make these configurable governance param",
    "./x/session/keeper/session_hydrator.go:	// TODO_BLOCKER: Remove direct usage of these constants in helper functions",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT: Add a test if `blockHeight` is ahead of the current chain or what this node is aware of",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT: In the future, we will need to validate that the Service is a valid service depending on whether",
    "./x/session/keeper/session_hydrator.go:	// TODO_TECHDEBT(@Olshansk, @bryanchriswhite): Need to retrieve the suppliers at SessionStartBlockHeight,",
    "./x/session/keeper/session_hydrator.go:	// TODO(@bryanchriswhite): Investigate if `BlockClient` + `ReplayObservable` where `N = SessionLength` could be used here.`",
    "./x/session/keeper/session_hydrator.go:		// TODO_OPTIMIZE: If `supplier.Services` was a map[string]struct{}, we could eliminate `slices.Contains()`'s loop",
    "./x/session/keeper/session_hydrator.go:// TODO_INVESTIGATE: We are using a `Go` native implementation for a pseudo-random number generator. In order",
    "./x/session/keeper/query_get_session_test.go:	// TODO_TECHDEBT(#377): These test assume that the genesis block has a height of 0,",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT(#377): All the tests in this file assume genesis has a block",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT: Expand these tests to account for application joining/leaving the network at different heights as well changing the services they support",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add tests for when:",
    "./x/session/keeper/session_hydrator_test.go:// TODO_TECHDEBT: Expand these tests to account for supplier joining/leaving the network at different heights as well changing the services they support",
    "./x/session/keeper/session_hydrator_test.go:	// TODO_TECHDEBT: Extend these tests once `NumBlocksPerSession` is configurable.",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add this test once we make the num suppliers per session configurable",
    "./x/session/keeper/session_hydrator_test.go:		// TODO_TECHDEBT: Add tests for when:",
    "./pkg/crypto/rings/cache.go:		// TODO_HACK: We are adding the appAddress twice because a ring",
    "./pkg/crypto/rings/cache.go:		// TODO_TECHDEBT: implement and use `polylog.Event#Strs([]string)` instead of formatting here.",
    "./pkg/retry/retry_test.go:/* TODO_TECHDEBT: improve this test:",
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    "./pkg/retry/retry_test.go:// TODO_TECHDEBT: assert that the retry loop exits when the context is closed.",
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    './pkg/retry/retry_test.go:	t.Skip("TODO_TECHDEBT: this test should pass but contains a race condition around the logOutput buffer")',
    "./pkg/relayer/cmd/cmd.go:// TODO_CONSIDERATION: Consider moving all flags defined in `/pkg` to a `flags.go` file.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT(#256): Remove unneeded cosmos flags.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT: add logger level and output options to the config.",
    "./pkg/relayer/cmd/cmd.go:	// TODO_TECHDEBT: populate logger from the config (ideally, from viper).",
    "./pkg/relayer/cmd/cmd.go:	// TODO(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/relayer/cmd/cmd.go:	// TODO(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/relayer/cmd/cmd.go:			// TODO_TECHDEBT: populate this from some config.",
    "./pkg/relayer/proxy/metrics.go:	// TODO(@okdas): add `response_size_bytes`. Postponing to avoid new HTTP server writer implementation;",
    "./pkg/relayer/proxy/proxy.go:// TODO_TEST: Have tests for the relayer proxy.",
    "./pkg/relayer/proxy/proxy.go:// TODO_TEST: Add tests for validating these configurations.",
    "./pkg/relayer/proxy/synchronous.go:	// TODO_IMPROVE(red-0ne): Checking that the originHost is currently done by",
    "./pkg/relayer/proxy/synchronous.go:	// TODO_TECHDEBT(red-0ne): Currently, the relayer proxy is responsible for verifying",
    "./pkg/relayer/proxy/proxy_test.go:				// TODO_EXTEND: Consider adding support for non JSON RPC services in the future",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:				// TODO_EXTEND: Consider adding support for non JSON RPC services in the future",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/proxy_test.go:	ctx := context.TODO()",
    "./pkg/relayer/proxy/server_builder.go:		// TODO(@h5law): Implement a switch that handles all synchronous",
    "./pkg/relayer/proxy/relay_signer.go:// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/proxy/relay_verifier.go:	// TODO_INVESTIGATE: Revisit the assumptions above at some point in the future, but good enough for now.",
    "./pkg/relayer/config/types.go:	// TODO: Support other proxy types: HTTPS, TCP, UNIX socket, UDP, QUIC, WebRTC ...",
    "./pkg/relayer/config/types.go:// TODO_DOCUMENT(@red-0ne): Add proper README documentation for yaml config files",
    "./pkg/relayer/config/types.go:	// TODO_TECHDEBT(@red-0ne): Pass the authentication to the service instance",
    "./pkg/relayer/config/types.go:	// TODO_TECHDEBT(@red-0ne): Add these headers to the forwarded request",
    "./pkg/relayer/config/relayminer_configs_reader_test.go:		// TODO_NB: Test for supplier and proxy types mismatch once we have more",
    "./pkg/relayer/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/relayer/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT(@red-0ne): This method should be moved out of the RelayerProxy interface",
    "./pkg/relayer/interface.go:// TODO_TECHDEBT: add architecture diagrams covering observable flows throughout",
    "./pkg/relayer/interface.go:	// TODO_TECHDEBT: Either add a mechanism to wait for draining to complete",
    "./pkg/relayer/interface.go:	// TODO_DISCUSS: This function should not be part of the interface as it is an optimization",
    "./pkg/relayer/protocol/block_heights.go:// TODO_TEST(@bryanchriswhite): Add test coverage and more logs",
    "./pkg/relayer/protocol/block_heights.go:			// TODO_TECHDEBT: add polylog.Event#Hex() type method.",
    "./pkg/relayer/protocol/block_heights.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/protocol/block_heights.go:// TODO_TEST(@bryanchriswhite): Add test coverage and more logs",
    "./pkg/relayer/protocol/block_heights.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/protocol/difficulty.go:// TODO_BLOCKER: Revisit this part of the algorithm after initial TestNet Launch.",
    "./pkg/relayer/protocol/difficulty.go:// TODO_TEST: Add extensive tests for the core relay mining business logic.",
    "./pkg/relayer/miner/miner.go:	// TODO_TECHDEBT(@h5law): Retrieve the relay hasher mechanism from the `smt` repo.",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: query on-chain governance params once available.",
    "./pkg/relayer/miner/miner.go:// TODO_BLOCKER: The relay hashing and relay difficulty mechanisms & values must come",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: marshal using canonical codec.",
    "./pkg/relayer/miner/miner.go:	// TODO_BLOCKER: Centralize the logic of hashing a relay. It should live",
    "./pkg/relayer/miner/miner.go:	// TODO_IMPROVE: We need to hash the key; it would be nice if smst.Update() could do it",
    "./pkg/relayer/miner/gen/gen_fixtures.go:// TODO_TECHDEBT: remove once marshaling using canonical codec.",
    "./pkg/relayer/miner/gen/gen_fixtures.go:			// TODO_BLOCKER: use canonical codec.",
    "./pkg/relayer/miner/gen/gen_fixtures.go:		// TODO_BLOCKER: marshal using canonical codec.",
    "./pkg/relayer/session/sessiontree.go:// TODO_TEST: Add tests to the sessionTree.",
    "./pkg/relayer/session/sessiontree_test.go:// TODO: Add tests to the sessionTree logic",
    "./pkg/relayer/session/session.go:// TODO_TEST: Add tests to the relayerSessionsManager.",
    "./pkg/relayer/session/session.go:// TODO_TECHDEBT: Either add a mechanism to wait for draining to complete",
    "./pkg/relayer/session/session.go:// TODO_TEST: Add unit tests to validate these configurations.",
    "./pkg/relayer/session/session.go:	// TODO_CONSIDERATION: if we get the session header from the response, there",
    "./pkg/relayer/session/session.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/relayer/session/session.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/relayer/session/proof.go:	// TODO_TECHDEBT: pass failed submit proof sessions to some retry mechanism.",
    "./pkg/relayer/session/proof.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/session/proof.go:		// TODO_BLOCKER: The block that'll be used as a source of entropy for which",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: pass failed create claim sessions to some retry mechanism.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: refactor this logic to a shared package.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: query the on-chain governance SessionGracePeriod parameter once available.",
    "./pkg/relayer/session/claim.go:	// TODO_TECHDEBT: query the on-chain governance parameter once available.",
    "./pkg/relayer/session/session_test.go:	// TODO_TECHDEBT: assumes claiming at sessionGracePeriodEndBlockHeight is valid.",
    "./pkg/relayer/session/session_test.go:	// TODO_IMPROVE: ensure correctness of persisted session trees here.",
    "./pkg/relayer/session/session_test.go:	// TODO_TECHDEBT: assumes proving at sessionGracePeriodEndBlockHeight + 1 is valid.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#256): Remove unneeded cosmos flags.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT: add logger level and output options to the config.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT: populate logger from the config (ideally, from viper).",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/appgateserver/cmd/cmd.go:	// TODO_TECHDEBT(#223) Remove this check once viper is used as SoT for overridable config values.",
    "./pkg/appgateserver/server.go:	// TODO_CONSIDERATION: Use app.listeningEndpoint scheme to determine which",
    "./pkg/appgateserver/server.go:// TODO_TECHDEBT: Revisit the requestPath above based on the SDK that'll be exposed in the future.",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO(@h5law, @red0ne): Add support for asynchronous relays, and switch on",
    "./pkg/appgateserver/server.go:	// TODO_RESEARCH: Should this be started in a goroutine, to allow for",
    "./pkg/appgateserver/server.go:		// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/server.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/appgateserver/config/appgate_configs_reader.go:// TODO_DOCUMENT(@red-0ne): Add proper README documentation for yaml config files.",
    "./pkg/appgateserver/endpoint_selector.go:// TODO_IMPROVE: This implements a naive greedy approach that defaults to the",
    "./pkg/appgateserver/endpoint_selector.go:// TODO(@h5law): Look into different endpoint selection depending on their suitability.",
    "./pkg/appgateserver/synchronous.go:	// TODO_IMPROVE: log additional info?",
    "./pkg/polylog/polyzero/options.go:// TODO_TEST/TODO_COMMUNITY: add test coverage and example usage around this method.",
    "./pkg/polylog/polyzero/logger.go:// TODO_IMPROVE/TODO_COMMUNITY: Add `NewProductionLogger`, `NewDevelopmentLogger`,",
    "./pkg/polylog/polyzero/logger.go:// TODO_TEST/TODO_COMMUNITY: add support for #UpdateContext() and update this",
    "./pkg/polylog/polyzero/logger.go:// TODO_TEST/TODO_COMMUNITY: add coverage for `polyzero.Logger#WithContext()`.",
    "./pkg/polylog/polyzero/levels.go:// TODO_TECHDEBT: support a Disabled level.",
    "./pkg/polylog/polyzero/logger_test.go:	// TODO_CONSIDERATION: redesign the test helper to support regular expressions",
    "./pkg/polylog/polyzero/logger_test.go:		// TODO_TECHDEBT: figure out why this fails in CI but not locally,",
    "./pkg/polylog/interface.go:// TODO_CONSIDERATION: this may be a good candidate package for extraction to",
    "./pkg/polylog/interface.go:// TODO_INVESTIGATE: check whether the pkg dependency tree includes all logging",
    "./pkg/polylog/interface.go:	// TODO_IMPROVE/TODO_COMMUNITY: support #UpdateContext() and  update this",
    "./pkg/polylog/interface.go:// TODO_IMPROVE/TODO_COMMUNITY: support #Dict(), #Stack(), #Any() type methods.",
    "./pkg/polylog/interface.go:// TODO_IMPROVE/TODO_COMMUNITY: support #Ctx() and #GetCtx() methods.",
    "./pkg/polylog/interface.go:	// TODO_TEST: ensure implementation tests cover this: do not add a field",
    "./pkg/polylog/interface.go:	// TODO_UPNEXT(@bryanchriswhite): ensure implementations' godoc examples cover",
    "./pkg/polylog/interface.go:	// TODO_UPNEXT(@bryanchriswhite): ensure implementations' godoc examples cover",
    "./pkg/sdk/sdk.go:	// TODO_TECHDEBT: Add a size limit to the cache.",
    "./pkg/sdk/deps_builder.go:	// TODO_TECHDEBT: Configure the grpc client options from the config.",
    "./pkg/sdk/application.go:	// TODO_CONSIDERATION: Look into updating the on-chain `QueryAllApplicationsRequest` for filtering",
    "./pkg/sdk/send_relay.go:	// TODO_TECHDEBT: if the RelayResponse is an internal error response, we should not verify the signature",
    "./pkg/sdk/send_relay.go:	// TODO_IMPROVE: Add more logging & telemetry so we can get visibility and signal into",
    "./pkg/sdk/errors.go:// TODO_TECHDEBT: Do a source code wise find-replace using regex pattern match",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/deps/config/suppliers.go:// TODO_TECHDEBT(#256): Remove this function once the as we may no longer",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/deps/config/suppliers.go:		// TODO_TECHDEBT(#223) Retrieve value from viper instead, once integrated.",
    "./pkg/observable/channel/observer.go:	// TODO_DISCUSS: what should this be? should it be configurable? It seems to be most",
    "./pkg/observable/channel/observer.go:			// TODO_IMPROVE/TODO_CONSIDERATION: this is where we would implement",
    "./pkg/observable/channel/observable.go:// TODO_DISCUSS: what should this be? should it be configurable? It seems to be most",
    "./pkg/observable/channel/observer_manager.go:// TODO_CONSIDERATION: Consider whether `observerManager` and `Observable` should remain as separate",
    "./pkg/observable/channel/observer_manager.go:// TODO_CONSIDERATION: if this were a generic implementation, we wouldn't need",
    "./pkg/observable/channel/observer_manager.go:		// TODO_TECHDEBT: since this synchronously notifies all observers in a loop,",
    "./pkg/observable/channel/replay.go:// TODO_CONSIDERATION: perhaps this should be parameterized.",
    "./pkg/observable/channel/replay.go:	// TODO_IMPROVE: this assumes that the observer channel buffer is large enough",
    "./pkg/observable/channel/observable_test.go:	// NB: see TODO_INCOMPLETE comment below",
    "./pkg/observable/channel/observable_test.go:		// TODO_INCOMPLETE(#81): publisher channels which are full are proving harder to test",
    "./pkg/observable/channel/observable_test.go:// TODO_INCOMPLETE/TODO_TECHDEBT: Implement `TestChannelObservable_ConcurrentSubUnSub`",
    "./pkg/observable/channel/observable_test.go:// TODO_TECHDEBT/TODO_INCOMPLETE: add coverage for active observers closing when publishCh closes.",
    "Binary file ./pkg/client/gomock_reflect_1344382443/prog.bin matches",
    "Binary file ./pkg/client/gomock_reflect_3259033128/prog.bin matches",
    "./pkg/client/interface.go:// TODO_IMPROVE: Avoid depending on cosmos-sdk structs or interfaces; add Pocket",
    "./pkg/client/interface.go:// TODO_HACK: The purpose of this type is to work around gomock's lack of",
    "./pkg/client/interface.go:// TODO_CONSIDERATION: the cosmos-sdk CLI code seems to use a cometbft RPC client",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `blocksReplayLimit` field to the blockClient",
    "./pkg/client/tx/client.go:// TODO_TECHDEBT(@bryanchriswhite/@h5law): Refactor this to use the EventsReplayClient",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT: this should be configurable & integrated w/ viper, flags, etc.",
    "./pkg/client/tx/client.go:	// TODO_CONSIDERATION: move this into a #Start() method",
    "./pkg/client/tx/client.go:	// TODO_CONSIDERATION: move this into a #Start() method",
    "./pkg/client/tx/client.go:	// TODO_TECHDEBT: this should be configurable",
    "./pkg/client/tx/client.go:		// TODO_IN_THIS_PR: This panic is caused when we run the following command: `make acc_initialize_pubkeys`",
    "./pkg/client/tx/client.go:		// TODO_INVESTIGATE: it seems like it may not be possible for the",
    './pkg/client/tx/client_integration_test.go:		"TODO_TECHDEBT: this test depends on some setup which is currently not implemented in this test: staked application and servicer with matching services",',
    "./pkg/client/tx/client_test.go:// TODO_TECHDEBT: add coverage for the transactions client handling an events bytes error either.",
    "./pkg/client/tx/client_test.go:		// TODO_TECHDEBT: add coverage for this error case",
    "./pkg/client/tx/client_test.go:// TODO_INCOMPLETE: add coverage for async error; i.e. insufficient gas or on-chain error",
    "./pkg/client/tx/client_test.go:// TODO_TECHDEBT: add coverage for sending multiple messages simultaneously",
    "./pkg/client/delegation/client.go:	// TODO_HACK(#280): Instead of listening to all events and doing a verbose",
    "./pkg/client/delegation/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `redelegationsReplayLimit` field to the",
    "./pkg/client/delegation/redelegation.go:// TODO_TECHDEBT(#280): Refactor to use merged observables and subscribe to",
    "./pkg/client/delegation/client_integration_test.go:// TODO(@h5law): Figure out how to use real components of the localnet",
    "./pkg/client/delegation/client_integration_test.go:// TODO_UPNEXT(@h5law): Figure out the correct way to subscribe to events on the",
    './pkg/client/delegation/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    "./pkg/client/supplier/client.go:	// TODO(@bryanchriswhite): reconcile splitting of supplier & proof modules",
    "./pkg/client/supplier/client.go:	// TODO_IMPROVE: log details related to what & how much is being proven",
    "./pkg/client/supplier/client.go:	// TODO(@bryanchriswhite): reconcile splitting of supplier & proof modules",
    "./pkg/client/supplier/client.go:	// TODO_IMPROVE: log details related to how much is claimed",
    './pkg/client/supplier/client_integration_test.go:	t.Skip("TODO_TECHDEBT: this test depends on some setup which is currently not implemented in this test: staked application and servicer with matching services")',
    "./pkg/client/supplier/client_test.go:	// TODO_IMPROVE: this could be rewritten to record the times at which",
    "./pkg/client/supplier/client_test.go:	// TODO_IMPROVE: this could be rewritten to record the times at which",
    "Binary file ./pkg/client/gomock_reflect_1660849661/prog.bin matches",
    "./pkg/client/events/websocket/dialer.go:	// TODO_IMPROVE: check http response status and potential err",
    "./pkg/client/events/websocket/dialer.go:	// TODO_TECHDEBT: add test coverage and ensure support for a 3xx responses",
    "./pkg/client/events/query_client_test.go:// TODO_INVESTIGATE: why this test fails?",
    './pkg/client/events/query_client_test.go:	t.Skip("TODO_INVESTIGATE: why this test fails")',
    "./pkg/client/events/query_client_test.go:// TODO_TECHDEBT: add test coverage for multiple observers with distinct and overlapping queries",
    './pkg/client/events/query_client_test.go:	t.Skip("TODO_TECHDEBT: add test coverage for multiple observers with distinct and overlapping queries")',
    "./pkg/client/events/query_client_test.go:			// TODO_IMPROVE: to make this test helper more generic, it should accept",
    "./pkg/client/events/query_client_test.go:		// TODO_THIS_COMMIT: is this necessary?",
    "./pkg/client/events/replay_client.go:	// TODO_REFACTOR(@h5law): Look into making this a regular observable as",
    "./pkg/client/events/replay_client.go:	// TODO_REFACTOR(@h5law): Look into making this a regular observable as",
    "./pkg/client/events/query_client.go:// TODO_TECHDEBT: the cosmos-sdk CLI code seems to use a cometbft RPC client",
    "./pkg/client/events/query_client.go:			// TODO_CONSIDERATION: should we close the publish channel here too?",
    "Binary file ./pkg/client/gomock_reflect_2016208178/prog.bin matches",
    "./pkg/client/block/client.go:	// TODO_TECHDEBT/TODO_FUTURE: add a `blocksReplayLimit` field to the blockClient",
    "./pkg/client/block/client_integration_test.go:// TODO(#255): Refactor this integration test to use an in-memory simulated network",
    './pkg/client/block/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    './pkg/client/block/client_integration_test.go:	t.Skip("TODO(@h5law): Figure out how to subscribe to events on the simulated localnet")',
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this function",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this function",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/payloads/rest.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/payloads/jsonrpc.go:	// TODO(@h5law): Implement this method",
    "./pkg/partials/partials_test.go:// TODO(@h5law): Expand coverage with more test cases when more request types",
    "./pkg/partials/partial.go:// TODO_BLOCKER(@h5law): This function currently only supports JSON-RPC and must",
    "./pkg/partials/partial.go:	// TODO(@h5law): Handle other request types",
]


if __name__ == "__main__":
    main()

@bryanchriswhite bryanchriswhite merged commit e878248 into main Feb 23, 2024
7 of 9 checks passed
@bryanchriswhite bryanchriswhite removed push-image CI related - pushes images to ghcr.io devnet-test-e2e labels May 16, 2024
@github-actions github-actions bot removed the devnet label May 16, 2024
okdas added a commit that referenced this pull request Nov 14, 2024
Co-authored-by: h5law <[email protected]>
Co-authored-by: Dima Kniazev <[email protected]>
Co-authored-by: Redouane Lakrache <[email protected]>
Co-authored-by: Daniel Olshansky <[email protected]>
Co-authored-by: h5law <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

[☂️ Tooling, Migration] Umbrella ticket for cosmos-sdk v0.50 migration
4 participants