Self-Describing Issues
An OpenAlice Issue is a Markdown file under .alice/issues/<id>.md, not a database row that only the UI understands.
---
title: Track NVDA supply-chain updates
status: todo
priority: medium
assignee: "@new-then-resume"
when: { kind: cron, cron: "0 9 * * 1", timezone: America/New_York }
agent: codex
model: gpt-5.6-sol
effort: high
timeout: 30m
---
Review [[NVDA]] and its major suppliers every Monday morning.
Write `research/nvda-supply-chain.md`; push only material changes to Inbox.
The filename stem is the stable id. Everything below frontmatter is the canonical What passed to a scheduled agent. Comments live in the adjacent <id>.comments.json sidecar so an arbitrary agent rewrite cannot erase them. For an exact Session owner, a comment can be delivered asynchronously and its reply remains in the same durable Activity thread.
One object, two roles
- Without
when, the file is a board work item. - With
when, the same file schedules a headless run. doneorcanceledstops future fires without deleting the Issue.
There is no parallel schedule object, prompt field, or execution-owner field to keep in sync.
Ownership
@new-then-resumerecruits one Session on the first fire, then persists it as the exact owner.@new-each-runrecruits a new Session for every fire.- An exact
@resumeIdcontinues one responsible Session. @humanand@unassignedare valid for unscheduled work.- Agent-facing
@meis resolved to the caller's concrete signature before storage.
When an attributable resumable Session creates the Issue, an omitted owner is
that creator. Otherwise, omission defaults scheduled work to
@new-then-resume and unscheduled work to @unassigned. Write
@new-each-run explicitly only when every scheduled fire should recruit a
newcomer.
For @new-each-run and the first @new-then-resume dispatch, optional agent,
credential or credentialSource: native, model, and effort fields create
the Session without rewriting fixed Workspace AI preferences. Omit both access
fields to inherit the Workspace's fixed, then recent, headless preference. An
exact Session already owns its runtime conversation, so the tuple is forbidden
with @resumeId in the Markdown file. For an idle exact owner, the Issue
detail UI can explicitly replace the Session's credential source, model, and
effort after confirmation; that updates the Session dossier, never the Issue
frontmatter or Agent runtime.
The separate optional timeout field accepts 15m, 30m, 45m, or 60m.
It limits one scheduled run and is valid even for an exact Session owner. Omit
it for no watchdog so the Agent can finish naturally.
Deprecated @new and @workspace values remain read aliases only. New writes
must use the behavior-named canonical values; pre-0.89.2 parallel ownership
formats are outside the supported baseline.
Human comments without a fixed Session owner ask the attributable creator when
possible, or recruit a visibly reconstructed Session in the Issue Workspace.
The reply is appended to Activity without changing assignee. Agent-authored
progress comments without a fixed owner remain durable notes.
This makes the file answer both “what should happen?” and “who is responsible?” without confusing the creator with the current owner.
Why Markdown
- Agents can inspect and edit the work with normal repo tools.
- Humans can review changes in git diffs.
[[wikilinks]]connect Issues to tracked entities and related work.- The same artifact drives the terminal, Web UI, and headless scanner.
- Timezone and ownership survive restarts because they live with the task.
CLI and UI
alice-workspace issue create --title "Review CPI release" --what "..." --assignee me
alice-workspace issue list
alice-workspace issue update --id <id> --status in_progress
alice-workspace issue comment --id <id> --text "Waiting for the revision."
The Issue Board renders the same files, derives automation health, keeps change/conversation Activity separate from the operational Runs ledger, and exposes attributable follow-up. Run now starts an extra immediate turn; failed or interrupted scheduled work can use Retry now. Neither action shifts the normal cadence.
Next Steps
- Issue Board — Full schema, health, activity, and UI behavior.
- Automation — How scheduled files become headless turns.
- Sessions & Collaboration — Understand recruit-once, recruit-each-run, and exact Session ownership.