Skip to content

[config] Tango configuration documentation#180

Open
yushan8 wants to merge 6 commits into
mainfrom
yushan/add-config-doc
Open

[config] Tango configuration documentation#180
yushan8 wants to merge 6 commits into
mainfrom
yushan/add-config-doc

Conversation

@yushan8

@yushan8 yushan8 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

@yushan8 yushan8 changed the title docs(config): add configuration reference docs(config): RFC add configuration reference Jul 10, 2026
@yushan8 yushan8 changed the title docs(config): RFC add configuration reference docs(config): Tango configuration RFC Jul 10, 2026
@yushan8 yushan8 marked this pull request as ready for review July 10, 2026 22:33
@yushan8 yushan8 requested review from a team as code owners July 10, 2026 22:33
@yushan8 yushan8 marked this pull request as draft July 10, 2026 22:33
@yushan8 yushan8 marked this pull request as ready for review July 10, 2026 22:54
Comment thread docs/config/config.md Outdated
Comment thread docs/config/config.md Outdated
Comment thread docs/config/config.md Outdated
Comment thread docs/config/config.md Outdated
Comment thread docs/config/config.md Outdated
@yushan8 yushan8 marked this pull request as draft July 10, 2026 23:33
@yushan8 yushan8 changed the title docs(config): Tango configuration RFC WIP Tango configuration documentation Jul 11, 2026
@yushan8 yushan8 changed the title WIP Tango configuration documentation [config] Tango configuration documentation Jul 12, 2026
@yushan8 yushan8 marked this pull request as ready for review July 12, 2026 22:41
@yushan8 yushan8 force-pushed the yushan/add-config-doc branch from ee0104c to 1879205 Compare July 12, 2026 23:53
@yushan8 yushan8 requested a review from liujsj July 12, 2026 23:53
yushan8 added a commit that referenced this pull request Jul 12, 2026
Summary:
Intent:
- This branch builds on #180 (docs: add config/README.md), which documented
  the intended shape of the YAML config surface. Several documented field
  names, defaults, and required-ness didn't match the actual Go structs and
  Parse() behavior; this aligns the code with the docs.

Changes:
- Renamed config fields to match config/README.md: worker_pool_size ->
  max_worker_pool_size, repo_manager_clone_path -> workspaces_root,
  chunking -> streaming (and its target_chunk_size/changed_target_chunk_size/
  metadata_map_chunk_size -> max_num_targets/max_num_changed_targets/
  max_num_metadata_entries), query_timeout -> query_timeout_seconds.
- config.Parse now enforces service.workspaces_root as required (previously
  silently defaulted to a temp dir) and applies the documented defaults:
  bzlmod_enabled defaults to true, query_timeout_seconds defaults to 600,
  and the streaming.max_num_* fields default to 250/125/50000.
- Added Go doc comments for the config fields documented in the README.
- Updated all call sites (controller, example/main.go,
  orchestrator/native_orchestrator.go) and YAML fixtures for the renames.
- Added config/config_test.go covering the new validation and defaults.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
Comment thread config/README.md Outdated
Comment thread config/README.md
@yushan8 yushan8 force-pushed the yushan/add-config-doc branch from 1879205 to a56db34 Compare July 13, 2026 23:38
Comment thread config/README.md Outdated
repository:
- remote: "https://github.com/uber/tango.git"
bzlmod_enabled: true
# query_timeout_seconds: 600

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this meant to be commented out? It is documented in the table below

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Commented out means that it's optional, but I can uncomment it if it's not clear.

Comment thread config/README.md
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
| `remote` | **Yes** | `string` | | The URL used to `git clone` the repository. Tango clones from this URL and uses it as the lookup key for per-repo settings. Must be unique across all entries and match exactly what clients send in `BuildDescription.remote`. |
| `bzlmod_enabled` | No | `bool` | `true` | Whether this repository uses Bzlmod for external dependency management. Bzlmod is enforced in Bazel 9+. Set to false only for repositories still using WORKSPACE — when disabled, `//external:all-targets` is added to Bazel queries. Setting this incorrectly causes query failures — it must match the repository's actual dependency management setup. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this right? i don't see default true being set anywhere in the codebase. Where is that set?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be updated in subsequent PRs. This README.md has changes so we can finalize how the config will look. Will update now that the config fields is finalized.

