Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1312 commits
Select commit Hold shift + click to select a range
cffc619
refactor(axum-http-server): extract base_url() helper on test Environ…
josecelano Jul 15, 2026
53186c0
refactor(axum-http-server): split test contract module into directory…
josecelano Jul 15, 2026
ed9886d
docs(issue): T16 run full verification after all changes (#1965)
josecelano Jul 15, 2026
de92be2
docs(skill): T17 create use-tracker-client skill (#1965)
josecelano Jul 15, 2026
085811f
Merge torrust/torrust-tracker#1974: feat(http-protocol): consolidate …
josecelano Jul 15, 2026
1770bce
docs(configuration): add Configuration Overhaul EPIC spec and 9 subis…
josecelano Jul 15, 2026
dfe7b71
docs(configuration): address Copilot PR review comments
josecelano Jul 15, 2026
7e1fb72
Merge torrust/torrust-tracker#1982: docs(configuration): add Configur…
josecelano Jul 15, 2026
4ea5be8
chore: update dependencies
josecelano Jul 15, 2026
05de36a
chore(ci): bump GitHub Actions
josecelano Jul 15, 2026
a0a6914
fix(ci): use v-prefixed trivy-action tag
josecelano Jul 15, 2026
5c41b6f
Merge torrust/torrust-tracker#1983: chore: update dependencies
josecelano Jul 15, 2026
1bfd306
chore(issues): archive closed issue specs #1447, #1459, #1505, #1926,…
josecelano Jul 15, 2026
2e2178f
docs(skill): document branch-already-exists edge case in cleanup-comp…
josecelano Jul 15, 2026
174904d
chore(ci): point to ADR instead of closed issue spec in deployment-pa…
josecelano Jul 15, 2026
9cdb3a7
Merge torrust/torrust-tracker#1984: chore(issues): archive 10 closed …
josecelano Jul 15, 2026
b5879fb
feat(agents): add Researcher custom agent for external evidence gathe…
josecelano Jul 15, 2026
334fba6
docs(issue): add spec for renaming peer_addr to ip in HTTP announce (…
josecelano Jul 15, 2026
5f87b10
docs(issue): add spec for compact peer list default per BEP 23 (ref #…
josecelano Jul 15, 2026
7c1fc8b
docs(issue): add spec for use_ip_from_query_string config option (ref…
josecelano Jul 15, 2026
ac9ba0e
fix(docs): address Copilot review comments on PR #1988
josecelano Jul 15, 2026
9c9b8b7
Merge torrust/torrust-tracker#1988: docs(issues): add specs for HTTP …
josecelano Jul 15, 2026
08327f5
fix(axum-http-server): return compact peer list by default per BEP 23
josecelano Jul 16, 2026
25162a0
fix(axum-http-server): address Copilot review comments on PR #1990
josecelano Jul 16, 2026
bbc9686
Merge torrust/torrust-tracker#1990: fix(axum-http-server): return com…
josecelano Jul 16, 2026
c3209d2
refactor(udp-core, udp-server, udp-protocol, tracker-client): consoli…
josecelano Jul 16, 2026
1dbf405
docs(issue): update spec with PR #1991 link
josecelano Jul 16, 2026
8265e01
chore(review): fix outdated InfoHash comment referenced by Copilot (#…
josecelano Jul 16, 2026
49d8117
Merge torrust/torrust-tracker#1991: refactor(udp-core, udp-server, ud…
josecelano Jul 16, 2026
3de7341
feat(http-protocol): rename HTTP announce `peer_addr` param to `ip` (…
josecelano Jul 16, 2026
a3b48e5
docs(issue-1985): record manual verification evidence
josecelano Jul 16, 2026
7b3b59e
fix(issue-1985): address Copilot review comments on PR #1992
josecelano Jul 16, 2026
e77f2e6
chore(issue-1985): fix trailing whitespace in spec and ADR index
josecelano Jul 16, 2026
da5c4c7
Merge torrust/torrust-tracker#1992: feat(http-protocol): rename HTTP …
josecelano Jul 16, 2026
61084af
docs(readme): add sealed_token to Star History widget URLs
josecelano Jul 20, 2026
217d1c0
Merge torrust/torrust-tracker#1998: docs(readme): add sealed_token to…
josecelano Jul 20, 2026
8b9c0ed
docs(readme): remove non-functional Star History widget
josecelano Jul 20, 2026
2edde01
Merge torrust/torrust-tracker#2000: docs(readme): remove non-function…
josecelano Jul 20, 2026
cce0aba
feat(configuration): copy v2_0_0 schema to v3_0_0 as baseline (#1979)
josecelano Jul 20, 2026
cd786f1
chore(issue-1979): set related-pr to 1999 in spec
josecelano Jul 20, 2026
2b6bc1a
fix(configuration): address Copilot review comments on PR #1999
josecelano Jul 20, 2026
e22ad27
Merge torrust/torrust-tracker#1999: feat(configuration): copy v2_0_0 …
josecelano Jul 20, 2026
72d7f4b
docs(issues): specify JoinSet evaluation for #1586
josecelano Jul 20, 2026
6903bc8
chore(deps): keep project-words.txt alphabetical
josecelano Jul 20, 2026
b83c1db
Merge torrust/torrust-tracker#2001: docs(issues): specify JoinSet eva…
josecelano Jul 20, 2026
0585c6f
docs(configuration): specify connection ID validation policy
josecelano Jul 20, 2026
810ea45
chore(issue-1136): link specification PR
josecelano Jul 20, 2026
bb5de91
fix(docs): align EPIC artifact indentation
josecelano Jul 20, 2026
955817f
docs(epic): remove redundant skill marker
josecelano Jul 20, 2026
c7663a0
docs(issues): remove redundant skill markers
josecelano Jul 20, 2026
5946eee
Merge torrust/torrust-tracker#2002: Document UDP connection ID valida…
josecelano Jul 20, 2026
23a5e44
docs(issues): add automation guardrails EPIC #2003
josecelano Jul 20, 2026
9c40c43
Merge torrust/torrust-tracker#2004: docs(issues): add automation guar…
josecelano Jul 20, 2026
4d7ca7c
docs(configuration): record TLS typo compatibility boundary
josecelano Jul 20, 2026
54878f6
fix(configuration): correct TLS naming in v3 schema
josecelano Jul 20, 2026
3d6e95f
fix(configuration): remove redundant TLS lint suppression
josecelano Jul 20, 2026
bd8d4e7
Merge torrust/torrust-tracker#2005: fix(configuration): correct TLS n…
josecelano Jul 20, 2026
8b197b4
docs(issues): add specification for #1463
josecelano Jul 20, 2026
6e7c3e7
build(container): use slim Rust chef image
josecelano Jul 20, 2026
2fb353f
build(container): minimize tester image packages
josecelano Jul 20, 2026
7aa1a68
build(container): use slim GCC build stage
josecelano Jul 20, 2026
c44fbb8
docs(security): reorganize CVE catalog by impact context and record b…
josecelano Jul 20, 2026
84d58d5
docs(issues): update spec for #1463 — mark PR #2007 and add progress …
josecelano Jul 20, 2026
ece0db7
chore(review): address PR #2007 Copilot suggestions
josecelano Jul 20, 2026
8106d9d
docs(review): fix table formatting in PR #2007 suggestions tracker
josecelano Jul 20, 2026
2980b25
chore(review): add apt-get clean to chef and tester APT layers
josecelano Jul 20, 2026
7a14082
chore(review): address PR #2007 Copilot suggestions batch 3 — pin car…
josecelano Jul 20, 2026
a20ef3b
chore(review): address PR #2007 Copilot suggestions batch 4 — fix GCC…
josecelano Jul 21, 2026
dc7ec02
Merge torrust/torrust-tracker#2007: build(container): minimize build-…
josecelano Jul 21, 2026
eccf4f3
docs(issues): add issue specification for #2006
josecelano Jul 20, 2026
af7f0c2
fix(ci): upload fork PR coverage safely
josecelano Jul 20, 2026
b0bc56e
docs(issues): align issue #2006 spec tables
josecelano Jul 20, 2026
1262d2d
fix(ci): harden coverage artifact extraction
josecelano Jul 20, 2026
1acda66
docs(review): complete PR #2008 Copilot audit
josecelano Jul 20, 2026
0fbe628
fix(ci): validate coverage artifact files
josecelano Jul 20, 2026
238512f
docs(review): complete PR #2008 follow-up audit
josecelano Jul 21, 2026
9e4cb94
fix(ci): isolate coverage artifact extraction
josecelano Jul 21, 2026
6e1e94e
docs(review): add PR #2008 tracker skill link
josecelano Jul 21, 2026
a7aa463
fix(ci): validate coverage artifact metadata
josecelano Jul 21, 2026
c20748f
docs(review): complete PR #2008 audit
josecelano Jul 21, 2026
229aa99
docs(issues): align coverage upload spec table
josecelano Jul 21, 2026
1d908f0
fix(ci): clean coverage artifact extraction
josecelano Jul 21, 2026
ff0c335
docs(review): complete PR #2008 cleanup audit
josecelano Jul 21, 2026
3f03996
Merge torrust/torrust-tracker#2008: fix(ci): upload fork PR coverage …
josecelano Jul 21, 2026
acb77ba
docs(configuration): record per-instance network design
josecelano Jul 21, 2026
e238ff0
docs(issues): clarify v3 network schema boundary
josecelano Jul 21, 2026
91262f2
feat(configuration): move v3 network settings per tracker
josecelano Jul 21, 2026
4cc6651
docs(adrs): apply semantic-link convention to network ADR
josecelano Jul 21, 2026
ec85d61
test(configuration): assert all three network fields in deserializati…
josecelano Jul 21, 2026
ce08f1d
docs(configuration): fix grammar and misleading test name per review
josecelano Jul 21, 2026
f797ea7
test(configuration): add UDP network block deserialization test
josecelano Jul 21, 2026
178b28d
Merge torrust/torrust-tracker#2014: feat(configuration): move v3 netw…
josecelano Jul 21, 2026
8deecfd
fix(build): remove fat LTO from development profile
josecelano Jul 21, 2026
71abb9d
docs(issues): fix issue 1875 spec references
josecelano Jul 21, 2026
6a8e8cf
docs(review): record PR 2013 Copilot audit
josecelano Jul 21, 2026
1453693
docs(review): require replies to Copilot suggestions
josecelano Jul 21, 2026
4dd3dc8
docs(review): add cspell:disable to PR suggestion trackers
josecelano Jul 21, 2026
266ab85
docs(review): add reply step to PR 2013 suggestion tracker workflow
josecelano Jul 21, 2026
80924ca
docs(review): add blank line before step 4 in tracker workflow
josecelano Jul 21, 2026
993ec09
docs(review): enforce reply-then-resolve per thread in copilot workflow
josecelano Jul 21, 2026
d999ce8
docs(agents): add Copilot Suggestions Handler agent
josecelano Jul 21, 2026
8c2cf5d
fix(pr-review-scripts): validate reply URL and fix JSON type handling
josecelano Jul 21, 2026
f375d34
docs(pr-2013): update Copilot suggestions tracker with threads 5-7
josecelano Jul 21, 2026
a4105db
Merge torrust/torrust-tracker#2013: fix(build): remove fat LTO from d…
josecelano Jul 21, 2026
9e41d6c
chore: update dependencies
josecelano Jul 21, 2026
2822a27
docs(issues): start #1417; mark #1640 done in EPIC
josecelano Jul 21, 2026
c0fb389
Merge torrust/torrust-tracker#2015: chore: update dependencies
josecelano Jul 21, 2026
352a608
feat(configuration): add typed public_url to v3 tracker config structs
josecelano Jul 21, 2026
a2271bd
docs(issues): align implementation plan table in #1417 spec
josecelano Jul 21, 2026
c2f08ef
fix(configuration): address Copilot PR review suggestions
josecelano Jul 21, 2026
56c4a24
docs(issues): address second round of Copilot review suggestions
josecelano Jul 21, 2026
88434c6
Merge torrust/torrust-tracker#2016: feat(configuration): add typed pu…
josecelano Jul 21, 2026
d04f331
docs(issue-1450): add issue spec with manual verification evidence
josecelano Jul 21, 2026
15e24e2
feat(udp-server): discard requests from clients with source port 0
josecelano Jul 21, 2026
9b647b4
feat(rest-api): expose udp_requests_discarded in stats endpoint
josecelano Jul 21, 2026
62cb3d2
fix(review): fix word ordering and improve flaky test
josecelano Jul 21, 2026
b1ebbb7
fix(review): fix additional word ordering and clarify doc comment
josecelano Jul 21, 2026
571d801
docs(review): document PR #2017 copilot suggestions audit
josecelano Jul 21, 2026
509b78c
test(udp-server): split processor port-0 test into focused AAA tests
josecelano Jul 21, 2026
6f15d60
docs(issue-1450): clarify port-0 wording — RFC 768 does not forbid it
josecelano Jul 21, 2026
5c1f8f3
refactor(udp-server): enforce non-zero port invariant in BoundSocket
josecelano Jul 22, 2026
0629435
docs(pr-review): update PR-2017 Copilot suggestions tracking table
josecelano Jul 22, 2026
8e55070
docs(pr-review): add thread #12 to PR-2017 Copilot suggestions table
josecelano Jul 22, 2026
b4fb60c
feat(udp-server): discard port-0 requests in launcher before spawning
josecelano Jul 22, 2026
3023af3
docs(pr-review): add thread #13 to PR-2017 Copilot suggestions table
josecelano Jul 22, 2026
b362d26
chore(cspell): alphabetize project dictionary
josecelano Jul 22, 2026
c128a23
docs(issues): add draft spec to simplify UDP server main loop
josecelano Jul 22, 2026
27b9cd4
test(udp-server): use valid connect payload in port-0 discard tests
josecelano Jul 22, 2026
2584c0f
docs(pr-review): add threads #14-#16 to PR-2017 Copilot suggestions t…
josecelano Jul 22, 2026
99858e2
docs(skills): define semantic issue-link markers
josecelano Jul 22, 2026
41b0e90
Merge torrust/torrust-tracker#2017: feat(udp-server): discard request…
josecelano Jul 22, 2026
078e0da
chore(skills): require dual-format scanning in completed-issue cleanup
josecelano Jul 22, 2026
caaeb43
chore(issues): archive closed specs from open to closed buffer
josecelano Jul 22, 2026
67b62d7
docs(skills): make cleanup find examples portable across GNU/BSD
josecelano Jul 22, 2026
2adf848
docs(review): finalize PR #2021 copilot suggestions audit
josecelano Jul 22, 2026
c7276d5
docs(issues): bump epic #1978 last-updated timestamp
josecelano Jul 22, 2026
fd40f71
docs(issues): restore epic #1978 table alignment
josecelano Jul 22, 2026
d651279
docs(review): update PR #2021 tracker with second-pass threads
josecelano Jul 22, 2026
137d213
Merge torrust/torrust-tracker#2021: chore(issues): archive closed spe…
josecelano Jul 22, 2026
cb05c02
docs(issues): add project dictionary formatter specification
josecelano Jul 22, 2026
319ef20
feat(git): format project dictionary before commits
josecelano Jul 22, 2026
aa2f856
fix(git): address dictionary formatter review feedback
josecelano Jul 22, 2026
2cc5583
docs(review): track PR #2020 Copilot suggestions
josecelano Jul 22, 2026
4c8becd
fix(git): report dictionary temp file failures
josecelano Jul 22, 2026
14ef83c
docs(issues): align #2019 spec layout
josecelano Jul 22, 2026
e83ae97
docs(issues): remove legacy #2019 spec
josecelano Jul 22, 2026
895117e
fix(git): retain pre-commit step exit codes
josecelano Jul 22, 2026
641c06f
fix(git): support portable dictionary formatting
josecelano Jul 22, 2026
03aa7d5
docs(review): complete PR #2020 suggestions audit
josecelano Jul 22, 2026
b2db6a5
fix(git): keep formatter tests portable
josecelano Jul 22, 2026
8c8b097
docs(review): record PR #2020 follow-up responses
josecelano Jul 22, 2026
577c333
fix(git): retain hook infrastructure exit codes
josecelano Jul 22, 2026
441f1bd
docs(review): finalize PR #2020 suggestions audit
josecelano Jul 22, 2026
55def23
docs(issues): link #2019 to PR #2020
josecelano Jul 22, 2026
458be87
docs(review): record final PR #2020 responses
josecelano Jul 22, 2026
e5b2f95
docs(review): correct tracker thread ID
josecelano Jul 22, 2026
72108e8
docs(review): record PR #2020 thread resolution
josecelano Jul 22, 2026
35cc02a
chore(cspell): canonicalize project dictionary ordering
josecelano Jul 22, 2026
7ed9d02
Merge torrust/torrust-tracker#2020: feat(git): format project diction…
josecelano Jul 22, 2026
3184104
docs(issues): start service binding subissue
josecelano Jul 22, 2026
3d212dd
docs(issues): clarify service binding observability
josecelano Jul 22, 2026
8bbfbef
feat(servers): log protocol-aware service bindings
josecelano Jul 22, 2026
b35e582
docs(issues): clarify service binding log addresses
josecelano Jul 22, 2026
58504af
docs(review): record PR #2025 Copilot audit
josecelano Jul 22, 2026
81a1e3e
Merge torrust/torrust-tracker#2025: Add protocol-aware service bindin…
josecelano Jul 22, 2026
53c51b6
docs(issues): add issue specification for #2022
josecelano Jul 22, 2026
ea5a3af
docs(issues): address merge workflow review feedback
josecelano Jul 22, 2026
f47622b
docs(review): document PR #2024 Copilot suggestions audit
josecelano Jul 22, 2026
184190a
docs(issues): clarify folder specification headings
josecelano Jul 22, 2026
96621e3
docs(issues): use existing folder spec example
josecelano Jul 22, 2026
f2e79c3
docs(issues): use existing naming examples
josecelano Jul 22, 2026
7d210a2
docs(issues): document standalone epic specs
josecelano Jul 22, 2026
a19bfaf
docs(review): clarify suggestion audit scope
josecelano Jul 22, 2026
f27ee70
docs(review): align issue-spec path examples
josecelano Jul 22, 2026
3098bd9
docs(review): finalize PR 2024 Copilot audit
josecelano Jul 22, 2026
1f9c949
docs(review): clarify audit table legend
josecelano Jul 22, 2026
c961fe2
docs(review): finalize legend feedback audit
josecelano Jul 22, 2026
ad40b74
fix(docs): correct lifecycle document links
josecelano Jul 22, 2026
5efef63
docs(review): record PR #2024 thread audit
josecelano Jul 23, 2026
3a8a42f
Merge torrust/torrust-tracker#2024: docs(issues): add issue specifica…
josecelano Jul 23, 2026
833a416
feat(git): vendor maintainer merge workflow
josecelano Jul 23, 2026
eda5faa
docs(issues): record merge workflow validation
josecelano Jul 23, 2026
83ff6dd
fix(git): address merge workflow review feedback
josecelano Jul 23, 2026
59369c5
docs(review): record PR #2027 Copilot thread audit
josecelano Jul 23, 2026
8eccc75
test(git): isolate merge workflow configuration
josecelano Jul 23, 2026
8112d2d
docs(review): finalize PR #2027 Copilot audit
josecelano Jul 23, 2026
e43cd73
fix(git): reject empty merge signing keys
josecelano Jul 23, 2026
fda2dec
docs(review): finalize PR #2027 Copilot audit
josecelano Jul 23, 2026
7e35626
test(git): isolate merge workflow fixtures
josecelano Jul 23, 2026
f14778e
test(git): cover merge tool prerequisites
josecelano Jul 23, 2026
f598101
docs(review): record PR #2027 Copilot resolutions
josecelano Jul 23, 2026
3f8390b
docs(issues): timestamp merge workflow progress
josecelano Jul 23, 2026
6e0c28d
docs(review): finalize PR #2027 Copilot audit
josecelano Jul 23, 2026
3150931
docs(review): record PR #2027 final resolution
josecelano Jul 23, 2026
5f057b2
docs(issues): clarify dry-run validation
josecelano Jul 23, 2026
a782e48
docs(review): finalize PR #2027 Copilot audit
josecelano Jul 23, 2026
03331a8
Merge torrust/torrust-tracker#2027: feat(git): [#2022] vendor maintai…
josecelano Jul 23, 2026
e0fe75d
docs(draft): add issue spec for hadolint container workflow (#1460)
josecelano Jul 23, 2026
447004d
chore(cspell): add Dockerfiles
josecelano Jul 23, 2026
a7094bf
docs(semantic-links): document real-world placement syntax for non-Ma…
josecelano Jul 23, 2026
227163e
feat(ci): add hadolint linting step to container workflow with global…
josecelano Jul 23, 2026
c37e53f
chore(ci): pin hadolint to digest, improve DL4006 rationale, fix yaml…
josecelano Jul 24, 2026
4a5695a
docs(semantic-links): remove orphan backslash from marker table
josecelano Jul 24, 2026
e9e1d24
refactor(dev-tools): extract sensor scripts into contrib/dev-tools/ch…
josecelano Jul 24, 2026
da1b4f3
chore(dev-tools): remove format-project-words.sh from old git/ location
josecelano Jul 24, 2026
ffa2aa2
fix(ci): address Copilot review: DL4006 rationale, staged linting, mo…
josecelano Jul 24, 2026
8845906
docs(dev-tools): add test file references to sensor scripts and test …
josecelano Jul 24, 2026
3d98c36
fix(ci): address Copilot review: git diff error handling, echo pipe, …
josecelano Jul 24, 2026
7da1e10
Merge torrust/torrust-tracker#2028: feat: add hadolint linting step t…
josecelano Jul 24, 2026
c45df52
docs(issues): mark #1453 in progress
josecelano Jul 23, 2026
a8e5748
docs(issues): clarify staged #1453 delivery
josecelano Jul 23, 2026
760341f
feat(udp): add IP-ban cleanup configuration and job
josecelano Jul 24, 2026
8d6e3a1
docs(issues): reorganize issue 1453 specification
josecelano Jul 24, 2026
ff30863
docs(issues): record #1453 manual runtime verification
josecelano Jul 24, 2026
bab97fc
fix(bootstrap): skip UDP ban cleanup in private mode
josecelano Jul 24, 2026
03c53f2
refactor(bootstrap): centralize UDP service-group startup policy
josecelano Jul 24, 2026
314a9e6
Merge torrust/torrust-tracker#2029: feat(udp): add IP-ban cleanup con…
josecelano Jul 24, 2026
92a58e8
chore: update dependencies
josecelano Jul 27, 2026
1c4e6a8
Merge torrust/torrust-tracker#2031: chore: update dependencies
josecelano Jul 27, 2026
cea84cf
docs(udp-server): update spec for #1136 connection ID validation policy
josecelano Jul 27, 2026
ca35387
feat(udp-server): add configurable connection ID validation policy (#…
josecelano Jul 27, 2026
9ce32b5
docs: fix doc comments and test assertions per Copilot review (#1136)
josecelano Jul 28, 2026
c04d75e
test(review): add banning semantics test for disabled-policy mode (#1…
josecelano Jul 28, 2026
2407165
fix(review): remove unnecessary cast in banning semantics test
josecelano Jul 28, 2026
19c28a5
Merge torrust/torrust-tracker#2032: feat(udp-server): add configurabl…
josecelano Jul 28, 2026
26aae78
docs(issues): add specification for parallel integration test infrast…
josecelano Jul 27, 2026
4dd469d
docs(issues): add draft issue for integration test coverage expansion
josecelano Jul 27, 2026
700e0aa
docs(tests): add AI agent guidelines for integration tests
josecelano Jul 27, 2026
c5b2b89
docs(issues): revise integration test execution model
josecelano Jul 27, 2026
8e42f8e
feat(tests): add parallel integration test infrastructure
josecelano Jul 28, 2026
935ceb9
refactor(tests): use Url type instead of String for URL values
josecelano Jul 28, 2026
a2186a1
docs(1419): plan runtime service registry refactor
josecelano Jul 28, 2026
a1f7a75
docs(issues): add specs for #2035 and #2036
josecelano Jul 28, 2026
e3a4cd6
docs(tests): reference stats integration test binary
josecelano Jul 28, 2026
1731994
Merge torrust/torrust-tracker#2034: feat(tests): add main-app integra…
josecelano Jul 28, 2026
2434628
docs(issue-889): clarify trace filter scope
josecelano Jul 28, 2026
dffbc5c
feat(configuration): add configurable trace style and rename threshol…
josecelano Jul 28, 2026
565bb03
docs(configuration): track deferred #889 verification in #1980
josecelano Jul 28, 2026
08b6144
docs(configuration): convert epic to folder type and add migration guide
josecelano Jul 28, 2026
3c8bdd2
docs: update epic path references after folder restructuring
josecelano Jul 28, 2026
a2ad4f1
docs: fix markdown table formatting after linter run
josecelano Jul 28, 2026
026232a
docs: document UPPERCASE filename convention for issue specs and temp…
josecelano Jul 28, 2026
2dc1cb5
docs: rename migration guide to configuration-v2-to-v3-migration.md
josecelano Jul 28, 2026
061f416
docs: remove old migration-guide.md after rename to configuration-v2-…
josecelano Jul 28, 2026
d6ab6f3
docs(epic-1978): add migration guide update reminder to all subissues
josecelano Jul 28, 2026
cdb52b5
docs(#889): update progress - ready for PR
josecelano Jul 28, 2026
5c36adb
fix(review): clarify README.md as uppercase exception in markdown doc…
josecelano Jul 28, 2026
ab2143f
fix(review): mark #1987 field name as TBD in migration guide
josecelano Jul 28, 2026
b4fffd6
fix(review): clarify EPIC spec pattern in summary table
josecelano Jul 28, 2026
dec5bd8
docs(review): document PR #2037 copilot suggestions audit
josecelano Jul 28, 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
  •  
  •  
  •  
20 changes: 0 additions & 20 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,3 @@ cov-lcov = "llvm-cov --lcov --output-path=./.coverage/lcov.info"
cov-codecov = "llvm-cov --codecov --output-path=./.coverage/codecov.json"
cov-html = "llvm-cov --html"
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",
]
64 changes: 55 additions & 9 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,62 @@
# .dockerignore — paths excluded from the Docker build context
#
# Intentionally INCLUDED (required by one or more Containerfile stages):
# .cargo/ — Cargo config (rustflags, build settings)
# Cargo.toml, Cargo.lock — workspace manifest and dependency lockfile
# Containerfile — read by BuildKit as the build definition
# console/ — workspace member crates
# contrib/bencode/ — workspace member crate
# contrib/dev-tools/su-exec/ — C source compiled in the gcc stage
# packages/ — workspace member crates
# share/ — app data (COPY ./share/) and container entry script
# src/ — main crate source
# tests/ — integration tests

# ── Git metadata ──────────────────────────────────────────────────────────────
/.git
/.git-blame-ignore
/.github
/.gitignore
/.vscode
/.githooks/

# ── CI / developer tooling ────────────────────────────────────────────────────
/.github/
/.coverage/
/.tmp/
/.vscode/
/codecov.yaml
/compose.*.yaml
/cspell.json
/.markdownlint.json
/.taplo.toml
/.yamllint-ci.yml
/project-words.txt
/rustfmt.toml

# ── Documentation and project metadata ───────────────────────────────────────
/docs/
/AGENTS.md
/packages/AGENTS.md
/src/AGENTS.md
/README.md
/NOTICE
/SECURITY.md
/LICENSE

# ── Dev tooling (not needed in any build stage) ───────────────────────────────
# su-exec is compiled in the gcc stage: COPY ./contrib/dev-tools/su-exec/
# workspace-coupling/Cargo.toml is copied in the recipe stage for cargo chef prepare
/contrib/dev-tools/
!/contrib/dev-tools/su-exec/
!/contrib/dev-tools/analysis/workspace-coupling/Cargo.toml

# ── Build artifacts and runtime state ─────────────────────────────────────────
/bin/
/tracker.*
/cSpell.json
/data.db
/docker/bin/
/NOTICE
/README.md
/rustfmt.toml
/etc/
/storage/
/target/
/etc/

# ── Test and runtime data files ───────────────────────────────────────────────
/data.db
/integration_tests_sqlite3.db
/tracker.*
12 changes: 12 additions & 0 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -euo pipefail

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

# Use human-friendly text format when stdout is a terminal; JSON for non-interactive / agent runs.
if [[ -t 1 ]]; then
"$repo_root/contrib/dev-tools/git/hooks/pre-commit.sh" --format=text
else
"$repo_root/contrib/dev-tools/git/hooks/pre-commit.sh" --format=json
fi
12 changes: 12 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env bash

set -euo pipefail

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

# Use human-friendly text format when stdout is a terminal; JSON for non-interactive / agent runs.
if [[ -t 1 ]]; then
"$repo_root/contrib/dev-tools/git/hooks/pre-push.sh" --format=text
else
"$repo_root/contrib/dev-tools/git/hooks/pre-push.sh" --format=json
fi
77 changes: 77 additions & 0 deletions .github/agents/clippy-fixer.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
name: ClippyFixer
description: Specialized agent for fixing Rust Clippy warnings in the torrust-tracker project. Analyzes clippy output, applies suggested fixes, and creates properly documented commits. Works with the Committer agent to commit fixes.
argument-hint: Describe the clippy warnings to fix, or provide the output from `linter clippy`.
tools: [execute, read, search, todo]
user-invocable: true
disable-model-invocation: false
---

You are the repository's Clippy warning fixer agent. Your job is to analyze clippy warnings and apply the proper fixes.

## Repository Rules

- Follow `AGENTS.md` for repository-wide behavior
- Always prefer applying clippy suggestions over adding `#[allow(...)]` attributes
- When allowances are needed, **always document the reason** in a clear comment
- Create **atomic commits** for each clippy type warning (e.g., one commit per `explicit_iter_loop` issue)
- Link to the specific clippy warning in commit messages for traceability
- Use the `Committer` agent for final commits

## Required Workflow

1. **Analyze clippy output**: Receive clippy warnings from user or `linter clippy`
2. **Identify fixable warnings**: Determine which warnings can be fixed with clippy suggestions
3. **Apply fixes**: Modify source code to apply clippy suggestions properly
4. **Document exceptions**: Add clear comments for any `#[allow(...)]` attributes
5. **Commit fixes**: Use `Committer` agent to create properly formatted commits
6. **Verify**: Ensure `linter all` passes after fixes

## Clippy Fix Patterns

The ClippyFixer agent relies on clippy error messages and the official [Clippy documentation](https://rust-lang.github.io/rust-clippy/master/index.html) to identify and fix warnings. When encountering a clippy warning, the agent:

1. **Analyzes the error message** to understand the specific issue
2. **Consults the official clippy catalog** for the recommended fix
3. **Applies the suggested fix** to the codebase
4. **Documents any exceptions** with clear comments explaining why the suggestion wasn't applied

For any new patterns, the agent will reference the official clippy documentation for guidance.

- Do not bypass failing checks without explicit user instruction
- Do not add allowances without clear justification
- Do not modify unrelated code sections
- Do not commit secrets or accidental files
- Do not create empty commits
- Do not make changes that break existing functionality

## Output Format

When handling a clippy fix task, respond in this order:

1. **Analysis summary**: List the clippy warnings to fix
2. **Fix plan**: Describe how each warning will be addressed
3. **Changes made**: Show the exact code modifications
4. **Commit plan**: Outline the atomic commits to create
5. **Verification**: Confirm `linter all` will pass after fixes

## Example Usage

User: "Fix clippy warnings from `linter clippy`"

You: "Analyzing clippy warnings...

- `explicit_iter_loop` in 3 files
- `chunks_exact_to_as_chunks` in 2 files

Applying fixes...

- Fixed 3 `explicit_iter_loop` warnings by removing `.iter()`
- Fixed 2 `chunks_exact_to_as_chunks` warnings by using `as_chunks`

Creating commits...

- Commit 1: Fix explicit_iter_loop warnings in tracker-client
- Commit 2: Fix chunks_exact_to_as_chunks warnings in udp-protocol

All warnings resolved. Run `linter all` to verify."
104 changes: 104 additions & 0 deletions .github/agents/committer.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
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`.
- For AI execution, prefer `./contrib/dev-tools/git/hooks/pre-commit.sh --format=json` first,
and retry with `./contrib/dev-tools/git/hooks/pre-commit.sh --format=text --verbosity=verbose`
when deeper diagnostics are needed.
- Create GPG-signed Conventional Commits (`git commit -S`).
**GPG timeout handling**: If a `git commit -S` invocation fails because the GPG passphrase
prompt timed out, stop immediately and notify the user. Do not retry with `--no-gpg-sign`,
do not amend the commit without a signature, and do not proceed with the work. The user
must manually retry the commit to provide the passphrase.

## 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. **Validate the branch name.** If the current branch name starts with an issue number prefix
(e.g., `42-some-description`), verify that `docs/issues/open/` contains a matching spec
(file or directory starting with that number). If no match is found:
- The issue may be closed — check `docs/issues/closed/`; if found, the branch should be
on a different base or renamed.
- The issue may not exist at all — the branch name is likely wrong. Ask the caller to
confirm or rename using a `chore/` prefix for untracked work.
- This prevents committing under a wrong/missing issue number.
3. Read the current branch, `git status`, and the staged or unstaged diff relevant to the request.
4. Summarize the intended commit scope before taking action.
5. Ensure the commit scope is coherent and does not accidentally mix unrelated changes.
6. 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.
7. **Check if the pre-commit git hook is already installed** before running checks manually:

```bash
./contrib/dev-tools/git/check-git-hooks.sh
```

- **If installed**: do NOT run the script manually — `git commit -S` will trigger it
automatically. Running it first would execute every check twice.
- **If not installed**: run `./contrib/dev-tools/git/hooks/pre-commit.sh` manually.
For AI execution, use `--format=json` first and retry with
`--format=text --verbosity=verbose` if needed. 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.

8. Propose a precise Conventional Commit message.
9. Create the commit with `git commit -S` only after the scope is clear and blockers are resolved.
10. 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.
Loading
Loading