# Task intake (HARNESS-WP-0001-T03) activity-core emits tasks via IssueSink → `POST /issues/` on **issue-core**. rein-aharness **consumes** them by polling the same service: ``` activity-core (cron/rule) → IssueCoreRestSink POST /issues/ → issue-core backend (sqlite / gitea) → rein-aharness poll/claim GET+PATCH /issues/ → run_task (profile + budget + persona + session) → PATCH close + hub progress + .kaizen/metrics ``` `TaskExecutorWorkflow` stays a stub (activity-core INTENT); execution lives here. ## Mail path (server / Railiance) ``` rein-aharness mail-scan # deterministic IMAP (AppRole) rein-aharness mail-triage # llm-connect HTTP → JSON → apply mail-log + commit ``` Requires `LLM_CONNECT_URL` (e.g. in-cluster `http://llm-connect.activity-core.svc.cluster.local:8080`). Optional: `MAIL_TRIAGE_MODEL`, `MAIL_TRIAGE_MAX_TOKENS`, `MAIL_TRIAGE_MAX_ROWS`. **No Claude CLI** on the host. ## issue-core worker API | Method | Path | Role | |--------|------|------| | POST | `/issues/` | Ingest (activity-core) | | GET | `/issues/?state=open&label=automated` | Poll queue | | GET | `/issues/{id}` | Fetch one | | PATCH | `/issues/{id}` | Claim (`in_progress` + assignee) or `closed` | Auth: `Authorization: Bearer $ISSUE_CORE_API_KEY` or `X-API-Key`. ## CLI ```bash export ISSUE_CORE_URL=http://127.0.0.1:8765 # or in-cluster service export ISSUE_CORE_API_KEY=… export AGENT_HARNESS_REPO_MAP='{"binky-control":"/home/tegwick/binky-control"}' # Peek / claim without executing rein-aharness poll rein-aharness poll --no-claim # Claim → run → close (or reopen on failure) rein-aharness run --from-issue-core # Local dev (unchanged) rein-aharness run --task-file examples/task-hello-sandbox.json --no-hub ``` ## Label filter Default: issues must carry the **`automated`** label (matches activity-core binky definitions). Override: ```bash export AGENT_HARNESS_INTAKE_LABELS=automated,harness # ALL required ``` ## Agent + completion event mapping From `activity_definition_id` or labels: | Hint | Instance agent | completion_event_type | |------|----------------|------------------------| | `binky-daily-rhythm` / `rhythm` | `coach` | `binky_daily_brief` | | `binky-weekly-mail-intake` / `mail-intake` | `mail-triage` | `binky_mail_intake` | | `binky-weekly-review-prep` / `weekly-review` | `review-prep` | `binky_weekly_review` | | else | `coach` | `executor_run` | Instance policy (`tool_profile`, `budget`, `lane`) still comes from the target repo's `.kaizen/schedule.yml`. ## Repo path resolution 1. Absolute/expanded path if it is already a git repo 2. `AGENT_HARNESS_REPO_MAP` JSON 3. Search `AGENT_HARNESS_REPO_ROOTS` (default `~:~/work`) for the slug