diff --git a/steward/templates/ansible/_runs_page.html b/steward/templates/ansible/_runs_page.html
index c97ce1e..2c479ec 100644
--- a/steward/templates/ansible/_runs_page.html
+++ b/steward/templates/ansible/_runs_page.html
@@ -1,11 +1,12 @@
{# ansible/_runs_page.html — one page of runs, then the sentinel that loads the
- next page as the reader nears it (core.paging, pref 172). #}
+ next page as the reader nears it (core.paging, pref 172). The whole row
+ opens the run (.row-link); its title is the one real link. #}
{% from "_macros.html" import status_badge, scroll_more, scroll_end %}
{% for row in runs %}
{% set run = row.run %}
-
+
|
- {{ row.title }}
+ {{ row.title }}
{% if row.check %}dry run{% endif %}
{{ run.source_name }}
|
diff --git a/tests/core/test_ansible_runs_page.py b/tests/core/test_ansible_runs_page.py
index 03d3be1..66f3620 100644
--- a/tests/core/test_ansible_runs_page.py
+++ b/tests/core/test_ansible_runs_page.py
@@ -54,7 +54,8 @@ async def test_the_runs_list_names_each_run_with_one_badge(app):
page = await render_template("ansible/index.html", runs=runs, after="2026-10-07T01:00:00+00:00|x")
main = page[page.index("update.yml on web-1' in main
+ assert '' in main # the whole row opens the run
+ assert 'update.yml on web-1' in main
assert "steward:target:t1" not in main # no raw scope, not even as a tooltip
assert ">update.yml on all inventory targets" in main
assert 'Running' in main