~bigbes/agents-dev · parade

main · last commit 13 days ago · 7g0stsfu

← Back to the parade

ah-nyl.7 e2e: harness with fake vikunja + stub pi Past Stand

status: closed P2 task
bd reopen ah-nyl.7
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-07-12T23:35:56Z
Started2026-07-13T03:18:19Z
Updated2026-07-13T03:40:07Z
Closed2026-07-13T03:40:07Z
Description
Build the end-to-end harness per docs/SPEC.md SS1/SS14 stage-1 acceptance: prove the full loop without live services. Build tag e2e, directory e2e/, run via `just e2e`.

Scenario (single test, subtests per phase): temp dir with (a) a real git repo as the target repo (one commit on master), (b) fake Vikunja: httptest server implementing the subset internal/vikunja uses (views, kanban tasks, buckets, move, comment) over in-memory state you can mutate from the test; (c) stub `pi` script on PATH that reads .task/PROMPT.md, makes a commit in the cwd repo ('stub: change'), emits 2-3 plausible JSONL lines to stdout, exits 0; (d) real zellij is NOT used: stub `zellij` script that for `run` executes the wrapped command directly (background), for attach --create-background no-ops, for list-sessions prints active names from a state file — i.e. simulate sessions with files. (e) real ahub-run and agenthubd binaries built by the test (go build into t.TempDir()).

Flow: start agenthubd with a generated config (short poll_interval ~200ms) -> put a task in fake-Vikunja Ready bucket -> wait (poll with deadline, no fixed sleeps) for: card moved to In Progress with claim comment; then card in In Review with a comment containing the diff stat; store db has task in_review + run finished/success (inspect via ahub status --json against the daemon). Negative subtest: stub pi exits 1 -> card lands in Failed with diagnostic comment. Timeout subtest optional (only if cheap with the fake clock — the daemon uses real time; skip if it needs sleeps >2s and note why).

Constraints: everything under e2e/ (+ justfile tweak if needed). Full-tree build allowed. If you find integration bugs in other packages, fix them in separate commits '<pkg>: fix ...' with a test where feasible. No .beads/ changes. Commit 'e2e: ...'. Do NOT push.
Notes
CONVENTION UPDATE (see SPEC §13): tests use testify (require/assert); errors via culpa. Deps already in go.mod.

Depends on

  • ah-nyl — Stage 1 MVP: poll-driven happy path parent-child closed
  • ah-nyl.6 — wiring: httpapi + agenthubd + ahub CLIs blocks closed

Depended on by

Nothing depends on this issue.

Prerequisite chain — everything this waits on, transitively

  • ah-nyl — Stage 1 MVP: poll-driven happy path parent-child closed
  • ah-nyl.6 — wiring: httpapi + agenthubd + ahub CLIs blocks closed
  • ah-nyl.4 — runner: pi+zellij implementation + ahub-run supervisor blocks closed
  • ah-nyl.1 — foundation: go module, domain, ports, config blocks closed
  • ah-nyl.2 — store: SQLite implementation of ports.Store blocks closed
  • ah-nyl.5 — reconcile: the control loop blocks closed
  • ah-nyl.3 — vikunja: Board adapter over the REST API blocks closed

No comments.

Close reason

landed 892cbda: hermetic full-loop harness (fake vikunja w/ per-response pagination + preflight support, argv-faithful zellij/pi stubs, real binaries); happy/failure/timeout paths green 4x no flakes, just e2e 3.3s; zero integration bugs found
  • Eugene Blikh added under epic ah-nyl · 2026-07-13T02:35:55Z
  • Eugene Blikh created the issue · 2026-07-13T02:35:55Z
  • Eugene Blikh added dependency on ah-nyl.6 · 2026-07-13T02:35:56Z
  • Eugene Blikh updated notes to CONVENTION UPDATE (see SPEC §13): tests use testify (require/assert); errors via culpa. Deps already in go.mod. · 2026-07-13T03:09:34Z
  • Eugene Blikh changed status to in_progress · 2026-07-13T06:18:18Z
  • Eugene Blikh closed the issue · 2026-07-13T06:40:07Z
    landed 892cbda: hermetic full-loop harness (fake vikunja w/ per-response pagination + preflight support, argv-faithful zellij/pi stubs, real binaries); happy/failure/timeout paths green 4x no flakes, just e2e 3.3s; zero integration bugs found
  • Eugene Blikh added label milestone:stage-1 · 2026-07-20T03:08:46Z
  • Eugene Blikh removed label milestone:stage-1 · 2026-07-20T03:10:22Z
