File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -612,23 +612,68 @@ sprint:
612612
613613
614614 Role: intelligent file watcher (3-layer: detect → quick → full).'
615+ execution :
616+ assigned_to : codex
617+ attempt : 0
618+ finished_at : ' 2026-05-14T11:15:42.775900Z'
619+ max_attempts : 1
620+ queue : default
621+ started_at : ' 2026-05-14T11:15:41.961161Z'
622+ state : done
615623 files : []
616- history : []
624+ history :
625+ - action : update
626+ changes :
627+ - execution
628+ - status
629+ execution_state : running
630+ previous_execution_state : null
631+ previous_status : open
632+ source : planfile.store
633+ status : in_progress
634+ timestamp : ' 2026-05-14T11:15:42.112255+00:00'
635+ - action : update
636+ changes :
637+ - execution
638+ - outputs
639+ - status
640+ execution_state : done
641+ previous_execution_state : running
642+ previous_status : in_progress
643+ source : planfile.store
644+ status : done
645+ timestamp : ' 2026-05-14T11:15:42.927604+00:00'
617646 id : STARTER-004
618647 labels :
619648 - bootstrap
620649 - gates
621650 - scan
622651 name : Bootstrap wup on-change gate
652+ outputs :
653+ artifacts :
654+ - wup.yaml
655+ - Taskfile.yml
656+ - docs/llm-tools/wup/README.md
657+ - tests/test_wup_taskfile.py
658+ notes :
659+ - wup.yaml already existed; added a topology-aware quality:wup task that validates
660+ the on-change watcher with wup status, documented the WUP loop, and added
661+ regression coverage for Taskfile wiring and root config.
662+ result :
663+ status : done
664+ tests :
665+ - uv run pytest -q tests/test_wup_taskfile.py
666+ - task quality:wup
667+ - git diff --check
623668 priority : normal
624669 source :
625670 context : {}
626671 timestamp : ' 2026-05-12T09:35:46.467501Z'
627672 tool : koru-scan
628673 sprint : current
629- status : open
674+ status : done
630675 sync : {}
631- updated_at : ' 2026-05-12T09:35:46.468376Z '
676+ updated_at : ' 2026-05-14T11:15:42.927572+00:00 '
632677 STARTER-005 :
633678 acceptance_criteria : []
634679 blocked_by : []
Original file line number Diff line number Diff line change @@ -268,6 +268,27 @@ tasks:
268268 - sh : which regix
269269 msg : " regix not installed. Run: task install:tools"
270270
271+ quality:wup :
272+ desc : Check WUP on-change watcher configuration
273+ cmds :
274+ - |
275+ set -euo pipefail
276+ if python3 -m koru.cli topology --project . --is-enabled gate:wup >/dev/null 2>&1; then
277+ wup status
278+ else
279+ rc=$?
280+ if [ "$rc" -eq 1 ]; then
281+ echo "quality:wup skipped (gate:wup disabled in topology)"
282+ exit 0
283+ fi
284+ wup status
285+ fi
286+ preconditions :
287+ - sh : which wup
288+ msg : " wup not installed. Run: task install:tools"
289+ - sh : test -f wup.yaml
290+ msg : " wup.yaml missing. Run: task template:install:wup"
291+
271292 quality:redup :
272293 desc : ' Run redup duplicate detection (default: current dir)'
273294 cmds :
Original file line number Diff line number Diff line change @@ -82,6 +82,7 @@ planfile ticket show PLF-XXX
8282# ...
8383
8484# Validate locally (no LLM API calls)
85+ task quality:wup
8586task quality:regix:local
8687task test
8788task monitor:probe
Original file line number Diff line number Diff line change @@ -45,6 +45,7 @@ SPECIALIZED (LLM-free):
4545
4646ON-CHANGE GATES TRIAD (LLM-free, continuous):
4747 wup [intelligent file watcher → priority/full testql probes]
48+ task quality:wup checks watcher config; wup watch runs the loop
4849 + regix (delta gate, see WALIDACJA above)
4950 + testql (HTTP probe, see WYKRYWANIE above)
5051 → koru brief surfaces all three in "On-change gates" section
Original file line number Diff line number Diff line change 1+ # WUP on-change gate
2+
3+ ` wup ` is the local file watcher in the on-change gate triad. In koru it is
4+ configured by [ ` ../../../wup.yaml ` ] ( ../../../wup.yaml ) and is meant for the
5+ developer loop between saving files and committing changes.
6+
7+ ## Commands
8+
9+ | Scenario | Command |
10+ | ---| ---|
11+ | Check config/status | ` task quality:wup ` |
12+ | Direct status check | ` wup status ` |
13+ | Start watcher | ` wup watch ` |
14+ | Rebuild dependency map | ` wup map-deps ` |
15+ | Inspect TestQL endpoints | ` wup testql-endpoints ` |
16+
17+ ## Koru bootstrap
18+
19+ The root ` wup.yaml ` watches:
20+
21+ - ` src/** ` for core Python changes
22+ - ` plugins/koru-autopilot-vscode/src/** ` for autopilot plugin changes
23+
24+ The lightweight ` task quality:wup ` gate validates that ` wup ` is installed,
25+ ` wup.yaml ` exists, ` gate:wup ` is enabled in topology, and ` wup status ` can read
26+ the configuration. It does not start the long-running watcher.
27+
28+ Use ` wup watch ` when you want the continuous 3-layer loop:
29+
30+ 1 . detect file changes
31+ 2 . run quick related probes
32+ 3 . run full detail/blame checks only after quick failures
Original file line number Diff line number Diff line change 1+ """Regression tests for WUP on-change gate task wiring."""
2+
3+ from __future__ import annotations
4+
5+ from pathlib import Path
6+
7+
8+ ROOT = Path (__file__ ).resolve ().parents [1 ]
9+
10+
11+ def test_quality_wup_checks_status_and_respects_topology_gate () -> None :
12+ taskfile = (ROOT / "Taskfile.yml" ).read_text (encoding = "utf-8" )
13+
14+ assert "quality:wup:" in taskfile
15+ assert "gate:wup" in taskfile
16+ assert "wup status" in taskfile
17+ assert "test -f wup.yaml" in taskfile
18+
19+
20+ def test_wup_yaml_is_bootstrapped_for_koru_project () -> None :
21+ wup_yaml = (ROOT / "wup.yaml" ).read_text (encoding = "utf-8" )
22+
23+ assert 'name: "koru"' in wup_yaml
24+ assert "src/**" in wup_yaml
25+ assert "plugins/koru-autopilot-vscode/src/**" in wup_yaml
26+ assert "debounce_s: 2" in wup_yaml
You can’t perform that action at this time.
0 commit comments