fix: make daily task log header-only
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Reflection: Technical Surfaces Need Explicit Entry Controls
|
||||
|
||||
## Trigger
|
||||
|
||||
The user corrected the production Daily interaction: clicking a concrete business row unexpectedly opened the full
|
||||
technical task log, even though a named `任务日志` utility already existed in the header.
|
||||
|
||||
## Expected Behavior
|
||||
|
||||
Inspecting business data should be inert unless a cell exposes a clear business action. Dense diagnostic material
|
||||
should appear only after an explicit, accurately named user action.
|
||||
|
||||
## Actual Behavior
|
||||
|
||||
Every Daily row was visually and semantically a hidden log button. Mouse click, Enter and Space opened the dialog, so
|
||||
the same technical surface had both a deliberate header entry and an implicit whole-row entry.
|
||||
|
||||
## Root Cause
|
||||
|
||||
- A convenient job-selection interaction was conflated with permission to reveal diagnostic detail.
|
||||
- Handler removal alone had not been treated as enough; row role, focusability, cursor and selected styling also encoded
|
||||
the obsolete action.
|
||||
- Earlier acceptance covered the special needs-review button but did not assert that all ordinary rows were inert.
|
||||
|
||||
## Lesson
|
||||
|
||||
When a product has a dedicated diagnostic control, make it the sole opener unless row-level diagnostics are an explicit
|
||||
requirement. A behavior change is complete only when event handlers, keyboard paths, accessibility semantics, visual
|
||||
affordances and regression tests all agree.
|
||||
|
||||
## Action
|
||||
|
||||
- Keep Daily rows informational and retain only explicit download/review controls inside them.
|
||||
- Assert that the named header utility is the only task-log opener.
|
||||
- Verify ordinary row, business-action and diagnostic-entry clicks separately in browser acceptance.
|
||||
|
||||
## Promotion
|
||||
|
||||
Promoted to project success criteria, current state, focused static UI contracts and the 2026-08-11 interaction evidence.
|
||||
@@ -4,6 +4,7 @@ Use this index for second-order workflow lessons.
|
||||
|
||||
| Date | Reflection | Trigger | Action | Detail |
|
||||
|---|---|---|---|---|
|
||||
| 2026-08-11 | Technical surfaces need explicit entry controls | The user corrected the Daily table because inspecting a business row unexpectedly opened a dense technical log | Keep ordinary rows informational, place technical utilities behind named controls, and remove interaction styling/semantics with the handler | [Case](cases/2026-08-11-technical-surfaces-need-explicit-entry-controls.md) |
|
||||
| 2026-07-31 | Formatting is not business state | A yellow final Booking row was initially at risk of being interpreted as cancellation | Make cancellation text-based, preserve formatting as non-authoritative and keep a real-style regression | [Case](cases/2026-07-31-formatting-is-not-business-state.md) |
|
||||
| 2026-07-30 | Coordinate hot static assets with the long-lived backend | Login static files activated before backend restart; later launchd ownership also hit macOS Desktop privacy | Feature-detect mixed versions, gate restart on all secrets, use a secret-free launcher and a desktop-authorized supervisor until deployment leaves Desktop | [Case](cases/2026-07-30-coordinate-hot-static-and-long-lived-backend.md) |
|
||||
| 2026-07-30 | Distinguish a database snapshot from batch completeness | A 15:44 three-file snapshot was incorrectly declared the clean total before the 16:12 07-23 commit | Timestamp snapshots, enumerate expected dates and reconcile recent/in-flight runs before declaring completeness | [Case](cases/2026-07-30-distinguish-snapshot-from-batch-completeness.md) |
|
||||
|
||||
Reference in New Issue
Block a user