Stored rows — what this pane was built from, as read
issues 1 row
id ah-nyl.7
content_hash 7c266e5f2bb15c0bb076a169f5f91846b9e15c8d4397026b55d441ea8638463d
title e2e: harness with fake vikunja + stub pi
description Build the end-to-end harness per docs/SPEC.md SS1/SS14 stage-1 acceptance: prove the full loop without live services. Build tag e2e, directory e2e/, run via `just e2e`. Scenario (single test, subtests per phase): temp dir with (a) a real git repo as the target repo (one commit on master), (b) fake Vikunja: httptest server implementing the subset internal/vikunja uses (views, kanban tasks, buckets, move, comment) over in-memory state you can mutate from the test; (c) stub `pi` script on PATH that reads .task/PROMPT.md, makes a commit in the cwd repo ('stub: change'), emits 2-3 plausible JSONL lines to stdout, exits 0; (d) real zellij is NOT used: stub `zellij` script that for `run` executes the wrapped command directly (background), for attach --create-background no-ops, for list-sessions prints active names from a state file — i.e. simulate sessions with files. (e) real ahub-run and agenthubd binaries built by the test (go build into t.TempDir()). Flow: start agenthubd with a generated config (short poll_interval ~200ms) -> put a task in fake-Vikunja Ready bucket -> wait (poll with deadline, no fixed sleeps) for: card moved to In Progress with claim comment; then card in In Review with a comment containing the diff stat; store db has task in_review + run finished/success (inspect via ahub status --json against the daemon). Negative subtest: stub pi exits 1 -> card lands in Failed with diagnostic comment. Timeout subtest optional (only if cheap with the fake clock — the daemon uses real time; skip if it needs sleeps >2s and note why). Constraints: everything under e2e/ (+ justfile tweak if needed). Full-tree build allowed. If you find integration bugs in other packages, fix them in separate commits '<pkg>: fix ...' with a test where feasible. No .beads/ changes. Commit 'e2e: ...'. Do NOT push.
design
acceptance_criteria
notes CONVENTION UPDATE (see SPEC §13): tests use testify (require/assert); errors via culpa. Deps already in go.mod.
status closed
priority 2
issue_type task
assignee NULL
estimated_minutes NULL
created_at 2026-07-12T23:35:56Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-07-13T03:40:07Z
closed_at 2026-07-13T03:40:07Z
closed_by_session
external_ref NULL
spec_id
compaction_level 0
compacted_at NULL
compacted_at_commit NULL
original_size NULL
sender
ephemeral 0
wisp_type
pinned 0
is_template 0
mol_type
work_type
source_system
metadata �{}
source_repo
close_reason landed 892cbda: hermetic full-loop harness (fake vikunja w/ per-response pagination + preflight support, argv-faithful zellij/pi stubs, real binaries); happy/failure/timeout paths green 4x no flakes, just e2e 3.3s; zero integration bugs found
event_kind
actor
target
payload
await_type
await_id
timeout_ns 0
waiters
hook_bead
role_bead
agent_state
last_activity NULL
role_type
rig
due_at NULL
defer_until NULL
no_history 0
started_at 2026-07-13T03:18:19Z
is_blocked 0
dependencies 2 rows
id 21ca1cf9-aebe-5e5f-9b55-ef63ff6cf89c
issue_id ah-nyl.7
type parent-child
created_at 2026-07-13T02:35:55Z
created_by Eugene Blikh
metadata �{}
thread_id
depends_on_issue_id ah-nyl
depends_on_wisp_id NULL
depends_on_external NULL
id 4e066046-2b9e-537d-aa5b-9ca0217bcc1d
issue_id ah-nyl.7
type blocks
created_at 2026-07-13T02:35:56Z
created_by Eugene Blikh
metadata �{}
thread_id
depends_on_issue_id ah-nyl.6
depends_on_wisp_id NULL
depends_on_external NULL
events 6 rows
id 019f58af-fad9-748c-a6a1-71948b188bcc
issue_id ah-nyl.7
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-07-13T02:35:55Z
id 019f58ce-c97a-793b-a304-ad1cd3633ec5
issue_id ah-nyl.7
event_type updated
actor Eugene Blikh
old_value {"id":"ah-nyl.7","title":"e2e: harness with fake vikunja + stub pi","description":"Build the end-to-end harness per docs/SPEC.md SS1/SS14 stage-1 acceptance: prove the full loop without live services. Build tag e2e, directory e2e/, run via `just e2e`.\n\nScenario (single test, subtests per phase): temp dir with (a) a real git repo as the target repo (one commit on master), (b) fake Vikunja: httptest server implementing the subset internal/vikunja uses (views, kanban tasks, buckets, move, comment) over in-memory state you can mutate from the test; (c) stub `pi` script on PATH that reads .task/PROMPT.md, makes a commit in the cwd repo ('stub: change'), emits 2-3 plausible JSONL lines to stdout, exits 0; (d) real zellij is NOT used: stub `zellij` script that for `run` executes the wrapped command directly (background), for attach --create-background no-ops, for list-sessions prints active names from a state file — i.e. simulate sessions with files. (e) real ahub-run and agenthubd binaries built by the test (go build into t.TempDir()).\n\nFlow: start agenthubd with a generated config (short poll_interval ~200ms) -\u003e put a task in fake-Vikunja Ready bucket -\u003e wait (poll with deadline, no fixed sleeps) for: card moved to In Progress with claim comment; then card in In Review with a comment containing the diff stat; store db has task in_review + run finished/success (inspect via ahub status --json against the daemon). Negative subtest: stub pi exits 1 -\u003e card lands in Failed with diagnostic comment. Timeout subtest optional (only if cheap with the fake clock — the daemon uses real time; skip if it needs sleeps \u003e2s and note why).\n\nConstraints: everything under e2e/ (+ justfile tweak if needed). Full-tree build allowed. If you find integration bugs in other packages, fix them in separate commits '\u003cpkg\u003e: fix ...' with a test where feasible. No .beads/ changes. Commit 'e2e: ...'. Do NOT push.\n","status":"open","priority":2,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-12T23:35:56Z","created_by":"Eugene Blikh","updated_at":"2026-07-12T23:35:56Z"}
new_value {"notes":"CONVENTION UPDATE (see SPEC §13): tests use testify (require/assert); errors via culpa. Deps already in go.mod."}
comment NULL
created_at 2026-07-13T03:09:34Z
id 019f597b-9422-7572-9a5a-bfd0d24aefd0
issue_id ah-nyl.7
event_type status_changed
actor Eugene Blikh
old_value {"id":"ah-nyl.7","title":"e2e: harness with fake vikunja + stub pi","description":"Build the end-to-end harness per docs/SPEC.md SS1/SS14 stage-1 acceptance: prove the full loop without live services. Build tag e2e, directory e2e/, run via `just e2e`.\n\nScenario (single test, subtests per phase): temp dir with (a) a real git repo as the target repo (one commit on master), (b) fake Vikunja: httptest server implementing the subset internal/vikunja uses (views, kanban tasks, buckets, move, comment) over in-memory state you can mutate from the test; (c) stub `pi` script on PATH that reads .task/PROMPT.md, makes a commit in the cwd repo ('stub: change'), emits 2-3 plausible JSONL lines to stdout, exits 0; (d) real zellij is NOT used: stub `zellij` script that for `run` executes the wrapped command directly (background), for attach --create-background no-ops, for list-sessions prints active names from a state file — i.e. simulate sessions with files. (e) real ahub-run and agenthubd binaries built by the test (go build into t.TempDir()).\n\nFlow: start agenthubd with a generated config (short poll_interval ~200ms) -\u003e put a task in fake-Vikunja Ready bucket -\u003e wait (poll with deadline, no fixed sleeps) for: card moved to In Progress with claim comment; then card in In Review with a comment containing the diff stat; store db has task in_review + run finished/success (inspect via ahub status --json against the daemon). Negative subtest: stub pi exits 1 -\u003e card lands in Failed with diagnostic comment. Timeout subtest optional (only if cheap with the fake clock — the daemon uses real time; skip if it needs sleeps \u003e2s and note why).\n\nConstraints: everything under e2e/ (+ justfile tweak if needed). Full-tree build allowed. If you find integration bugs in other packages, fix them in separate commits '\u003cpkg\u003e: fix ...' with a test where feasible. No .beads/ changes. Commit 'e2e: ...'. Do NOT push.\n","notes":"CONVENTION UPDATE (see SPEC §13): tests use testify (require/assert); errors via culpa. Deps already in go.mod.","status":"open","priority":2,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-12T23:35:56Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T00:09:35Z"}
new_value {"status":"in_progress"}
comment NULL
created_at 2026-07-13T06:18:18Z
id 019f598f-8a09-7704-979f-9c6324aad248
issue_id ah-nyl.7
event_type closed
actor Eugene Blikh
old_value
new_value landed 892cbda: hermetic full-loop harness (fake vikunja w/ per-response pagination + preflight support, argv-faithful zellij/pi stubs, real binaries); happy/failure/timeout paths green 4x no flakes, just e2e 3.3s; zero integration bugs found
comment NULL
created_at 2026-07-13T06:40:07Z
id 019f7cda-9089-7a73-9fd3-705a5d34eace
issue_id ah-nyl.7
event_type label_added
actor Eugene Blikh
old_value NULL
new_value NULL
comment Added label: milestone:stage-1
created_at 2026-07-20T03:08:46Z
id 019f7cdc-07d9-7631-8502-e44ed2a9bd75
issue_id ah-nyl.7
event_type label_removed
actor Eugene Blikh
old_value NULL
new_value NULL
comment Removed label: milestone:stage-1
created_at 2026-07-20T03:10:22Z