Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/skills/dev/planning/write-markdown-docs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,30 @@ rendering handle the wrapping.
| GitHub issue / PR body | No | Do **not** hard-wrap lines |
| GitHub review comments | No | Do **not** hard-wrap lines |

## Filename Conventions

Use **UPPERCASE** for two categories of Markdown files:

1. **Templates** — reusable scaffolds (e.g. issue templates, PR templates).
2. **Issue/EPIC specs** — the primary spec file inside a folder-based issue or
EPIC: `ISSUE.md`, `EPIC.md`.

All other Markdown files (guides, notes, supporting docs) use **lowercase**
kebab-case: `migration-guide.md`, `manual-verification.md`.

> **Note**: `README.md` is a conventional uppercase exception to the lowercase
> kebab-case rule for supporting docs.

| Category | Convention | Example |
| -------------- | ---------- | ------------------------------------------------------- |
| Templates | UPPERCASE | `.github/ISSUE_TEMPLATE/BUG_REPORT.md` |
| Issue spec | UPPERCASE | `1978-configuration-overhaul-epic/EPIC.md` |
| Issue spec | UPPERCASE | `889-1978-new-config-option-for-logging-style/ISSUE.md` |
| Supporting doc | lowercase | `1978-configuration-overhaul-epic/migration-guide.md` |

> **Note**: This convention may be tightened in the future to reserve UPPERCASE
> exclusively for templates. For now, issue/EPIC specs are an exception.

## Checklist Before Committing Docs

