8 Commits
Author SHA1 Message Date
Qiu Yuzhou 2e5c159d51 docs: streamline agent guidance in English 2026-10-24 02:56:36 +08:00
Qiu Yuzhou 72ee44411e docs: 明确测试夹具与执行成本原则 2026-10-04 00:46:59 +08:00
Qiu Yuzhou 210c677c1b docs(ng2): 测试框架政策入 AGENTS.md,新测试默认 Swift Testing 2026-10-03 23:26:09 +08:00
Qiu Yuzhou 913696941d docs(agents): add hostless unit-test conventions to NG2 AGENTS.md 2026-09-30 20:54:08 +08:00
Qiu Yuzhou 7bfb90ef5c docs(ng2): reorganize development instructions 2026-09-21 14:42:58 +08:00
Qiu Yuzhou 0cf28c97fe feat(ng2): config catalog domain core with credential refs (#25)
配置目录领域核心(spec #21 D3/D5,票 #25):

- Domain/ 新增配置目录树:单父、显子序、无环;手动/订阅来源严格分离;
  有效启用 = 节点及其全部祖先启用;手动节点携带子树移动与重排;
  非空手动组递归删除(返回被删条目供 Keychain 清理);空组持久保留;
  非法操作(跨来源、身份复用即共享父、成环、订阅节点结构改动、
  订阅服务器直挂根)全部带明确原因拒绝且状态不动。
- 凭据引用:密码/插件参数只在 Keychain 存权威副本,配置树只持
  CredentialReference;KeychainCredentialStore 写读一致、覆盖写、幂等删。
- CatalogFileStore:v2/catalog.json 目录 0700/文件 0600,临时文件原子替换;
  缺失 → 空目录,损坏/版本未知/结构不一致(悬空、共享父、成环含根外孤环、
  不可达)→ 命名明确的 corrupt,结构校验收敛在
  ConfigurationCatalog.validated 工厂。
- 测试 43 项覆盖全部验收项;project.yml 增加 Domain/ 源码目录。
- .swiftlint.yml 关闭 trailing_comma(与 .swift-format 尾逗号基线冲突,
  触发案例见文件内注释),README/AGENTS.md 同步 Domain/ 与工具说明。
2026-09-20 15:22:09 +08:00
Qiu Yuzhou 1b8b1f0767 docs(ng2): move style tool setup from AGENTS.md to README
AGENTS.md keeps only the agent contract: hook enable step, gate
behavior, manual commands, rule-tuning policy. Install steps,
tool baselines, and config rationale are human-facing setup and
now live in README's 代码风格工具 section.

Update stale pointers that sent readers to AGENTS.md for tool
install (root AGENTS.md, pre-commit hook comment and error
message); hook behavior unchanged.
2026-09-20 14:36:35 +08:00
Qiu Yuzhou 635d22378e feat(ng2): add swift format + SwiftLint pre-commit gate (#23)
- ShadowsocksX-NG2/.swift-format: Apple Swift 6.4 toolchain default rules snapshot
- ShadowsocksX-NG2/.swiftlint.yml: default rules, excludes build artifacts and Legacy/
- .githooks/pre-commit: format staged NG2 Swift files into the index, then SwiftLint;
  error-severity violations reject the commit; non-NG2 files pass through untouched
- ShadowsocksX-NG2/AGENTS.md: NG2-scoped conventions (tiered below root AGENTS.md)
- normalize skeleton sources to swift format baseline (2-space indent)
2026-09-20 13:45:48 +08:00