dnu038ahj3vo0ovfittn1ocnjc7alqhp · 18 rows
| id | issue_id | event_type | actor | old_value | new_value | comment | created_at |
|---|---|---|---|---|---|---|---|
| 019f58ae-407c-7999-875f-11c78322b49e | ah-nyl | created | Eugene Blikh | NULL | 2026-07-13T02:34:02Z | ||
| 019f58ae-43b8-7683-a96f-8e547b31ec37 | ah-nyl.1 | created | Eugene Blikh | NULL | 2026-07-13T02:34:03Z | ||
| 019f58ae-b83d-752c-8b26-9aba0aaeb237 | ah-nyl.2 | created | Eugene Blikh | NULL | 2026-07-13T02:34:33Z | ||
| 019f58ae-bbf8-7b85-a2f8-a341f3fc6d9d | ah-nyl.3 | created | Eugene Blikh | NULL | 2026-07-13T02:34:34Z | ||
| 019f58af-5f36-73b9-b949-03c66a15432a | ah-nyl.4 | created | Eugene Blikh | NULL | 2026-07-13T02:35:16Z | ||
| 019f58af-62ab-7a9e-b2a4-6d11ed68d18b | ah-nyl.5 | created | Eugene Blikh | NULL | 2026-07-13T02:35:16Z | ||
| 019f58af-f5f5-7403-90eb-db4c754742f1 | ah-nyl.6 | created | Eugene Blikh | NULL | 2026-07-13T02:35:54Z | ||
| 019f58af-fad9-748c-a6a1-71948b188bcc | ah-nyl.7 | created | Eugene Blikh | NULL | 2026-07-13T02:35:55Z | ||
| 019f58af-fe8c-793b-8700-9ce02148b86f | ah-nyl.8 | created | Eugene Blikh | NULL | 2026-07-13T02:35:56Z | ||
| 019f58b0-7816-7c6b-a36d-bbbd7f5b5eb4 | ah-xuc | created | Eugene Blikh | NULL | 2026-07-13T02:36:27Z | ||
| 019f58b0-7a39-74fd-ae5f-365c75d5aab6 | ah-ydx | created | Eugene Blikh | NULL | 2026-07-13T02:36:28Z | ||
| 019f58b0-7c89-7f0f-b898-f324000256f4 | ah-0ge | created | Eugene Blikh | NULL | 2026-07-13T02:36:29Z | ||
| 019f58b0-7e71-72b3-9040-55429df727a2 | ah-oeq | created | Eugene Blikh | NULL | 2026-07-13T02:36:29Z | ||
| 019f58b0-806b-71d0-9c76-31cf450cbe41 | ah-k23 | created | Eugene Blikh | NULL | 2026-07-13T02:36:30Z | ||
| 019f58b2-07e1-78e5-81fa-b80c23cd0964 | ah-nyl.1 | status_changed | Eugene Blikh | {"id":"ah-nyl.1","title":"foundation: go module, domain, ports, config","description":"Create the Go foundation of agents-dev exactly per docs/SPEC.md (read it fully first; SS4-6, SS12-13 are normative for this task).\n\nDeliverables:\n1. go.mod: module go.bigb.es/agents-dev, go 1.26. Add ALL stage-1 external deps now so siblings never touch go.mod: modernc.org/sqlite, gopkg.in/yaml.v3. Populate go.sum by building a throwaway smoke import (e.g. internal/smoke_test.go importing both, then delete the file but keep go.sum entries; or keep a tiny blank-import file under internal/deps/deps.go with build tag 'deps' — your choice, document it).\n2. internal/domain: types + constants from SPEC SS5 (State, Outcome, Task, Repo, TaskRecord, Run, Event, RunSummary) and pure transition helpers, at minimum CanClaim(*TaskRecord) bool per SS5 semantics. Table tests for every helper.\n3. internal/ports: interfaces exactly as SPEC SS6 (Board, Runner, Store, Notifier + BoardTask, StartSpec, RunInfo, RunStatus). Doc comments on every method stating error/nil semantics ((nil, nil) for absent, etc.).\n4. internal/config: Load(path string) (*Config, error) implementing SPEC SS12: yaml.v3 with KnownFields(true), ${VAR} env expansion in string values (only for vars that exist; unknown var = validation error), \"~\" expansion in paths, duration parsing, validation that collects ALL problems into one error (repos non-empty, default_repo/default_role resolve, buckets map has all six canonical keys, listen is loopback host:port). Config struct mirrors config.example.yaml at repo root (keep the two in sync; fix the example if you find an inconsistency and note it in the commit message). Tests: golden-load of config.example.yaml with env set, plus failure cases.\n\nRules: stdlib + the two deps only; log/slog if logging is needed (probably not here); no package-level state. Run: go build ./... \u0026\u0026 go vet ./... \u0026\u0026 go test ./... (allowed for THIS task only, since you own the whole tree). Commit everything as one or two commits, message style 'domain: ...', 'config: ...'. Do NOT push. Do NOT touch .beads/.\n\nAcceptance: go build/vet/test green on a clean checkout; interfaces compile exactly against the names/signatures in SPEC SS6 (parallel siblings will implement them verbatim); config.example.yaml loads.\n","status":"open","priority":0,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-12T23:34:03Z","created_by":"Eugene Blikh","updated_at":"2026-07-12T23:34:03Z"} | {"status":"in_progress"} | NULL | 2026-07-13T02:38:10Z |
| 019f58c1-7bc1-7589-bf55-7eba737f89bf | ah-nyl.1 | closed | Eugene Blikh | Closed | NULL | 2026-07-13T02:55:02Z | |
| 019f58c1-7e91-7947-accb-8220e4be6b23 | ah-nyl.2 | status_changed | Eugene Blikh | {"id":"ah-nyl.2","title":"store: SQLite implementation of ports.Store","description":"Implement internal/store per docs/SPEC.md SS7 (read SPEC fully; SS5-7 normative). ports.Store on modernc.org/sqlite.\n\nDeliverables:\n- internal/store/store.go: New(path string) (*Store, error) — opens DB, applies PRAGMAs (WAL, busy_timeout=5000, foreign_keys=on), runs migrations; Close().\n- Migrations: embedded schema.sql (embed package), applied under a PRAGMA user_version gate (hand-rolled, target version 1). DDL exactly per SPEC SS7.\n- All ports.Store methods with the documented semantics: GetTask/LatestRun return (nil, nil) when absent; CreateRun surfaces UNIQUE(task_id, attempt) violation as a distinguishable error (exported sentinel ErrDuplicateRun); UpsertTask insert-or-update by id; timestamps RFC3339 UTC; contexts honored (database/sql *Context variants everywhere).\n- Compile-time check: var _ ports.Store = (*Store)(nil).\n\nTests (stdlib testing only, t.TempDir() databases): round-trip every method; absent-row nil,nil; duplicate run -\u003e ErrDuplicateRun; upsert updates fields + updated_at; ListTasks ordering deterministic (by id); events append + monotonically increasing seq; migration idempotence (New twice on same file).\n\nConstraints: work ONLY under internal/store/. Do not modify go.mod/go.sum (deps are already there), other packages, or .beads/. Build/test ONLY your package: go build ./internal/store/... \u0026\u0026 go vet ./internal/store/... \u0026\u0026 go test ./internal/store/... . Commit with 'store: ...' staging only internal/store. Do NOT push.\n","status":"open","priority":1,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-12T23:34:33Z","created_by":"Eugene Blikh","updated_at":"2026-07-12T23:34:33Z"} | {"status":"in_progress"} | NULL | 2026-07-13T02:55:03Z |
| 019f58c1-8017-7207-9931-05352f4e49b1 | ah-nyl.3 | status_changed | Eugene Blikh | {"id":"ah-nyl.3","title":"vikunja: Board adapter over the REST API","description":"Implement internal/vikunja per docs/SPEC.md SS8 (read SPEC fully; SS6, SS8 normative). ports.Board over the Vikunja 2.3.0 REST API.\n\nDeliverables:\n- New(cfg config.Vikunja, logger *slog.Logger) (*Client, error) storing an http.Client with a sane timeout (~15s).\n- Bucket resolution per SPEC SS8: locate the kanban view of the configured project, build title-\u003ebucketID and bucketID-\u003ecanonical-name maps from the config buckets mapping; missing configured title = error listing found titles. Resolve lazily on first use and cache; provide a Refresh path when a lookup misses (board edited).\n- Snapshot(ctx): tasks of the project with canonical bucket names (\"\" for unmapped buckets), honoring pagination.\n- MoveToBucket(ctx, taskID, canonical), Comment(ctx, taskID, markdown), each per SPEC SS8 endpoints.\n- Error style: non-2xx -\u003e error with method, path, status, and \u003c=200 bytes of body.\n- Compile-time check: var _ ports.Board = (*Client)(nil).\n\nIMPORTANT — verify the real API contract before coding: the live OpenAPI JSON is at https://tasks.bigb.es/api/v1/docs.json (Swagger UI at /api/v1/docs) — fetch it (no auth needed for the spec itself) and confirm exact paths, request/response shapes, and pagination headers for: project views list, kanban view tasks, buckets list, bucket task move, comment create (Vikunja uses PUT-for-create), single task get. If the live spec is unreachable, use the upstream docs at https://vikunja.io/docs/ and pin your best understanding in code comments + fixtures. SPEC SS8's endpoint list is the expected shape, not gospel — trust the OpenAPI.\n\nTests: httptest.Server fixtures (JSON canned from the OpenAPI shapes) covering snapshot incl. pagination + unmapped buckets, bucket resolution failure (helpful error), move, comment, non-2xx error rendering. No live-network tests.\n\nConstraints: work ONLY under internal/vikunja/. No go.mod changes, no other packages, no .beads/. Build/test ONLY your package (go build/vet/test ./internal/vikunja/...). Commit 'vikunja: ...' staging only internal/vikunja. Do NOT push.\n","status":"open","priority":1,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-12T23:34:34Z","created_by":"Eugene Blikh","updated_at":"2026-07-12T23:34:34Z"} | {"status":"in_progress"} | NULL | 2026-07-13T02:55:04Z |