~bigbes/agents-dev · events

2vscb698ttfjdh3j16fv28gbpvbq3b2c · 112 rows

idissue_idevent_typeactorold_valuenew_valuecommentcreated_at
019f5a77-eda7-7288-aa1a-d7bf1cffad00ah-xuc.12claimedEugene Blikh{"id":"ah-xuc.12","title":"docs: sync SPEC with Stage 2 behavior","description":"SPEC.md gains normative Stage 2 sections mirroring what landed, in the established style (invariants and failure modes, not narrative): domain deltas (stalled outcome, canonical buckets as a superset of states, Run.Timeout), ports deltas (Labels, Skills, Publish), store v2 migration, vikunja labels, runner skills plus publish (never force-push), reconciler claim spec resolution + Triage bounce + parked buckets + per-run timeout + watchdog + notification ordering, httpapi webhook endpoint (HMAC, disabled when unset), config reference with the full new example, security notes (webhook secret, TG token redaction, srht push scope), roadmap section 14 marks Stage 2 delivered. Cross-check config.example.yaml for drift. AGENTS.md and CLAUDE.md only if conventions changed (mirror both if so — independent files).","acceptance_criteria":"Each new SPEC section spot-checked against the shipped code; no contradiction with Stage 1 sections; the research-v3 supersede note stays accurate","status":"open","priority":2,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-13T05:16:35Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T05:16:35Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-13T10:53:56Z
019f5a86-c89e-78d5-9d45-9fa111bd917fah-6u0createdEugene BlikhNULL2026-07-13T11:10:10Z
019f5aa0-3d65-756e-91b2-774951842177ah-wkacreatedEugene BlikhNULL2026-07-13T11:37:58Z
019f5aa0-82d6-775e-bb66-67329b52a4beah-xuc.11closedEugene Blikh8e29554; reviewer merge-ready with zero findings — stub honesty, hermeticity, timing discipline, full-argv equality all verified; 3-run flake probe: all six Stage 2 flows green in all runs (the one flake found is pre-existing Stage 1, filed as ah-wka)NULL2026-07-13T11:38:16Z
019f5aa0-85b0-7ed4-a1ad-3695bf4f9c33ah-xuc.12closedEugene Blikhe13b65c + b48849f (two wording nits); accuracy reviewer merge-ready — every behavioral claim verified against code; SPEC section-12 example validates through ahub validate-config; pre-existing RunStatus.MetaAttempt drift filed as ah-6u0NULL2026-07-13T11:38:17Z
019f5aa0-88ab-7036-9543-c212c67ea38dah-xucclosedEugene BlikhStage 2 delivered: 21 commits b3ee57d..HEAD (webhook HMAC poke, Task Spec frontmatter + type-label presets + Triage bounce, parked buckets Triage/Blocked/Question, per-run timeout with store v2, stall watchdog, Telegram notifier via HTTPS_PROXY, review-branch publish to srht remotes with bounded push, e2e flows, SPEC synced to Stages 1-2). Every wave gated by hostile review + empirical validation; final epic-wide gate 11/11. Runtime prerequisites (board columns, webhook target, srht repos, TG bot) remain in ah-k23.NULL2026-07-13T11:38:18Z
019f5aa7-e2b9-7290-a42a-74e32834a4cbah-wkaclaimedEugene Blikh{"id":"ah-wka","title":"runner: Status crash-inference race misclassifies a finished run (e2e flake)","description":"Found by the Stage 2 closing review (3-run e2e probe, 1 failure in 3): TestE2E (Stage 1) tasks 101/102 finalized as outcome=crashed / exit_code=-1 even though the daemon log shows the correct run-exit report received (exit_code 0/1). Root cause per static read: PiZellij.Status (internal/runner/runner.go, crash-inference fallback around lines 210-215) infers Completed/OutcomeCrashed whenever it observes neither exit.json for the attempt nor a live zellij session — a visibility window between ahub-run writing exit.json (atomic rename) and the session-liveness check observing the dying session. The e2e stub session dies immediately at child exit, making the window wide; real zellij keep-pane narrows but does not provably close it (kill-session paths, crashes). Pre-existing Stage 1 behavior, NOT introduced by the Stage 2 commits (all six Stage 2 flows were green in all three runs).\n\nDirection to evaluate: make the crash inference sticky-read-ordered — check exit.json AGAIN after observing the session dead (dead session THEN a fresh exit.json stat), or require N consecutive dead observations before inferring a crash, or have Status treat session-dead-without-exit.json as the neither-state (no evidence) for one grace tick instead of hard Completed/crashed. Any fix must keep the SPEC section 9 three-state contract and the section 10 adopt semantics intact.","acceptance_criteria":"The race window is closed or bounded (re-check ordering or grace tick); a regression test reproduces the old misclassification deterministically (stub with delayed exit.json visibility); 10 consecutive full e2e runs green","status":"open","priority":2,"issue_type":"bug","owner":"bigbes@gmail.com","created_at":"2026-07-13T08:37:59Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T08:37:59Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-13T11:46:19Z
019f5aa7-e475-700b-9d01-31a057b031eeah-6u0claimedEugene Blikh{"id":"ah-6u0","title":"docs: SPEC section 6 RunStatus struct omits MetaAttempt","description":"Pre-existing Stage 1 drift found during the Stage 2 SPEC sync (ah-xuc.12): the RunStatus struct listing in SPEC section 6 lacks the MetaAttempt field even though section 9 prose relies on RunStatus.MetaAttempt (the attempt recorded in .task/meta.json, 0 when absent). Make the section 6 struct field-complete to match internal/ports/ports.go.","status":"open","priority":4,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-13T08:10:10Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T08:10:10Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-13T11:46:20Z
019f5acc-e475-7bbf-9862-ee91860a2752ah-wkaclosedEugene Blikh2783d16 + 56f84bf (SPEC section 9 sync): crash inference now confirm-after-grace (re-stat + 5s window returning the neither state). Regression test falsified against old logic; 15/15 independent e2e runs green vs ~1-in-3 pre-fix; -race clean; reviewer merge-ready with the adopt corner independently confirmed unreachableNULL2026-07-13T12:26:45Z
019f5acc-e76b-7c9a-bfb2-8b08a3c05f17ah-6u0closedEugene Blikh279b733: MetaAttempt added to SPEC section 6 RunStatus listing, alignment verified against gofmt; accuracy-reviewed in the follow-up gateNULL2026-07-13T12:26:45Z
019f5add-4ef9-76b2-afcb-8c93b6a34284ah-dddcreatedEugene BlikhNULL2026-07-13T12:44:40Z
019f5add-8608-7ca6-8e41-df42dd9c42a1ah-dddclaimedEugene Blikh{"id":"ah-ddd","title":"ntfy: notifier for ntfy-compatible endpoints (Prism)","description":"The operator runs Prism (phoebe-lab/prism), an ntfy-compatible notification gateway at https://prism.bigb.es/{topic} that delivers to Telegram and owns the TG proxy egress itself (patched Telego + lab singbox). Publishing to it is a plain lab-local HTTPS POST — no HTTPS_PROXY handling needed in the daemon (prism.bigb.es is inside the NO_PROXY zone). This replaces the operational need for the direct Telegram path; internal/telegram stays as an alternative.\n\nNew package internal/ntfy implementing ports.Notifier: POST the configured topic URL with Authorization: Bearer \u003ctoken\u003e, Content-Type application/json, body {\"message\": \u003ctext\u003e} (title omitted — ntfy treats it as optional; per the Prism README the JSON publish shape is {\"title\",\"message\"}). 10s client timeout, bounded response read, non-2xx = error with a short body prefix, bearer token never in logs or error strings (redact like internal/telegram does), no retries (Notify is best-effort by contract).\n\nConfig: ntfy block {url, token} — present when either is set, then both required; url must parse as http(s). Configuring BOTH ntfy and telegram is a config error (exactly one notifier; explicit over precedence). config.example.yaml gains a commented block pointing at a Prism topic URL with ${PRISM_API_KEY}.\n\ncmd/agenthubd: notifier selection becomes ntfy | telegram | slog no-op (config validation guarantees not-both); construction error fatal at startup like telegram.\n\nDocs: SPEC section 4 layout (internal/ntfy), section 6 Notifier comment, section 12 config example + validation rules, section 15 security note (bearer key via env ref, token redaction).","acceptance_criteria":"go test ./internal/ntfy/... ./internal/config/... ./cmd/... green with -race on ntfy; httptest covers success, non-2xx, token redaction, context cancellation; config table tests cover both-or-neither, bad url, both-notifiers-configured error; wiring test asserts ntfy selected when configured; full go test ./... and -tags e2e green; SPEC updated in the same style as the Stage 2 sync","status":"open","priority":2,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-13T09:44:41Z","created_by":"Eugene Blikh","updated_at":"2026-07-13T09:44:41Z"}{"assignee":"Eugene Blikh","status":"in_progress"}NULL2026-07-13T12:44:55Z