@defrex/autobuild 0.9.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +97 -113
  2. package/SPEC.md +17 -4
  3. package/docs/architecture.md +109 -0
  4. package/docs/configuration.md +26 -7
  5. package/docs/remote-store-protocol.md +35 -0
  6. package/docs/website.md +4 -0
  7. package/package.json +6 -4
  8. package/packages/core/src/cli/dashboard/facts.ts +215 -0
  9. package/packages/core/src/cli/dashboard/frame-parse.ts +223 -0
  10. package/packages/core/src/cli/dashboard/model.ts +85 -147
  11. package/packages/core/src/cli/dashboard/poll.ts +7 -2
  12. package/packages/core/src/cli/dispatch-process.ts +1 -13
  13. package/packages/core/src/cli/dispatch.ts +80 -37
  14. package/packages/core/src/cli/help.ts +15 -1
  15. package/packages/core/src/cli/init-validation.ts +18 -0
  16. package/packages/core/src/cli/init.ts +3 -2
  17. package/packages/core/src/cli/installation.ts +50 -8
  18. package/packages/core/src/cli/self-update.ts +77 -2
  19. package/packages/core/src/cli/status.ts +1 -1
  20. package/packages/core/src/cli/ticket.ts +146 -1
  21. package/packages/core/src/cli/wait.ts +10 -2
  22. package/packages/core/src/cli/watch.ts +10 -2
  23. package/packages/core/src/config/live.ts +1 -0
  24. package/packages/core/src/config/pipeline-source.ts +17 -5
  25. package/packages/core/src/config/schema.ts +21 -0
  26. package/packages/core/src/integration/harness.ts +113 -1
  27. package/packages/core/src/kernel/__snapshots__/reducer-registry.test.ts.snap +1369 -0
  28. package/packages/core/src/kernel/auto-merge-default.ts +43 -9
  29. package/packages/core/src/kernel/auto-merge.ts +99 -22
  30. package/packages/core/src/kernel/dispatch-settings.ts +42 -17
  31. package/packages/core/src/kernel/dispatch-status.ts +23 -0
  32. package/packages/core/src/kernel/engine.ts +9 -438
  33. package/packages/core/src/kernel/generators/build-log.ts +259 -0
  34. package/packages/core/src/kernel/generators/repository-journals.ts +206 -0
  35. package/packages/core/src/kernel/generators/session-log.ts +72 -0
  36. package/packages/core/src/kernel/harvest.ts +62 -18
  37. package/packages/core/src/kernel/incremental-contract.ts +75 -0
  38. package/packages/core/src/kernel/incremental-fixtures.ts +211 -0
  39. package/packages/core/src/kernel/incremental.ts +53 -0
  40. package/packages/core/src/kernel/log-index.ts +620 -0
  41. package/packages/core/src/kernel/pr-attachments.ts +164 -46
  42. package/packages/core/src/kernel/reducer-registry.ts +164 -0
  43. package/packages/core/src/kernel/reducer.ts +216 -74
  44. package/packages/core/src/operator/query.ts +68 -28
  45. package/packages/core/src/operator/read-view.ts +98 -0
  46. package/packages/core/src/orchestrator/prompt.ts +3 -1
  47. package/packages/core/src/ports/tickets/fake.ts +5 -1
  48. package/packages/core/src/ports/tickets/file.ts +169 -48
  49. package/packages/core/src/ports/tickets/linear.ts +33 -1
  50. package/packages/core/src/ports/tickets/operations.ts +1 -1
  51. package/packages/core/src/ports/tickets/remote.ts +8 -1
  52. package/packages/core/src/ports/types.ts +32 -1
  53. package/packages/core/src/processes/build-execution-state.ts +31 -15
  54. package/packages/core/src/processes/build-runner.ts +184 -90
  55. package/packages/core/src/processes/dispatcher-selectors.ts +123 -0
  56. package/packages/core/src/processes/dispatcher.ts +270 -176
  57. package/packages/core/src/processes/execution-settlement.ts +72 -39
  58. package/packages/core/src/processes/harvest-execution-state.ts +41 -29
  59. package/packages/core/src/processes/infrastructure-failure-budget.ts +31 -18
  60. package/packages/core/src/processes/orchestrator-tick.ts +44 -3
  61. package/packages/core/src/processes/publication-state.ts +164 -52
  62. package/packages/core/src/processes/repo-view.ts +1436 -0
  63. package/packages/core/src/processes/sandbox-state.ts +26 -2
  64. package/packages/core/src/processes/tick-state.ts +33 -0
  65. package/packages/core/src/store/adapter.ts +10 -1
  66. package/packages/core/src/store/build-scope.ts +26 -0
  67. package/packages/core/src/store/contract.ts +337 -0
  68. package/packages/core/src/store/digest.ts +71 -18
  69. package/packages/core/src/store/local/schema.ts +17 -0
  70. package/packages/core/src/store/local/store.ts +111 -4
  71. package/packages/core/src/store/memory.ts +68 -1
  72. package/packages/core/src/store/phase-session.ts +23 -0
  73. package/packages/core/src/store/remote/client.ts +50 -1
  74. package/packages/core/src/store/remote/index.ts +2 -0
  75. package/packages/core/src/store/remote/protocol.ts +15 -0
  76. package/packages/core/src/store/repo-state-events.ts +72 -7
  77. package/packages/core/src/store/session-handle.ts +30 -0
  78. package/packages/core/src/store/session-reducer.ts +52 -11
  79. package/packages/core/src/store/snapshots.ts +88 -0
  80. package/packages/core/src/store/ticket-assets.ts +41 -8
  81. package/packages/core/src/store/types.ts +38 -0
  82. package/skills/guide/SKILL.md +38 -21
  83. package/skills/guide/references/remote-store-protocol.md +35 -0
  84. package/skills/operate/SKILL.md +146 -19
  85. package/skills/tickets/SKILL.md +57 -5
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: tickets
3
- description: Work this repo's local ticket tracker — create or edit a ticket, amend blockedBy dependencies, report the backlog, move work between triage/ready/doing/done, or answer "what's the status of ticket X". Use whenever the user asks about tickets, blockers, the backlog, or wants something queued for autobuild to build.
3
+ description: Work this repo's local ticket tracker — create or edit a ticket, amend blockedBy dependencies, report the backlog, triage the inbox, move work between the lifecycle directories and any repository-defined states such as the icebox, or answer "what's the status of ticket X". Use whenever the user asks about tickets, blockers, the backlog, or wants something queued for autobuild to build.
4
4
  ---
