@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.
- package/README.md +97 -113
- package/SPEC.md +17 -4
- package/docs/architecture.md +109 -0
- package/docs/configuration.md +26 -7
- package/docs/remote-store-protocol.md +35 -0
- package/docs/website.md +4 -0
- package/package.json +6 -4
- package/packages/core/src/cli/dashboard/facts.ts +215 -0
- package/packages/core/src/cli/dashboard/frame-parse.ts +223 -0
- package/packages/core/src/cli/dashboard/model.ts +85 -147
- package/packages/core/src/cli/dashboard/poll.ts +7 -2
- package/packages/core/src/cli/dispatch-process.ts +1 -13
- package/packages/core/src/cli/dispatch.ts +80 -37
- package/packages/core/src/cli/help.ts +15 -1
- package/packages/core/src/cli/init-validation.ts +18 -0
- package/packages/core/src/cli/init.ts +3 -2
- package/packages/core/src/cli/installation.ts +50 -8
- package/packages/core/src/cli/self-update.ts +77 -2
- package/packages/core/src/cli/status.ts +1 -1
- package/packages/core/src/cli/ticket.ts +146 -1
- package/packages/core/src/cli/wait.ts +10 -2
- package/packages/core/src/cli/watch.ts +10 -2
- package/packages/core/src/config/live.ts +1 -0
- package/packages/core/src/config/pipeline-source.ts +17 -5
- package/packages/core/src/config/schema.ts +21 -0
- package/packages/core/src/integration/harness.ts +113 -1
- package/packages/core/src/kernel/__snapshots__/reducer-registry.test.ts.snap +1369 -0
- package/packages/core/src/kernel/auto-merge-default.ts +43 -9
- package/packages/core/src/kernel/auto-merge.ts +99 -22
- package/packages/core/src/kernel/dispatch-settings.ts +42 -17
- package/packages/core/src/kernel/dispatch-status.ts +23 -0
- package/packages/core/src/kernel/engine.ts +9 -438
- package/packages/core/src/kernel/generators/build-log.ts +259 -0
- package/packages/core/src/kernel/generators/repository-journals.ts +206 -0
- package/packages/core/src/kernel/generators/session-log.ts +72 -0
- package/packages/core/src/kernel/harvest.ts +62 -18
- package/packages/core/src/kernel/incremental-contract.ts +75 -0
- package/packages/core/src/kernel/incremental-fixtures.ts +211 -0
- package/packages/core/src/kernel/incremental.ts +53 -0
- package/packages/core/src/kernel/log-index.ts +620 -0
- package/packages/core/src/kernel/pr-attachments.ts +164 -46
- package/packages/core/src/kernel/reducer-registry.ts +164 -0
- package/packages/core/src/kernel/reducer.ts +216 -74
- package/packages/core/src/operator/query.ts +68 -28
- package/packages/core/src/operator/read-view.ts +98 -0
- package/packages/core/src/orchestrator/prompt.ts +3 -1
- package/packages/core/src/ports/tickets/fake.ts +5 -1
- package/packages/core/src/ports/tickets/file.ts +169 -48
- package/packages/core/src/ports/tickets/linear.ts +33 -1
- package/packages/core/src/ports/tickets/operations.ts +1 -1
- package/packages/core/src/ports/tickets/remote.ts +8 -1
- package/packages/core/src/ports/types.ts +32 -1
- package/packages/core/src/processes/build-execution-state.ts +31 -15
- package/packages/core/src/processes/build-runner.ts +184 -90
- package/packages/core/src/processes/dispatcher-selectors.ts +123 -0
- package/packages/core/src/processes/dispatcher.ts +270 -176
- package/packages/core/src/processes/execution-settlement.ts +72 -39
- package/packages/core/src/processes/harvest-execution-state.ts +41 -29
- package/packages/core/src/processes/infrastructure-failure-budget.ts +31 -18
- package/packages/core/src/processes/orchestrator-tick.ts +44 -3
- package/packages/core/src/processes/publication-state.ts +164 -52
- package/packages/core/src/processes/repo-view.ts +1436 -0
- package/packages/core/src/processes/sandbox-state.ts +26 -2
- package/packages/core/src/processes/tick-state.ts +33 -0
- package/packages/core/src/store/adapter.ts +10 -1
- package/packages/core/src/store/build-scope.ts +26 -0
- package/packages/core/src/store/contract.ts +337 -0
- package/packages/core/src/store/digest.ts +71 -18
- package/packages/core/src/store/local/schema.ts +17 -0
- package/packages/core/src/store/local/store.ts +111 -4
- package/packages/core/src/store/memory.ts +68 -1
- package/packages/core/src/store/phase-session.ts +23 -0
- package/packages/core/src/store/remote/client.ts +50 -1
- package/packages/core/src/store/remote/index.ts +2 -0
- package/packages/core/src/store/remote/protocol.ts +15 -0
- package/packages/core/src/store/repo-state-events.ts +72 -7
- package/packages/core/src/store/session-handle.ts +30 -0
- package/packages/core/src/store/session-reducer.ts +52 -11
- package/packages/core/src/store/snapshots.ts +88 -0
- package/packages/core/src/store/ticket-assets.ts +41 -8
- package/packages/core/src/store/types.ts +38 -0
- package/skills/guide/SKILL.md +38 -21
- package/skills/guide/references/remote-store-protocol.md +35 -0
- package/skills/operate/SKILL.md +146 -19
- package/skills/tickets/SKILL.md +57 -5
package/skills/tickets/SKILL.md
CHANGED
|
@@ -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
|
|
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
|
|
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,
|
|
80
|
-
|
|
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
|
|
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
|