feat(data): PowerUse-Flags und konfigurierbares Handoff-Budget
app_settings bekommt power_use_enabled (Master-Schalter, wird im Usage-Monitor gesetzt) und list_handler_max_handoffs (Default 4 = zwei Merge-Runden). list_config bekommt power_use_allowed als Opt-in pro Liste. Ein Handler-Run laeuft nur unbeaufsichtigt, wenn BEIDE Schalter gesetzt sind. Damit kann der globale Schalter ueber Nacht an bleiben, ohne dass der Handler einer nicht zugestimmten Liste sein Verhalten aendert. UpdateListConfigDto.PowerUseAllowed ist bewusst bool? (tri-state, null = gespeicherten Wert behalten), analog zu TicketProjectId: SetConfigAsync kopiert verbatim, ein non-nullable bool haette jedem fremden Writer erlaubt, das Opt-in per Auslassung zu widerrufen. Der Test dazu nagelt genau das fest. Migration ist drei reine ALTER TABLE ADD COLUMN, kein Table-Rebuild.
This commit is contained in:
@@ -37,6 +37,8 @@ Beyond the basics it carries:
|
||||
| `ReportExcludedPaths` | `report_excluded_paths` | null | JSON array of excluded path prefixes. |
|
||||
| `StandupWeekday` | `standup_weekday` | Wednesday | int `DayOfWeek`. |
|
||||
| `NextTaskNumber` | `next_task_number` | 1 | Persistent counter for `TaskEntity.Number` allocation. Incremented atomically in `TaskNumberAllocator.AddWithNumberAsync` on every task insert. **Monotonic only:** the counter itself advances across all tasks (no per-list numbering), and it never resets. A deleted task leaves a gap. |
|
||||
| `PowerUseEnabled` | `power_use_enabled` | false | PowerUse master switch, toggled on the **usage monitor** (not Settings). ⚠️ Never sufficient alone — a handler run is in PowerUse only when `list_config.power_use_allowed` is also set. |
|
||||
| `ListHandlerMaxHandoffs` | `list_handler_max_handoffs` | 4 | Cap on a list-handler run's wait↔merge handoff chain (`HandoffRoundTracker`). 4 = two merge rounds. Independent of PowerUse — applies to interactive runs too. Clamped to min 1 in `WorkerHub.UpdateAppSettings` and again in `Register`, because 0 would remove the only bound on a runaway chain. |
|
||||
|
||||
All four usage percentages are clamped 0..100 by `AppSettingsRepository.UpdateAsync`.
|
||||
Gate/throttle semantics → [usage-monitoring](../../docs/explore-notes/usage-monitoring.md).
|
||||
|
||||
Reference in New Issue
Block a user