5
5
 
6
6
  # /tickets
@@ -12,7 +12,11 @@ content and blocker relationships. The default file source needs no secret.
12
12
  ## Where it lives
13
13
 
14
14
  `.autobuild/tickets/` by default (if `autobuild.toml` has a `[tickets] dir`,
15
- that directory instead), holding exactly four state directories:
15
+ that directory instead), holding the four lifecycle state directories plus any others this repo adds.
16
+ `triage/`, `ready/`, `doing/`, and `done/` are the lifecycle directories the
17
+ dispatcher uses. Any other directory is a repository-defined state: the
18
+ dispatcher never moves tickets into it and never dispatches from it unless
19
+ `autobuild.toml` names it (for example `readyState` or `proposalState`).
16
20
 
17
21
  ```
18
22
  .autobuild/tickets/
@@ -20,6 +24,7 @@ that directory instead), holding exactly four state directories:
20
24
  ready/ # groomed; file lifecycle-state gate satisfied
21
25
  doing/ # claimed; a build is running
22
26
  done/ # merged
27
+ icebox/ # example of a repo-added state, present only once created
23
28
  ```
24
29
 
25
30
  **A ticket's state is the directory it is in.** There is no `state` field
@@ -71,13 +76,17 @@ retry, and adding validates the blocker exists and is not the ticket itself.
71
76
  ## Report the backlog
72
77
 
73
78
  ```
79
+ ab ticket states # every state, lifecycle and custom: role, count, purpose
74
80
  ls .autobuild/tickets/ready # groomed candidates in the ready lifecycle state
75
81
  ls .autobuild/tickets/doing # what's building right now
76
82
  ```
77
83
 
78
84
  The filename is the id. For a title, read the file's frontmatter. To report
79
- the whole backlog, list all four directories — that listing is complete and
80
- current by construction.
85
+ the whole backlog, cover every state — lifecycle and custom — via
86
+ `ab ticket states` or by listing every directory under the tracker root, so the
87
+ report includes `icebox/` and any other category. `ab ticket list` without
88
+ filters shows only the ready state, regardless of custom states, so it is not a
89
+ backlog report.
81
90
 
82
91
  ## Groom / transition a ticket
83
92
 
@@ -113,6 +122,49 @@ bounces.
113
122
  **Don't hand-move anything out of `doing/`** — a build owns it. If you need to
114
123
  stop a build, that's `ab` (or a human), not `mv`.
115
124
 
125
+ ## Icebox
126
+
127
+ `icebox/` is work deliberately deferred, groomed or not, that nothing
128
+ dispatches from. The first time it is needed, create it:
129
+
130
+ ```
131
+ ab ticket state create icebox --about "Deferred on purpose; nothing dispatches from here"
132
+ ```
133
+
134
+ Move a ticket in with `ab ticket move file-3 icebox`. To revive one, move it to
135
+ `triage/` when it needs regrooming, or to `ready/` when its spec still holds.
136
+
137
+ ## Triage the backlog
138
+
139
+ To run a pass over `triage/`:
140
+
141
+ 1. Run `ab ticket states` to see which destinations exist.
142
+ 2. For each ticket in `triage/`, read it with `ab ticket show <id>` and judge
143
+ whether its body meets the
144
+ [spec standard](../ab-guide/references/spec-standard.md).
145
+ 3. Move it to `ready/` if it conforms and should be built; to `icebox/` if it
146
+ should wait; to another existing category if one fits; otherwise leave it in
147
+ `triage/` and tell the user why.
148
+ 4. Report every move to the user in the session — id, title, destination, and
149
+ reason. A move leaves no comment on the ticket, so the report is the only
150
+ record of why.
151
+
152
+ ## Inventing categories
153
+
154
+ Run `ab ticket states` before creating anything. Reuse an existing state whose
155
+ purpose fits. Create a new one only for a recurring reason that no existing
156
+ state covers, with a lowercase hyphenated noun name and a one-line `--about`
157
+ purpose. `icebox` is the first worked example; `rejected` is a second:
158
+
159
+ ```
160
+ ab ticket state create rejected --about "Considered and declined; kept for the record"
161
+ ```
162
+
163
+ Never invent a second ready, doing, or done state, never move anything out of
164
+ `doing/`, and never create states for a build's internal progress — the
165
+ lifecycle belongs to the dispatcher. Remember that `ab ticket list` without
166
+ filters still shows only the ready state, however many custom states exist.
167
+
116
168
  ## Rules
117
169
 
118
170
  - Never edit frontmatter to change state — the directory is the state.
@@ -132,7 +184,7 @@ listing under default config. That does not make `ready/` sufficient;
132
184
  unresolved blockers are an independent dispatch gate.
133
185
 
134
186
  No Linear lifecycle UI. Directory-based lifecycle operations (`ls`, `mv`, and
135
- the four state directories) are file-tracker-only. If this repo's
187
+ the state directories) are file-tracker-only. If this repo's
136
188
  `autobuild.toml` sets `[tickets] source = "linear"`, do not apply that lifecycle
137
189
  guidance: state and labels live in Linear. The source-agnostic `ab ticket block`
138
190
  and `ab ticket unblock` commands still edit blocker relationships through the