Keep civil-date math in one utils::time module: days_from_civil is written twice and vex::time claims to be the only copy
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
Read crates/socket-patch-core/src/api/date.rs, formats/cargo/floor.rs, and vex/time.rs, then check how api::date is imported by tests/e2e_hosted_production.rs. Move the listed time functions and tests into src/utils/time.rs, update callers and remove the duplicate implementation and outdated claim. Run the named date and dated-channel tests; done means behavior is unchanged and only one days_from_civil definition remains.
由索引模型根據 Issue 內容生成。
描述
[agent] Filed by the scheduled architecture audit (audit-core). Register: register.
Kind: refactor. Register ID: A26.
Problem
Calendar arithmetic (Howard Hinnant's civil-date algorithms) lives in three modules at 5ca5623:
api/date.rsL48-L56:days_from_civil(year: i64, month: u32, day: u32), the parser half (parse_timestamp_secs, used byapi::rankingandapi::retry).formats/cargo/floor.rsL25-L33: a seconddays_from_civil(year: i64, month: i64, day: i64), spelled withdiv_euclidinstead of theif y >= 0 { y } else { y - 399 } / 400form. It is used to datenightly-YYYY-MM-DDtoolchains.vex/time.rsL30-L36: the inversecivil_from_days, insideunix_to_ymdhms. Its doc claims "this is the single civil-date implementation in the crate".telemetryalso formats timestamps through it.
Today the two days_from_civil copies compute the same values; api/date.rs's round-trip test pins only its own copy. A time module under vex/ that telemetry and api import, plus a date parser under api/, puts a general utility in two feature modules.
Proposed change
- Add
crates/socket-patch-core/src/utils/time.rsholdingdays_from_civil,unix_to_ymdhms,now_rfc3339andparse_timestamp_secs, with the tests ofapi/date.rsandvex/time.rs. - Delete
formats/cargo/floor.rs's copy and callutils::time::days_from_civil(convert itsi64month and day at the call). - Delete
api/date.rsandvex/time.rs, or reduce them topub uselines if the CLI or tests import them by path (tests/e2e_hosted_production.rsimportsapi::date::parse_timestamp_secs). - Drop the "single civil-date implementation" claim.
Size
4–5 files. The diff is mostly moves; about −25 net lines.
Acceptance criteria
- Behavior is unchanged.
days_from_civil_inverts_unix_to_ymdhms,parsed_order_is_chronological_in_both_formats,unix_to_ymdhms_matches_brute_forceand floor.rs's dated-channel tests pass unchanged. - One
days_from_civilremains in the crate (grep -rn "fn days_from_civil" cratesreturns one hit). - While moving the tests, drop the fake assert
assert!(secs > prev_2822 || secs == 0)inparsed_order_is_chronological_in_both_formats(date.rs L523). It checks the test's own loop counter, not the parser.
- 主要語言
- Rust
- 星號
- 9
- 分支
- 2
- 平均合併
- 20 小時 47 分鐘
- 30 天內合併 PR
- 681
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
SocketDev/socket-patch 的其他 Issue
-
agent:triaged arch-audit priority:p3 refactor
難度 2/5 1-3 小時 新手友好度 83/100
SocketDev/socket-patch#1860 ·
維護者通常 1 天內回覆
-
agent:triaged arch-audit priority:p3 refactor
難度 2/5 1-3 小時 新手友好度 78/100
SocketDev/socket-patch#1838 ·
維護者通常 1 天內回覆
-
arch-audit refactor
難度 4/5 3-5 天 新手友好度 54/100
SocketDev/socket-patch#1993 ·
維護者通常 1 天內回覆
-
arch-audit refactor
難度 3/5 1-2 天 新手友好度 66/100
SocketDev/socket-patch#1992 ·
維護者通常 1 天內回覆
-
agent:triaged arch-audit priority:p3 refactor
難度 4/5 3-5 天 新手友好度 35/100
SocketDev/socket-patch#1987 · 1 則留言 ·
維護者通常 1 天內回覆
查看 SocketDev/socket-patch 的全部 Issue
相似的 Issue
-
A-linter
難度 2/5 1-3 小時 新手友好度 73/100
oxc-project/oxc#28783 ·
維護者通常 1 天內回覆
-
Substrait consumer doesn't recognise `shift_left` / `shift_right` from functions_arithmetic.yaml未關閉bug
難度 2/5 1-3 小時 新手友好度 76/100
apache/datafusion#27059 ·
維護者通常 1 天內回覆
-
Bump calamine to 0.38: RUSTSEC-2026-0436 (CFB/OLE2 panic and unbounded allocation) fails cargo audit未關閉
難度 2/5 1-3 小時 新手友好度 70/100
docling-project/docling.rs#979 ·
維護者通常 1 天內回覆
-
llm translation
難度 2/5 1-3 小時 新手友好度 72/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 74/100
維護者通常 1 天內回覆