- [ ] No `#NUMBER` patterns used for enumeration or step numbering
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,16 @@ This catches misconfigurations early (e.g., accidentally setting `public_url = "

## Implementation Plan

| ID | Status | Task | Notes |
| --- | ------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
| T0 | DONE | Create `v3_0_0/public_url.rs` with `HttpUrl` and `UdpUrl` newtypes | `url` crate; each newtype validates its scheme in its own `Deserialize` impl |
| T1 | DONE | Add `public_url: Option<HttpUrl>` to `HttpTracker` config | Default `None`; scheme validated by `HttpUrl` |
| T2 | DONE | Add `public_url: Option<UdpUrl>` to `UdpTracker` config | Default `None`; scheme validated by `UdpUrl` |
| T3 | DONE | Add `public_url: Option<HttpUrl>` to `HttpApi` config | Default `None`; also add `deny_unknown_fields` |
| T4 | DONE | Add `#[serde(deny_unknown_fields)]` to `HealthCheckApi` | No `public_url` on this struct; consistency-only change |
| T5 | DONE | Document field in crate-level docs and doc comments | Default config migration is deferred to #1980 |
| T6 | DONE | Run `linter all` and tests | |
| ID | Status | Task | Notes |
| --- | ------ | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| T0 | DONE | Create `v3_0_0/public_url.rs` with `HttpUrl` and `UdpUrl` newtypes | `url` crate; each newtype validates its scheme in its own `Deserialize` impl |
| T1 | DONE | Add `public_url: Option<HttpUrl>` to `HttpTracker` config | Default `None`; scheme validated by `HttpUrl` |
| T2 | DONE | Add `public_url: Option<UdpUrl>` to `UdpTracker` config | Default `None`; scheme validated by `UdpUrl` |
| T3 | DONE | Add `public_url: Option<HttpUrl>` to `HttpApi` config | Default `None`; also add `deny_unknown_fields` |
| T4 | DONE | Add `#[serde(deny_unknown_fields)]` to `HealthCheckApi` | No `public_url` on this struct; consistency-only change |
| T5 | DONE | Document field in crate-level docs and doc comments | Default config migration is deferred to #1980 |
| T6 | DONE | Run `linter all` and tests | |
| T7 | DONE | Update migration guide if this subissue affects the config public API | `docs/issues/open/1978-configuration-overhaul-epic/configuration-v2-to-v3-migration.md` |

## Progress Tracking

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@ This is the largest phase, split into sub-tasks (each committed and CI-verified
| T4 | 4 | DONE | Remove deprecated fields from v3 | Removed `core.net`, flat `ipv6_v6only`, and `get_ext_ip()` |
| T5 | 4 | DONE | Update v3 documentation and doc comments | V3 configuration module, ADR, and issue specification |
| T7 | 5 | PARTIAL | Run `linter all` and full test suite | `linter all` and `cargo test -p torrust-tracker-configuration` pass; full suite deferred to #1980 |
| T8 | 6 | DONE | Update migration guide if this subissue affects the config public API | `docs/issues/open/1978-configuration-overhaul-epic/configuration-v2-to-v3-migration.md` |

## Progress Tracking

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,18 @@ This approach:

## Implementation Plan

| ID | Status | Task | Notes |
| --- | ---------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| T1 | DONE | Copy `v2_0_0/` directory to `v3_0_0/` | `cp -r packages/configuration/src/v2_0_0/ packages/configuration/src/v3_0_0/` |
| T2 | DONE | Update `v3_0_0/mod.rs` to use `crate::v3_0_0` internal paths | Fixed all doc links, VERSION constant, test imports, and schema_version strings |
| T3 | DONE | Copy `logging.rs` into `v2_0_0/logging.rs` | Merged TraceStyle/setup/tracing_init into the versioned logging.rs; added module-level doc comment |
| T4 | DONE | Copy `logging.rs` into `v3_0_0/logging.rs` | Same content as T3; v3 gets its own copy |
| T5 | DONE | Update `lib.rs` to expose `pub mod v3_0_0` | Added alongside existing `pub mod v2_0_0`; added `Metadata::with_schema_version` helper; global re-exports stay at v2 |
| T6 | DEFERRED → #1980 | Update default config files to `schema_version = "3.0.0"` | Cannot be done while bootstrap still uses `v2_0_0::Configuration`; config files and bootstrap switch together in #1980 |
| T7 | DEFERRED → #1980 | Wire application entry point to use `v3_0_0` by default | Requires updating bootstrap + all consumers; this is exactly the scope of subissue #1980 |
| T8 | DONE | Add smoke tests: deserialize default v3 config | Added `smoke::v3_configuration_should_load_when_schema_version_is_3_0_0` and `smoke::v3_configuration_should_reject_schema_version_2_0_0` |
| T9 | DONE | Run `linter all` and full test suite | All 48 test suites pass (0 failures) |
| ID | Status | Task | Notes |
| --- | ---------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| T1 | DONE | Copy `v2_0_0/` directory to `v3_0_0/` | `cp -r packages/configuration/src/v2_0_0/ packages/configuration/src/v3_0_0/` |
| T2 | DONE | Update `v3_0_0/mod.rs` to use `crate::v3_0_0` internal paths | Fixed all doc links, VERSION constant, test imports, and schema_version strings |
| T3 | DONE | Copy `logging.rs` into `v2_0_0/logging.rs` | Merged TraceStyle/setup/tracing_init into the versioned logging.rs; added module-level doc comment |
| T4 | DONE | Copy `logging.rs` into `v3_0_0/logging.rs` | Same content as T3; v3 gets its own copy |
| T5 | DONE | Update `lib.rs` to expose `pub mod v3_0_0` | Added alongside existing `pub mod v2_0_0`; added `Metadata::with_schema_version` helper; global re-exports stay at v2 |
| T6 | DEFERRED → #1980 | Update default config files to `schema_version = "3.0.0"` | Cannot be done while bootstrap still uses `v2_0_0::Configuration`; config files and bootstrap switch together in #1980 |
| T7 | DEFERRED → #1980 | Wire application entry point to use `v3_0_0` by default | Requires updating bootstrap + all consumers; this is exactly the scope of subissue #1980 |
| T8 | DONE | Add smoke tests: deserialize default v3 config | Added `smoke::v3_configuration_should_load_when_schema_version_is_3_0_0` and `smoke::v3_configuration_should_reject_schema_version_2_0_0` |
| T9 | DONE | Run `linter all` and full test suite | All 48 test suites pass (0 failures) |
| T10 | DONE | Update migration guide if this subissue affects the config public API | `docs/issues/open/1978-configuration-overhaul-epic/configuration-v2-to-v3-migration.md` |

## Progress Tracking

Expand Down
25 changes: 13 additions & 12 deletions docs/issues/closed/1981-1978-fix-tsl-config-tls-config-typo.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,15 @@ Old spellings are therefore expected to remain under `v2_0_0`, in the crate-root

## Implementation Plan

| ID | Status | Task | Notes |
| --- | ------ | ---------------------------------------------------- | --------------------------------------------------- |
| T1 | DONE | Add the v3-owned `TlsConfig` struct | Added `packages/configuration/src/v3_0_0/tls.rs` |
| T2 | DONE | Rename v3 `tsl_config` fields to `tls_config` | Updated v3 `HttpTracker` and `HttpApi` only |
| T3 | DONE | Rename schema-neutral `tsl.rs` to `tls.rs` | Updated module imports and local identifiers |
| T4 | DONE | Update v3 docs, open implementation specs, and tests | Preserved v2 and historical spellings intentionally |
| T5 | DONE | Record remaining old spellings by ownership | All matches classified under the approved boundary |
| T6 | DONE | Run `linter all` and full test suite | Both completed successfully on 2026-07-20 |
| ID | Status | Task | Notes |
| --- | ------ | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| T1 | DONE | Add the v3-owned `TlsConfig` struct | Added `packages/configuration/src/v3_0_0/tls.rs` |
| T2 | DONE | Rename v3 `tsl_config` fields to `tls_config` | Updated v3 `HttpTracker` and `HttpApi` only |
| T3 | DONE | Rename schema-neutral `tsl.rs` to `tls.rs` | Updated module imports and local identifiers |
| T4 | DONE | Update v3 docs, open implementation specs, and tests | Preserved v2 and historical spellings intentionally |
| T5 | DONE | Record remaining old spellings by ownership | All matches classified under the approved boundary |
| T6 | DONE | Run `linter all` and full test suite | Both completed successfully on 2026-07-20 |
| T7 | DONE | Update migration guide if this subissue affects the config public API | `docs/issues/open/1978-configuration-overhaul-epic/configuration-v2-to-v3-migration.md` |

## Implementation Files

Expand All @@ -114,11 +115,11 @@ Old spellings are therefore expected to remain under `v2_0_0`, in the crate-root

### Documentation files

| File | Change |
| ------------------------------------------------------------------------- | ----------------------------------------- |
| `packages/configuration/src/v3_0_0/mod.rs` | Correct v3 schema examples and prose |
| File | Change |
| --------------------------------------------------------------------------- | ----------------------------------------- |
| `packages/configuration/src/v3_0_0/mod.rs` | Correct v3 schema examples and prose |
| `docs/issues/closed/1640-1978-per-http-tracker-on-reverse-proxy-setting.md` | Correct future v3 field/type references |
| `docs/issues/open/1978-configuration-overhaul-epic.md` | Track progress and compatibility boundary |
| `docs/issues/open/1978-configuration-overhaul-epic/EPIC.md` | Track progress and compatibility boundary |

## Progress Tracking

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -227,5 +227,5 @@ Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`.

- BEP 3 — The BitTorrent Protocol Specification: <https://www.bittorrent.org/beps/bep_0003.html>
- Related issue (honour `ip` param — sub-issue of #1978): to be created
- Related epic: [#1978 — Configuration Overhaul](../1978-configuration-overhaul-epic.md)
- Related epic: [#1978 — Configuration Overhaul](../1978-configuration-overhaul-epic/EPIC.md)
- opentracker `WANT_IP_FROM_QUERY_STRING`: <https://erdgeist.org/arts/software/opentracker/>
Loading
Loading