Comment thread config/README.md Outdated
|---|---|---|---|---|
| `remote` | **Yes** | `string` | | The URL used to `git clone` the repository. Tango clones from this URL and uses it as the lookup key for per-repo settings. Must be unique across all entries and match exactly what clients send in `BuildDescription.remote`. |
| `bzlmod_enabled` | No | `bool` | `true` | Whether this repository uses Bzlmod for external dependency management. Bzlmod is enforced in Bazel 9+. Set to false only for repositories still using WORKSPACE — when disabled, `//external:all-targets` is added to Bazel queries. Setting this incorrectly causes query failures — it must match the repository's actual dependency management setup. |
| `bazel_command` | No | `string` | `""` | Override the Bazel binary path. When empty, Tango automatically downloads and caches [Bazelisk](https://github.com/bazelbuild/bazelisk) from GitHub. This lets Tango run without Bazel pre-installed and allows each repository to control its own Bazel version via `.bazelversion`. Set this when the repository requires a custom Bazel wrapper script. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usually configs like these have path suffix.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gotcha 👍

yushan8 added a commit that referenced this pull request Jul 14, 2026
Summary:
Intent:
- This branch builds on #180 (docs: add config/README.md), which documented
  the intended shape of the YAML config surface. Several documented field
  names, defaults, and required-ness didn't match the actual Go structs and
  Parse() behavior; this aligns the code with the docs.

Changes:
- Renamed config fields to match config/README.md: worker_pool_size ->
  max_worker_pool_size, repo_manager_clone_path -> workspaces_root,
  chunking -> streaming (and its target_chunk_size/changed_target_chunk_size/
  metadata_map_chunk_size -> max_num_targets/max_num_changed_targets/
  max_num_metadata_entries), query_timeout -> query_timeout_seconds.
- config.Parse now enforces service.workspaces_root as required (previously
  silently defaulted to a temp dir) and applies the documented defaults:
  bzlmod_enabled defaults to true, query_timeout_seconds defaults to 600,
  and the streaming.max_num_* fields default to 250/125/50000.
- Added Go doc comments for the config fields documented in the README.
- Updated all call sites (controller, example/main.go,
  orchestrator/native_orchestrator.go) and YAML fixtures for the renames.
- Added config/config_test.go covering the new validation and defaults.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
@yushan8 yushan8 force-pushed the yushan/add-config-doc branch from a5dbe2e to 0588d25 Compare July 14, 2026 20:31
yushan8 added a commit that referenced this pull request Jul 14, 2026
Summary:
Intent:
- This branch builds on #180 (docs: add config/README.md), which documented
  the intended shape of the YAML config surface. Several documented field
  names, defaults, and required-ness didn't match the actual Go structs and
  Parse() behavior; this aligns the code with the docs.

Changes:
- Renamed config fields to match config/README.md: worker_pool_size ->
  max_worker_pool_size, repo_manager_clone_path -> workspaces_root,
  chunking -> streaming (and its target_chunk_size/changed_target_chunk_size/
  metadata_map_chunk_size -> max_num_targets/max_num_changed_targets/
  max_num_metadata_entries), query_timeout -> query_timeout_seconds.
- config.Parse now enforces service.workspaces_root as required (previously
  silently defaulted to a temp dir) and applies the documented defaults:
  bzlmod_enabled defaults to true, query_timeout_seconds defaults to 600,
  and the streaming.max_num_* fields default to 250/125/50000.
- Added Go doc comments for the config fields documented in the README.
- Updated all call sites (controller, example/main.go,
  orchestrator/native_orchestrator.go) and YAML fixtures for the renames.
- Added config/config_test.go covering the new validation and defaults.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
yushan8 added 6 commits July 15, 2026 09:51
Documents the service, repository, and storage config sections with
field-level tables (required/type/default/description) and example
YAML snippets.
yushan8 added a commit that referenced this pull request Jul 15, 2026
Summary:
Intent:
- This branch builds on #180 (docs: add config/README.md), which documented
  the intended shape of the YAML config surface. Several documented field
  names, defaults, and required-ness didn't match the actual Go structs and
  Parse() behavior; this aligns the code with the docs.

Changes:
- Renamed config fields to match config/README.md: worker_pool_size ->
  max_worker_pool_size, repo_manager_clone_path -> workspaces_root,
  chunking -> streaming (and its target_chunk_size/changed_target_chunk_size/
  metadata_map_chunk_size -> max_num_targets/max_num_changed_targets/
  max_num_metadata_entries), query_timeout -> query_timeout_seconds.
- config.Parse now enforces service.workspaces_root as required (previously
  silently defaulted to a temp dir) and applies the documented defaults:
  bzlmod_enabled defaults to true, query_timeout_seconds defaults to 600,
  and the streaming.max_num_* fields default to 250/125/50000.
- Added Go doc comments for the config fields documented in the README.
- Updated all call sites (controller, example/main.go,
  orchestrator/native_orchestrator.go) and YAML fixtures for the renames.
- Added config/config_test.go covering the new validation and defaults.

---

<sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
@yushan8 yushan8 force-pushed the yushan/add-config-doc branch from 0588d25 to 01ae7e8 Compare July 15, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants