Plan the Issues and Projects work system

bfb558a956ba · AtlantisPleb · · parent 57d611fcb7ac

Plan the Issues and Projects work system

Assess the current issue, project, API, CLI, and agent-work surfaces. Define a canonical work model, project and milestone structure, ordered delivery tracks, and completion criteria for the remaining work.

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

Not deployed through the forge lane

No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.

Changed files

  • added docs/2026-08-21-issues-projects-work-system-assessment.md

Diff

1 file changed, +563 -0

docs/2026-08-21-issues-projects-work-system-assessment.md added +563

@@ -0,0 +1,563 @@

1
# Issues and projects work system assessment
2
3
Date: 2026-08-21
4
5
Status: Proposed plan for organizing the OpenAgents backlog and completing the
6
Issues and Projects product
7
8
## Decision summary
9
10
Use OpenAgents Issues as the canonical record for work and Projects as views
11
that organize those issues across repositories. Keep milestones as release or
12
deadline commitments. Do not copy an issue into a second task system when an
13
agent starts work; link the issue to the durable agent job, conversation,
14
commits, tests, and deployment receipts instead.
15
16
Organize the near-term work around three projects:
17
18
1. **OpenAgents public roadmap** shows product outcomes that users and
19
   contributors can follow.
20
2. **Issues and Projects delivery** contains the detailed server, web, API, and
21
   CLI work required to make this system reliable.
22
3. **Agent work and provenance** contains the work that connects issues to
23
   chat and coding agents, work jobs, changes, and release evidence.
24
25
Use tracking issues for each outcome and child issues for independently
26
shippable changes. Until native sub-issues ship, use a checklist in the
27
tracking issue and keep every checklist entry linked to a real issue.
28
29
Finish the server contract before building rich clients on top of it. The
30
current API lets a token create an issue in a private repository and then
31
cannot read it back, leaves issue lists unbounded, and pins Projects V2 to the
32
initial repository. Those defects can make a polished CLI confidently do the
33
wrong thing.
34
35
The generic `openagents api` command landed in the `openagents` monorepo at
36
`eaa2aa1006`, so every current route is already reachable from a terminal.
37
Named issue and project commands are now in flight in another agent's work.
38
Treat that CLI lane as active work: do not start a second implementation, and
39
do not make the server plan depend on an unmerged CLI branch.
40
41
## Scope and evidence
42
43
This assessment combines these sources:
44
45
- The implemented API inventory and known gaps in
46
  [GitHub-shaped Issues and Projects API assessment](github-api-issues-projects-assessment.md).
47
- The current web surface in
48
  [Issues and Projects UI roadmap](issues-projects-ui-roadmap.md).
49
- The API-to-CLI gap analysis in
50
  [CLI and API parity](2026-08-21-cli-api-parity-audit.md).
51
- The current authority and operating model in
52
  [Issue and project triage assessment and runbook](2026-08-21-issue-project-triage-runbook.md).
53
- The contract and design boundary in
54
  [Linear's design language over GitHub's shape](2026-08-20-linear-design-github-shape.md).
55
- Episodes 269 through 274 in the `openagents` monorepo. They establish the
56
  product direction: a compatible forge that works without agents, a single
57
  OpenAgents interface over repositories and agents, public development on
58
  the forge itself, and auditable links from plans and conversations to code
59
  and deployments.
60
- The current schemas, contexts, controllers, LiveViews, tests, and the public
61
  roadmap board.
62
63
The transcripts provide product background, not implementation instructions.
64
The repository's code, tests, authority ledger, and current operator decisions
65
remain the executable constraints.
66
67
## What exists now
68
69
### Issues
70
71
The issue system already supports more than the current project board shows:
72
73
- Repository-scoped list, read, create, update, close, reopen, and comments.
74
- Labels, assignees, milestones, authorship, locking fields, state reasons,
75
  and repository-local issue numbers.
76
- Public reading for public repositories and a tested browser participation
77
  model for reporters, authors, viewers, contributors, maintainers, and
78
  owners.
79
- Search, label, assignee, and milestone filters; 25-row pages; live updates;
80
  and a workspace-wide **Issues** page that shows every issue the signed-in
81
  person can read.
82
- GitHub-shaped REST routes for issue, comment, label, assignee, and milestone
83
  operations.
84
- Repository foreign keys and query boundaries that prevent cross-repository
85
  data leaks.
86
87
Important missing issue capabilities include:
88
89
- Authenticated API reads for private repositories.
90
- A documented, bounded API pagination contract and the web filters on the
91
  API list route.
92
- Cross-repository and organization issue API views.
93
- Native issue types, sub-issues, dependencies, duplicates, and related-issue
94
  links.
95
- Timeline events, reactions, subscriptions, mentions, notifications, and
96
  saved views.
97
- Links from issues to work jobs, agent conversations, commits, releases, and
98
  deployments.
99
100
### Projects
101
102
The project system currently supports:
103
104
- Repository-owned projects with a number, title, owner, and open or closed
105
  state.
106
- Issue-backed project items with a free-form `values` map.
107
- Project fields with a name, data type, options, and project relationship.
108
- Project list, read, create, item add, item update, field list, and field
109
  create routes.
110
- A workspace-wide **Projects** page that lists every visible project.
111
- A repository board with fixed **To Do**, **In Progress**, and **Done**
112
  columns and a form that adds an issue to one of those columns.
113
114
The project layer remains an early implementation, not a complete work
115
system:
116
117
- Projects V2 API reads and creation resolve through the initial-repository
118
  constants instead of the repository or namespace requested by the caller.
119
- Project API reads do not apply the same visibility rule as their sibling
120
  issue routes.
121
- The API has inconsistent creation and read paths.
122
- The board cannot remove, reorder, or move an item directly. It does not
123
  render an item activity trail or show why an item changed status.
124
- The web board ignores the project's stored field definitions and always
125
  renders three hard-coded columns.
126
- Field types, option values, uniqueness, and item values are weakly
127
  validated.
128
- Projects have no update, delete, archive, view, ordering, iteration,
129
  template, or organization-owned surface.
130
- Project items can only point at issues in the project's repository. That is
131
  safer than leaking data, but it prevents a Projects V2-style cross-repository
132
  roadmap.
133
134
### CLI
135
136
The released CLI originally covered authentication and repository operations
137
only. The generic `openagents api` command now provides an authenticated,
138
origin-bounded passthrough for `GET`, `POST`, `PATCH`, `PUT`, and `DELETE`.
139
That gives scripts immediate access to the existing Issues and Projects API.
140
141
The generic command is not the end-user issue experience. Named commands need
142
repository inference, concise tables, issue-number arguments, editor support,
143
confirmation for destructive actions, and stable machine output. That work is
144
in flight elsewhere. The server should provide correct, testable routes while
145
the CLI agent owns the named command experience.
146
147
### Agent and receipt infrastructure
148
149
OpenAgents already has durable `work_jobs`, coding delegations, ATIF exports,
150
incidents, changelog entries, and deployment receipts. The missing feature is
151
the relationship between those records and an issue. Today, a conversation
152
can produce work and code, but the issue tracker cannot answer these questions
153
without manual reconstruction:
154
155
- Which conversation or request started this work?
156
- Which agent job is working on it now?
157
- Which commit or pull request implemented it?
158
- Which tests qualified it?
159
- Which release deployed it, and where?
160
- Did the deployed outcome satisfy the issue's acceptance criteria?
161
162
Answering those questions is the agent-native advantage. It should extend the
163
compatible forge rather than replace its normal issue workflow.
164
165
## Product rules
166
167
### Keep one canonical work record
168
169
An issue is the canonical work record. A project item references the issue; it
170
does not copy its title, state, owner, or acceptance criteria into an
171
independent task. An agent job also references the issue; it does not become a
172
second issue tracker.
173
174
This rule prevents four statuses from disagreeing: issue state, project
175
status, agent job status, and deployment status. Each status has a distinct
176
meaning:
177
178
- Issue state answers whether the requested outcome remains open.
179
- Project status answers where the issue is in one planning workflow.
180
- Agent job status answers what one execution attempt is doing.
181
- Deployment status answers where one code revision is running.
182
183
### Keep GitHub's contract and improve the operation
184
185
Use GitHub-shaped resource names, paths, fields, and state values where the
186
compatibility plan commits to them. Use the denser, faster interaction model
187
described in the Linear/Circle design plan without changing payloads.
188
189
Do not add a custom issue priority field or encode priority in label names.
190
The current decision rejects both. Sequence work through project ordering,
191
project status, milestones, and explicit dependencies. Add native GitHub issue
192
types, sub-issues, and dependencies only when the local schema and API support
193
their GitHub-shaped representations.
194
195
Project fields are part of Projects V2 and may organize a view. Do not mirror
196
their values into invented issue fields. For the first complete board, store
197
only **Status** and derive the rest from standard issue fields:
198
199
- Repository from the issue relationship.
200
- Owner from assignees.
201
- Kind from labels until native issue types exist.
202
- Target date from the milestone.
203
- Open or closed from issue state and state reason.
204
205
### Keep the forge useful without agents
206
207
A person must be able to create, discuss, organize, and finish work through
208
the web and API without a chat or coding agent. Agents use the same API,
209
events, and authority checks as people. They must not receive privileged
210
database access.
211
212
### Make agent work legible
213
214
When an agent works on an issue, show a bounded activity record on the issue:
215
216
- The actor and requesting person.
217
- The durable job and conversation identifiers.
218
- The repository, branch, and requested working directory.
219
- The current state, start time, elapsed time, and terminal outcome.
220
- Links to the commits, test receipts, release, and deployment.
221
- A short report and a link to the fuller ATIF trace when policy allows it.
222
223
Apply the existing transparency level to every linked artifact. A public issue
224
must not make a private conversation, repository, log, or deployment receipt
225
public.
226
227
### Use the forge to build the forge
228
229
OpenAgents should track this program in OpenAgents, not in a private parallel
230
backlog. Public product outcomes belong on the public roadmap. Security,
231
embargoed, customer-specific, and private-repository work stays private but
232
uses the same model.
233
234
## Recommended projects
235
236
### OpenAgents public roadmap
237
238
Purpose: show users and contributors what outcomes OpenAgents intends to
239
deliver across the product.
240
241
Put one tracking issue on this board for each product outcome. Do not add every
242
implementation issue. The current cards about pull requests, notifications,
243
and PostHog are the right level, but each card needs an owner, target
244
milestone, acceptance criteria, and links to its implementation issues.
245
246
After C6 makes the board render its stored field, use these status options:
247
248
- **Backlog**: accepted, but not ready to start.
249
- **Ready**: scoped, unblocked, and eligible for assignment.
250
- **In progress**: someone or an agent is actively working on it.
251
- **In review**: implementation exists and needs review or qualification.
252
- **Blocked**: a named dependency prevents progress.
253
- **Done**: the outcome shipped and the tracking issue closed.
254
255
These values belong to the project's **Status** field. They do not replace the
256
issue's open or closed state.
257
258
Recommended views:
259
260
- **Roadmap**: board by **Status**, ordered by the desired sequence.
261
- **Now**: **Ready**, **In progress**, **In review**, and **Blocked**.
262
- **By repository**: grouped by the issue's repository.
263
- **Milestones**: grouped by milestone and due date.
264
- **Recently shipped**: closed as completed during the latest release window.
265
266
### Issues and Projects delivery
267
268
Purpose: manage the detailed implementation described in this assessment.
269
270
Add all server, web, API, migration, contract, test, and named CLI issues for
271
the Issues and Projects product. Group the work by tracking issue, not by
272
creating separate projects for each endpoint family.
273
274
Keep the CLI issues in this project so you can see the end-to-end outcome, but
275
assign them to the `openagents` monorepo. Assign server and web issues to
276
`OpenAgentsInc/openagents.com`. A project should span repositories even when
277
each issue stays owned by one repository.
278
279
### Agent work and provenance
280
281
Purpose: connect the tracker to chat and coding agents, changes, and releases.
282
283
This project owns issue-to-job linking, issue execution, agent activity,
284
trace policy, commit association, release receipts, and automation. Keep it
285
separate from the compatibility project because it can advance after the core
286
issue workflow works and because the core must remain useful when agents are
287
disabled.
288
289
## Recommended milestones
290
291
Use milestones for bounded delivery promises, not permanent categories.
292
Create these initial milestones after confirming deployment dates:
293
294
1. **Issues API correctness** closes the private-read, pagination, filter,
295
   error, origin, and contract defects.
296
2. **Projects foundation** makes project scope, visibility, fields, items, and
297
   board operations correct across repositories.
298
3. **CLI issue workflow** delivers the named commands already in flight and
299
   qualifies them against a deployed server.
300
4. **Public work system** makes the roadmap, notifications, mentions, saved
301
   views, and contribution flow usable by the public.
302
5. **Agent work receipts** links issues to jobs, conversations, commits,
303
   tests, releases, and deployments.
304
305
Do not create date-free milestones such as “Backlog.” The project status
306
already represents backlog position.
307
308
## Delivery tracks and candidate issues
309
310
The following identifiers are planning labels for this document, not issue
311
numbers. Create each item as an issue in the repository named in the
312
**Repository** column.
313
314
### Track A: Correct the API before adding clients
315
316
| ID | Repository | Issue | Completion signal |
317
| --- | --- | --- | --- |
318
| A1 | `openagents.com` | Let authenticated API readers see repositories they can read | The optional bearer pipeline widens private issue, comment, label, assignee, and milestone reads without changing anonymous public reads. |
319
| A2 | `openagents.com` | Add bounded issue API pagination and filters | The list route supports the web query's state, label, assignee, milestone, search, and page behavior with documented response metadata. |
320
| A3 | `openagents.com` | Resolve API URLs from the request origin | Staging responses never advertise production URLs, and proxy handling has tests. |
321
| A4 | `openagents.com` | Unify issue-family error envelopes | Validation and not-found responses preserve field detail and stable error codes without breaking measured clients. |
322
| A5 | `openagents.com` | Reconcile route authority with enforced pipelines | Every `/api/v3` route's principal and scope classification matches the plug that enforces it, and new routes cannot fall through a broad default. |
323
| A6 | `openagents.com` | Publish a complete derived API route inventory | CI derives the route list from the router and fails when the published contract omits a route. Response schemas may remain incremental and explicit. |
324
| A7 | `openagents` | Compare the CLI contract with the configured server | CLI verification fetches the published contract from staging and fails on divergence instead of hashing only its vendored copy. |
325
326
A1 through A5 precede a stable named CLI release. A6 and A7 can follow after
327
the routes stop moving, but the route-coverage failure should land early.
328
329
### Track B: Complete the issue work record
330
331
| ID | Repository | Issue | Completion signal |
332
| --- | --- | --- | --- |
333
| B1 | `openagents.com` | Add native issue types | The schema, API, forms, filters, and projections support GitHub-shaped task, bug, and feature types without label conventions. |
334
| B2 | `openagents.com` | Add sub-issues and progress summaries | A tracking issue can order child issues and report total, completed, and percent complete without parsing Markdown checklists. |
335
| B3 | `openagents.com` | Add issue dependencies and related links | Issues can block, be blocked by, duplicate, or relate to another visible issue, with cycle and authorization checks. |
336
| B4 | `openagents.com` | Add an issue event timeline | State, title, labels, assignees, milestones, project membership, agent work, and releases produce actor-attributed events. |
337
| B5 | `openagents.com` | Add subscriptions, mentions, and notifications | A person can follow an issue, receive an in-product notification, mark it read, and control delivery preferences. |
338
| B6 | `openagents.com` | Add saved workspace issue views | A person can save filters over issues they can read without creating a second issue collection. |
339
| B7 | `openagents.com` | Add bulk triage | Authorized maintainers can change labels, assignees, milestones, and state across selected issues with one audited operation. |
340
341
B2 and B3 should use the GitHub-shaped fields already identified in the design
342
assessment. B5 should land before a public backlog grows beyond the current
343
manual triage loop.
344
345
### Track C: Turn Projects into an actual planning system
346
347
| ID | Repository | Issue | Completion signal |
348
| --- | --- | --- | --- |
349
| C1 | `openagents.com` | Replace the initial-repository project pin | User and organization project routes resolve the requested namespace and apply repository visibility to every item. |
350
| C2 | `openagents.com` | Define project ownership and cross-repository membership | A project can include visible issues from several repositories without weakening any repository's authority boundary. |
351
| C3 | `openagents.com` | Complete project lifecycle routes | Update, close, reopen, archive, and delete operations have explicit authority, API routes, tests, and audit events. |
352
| C4 | `openagents.com` | Validate project fields and values | Supported data types, option identifiers, unique names, and item values have database and application constraints. |
353
| C5 | `openagents.com` | Complete project item operations | Users can add, remove, move, and reorder items, and duplicate membership has a defined result. |
354
| C6 | `openagents.com` | Render boards from stored fields | The board uses the project's **Status** options instead of three hard-coded columns and supports keyboard and responsive operation. |
355
| C7 | `openagents.com` | Add table, board, and roadmap views | Each view is a projection over the same project items and fields, with saved sorting, grouping, and filtering. |
356
| C8 | `openagents.com` | Add project templates | A repository or organization can create a project with the standard **Status** field and recommended views without manual API calls. |
357
| C9 | `openagents.com` | Add public project reading | Anonymous users can read a project only when every exposed item and field is safe under the project's visibility policy. |
358
| C10 | `openagents.com` | Add project activity and live updates | Item and field changes update connected clients and record who changed what. |
359
360
C1 and C2 require a written migration and URL compatibility decision. Do not
361
silently reinterpret existing repository-local project numbers.
362
363
### Track D: Finish the named CLI experience
364
365
This track belongs to the agent already working in the `openagents` monorepo.
366
Use this list to coordinate scope, not to start duplicate work.
367
368
| ID | Repository | Issue | Completion signal |
369
| --- | --- | --- | --- |
370
| D1 | `openagents` | Add `issue list` and `issue view` | Commands infer the repository, support JSON, and work for authorized private repositories after A1 and A2 deploy. |
371
| D2 | `openagents` | Add `issue create`, `edit`, `close`, and `reopen` | Commands support noninteractive use and editor-based bodies, and preserve state reasons. |
372
| D3 | `openagents` | Add issue comments, labels, assignees, and milestones | The common triage loop no longer requires raw API calls. |
373
| D4 | `openagents` | Add project list, view, item add, item move, and item remove | Commands target the corrected project model after C1 through C5 deploy. |
374
| D5 | `openagents` | Publish CLI end-to-end qualification | Tests run the packaged CLI against the exact staging server revision and cover public and private repositories. |
375
376
The generic `openagents api` command remains supported beside the named
377
commands. Do not generate the public command tree from OpenAPI. Generate a
378
typed client later if a derived, verified schema becomes accurate enough.
379
380
### Track E: Connect issues to agents and releases
381
382
| ID | Repository | Issue | Completion signal |
383
| --- | --- | --- | --- |
384
| E1 | `openagents.com` | Link issues and durable work jobs | One issue can reference several execution attempts, and each job records the issue and repository it was authorized to change. |
385
| E2 | `openagents.com` | Start agent work from an issue | An authorized person can request work with a bounded objective, repository, branch policy, budget, and executor. |
386
| E3 | `openagents.com` | Show live and completed agent activity on an issue | The issue page shows state, elapsed time, report, cancellation, and failure without exposing private logs. |
387
| E4 | `openagents.com` | Link work to commits and changes | A commit trailer or explicit API call associates a change with the issue and originating job without trusting free-form messages alone. |
388
| E5 | `openagents.com` | Link tests, releases, and deployments | The issue timeline shows qualification and environment receipts for the exact commit. |
389
| E6 | `openagents.com` | Add policy-controlled ATIF links | Public, member-only, and private traces follow one visibility decision and remain independently revocable. |
390
| E7 | `openagents.com` | Close work from verified outcomes | Automation may propose or perform closure only when policy allows it and the issue records the evidence used. |
391
392
E1 is the foundation. E2 through E7 must reuse the existing work-job,
393
conversation, authority, changelog, and receipt systems rather than adding a
394
new executor.
395
396
### Track F: Operate and measure the work system
397
398
| ID | Repository | Issue | Completion signal |
399
| --- | --- | --- | --- |
400
| F1 | `openagents.com` | Add work-system health metrics | You can measure time to first response, time in project status, blocked age, close rate, reopen rate, and agent success without storing issue content in analytics. |
401
| F2 | `openagents.com` | Add migration and rollback rehearsals | Project-scope, relation, and job-link migrations run against restored production data and preserve repository isolation. |
402
| F3 | `openagents.com` | Add staging browser qualification | Public, member, maintainer, CLI, board, notification, and agent-link flows pass against the exact candidate revision. |
403
| F4 | `openagents.com` | Add abuse and rate controls | Filing, commenting, mentions, notifications, and agent starts have bounded rates and auditable refusal reasons. |
404
| F5 | `openagents.com` | Publish the contribution workflow | The repository docs point contributors to the public roadmap, issue templates, local setup, acceptance criteria, and verification expectations. |
405
406
## Recommended sequence
407
408
### Phase 0: Coordinate work already in flight
409
410
1. Record the branch or task that owns the named CLI commands.
411
2. Keep `openagents api` as the immediate terminal path.
412
3. Keep the existing public roadmap, and create the two delivery projects and
413
   five milestones from this assessment.
414
4. Create one tracking issue for each delivery track, then create the first
415
   unblocked child issues.
416
417
### Phase 1: Make the current contract safe to build on
418
419
Complete A1 through A5 and C1. This phase fixes authorization, pagination,
420
origins, errors, route authority, and project addressing. Deploy it before the
421
named CLI reads or project commands claim support.
422
423
### Phase 2: Complete core project operations
424
425
Complete C2 through C6. At the end of this phase, the public roadmap can use
426
stored project fields, move and remove items, and span the repositories that
427
build one OpenAgents outcome.
428
429
### Phase 3: Ship the daily issue workflow
430
431
Finish D1 through D3, B4, B5, and B7. A maintainer should be able to receive,
432
triage, discuss, assign, organize, and close work through the web or CLI and
433
receive notifications when attention is required.
434
435
### Phase 4: Add issue structure and project views
436
437
Complete B1 through B3, B6, and C7 through C10. Replace Markdown checklists
438
with native sub-issues as they become available. Add table and roadmap views
439
without creating new task records.
440
441
### Phase 5: Make agent work first class
442
443
Complete E1 through E7. Start with read-only linkage and activity. Add agent
444
starts and verified closure only after authority, visibility, cancellation,
445
and receipt behavior pass staging qualification.
446
447
### Phase 6: Harden and publish
448
449
Complete F1 through F5 and A6 through A7. Publish the contribution path, run
450
the exact-candidate staging flow, and promote only the server and CLI versions
451
that qualified together.
452
453
## Issue template for this program
454
455
Every implementation issue should contain these sections:
456
457
```md
458
## Outcome
459
460
Describe what a person or agent can do after this ships.
461
462
## Current behavior
463
464
Describe the measured behavior and link to code, tests, screenshots, or logs.
465
466
## Contract
467
468
List the affected web routes, API routes, schemas, events, and authority rules.
469
470
## Acceptance criteria
471
472
- State observable outcomes.
473
- Include public and private repository behavior where relevant.
474
- Include unauthorized behavior and error results.
475
476
## Verification
477
478
List focused tests, `mix precommit`, CLI checks, browser checks, migration
479
rehearsals, and staging evidence required for this issue.
480
481
## Dependencies
482
483
Link blocking and blocked issues. Do not encode dependencies in prose only.
484
```
485
486
Keep one issue owned by one repository. If an outcome needs changes in both
487
`openagents.com` and `openagents`, use a tracking issue with one server child
488
and one CLI child. Merge and deploy the additive server change first, then
489
release the CLI that consumes it.
490
491
## Definition of done
492
493
An issue is done only when all applicable conditions hold:
494
495
- The outcome and authority behavior have focused tests.
496
- Database constraints protect repository and owner boundaries.
497
- Public and private repository behavior is explicit.
498
- API responses have bounded pagination and stable error behavior.
499
- Web controls have keyboard, responsive, empty, loading, and error states.
500
- Agent-triggered work records the actor, authority, budget, and durable
501
  outcome.
502
- Documentation and the published contract match the deployed behavior.
503
- `mix precommit` passes in `openagents.com`; the relevant package checks pass
504
  in `openagents`.
505
- The exact candidate passes staging verification.
506
- The issue links to its commits, tests, release, and production deployment.
507
508
Closing an implementation issue when a branch exists is too early. Close it
509
when the agreed outcome is available in its target environment, or state in
510
the issue that merge rather than deployment defines completion.
511
512
## Decisions to preserve
513
514
- Keep GitHub-shaped contracts and a Linear/Circle-inspired interaction
515
  design.
516
- Do not add issue priority or priority-label conventions.
517
- Keep pull requests lower than a smooth issue workflow and allow a future
518
  per-repository pull-request switch.
519
- Keep repository authority at every API, query, event, and database boundary.
520
- Keep the base forge useful when agents are disabled.
521
- Let agents use explicit APIs, events, and jobs, never direct privileged
522
  database access.
523
- Keep `openagents api` beside named commands.
524
- Do not generate the public CLI command tree.
525
- Keep public development transparent while preserving private and embargoed
526
  data through the existing visibility policy.
527
528
## Questions to settle before implementation
529
530
1. Should Projects V2 become user- and organization-owned, with repository
531
   project URLs acting as filtered entry points, or should OpenAgents preserve
532
   repository-owned projects as a permanent extension?
533
2. Which existing project URLs and repository-local numbers must remain stable
534
   during that change?
535
3. Should issue list pagination use the repository API's cursor convention or
536
   expose the web query's bounded page convention?
537
4. Can list responses move toward GitHub's bare arrays, or do current clients
538
   depend on named envelopes?
539
5. Does OpenAgents add a read-only token scope before notifications and agent
540
   starts, or does `forge:write` remain the only API scope?
541
6. Which transparency level applies by default to issue-linked ATIF traces,
542
   work reports, logs, test receipts, and deployment receipts?
543
7. May a verified agent close an issue, or may it only propose closure for a
544
   person to confirm?
545
546
Answer these questions in decision records before migrations or public API
547
changes make the answers expensive to revise.
548
549
## Immediate next actions
550
551
1. Create the **Issues and Projects delivery** tracking issue from this
552
   document and add A1, A2, A3, A5, and C1 as its first child issues.
553
2. Identify the active named-CLI task and link D1 through D5 to it without
554
   duplicating its implementation.
555
3. Create a decision record for project ownership and cross-repository items.
556
4. Add owners, milestones, acceptance criteria, and linked implementation
557
   issues to the current roadmap cards. Move them to the six-status workflow
558
   after C6 lands.
559
5. Fix server authorization and project addressing before qualifying named
560
   commands.
561
6. Add the issue-to-work-job relationship as a read-only link after the core
562
   server correction lands.
563
7. Use the resulting system to track every later change in this plan.

This page updates live while a promote is in flight · changelog