Standing goals move from files (obot.agent/goals/*.md) to hub goal issues, and the site gains one page per goal summarizing the goal and its member requirements, split by readiness. The design splits direction + membership (the goal issue — editable by @jwildfire with no PR ceremony) from the policy binding for autonomous selection (a thin registry that stays in obot.agent under the policy-file carve-out).
goal, title prefix Goal:, kept open indefinitely — closing = retiring. GitHub-native custom issue types are an organization-plan feature, unavailable on this user-owned repo, so label + template is the formal mechanism (resolves the requirement's open question).```yaml
slug: charts # obot-auto --goal <slug>
anchors: # priority order
- jwildfire/obot.roadmap#35
backlog: # hub issues or owner/repo issue backlogs
- jwildfire/safety.viz
```.github/ISSUE_TEMPLATE/goal.yml, scaffolds new goals (YAML block + Intent + Boundaries).goal-labeled issues with sub-issue membership links; no custom issue type.auto — ready for autonomous implementation: the #18 implementation-ready criteria (design signed off, repo work scoped, inside the grant matrix).draft — needs @jwildfire input or steering before implementation.--auto selection still evaluates the criteria directly, so a mislabeled issue cannot grant itself eligibility.auto / draft (@jwildfire 2026-07-24), not the proposed ready-for-auto / needs-steering.--auto reads| Concern | Lives in | Change path |
|---|---|---|
| Direction, boundaries, membership (anchors/backlog) | Hub goal issue | @jwildfire edits directly; agents propose via comment |
| Selectable set, active/paused, grant profile | obot.agent/goals/registry.json | PR through the policy-file carve-out — never merged unattended |
scripts/obot-auto pre-flight resolves --goal <slug> against the registry (must exist with status: active) and reports the hub issue.session-init --auto fetches the goal issue live: first YAML fence → ordered anchors + backlog; prose → binding boundaries. Selection order (anchors first, then backlog, never outside the grant matrix) is unchanged from #18.scripts/lib/collect/goals.mjs (shared with the #57 roadmap page) reads open goal-labeled issues via GraphQL — issue + sub-issues + labels — replacing the file-based collector and the obot.agent checkout in deploy-site.yml.scripts/build_goals.mjs renders /goals/ (index), /goals/{slug}.html per goal — direction prose, progress, members grouped Ready for auto / Needs steering / other / done, backlog feeds — and /goals/goals.json, the machine-readable summary the #57 homepage consumes.| Phase | What | Where | Gate |
|---|---|---|---|
| 1 — hub content | Labels auto/draft; goal issues #78 (G1 charts) + #79 (G2 app) migrated verbatim from charts.md/app.md; pilot goals #72/#73 retrofitted with YAML blocks; 10 sub-issue links; draft applied to all 11 current members | obot.roadmap issues | @jwildfire reviews live goal issues |
| 2 — machinery | goals/registry.json; obot-auto registry resolution; session-init goal-resolution + read-only rule; charts.md/app.md retired in-PR (no dark window: pre-merge sessions read files, post-merge read issues) | obot.agent#45 (draft) | @jwildfire review, obot-merge — carve-out, never unattended |
| 3 — site | Collector rewrite, build_goals.mjs, goal template, deploy-workflow wiring, this design doc | obot.roadmap main | @jwildfire reviews deployed pages |
| 4 — closeout | #18 O2 supersession note; #57 handoff (goals.json + URLs); #53/#71 updates | obot.roadmap | — |
On reviewing the shipped goal issues, @jwildfire flagged the up-front YAML blocks and their staleness risk (a hand-maintained list duplicating the sub-issue links). Approved reshape:
<!-- goal-slug: … --> comment naming the site page.--auto and the site collector; a newly linked sub-issue is automatically a member.--increment still overrides.jwildfire/safety.viz) move into goals/registry.json next to grant_profile — they are selection policy, and they can't be sub-issues anyway.collectGoals() / goals.json — goal pages provide the stable targets; homepage design stays #57's.--auto still reads the goal files (which no longer exist on the branch — they remain on main); the site already reads issues. No coordination hazard: both sources currently describe the same two goals.--auto-selectable) — @jwildfire's call, one-line follow-ups.