Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
470 commits
Select commit Hold shift + click to select a range
d6c2f65
refactor(tracker-core): address Copilot PR review feedback
josecelano Apr 30, 2026
a370c3e
Merge torrust/torrust-tracker#1720: feat(tracker-core): introduce sql…
josecelano Apr 30, 2026
8f0c9ef
docs(issues): rename 1525-07 spec to include GitHub issue number
josecelano Apr 30, 2026
a5936d1
docs(issues): update 1721-1525-07 scope to db-only widening
josecelano Apr 30, 2026
32b7e33
feat(tracker-core): widen mysql download counters to bigint
josecelano Apr 30, 2026
fa09390
fix(tracker-core): decode mysql metadata type bytes in tests
josecelano Apr 30, 2026
d67efdd
docs(issues): align 1525-08 references with 1721 scope
josecelano Apr 30, 2026
4cb8853
Merge torrust/torrust-tracker#1722: feat(tracker-core): widen mysql d…
josecelano May 1, 2026
b06ee0f
docs(issues): prefix 1525-08 spec with issue number
josecelano May 1, 2026
cd665bf
docs(issues): update 1723-1525-08 spec with user answers and implemen…
josecelano May 1, 2026
a0f9c00
feat(tracker-core): add PostgreSQL database driver
josecelano May 1, 2026
15af1e0
fix(tracker-core): correct postgres key timestamp column
josecelano May 1, 2026
54210f3
ci(testing): add postgres compatibility job
josecelano May 1, 2026
74f5c8a
feat(ci): extend qBittorrent E2E runner with MySQL and PostgreSQL
josecelano May 1, 2026
e0d0a87
fix(tracker-core): wait for single postgres ready log in benchmark ru…
josecelano May 1, 2026
aee2efb
docs(tracker-core): add 2026-05-01 benchmark run with PostgreSQL base…
josecelano May 1, 2026
248df3d
ci(container): isolate compose build paths from storage
josecelano May 1, 2026
b0a654e
chore(repo): remove legacy compose file references
josecelano May 1, 2026
3ef0707
docs(containers): document PostgreSQL runtime configuration
josecelano May 1, 2026
3c9264c
docs(issues): mark task 9 complete in 1723 spec
josecelano May 1, 2026
517b42e
ci(db-compatibility): extract database compatibility workflow
josecelano May 1, 2026
8fb55e9
ci(db-benchmarking): add persistence benchmark smoke workflow
josecelano May 1, 2026
87d458c
docs(readme): add workflow badges for db-compatibility and db-benchma…
josecelano May 1, 2026
661bbd9
ci(os-compatibility): extract build matrix into dedicated workflow
josecelano May 1, 2026
33e5820
ci(testing): collapse matrix jobs into test-nightly and test-stable
josecelano May 1, 2026
40ed669
chore(issues): archive closed issue specs to docs/issues/closed
josecelano May 1, 2026
51998dd
fix(postgres): address Copilot PR review suggestions
josecelano May 1, 2026
245e6a3
ci(testing): collapse stable and nightly into matrix job
josecelano May 1, 2026
735fe19
ci(testing): normalize sqlite qBittorrent e2e invocation
josecelano May 1, 2026
453dd48
ci(testing): split unit checks and merge docker e2e flow
josecelano May 1, 2026
b5051ef
Merge torrust/torrust-tracker#1724: feat(tracker-core): add PostgreSQ…
josecelano May 1, 2026
9101e76
docs(issues): close epic 1525 persistence overhaul
josecelano May 1, 2026
5c8b5c8
Merge torrust/torrust-tracker#1725: docs(issues): close EPIC #1525 pe…
josecelano May 1, 2026
f73301c
chore(workspace): fix linter errors and update dependencies
josecelano May 4, 2026
08992d3
chore(deps): bump toml to 1.1.2+spec-1.1.0
josecelano May 4, 2026
51bef34
Merge torrust/torrust-tracker#1728: chore(workspace): fix linter erro…
josecelano May 4, 2026
7ecd348
docs(build): add sccache research issue spec (#1726)
josecelano May 4, 2026
0c9d757
Merge torrust/torrust-tracker#1727: docs(build): add sccache research…
josecelano May 4, 2026
014f517
docs(metrics): add issue spec for Prometheus deserialization (#1582)
josecelano May 4, 2026
25f6eb3
feat(metrics): add Prometheus text format deserialization
naoNao89 May 4, 2026
94c53b9
refactor(metrics): extract Prometheus deserialization helpers
josecelano May 4, 2026
9b3277e
fix(metrics): address Copilot PR review feedback
josecelano May 4, 2026
c3c42a1
docs(metrics): add refactor plan for metric_collection module split
josecelano May 4, 2026
15cdb7e
refactor(metrics): extract Error into metric_collection/error.rs
josecelano May 4, 2026
9ca54dd
refactor(metrics): extract MetricKindCollection into kind_collection.rs
josecelano May 4, 2026
f85911e
refactor(metrics): extract JSON serde impls into metric_collection/se…
josecelano May 4, 2026
7ba33c2
refactor(metrics): extract Prometheus impls into metric_collection/pr…
josecelano May 4, 2026
4e34b9e
test(tracker-core): fix race condition in global downloads persistenc…
josecelano May 4, 2026
8b38a65
docs(metrics): add unit test coverage improvement plan with llvm-cov …
josecelano May 4, 2026
b8a131d
test(metrics): add tests to close llvm-cov coverage gaps
josecelano May 4, 2026
e19decf
test(tracker-core): address copilot review suggestions
josecelano May 4, 2026
92965d3
docs(metrics): add mutation testing plan for the metrics package
josecelano May 4, 2026
a6b61c7
test(metrics): kill surviving mutants in metric_collection/prometheus.rs
josecelano May 4, 2026
333e124
test(metrics): kill surviving mutants in metric_collection/mod.rs
josecelano May 5, 2026
3ff64f0
Merge torrust/torrust-tracker#1730: fix(tracker-core): fix race condi…
josecelano May 5, 2026
4644ec8
test(metrics): kill surviving mutants in counter.rs and gauge.rs
josecelano May 5, 2026
2bb5610
test(metrics): kill surviving mutants in sample_collection.rs and sam…
josecelano May 5, 2026
0140113
test(metrics): kill surviving mutants in label/set.rs
josecelano May 5, 2026
886761f
test(metrics): kill surviving mutants in remaining files
josecelano May 5, 2026
ffa6c27
docs(metrics): add refactoring proposals for metric_collection/promet…
josecelano May 5, 2026
bbedebd
refactor(metrics): extract parse_family_samples via FromPrometheusVal…
josecelano May 5, 2026
3e91f69
refactor(metrics): extract is_whole_u64_representable predicate
josecelano May 5, 2026
04b0d74
refactor(metrics): add MetricDescription From conversions
josecelano May 5, 2026
9de6444
refactor(metrics): extract description_from_help helper
josecelano May 5, 2026
43b4c57
refactor(metrics): use Cow for input normalization in from_prometheus
josecelano May 5, 2026
d1f219b
refactor(metrics): parse_prometheus_timestamp returns Option
josecelano May 5, 2026
0ccddc7
refactor(metrics): use From conversions for collection errors
josecelano May 5, 2026
bf76972
refactor(metrics): implement proposal 8 — normalize-parse-convert pip…
josecelano May 5, 2026
e2fa3fc
docs(metrics): add follow-up refactor proposals 9-12
josecelano May 5, 2026
19f98d0
refactor(metrics): implement proposals 9-12 in prometheus pipeline
josecelano May 5, 2026
0e71e40
Merge torrust/torrust-tracker#1729: feat(metrics): add Prometheus tex…
josecelano May 5, 2026
d4e3fda
docs(issues): add issue spec for replacing aquatic_udp_protocol (#1732)
josecelano May 5, 2026
5d062eb
feat(deps): add internal fork packages aquatic-peer-id and aquatic-ud…
josecelano May 5, 2026
b7884ab
feat(deps): switch all packages to internal aquatic forks via path de…
josecelano May 5, 2026
fd3c0b9
docs(issues): clarify Step 4 substeps for absorbing forks into perman…
josecelano May 5, 2026
56fd418
docs(issues): document step 2 analysis — no unused code in internal f…
josecelano May 5, 2026
4f93e10
docs(issues): add Step 4c and cross-reference in issue 1732 docs
josecelano May 5, 2026
757ba54
feat(deps): apply zerocopy 0.8 migration to internal forks (step 3 of…
josecelano May 5, 2026
4c04c51
docs(issue-1732): refine step 4 plan to break protocol-primitives cycle
josecelano May 6, 2026
d5f42a6
refactor(udp-protocol): migrate consumers to workspace udp protocol c…
josecelano May 6, 2026
43739a4
refactor(primitives): define peer domain types natively
josecelano May 6, 2026
18e4757
refactor(udp-tracker-core): move peer builder out of udp protocol
josecelano May 6, 2026
978327c
refactor(udp-protocol): absorb interim aquatic fork sources
josecelano May 6, 2026
4c04033
chore(deps): remove unused dependencies and fix doctest types
josecelano May 6, 2026
94f3307
docs(issue-1732): update step 4 progress and validation status
josecelano May 6, 2026
88fc017
refactor(bittorrent-primitives): make InfoHash self-contained
josecelano May 6, 2026
c170e4d
chore(deps): remove unused hex-literal from console/tracker-client
josecelano May 6, 2026
9a05943
chore(deps): use published bittorrent-primitives 0.2.0
josecelano May 6, 2026
f5567bf
docs(issue-1732): refine step 5 implementation strategy
josecelano May 6, 2026
0071129
refactor(udp-protocol): move connect types to connect module
josecelano May 6, 2026
ed10569
refactor(udp-protocol): move announce types to announce module
josecelano May 6, 2026
21a834b
refactor(udp-protocol): move scrape types to scrape module
josecelano May 6, 2026
48aab9d
refactor(udp-protocol): move AnnounceInterval to announce module
josecelano May 6, 2026
38298c1
docs(udp-protocol): document shared common wire type mirrors
josecelano May 6, 2026
328671b
docs(udp-protocol): finalize ErrorResponse ownership decision
josecelano May 6, 2026
3bd5c63
docs(issue-1732): update step 5 progress tracking
josecelano May 6, 2026
3fe50c1
docs(issue-1732): document final udp-protocol module layout
josecelano May 6, 2026
5b6423b
docs(issue-1732): add primitives refactor plan
josecelano May 6, 2026
d9f63ae
refactor(primitives): add announce and scrape modules
josecelano May 6, 2026
4e20c20
refactor(primitives): move AnnounceData to announce module
josecelano May 6, 2026
cd714a9
refactor(primitives): move AnnounceEvent to announce module
josecelano May 6, 2026
6c64e0a
refactor(primitives): move ScrapeData to scrape module
josecelano May 6, 2026
64cf147
docs(issue-1732): document final primitives module layout
josecelano May 6, 2026
95b6ce0
refactor(primitives): remove compatibility wrapper modules
josecelano May 6, 2026
91c6478
docs(issue-1732): add peer-id extraction plan
josecelano May 6, 2026
0b6ba10
refactor(peer-id): create in-house crate and migrate udp-protocol
josecelano May 6, 2026
511932c
refactor(primitives): integrate extracted peer-id crate
josecelano May 6, 2026
49b5c9f
chore(workspace): rely on auto-discovered peer-id member
josecelano May 6, 2026
3068b9e
refactor(peer-id): split crate into focused internal modules
josecelano May 6, 2026
c37276d
docs(issue-1732): document final peer-id ownership
josecelano May 6, 2026
7265f0d
docs(packages): clarify aquatic provenance and acknowledgments
josecelano May 6, 2026
fdcb817
chore(review): address remaining PR #1733 suggestions
josecelano May 6, 2026
7a587dd
docs(review): add comprehensive copilot PR suggestion review workflow
josecelano May 6, 2026
2007330
Merge torrust/torrust-tracker#1733: feat(deps): replace aquatic_udp_p…
josecelano May 6, 2026
87220a6
chore: update dependencies
josecelano May 6, 2026
bd5d120
Merge torrust/torrust-tracker#1734: chore: update dependencies
josecelano May 6, 2026
ddb4cfb
fix(bootstrap): extract optional TLS config before make_rust_tls
da2ce7 May 6, 2026
4b5b4d8
Merge torrust/torrust-tracker#1735: dev: extract tls optional before …
josecelano May 7, 2026
d4d0a1f
docs(issues): add spec for EPIC #669 and pending subissues #1532 and …
josecelano May 5, 2026
0dc8573
docs(issues): update #1533 spec to reflect in-house udp-protocol crate
josecelano May 6, 2026
91f4e52
docs(issues): add specs for #671 and #672
josecelano May 7, 2026
4b8d5d0
docs(issues): clarify compact default format rationale
josecelano May 7, 2026
f8fa9bf
docs(issues): add spec for HTTP client URL suffix bug
josecelano May 7, 2026
3e5b381
docs(issues): refine epic subissue specifications
josecelano May 7, 2026
707a396
docs(issues): fix Copilot review comments on epic sub-issue specs
josecelano May 7, 2026
ed3e156
Merge torrust/torrust-tracker#1737: docs(issues): refine EPIC #669 su…
josecelano May 7, 2026
181121a
skill: add run-tracker-locally for development environment setup
josecelano May 7, 2026
1f9f3c1
feat(tracker-client): add optional announce parameters to UDP tracker…
josecelano May 7, 2026
9377719
docs(issue-1533): mark implementation complete and verified
josecelano May 7, 2026
0745072
docs(issue-1532): add manual verification output example
josecelano May 7, 2026
f051006
docs(tracker-client): add deferred JSON/stdin request input proposal
josecelano May 7, 2026
a7fa087
chore(cspell): add base64 token used in docs example
josecelano May 7, 2026
d3bc5f5
docs(skills): add manual UDP started-completed e2e testing skill
josecelano May 7, 2026
3477227
docs(skills): add manual HTTP download-completion e2e skill
josecelano May 7, 2026
e8d5edd
fix(tracker-client): address Copilot review suggestions
josecelano May 7, 2026
2712b75
Merge torrust/torrust-tracker#1738: feat(tracker-client): add optiona…
josecelano May 7, 2026
bf7c621
feat(tracker-client): add optional announce params to HTTP client
josecelano May 7, 2026
f155504
docs(issue-1532): document implementation learnings
josecelano May 7, 2026
40e9b65
fix(tracker-client): reject zero HTTP announce port
josecelano May 7, 2026
20fca49
Merge torrust/torrust-tracker#1739: feat(tracker-client): add optiona…
josecelano May 7, 2026
2638dd9
docs(#1740): add container workflow caching issue spec
josecelano May 7, 2026
105ab03
ci(container): fix checkout and cache scoping
josecelano May 7, 2026
7074e8e
ci(e2e): reuse prebuilt tracker image
josecelano May 7, 2026
005f695
chore(container): reduce context churn and document cache
josecelano May 7, 2026
57c1ed6
fix(ci): address PR review feedback
josecelano May 7, 2026
4b47206
Merge torrust/torrust-tracker#1741: ci(#1740): fix container workflow…
josecelano May 8, 2026
c027708
docs(ci): add change-aware workflow issue specs
josecelano May 8, 2026
9d4e4a6
Merge torrust/torrust-tracker#1745: docs(ci): add change-aware workfl…
josecelano May 8, 2026
9a7d83b
ci(workflows): add docs-only CI fast path
josecelano May 8, 2026
2645383
Merge torrust/torrust-tracker#1746: ci(workflows): add docs-only CI f…
josecelano May 8, 2026
35d03b3
ci(workflows): scope persistence workflows to tracker-core changes
josecelano May 8, 2026
c3eab6e
Merge torrust/torrust-tracker#1747: ci(workflows): scope persistence …
josecelano May 8, 2026
7fcfa4f
docs(issues): add issue 1748 spec
josecelano May 8, 2026
eabcd88
ci(container): remove redundant compose step
josecelano May 8, 2026
cd9fcd7
Merge torrust/torrust-tracker#1749: ci(container): remove redundant c…
josecelano May 8, 2026
b1e2df8
docs(issues): add experimental spec for #1750 skill semantic coupling
josecelano May 8, 2026
a7c0708
docs(skills): add semantic skill links and validation for #1750
josecelano May 8, 2026
7b77637
docs(skills): switch to minimal marker catalog for #1750
josecelano May 8, 2026
c0e8767
fix(skills): address CodeRabbit review suggestions for PR #1751
josecelano May 8, 2026
bcc1a98
docs(agents): add rule for skill-link artifact/skill synchronization
josecelano May 8, 2026
93715fc
Merge torrust/torrust-tracker#1751: docs(skills): experimental semant…
josecelano May 11, 2026
ae2bffc
chore(docs): move closed issues to docs/issues/closed/
josecelano May 11, 2026
7ca34e9
docs(issues): move open issue specs into open lifecycle directory
josecelano May 11, 2026
3756efd
chore(.vscode): remove obsolete mcp.json configuration
josecelano May 11, 2026
9cc4db4
Merge torrust/torrust-tracker#1753: docs: reorganize issue lifecycle …
josecelano May 11, 2026
91a6963
fix(tracker-client): format unrecognized UDP responses clearly
josecelano May 11, 2026
82b8935
docs(issue-671): add manual verification plan and tracker results
josecelano May 11, 2026
752ec19
docs(issue-671): record local malformed-response verification
josecelano May 11, 2026
e582ec3
docs(issue-671): mark acceptance criteria complete
josecelano May 11, 2026
a745453
docs(workflow): enforce PR body accuracy checks
josecelano May 11, 2026
042ef52
Merge torrust/torrust-tracker#1754: fix: print unrecognized UDP track…
josecelano May 11, 2026
955af2d
docs(issue-672): add manual verification plan
josecelano May 11, 2026
9c41bd6
feat(tracker-client): handle unrecognized HTTP tracker responses
josecelano May 11, 2026
01e04f5
refactor(tracker-client): address HTTP response review suggestions
josecelano May 11, 2026
8421d71
Merge torrust/torrust-tracker#1755: feat(tracker-client): handle unre…
josecelano May 11, 2026
4cbf12e
chore(agents): require peer review before commit
josecelano May 11, 2026
d13d146
chore(agents): add planner delegation workflow
josecelano May 11, 2026
1220dcf
chore(agents): resolve agent responsibility inconsistencies
josecelano May 11, 2026
18bbf24
feat(tracker-client): add udp response format option
josecelano May 11, 2026
018e999
chore(agents): require issue spec progress before commit
josecelano May 11, 2026
6c9ad33
docs(skills): add public tracker testing skill links
josecelano May 11, 2026
f52d16d
docs(templates): centralize templates and add semantic links
josecelano May 11, 2026
dc200b8
docs: address Copilot PR review suggestions
josecelano May 11, 2026
b1d1cd5
docs(planning): add agent documentation refactor plan
josecelano May 11, 2026
ffc7486
Merge torrust/torrust-tracker#1756: feat(tracker-client): add UDP res…
josecelano May 11, 2026
ed55546
docs(agents): implement policy-first documentation refactor
josecelano May 11, 2026
8a6b74a
feat(tracker-client): add http response format option
josecelano May 11, 2026
2bfeabd
refactor(tracker-client): optimize compact fallback formatting
josecelano May 11, 2026
1bc057a
docs(review): address Copilot PR #1757 suggestions
josecelano May 11, 2026
cfc5cd1
Merge torrust/torrust-tracker#1758: feat(tracker-client): add HTTP re…
josecelano May 11, 2026
b80e2e4
Merge torrust/torrust-tracker#1757: chore(agents): improve agent gove…
josecelano May 11, 2026
28ffdba
fix(tracker-client): avoid duplicate announce/scrape suffix and rejec…
josecelano May 11, 2026
caf185e
fix(tracker-client): address copilot review feedback on URL handling
josecelano May 11, 2026
97a209c
Merge torrust/torrust-tracker#1759: fix(tracker-client): avoid duplic…
josecelano May 11, 2026
6a7e8d1
docs(tracker-client): define IO contract and align issue specs
josecelano May 12, 2026
a9b1064
docs(tracker-client): fix PeerId example format and align probe event…
josecelano May 12, 2026
5473ef3
Merge torrust/torrust-tracker#1760: docs(tracker-client): define CLI …
josecelano May 12, 2026
e6b497d
feat(tracker-client): change default peer ID prefix from qB to RC
josecelano May 12, 2026
49b1e5a
fix(tracker-client): align peer ID doc comments and ADR to 12-digit c…
josecelano May 12, 2026
7561d58
Merge torrust/torrust-tracker#1761: feat(tracker-client): change defa…
josecelano May 12, 2026
2b177a2
fix(ci): add docs-only paths-ignore to container and coverage workflows
josecelano May 12, 2026
c523b1d
Merge torrust/torrust-tracker#1762: fix(ci): add docs-only paths-igno…
josecelano May 12, 2026
d229dbf
chore(docs): migrate metadata to YAML frontmatter and relocate review…
josecelano May 12, 2026
fe5e6ca
docs(skills): align spec metadata guidance with review feedback
josecelano May 12, 2026
5ca4de6
Merge torrust/torrust-tracker#1763: chore(docs): formalize issue/epic…
josecelano May 12, 2026
a0476ea
docs(issues): update #1042 spec with I/O contract alignment and testi…
josecelano May 12, 2026
08b89be
fix(tracker-client): surface JSON parse detail in checker config erro…
josecelano May 12, 2026
2c9f5f8
docs(issues): update #1042 frontmatter — status and timestamps
josecelano May 12, 2026
b28c54c
chore(dev): add dep
josecelano May 12, 2026
8114cd4
docs(issues): add manual verification section to #1042
josecelano May 12, 2026
e2ea3a9
chore(tracker-client): fix linter warnings in #1042 implementation
josecelano May 12, 2026
dbba1ba
docs(issues): link PR #1764 to issue spec #1042
josecelano May 12, 2026
8bb52e4
fix(tracker-client): address copilot review on #1764
josecelano May 12, 2026
36ed8ef
test(tracker-client): make tracker_checker binary lookup nextest-safe
josecelano May 12, 2026
e89441a
Merge torrust/torrust-tracker#1764: fix(tracker-client): improve erro…
josecelano May 12, 2026
752cb9f
docs(issues): add draft specs for HTTP/3 proxy docs and native HTTP/3…
josecelano May 12, 2026
4cd6dc8
docs(issues): move HTTP/3 specs from drafts to open, assign #1736 and…
josecelano May 12, 2026
29cce53
docs(issues): add HTTP/3 verification steps and fix #1765 title
josecelano May 12, 2026
efb8141
docs(workflow): reduce issue-doc duplication and add index readmes
josecelano May 12, 2026
6dd170e
docs(http): document HTTP/3 reverse-proxy deployment
josecelano May 12, 2026
1e253f8
docs(issues): align 1736 workflow checkpoints before PR
josecelano May 12, 2026
0235696
docs(agents): split task and PR review workflows
josecelano May 12, 2026
3449801
docs(http): address copilot review suggestions on PR #1766
josecelano May 12, 2026
244c94e
Merge torrust/torrust-tracker#1766: docs(http): document HTTP/3 suppo…
josecelano May 12, 2026
86a8246
docs(issue-1178): record maintainer feedback before implementation
josecelano May 12, 2026
5b0a786
feat(tracker-client): add tracker_checker monitor udp command
josecelano May 12, 2026
2e38367
docs(issue-1178): add manual verification against demo tracker
josecelano May 12, 2026
3067868
docs(issue-1178): add manual verification against old (down) demo tra…
josecelano May 12, 2026
4d1493c
docs(issue-1178): add post-implementation refactor plan
josecelano May 12, 2026
47d7092
docs(planning): add refactor plan template and create-refactor-plan s…
josecelano May 12, 2026
7fb474b
docs(planning): reorganise refactor-plans into drafts/open/closed sub…
josecelano May 12, 2026
d786a92
docs(planning): move agent-docs-refactor-plan to closed
josecelano May 12, 2026
df8c380
docs(issue-1178): fix spec accuracy and add all-null latency unit test
josecelano May 12, 2026
7dac161
docs(tracker-client): document timeout-only nature of monitor_udp int…
josecelano May 12, 2026
664a125
docs(issue-1178): correct Task 6 file reference to app.rs
josecelano May 12, 2026
db747f6
docs(issue-1178): document last_ms null on timeout in AC3 and tick al…
josecelano May 12, 2026
7d404ba
docs(tracker-client): clarify intent of both duration-check guards in…
josecelano May 12, 2026
36f5511
docs(tracker-client): document u64::MAX fallback is unreachable in el…
josecelano May 12, 2026
1a650bf
docs(tracker-client): document timeout_percent denominator includes e…
josecelano May 12, 2026
617b1f5
fix(tracker-client): measure elapsed_ms after DNS resolution
josecelano May 12, 2026
dbd452b
refactor(tracker-client): extract run_probe_loop from run_monitor
josecelano May 12, 2026
ec34d60
refactor(tracker-client): add MonitorStats conversion from Stats
josecelano May 12, 2026
c5b0049
docs(planning): defer item 14 and close monitor udp refactor plan
josecelano May 12, 2026
aece34b
refactor(tracker-client): split tracker_checker integration tests by …
josecelano May 12, 2026
f76c733
test(tracker-client): address copilot review feedback
josecelano May 12, 2026
8970b90
Merge torrust/torrust-tracker#1767: feat(tracker-client): add monitor…
josecelano May 12, 2026
e37e97e
docs(issues): open specs for #1768 and #1769
josecelano May 13, 2026
31699ee
Merge torrust/torrust-tracker#1770: docs(issues): open specs for #176…
josecelano May 13, 2026
d310d54
docs(issues): add #1771 spec and spec-first PR workflow
josecelano May 13, 2026
224b4e9
docs(templates): require manual verification in issue workflows
josecelano May 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
32 changes: 16 additions & 16 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ time = "build --timings --all-targets"

[build]
rustflags = [
"-D",
"warnings",
"-D",
"future-incompatible",
"-D",
"let-underscore",
"-D",
"nonstandard-style",
"-D",
"rust-2018-compatibility",
"-D",
"rust-2018-idioms",
"-D",
"rust-2021-compatibility",
"-D",
"unused",
"-D",
"warnings",
"-D",
"future-incompatible",
"-D",
"let-underscore",
"-D",
"nonstandard-style",
"-D",
"rust-2018-compatibility",
"-D",
"rust-2018-idioms",
"-D",
"rust-2021-compatibility",
"-D",
"unused",
]
17 changes: 14 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
/.coverage/
/.git
/.git-blame-ignore
/.github
/.githooks/
/.gitignore
/.markdownlint.json
/.taplo.toml
/.vscode
/.yamllint-ci.yml
/AGENTS.md
/bin/
/tracker.*
/cSpell.json
/codecov.yaml
/compose.*.yaml
/cspell.json
/data.db
/docs/
/docker/bin/
/etc/
/integration_tests_sqlite3.db
/NOTICE
/project-words.txt
/README.md
/rustfmt.toml
/storage/
/target/
/etc/
/tracker.*
7 changes: 7 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env bash

set -euo pipefail

repo_root="$(git rev-parse --show-toplevel)"

"$repo_root/contrib/dev-tools/git/hooks/pre-commit.sh"
78 changes: 78 additions & 0 deletions .github/agents/committer.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
name: Committer
description: Proactive commit specialist for this repository. Use when asked to commit changes, prepare a commit, review staged changes before committing, write a commit message, run pre-commit checks, or create a signed Conventional Commit.
argument-hint: Describe what should be committed, any files to exclude, and whether the changes are already staged.
tools: [execute, read, search, todo]
user-invocable: true
disable-model-invocation: false
---

You are the repository's commit specialist. Your job is to prepare safe, clean, and reviewable
commits for the current branch.

Treat every commit request as a review-and-verify workflow, not as a blind request to run
`git commit`.

## Repository Rules

- Follow `AGENTS.md` for repository-wide behaviour and
`.github/skills/dev/git-workflow/commit-changes/SKILL.md` for commit-specific reference details.
- The pre-commit validation command is `./contrib/dev-tools/git/hooks/pre-commit.sh`.
- Create GPG-signed Conventional Commits (`git commit -S`).

## Required Workflow

1. **Check issue spec progress.** Before touching `git`, determine whether the commit relates to
an issue spec in `docs/issues/`. If it does:
- Verify that completed acceptance criteria are checked off in the spec.
- Verify that the spec's progress notes or task list reflect the current state.
- If the spec is out of date, stop and ask the caller to update it before proceeding.
Do not commit with a stale spec.
2. Read the current branch, `git status`, and the staged or unstaged diff relevant to the request.
3. Summarize the intended commit scope before taking action.
4. Ensure the commit scope is coherent and does not accidentally mix unrelated changes.
5. Check for obvious repository-policy violations in the diff (for example missing required spec
progress updates, missing documented rationale where required, or similar policy blockers).
If found, stop and return to the Implementer/Reviewer before committing.
6. Run `./contrib/dev-tools/git/hooks/pre-commit.sh` when feasible. If it fails:
- **You may fix**: formatting, linting, spell-check, import organization, and similar
metadata-only issues that are direct artifacts of the commit scope.
- **You must not fix**: build failures, test failures, logic errors, or runtime issues.
These are implementation defects; stop and return them to the **Implementer** to resolve.
7. Propose a precise Conventional Commit message.
8. Create the commit with `git commit -S` only after the scope is clear and blockers are resolved.
9. After committing, run a quick verification check and report the resulting commit summary.

## Constraints

- Do not write code.
- Do not bypass failing checks without explicitly telling the user what failed.
- Do not rewrite or revert unrelated user changes.
- Do not create empty, vague, or non-conventional commit messages.
- Do not commit secrets, backup junk, or accidental files.
- Do not mix skill/workflow documentation changes with implementation changes — always create
separate commits.

## Splitting Commits

When the requested work spans multiple logical commits and `project-words.txt` has been
modified with new entries that belong to different commits, do not try to split the
dictionary additions across those commits. Instead:

1. Commit all `project-words.txt` changes first as a single `chore(cspell): add <words>`
commit (or fold them into the first logical commit when that is more natural).
2. Then create the remaining focused commits for the actual implementation/docs changes.

This keeps the spell-check linter green at every commit and keeps the substantive commits
focused on their real intent rather than on dictionary churn.

## Output Format

When handling a commit task, respond in this order:

1. Commit scope summary
2. Blockers, anomalies, or risks
3. Checks run and results
4. Proposed commit message
5. Commit status
6. Post-commit verification
90 changes: 90 additions & 0 deletions .github/agents/complexity-auditor.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
name: Complexity Auditor
description: Code quality auditor that checks cyclomatic and cognitive complexity of code changes. Invoked by the Implementer agent after each implementation step, or directly when asked to audit code complexity. Reports PASS, WARN, or FAIL for each changed function.
argument-hint: Provide the diff, changed file paths, or a package name to audit.
tools: [execute, read, search]
user-invocable: true
disable-model-invocation: false
---

You are a code quality auditor specializing in complexity analysis. You review code changes and
report complexity issues before they become technical debt.

Your scope is **narrowly defined**: cyclomatic complexity, cognitive complexity, nesting depth,
and function length. Naming conventions, import organization, documentation, and other
repository-convention checks are the domain of the **Reviewer** — do not duplicate that work here.

You are typically invoked by the **Implementer** agent after the complete red-green-refactor
cycle for each implementation step, but you can also be invoked directly by the user.

## Audit Scope

Focus on the diff introduced by the current task. Do not report pre-existing issues unless they
are directly adjacent to changed code and introduce additional risk.

## Complexity Checks

### 1. Cyclomatic Complexity

Count the independent paths through each changed function. Each of the following adds one branch:
`if`, `else if`, `match` arm, `while`, `for`, `loop`, `?` early return, and `&&`/`||` in a
condition. A function starts at complexity 1.

| Complexity | Assessment |
| ---------- | --------------- |
| 1 – 5 | Simple — OK |
| 6 – 10 | Moderate — OK |
| 11 – 15 | High — warn |
| 16+ | Too high — fail |

### 2. Cognitive Complexity (via Clippy)

Run the following to surface Clippy cognitive complexity warnings:

```bash
cargo clippy --package <affected-package> -- \
-W clippy::cognitive_complexity \
-D warnings
```

Any `cognitive_complexity` warning from Clippy is a failing issue.

### 3. Nesting Depth

Flag functions with more than 3 levels of nesting. Deep nesting hides intent and makes
reasoning difficult.

### 4. Function Length

Flag functions longer than 50 lines. Long functions are a proxy for missing decomposition.

## Audit Workflow

1. Identify all functions added or changed in the current diff.
2. For each function, compute cyclomatic complexity from the source.
3. Run `cargo clippy` with the cognitive complexity lint enabled.
4. Check nesting depth and function length.
5. Report findings using the output format below.

## Output Format

For each audited function, report one line:

```text
PASS fn foo() complexity=3 nesting=1 lines=12
WARN fn bar() complexity=12 nesting=3 lines=45 [high complexity]
FAIL fn baz() complexity=18 nesting=4 lines=70 [too complex — refactor required]
```

End the report with one of:

- `AUDIT PASSED` — no issues found; the Implementer may proceed to the next step.
- `AUDIT WARNED` — non-blocking issues found; describe each concern briefly.
- `AUDIT FAILED` — blocking issues found; the Implementer must simplify before proceeding.

## Constraints

- Do not rewrite or suggest rewrites of code yourself — report only, let the Implementer decide.
- Do not penalise idiomatic `match` expressions that are the primary control flow of a function.
- Do not report issues in unchanged code unless they are adjacent to changes and introduce risk.
- Keep the report concise: one line per function, with detail only for warnings and failures.
77 changes: 77 additions & 0 deletions .github/agents/github-operator.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: GitHub Operator
description: GitHub workflow specialist for repository tasks that should stay out of the main implementation context. Use when you need to create or update issues, write issue comments, link sub-issues, inspect or manage pull request discussions, resolve GitHub-side workflow tasks, or interact with GitHub through the official MCP tools, GitHub CLI, or raw GitHub APIs.
argument-hint: Describe the GitHub task, target repo, issue or PR numbers, and the expected outcome. Include whether the agent should only perform GitHub operations or also prepare a draft message for review first.
tools: [execute, read, search, todo]
user-invocable: true
disable-model-invocation: false
---

You are the repository's GitHub workflow specialist. Your job is to complete GitHub-related tasks
reliably while keeping the caller's main context focused on domain or implementation work.

You handle GitHub operations, not general feature implementation.

## Primary Use Cases

Use this agent for tasks such as:

- Creating new issues from approved specifications
- Updating issue titles, labels, bodies, assignees, or comments
- Linking sub-issues to parent issues
- Fetching, summarizing, replying to, or resolving pull request review threads
- Handling GitHub metadata or workflow tasks that would otherwise pollute the main agent context

## Tool Preference Order

Always prefer the most structured interface first:

1. **Official GitHub MCP tools** when available for the requested operation
2. **GitHub CLI** (`gh issue`, `gh pr`, `gh api`) when MCP coverage is missing or limited
3. **Raw GitHub REST or GraphQL API calls** via `gh api` only when needed

Do not jump directly to raw API calls if a dedicated MCP or CLI command covers the task clearly.

## Required Workflow

1. Identify the exact GitHub task and target object: repository, issue number, PR number, comment,
review thread, or label.
2. Read any local specification or context file needed to perform the task correctly.
3. Load the relevant repository skill when one exists.
4. Choose the highest-level GitHub interface that can perform the task safely.
5. For PR descriptions, reconcile the proposed body with the actual branch diff and commit list before applying updates.
6. Execute the operation with the minimum number of calls needed.
7. Verify the result by reading the updated GitHub object or returned URL.
8. Report only the outcome and key identifiers back to the caller.

## Repository Guidance

- Follow `AGENTS.md` for repository-wide standards.
- Prefer these skills when relevant:
- `.github/skills/dev/planning/create-issue/SKILL.md` for issue creation workflow
- `.github/skills/dev/github/link-subissue-to-parent-issue/SKILL.md` for parent/sub-issue linking
- `.github/skills/dev/pr-reviews/fetch-review-threads/SKILL.md` for review thread retrieval
- `.github/skills/dev/pr-reviews/resolve-review-threads/SKILL.md` for closing review threads

## Important Rules

- Do not guess repository names, labels, issue numbers, PR numbers, or comment IDs.
- Do not assume the visible issue number is the same identifier required by a GitHub API.
- For sub-issue linking, remember that the REST API expects the child issue's internal GitHub ID,
not its visible issue number.
- Do not claim PR implementation changes that are not present in the current HEAD diff.
- Do not mix GitHub task execution with unrelated code changes.
- Do not create a GitHub issue without a corresponding approved local spec in `docs/issues/`.
Issue creation on GitHub is a publishing step, not a planning step — the spec comes first.
- If a PR review comment requires code changes, stop after identifying the actionable request and
hand control back to the caller or a code-focused agent.
- Keep the workflow deterministic: inspect, act, verify.

## Output Expectations

When finishing a task, return:

1. What was changed or verified
2. The key GitHub identifiers or URLs
3. Any blockers, permissions issues, or follow-up needed
4. For PR body updates, a short evidence line showing the checked commit range and changed files
Loading
Loading