Skip to content

audit-log (B): config_change reaches sys_audit_log — settings service dual-writes or reroutes (implementation decides), and settings-service.types.ts:16 becomes true #8145

Description

@hotlong

Sub-issue B of #7675, split by the triage seat (session session_01GiG1DfMysjbbFLZErAo93G, 2026-08-12) carrying the maintainer ruling of 2026-08-12 (comment 5261744983 on #7675). This card is the domain:services half.

Ruling carried (verbatim, binding — not re-adjudicable)

config_change(settings 服务已在审计、只是写进了 sys_setting_audit —— 双写或改道 sys_audit_log,实现时一并解决 settings-service.types.ts:16 文档契约与实际去向的矛盾,以实现定契约)。

The real decision inside the ruled direction (put here deliberately, not discovered mid-flight)

The ruling allows dual-write or reroute and says 以实现定契约 — the implementation decides. So this card must decide whether sys_setting_audit keeps its rows, then make settings-service.types.ts:16 state exactly what the implementation does. The identity seat's analysis on #7675 (comment 5264328866) flagged this as the load-bearing choice; weigh: existing consumers/views of sys_setting_audit (measure who reads it before dropping it), duplicate-row cost of dual-write, and the parent's defect that config_change filters and the config_changes list view are empty today.

Scope

  • Settings writes produce sys_audit_log rows with action: 'config_change' (emission point already located: settings-service-plugin.ts:315, which today inserts into sys_setting_audit with action set).
  • settings-service.types.ts:16 ("Emit sys_audit_log rows for every successful write.") becomes true as written, or is rewritten to match the decided behaviour.
  • Acceptance: the parent's reproduction inverts — PUT /api/settings/branding then filter {"action":"config_change"} returns the event. The config_changes list view starts showing rows.

Out of scope

  • login/logout writers (sub-issue A, identity). ⛔ Enum retirement (sub-issue C). ⛔ objectui surfaces.

No Blocked-by:config_change remains an enum member; independent of the retirement ordering.

Size/model suggestion: M, opus (carries a real design decision within the ruled direction).

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions