acstack 0.48.3 → 0.49.0
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/.claude-plugin/plugin.json +2 -2
- package/README.md +2 -2
- package/TROUBLESHOOTING.md +17 -17
- package/cli/README.md +1 -1
- package/cli/dist/index.js +9 -5
- package/cli/dist/index.js.map +2 -2
- package/cli/package.json +3 -3
- package/package.json +2 -2
- package/skills/archive/SKILL.md +3 -0
- package/skills/grilling/SKILL.md +2 -1
- package/skills/implement/SKILL.md +14 -3
- package/skills/map/SKILL.md +24 -24
- package/skills/map/alignment.md +38 -0
package/cli/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "CLI for the ACStack agentic coding stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "git+https://github.com/ac8318740/
|
|
12
|
+
"url": "git+https://github.com/ac8318740/acstack.git",
|
|
13
13
|
"directory": "cli"
|
|
14
14
|
},
|
|
15
15
|
"bin": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"yaml": "^2.7.0",
|
|
56
56
|
"zod": "^3.24.0"
|
|
57
57
|
},
|
|
58
|
-
"homepage": "https://github.com/ac8318740/
|
|
58
|
+
"homepage": "https://github.com/ac8318740/acstack/tree/main/cli",
|
|
59
59
|
"keywords": [
|
|
60
60
|
"agentic-coding",
|
|
61
61
|
"acstack",
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Agentic coding stack with first-class Claude Code and pi support: skills, orchestrator instructions, and verification agents.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/ac8318740/
|
|
9
|
+
"url": "git+https://github.com/ac8318740/acstack.git"
|
|
10
10
|
},
|
|
11
11
|
"keywords": [
|
|
12
12
|
"pi-package",
|
package/skills/archive/SKILL.md
CHANGED
|
@@ -131,6 +131,9 @@ dispose – closed issues are already the archive.
|
|
|
131
131
|
Also dispose of `acstack/handoffs/<name>/` if it exists. Consumed handoffs
|
|
132
132
|
hold conversation content and should not outlive the map they served.
|
|
133
133
|
|
|
134
|
+
Also dispose of `acstack/alignment-packs/<safe-map>/` if it exists. Alignment
|
|
135
|
+
packs are local review artifacts. Step 3 already verified the durable residue.
|
|
136
|
+
|
|
134
137
|
Delete the map's decision log, `<main checkout>/acstack/.decisions/<name>.tsv`,
|
|
135
138
|
on either tracker. Step 3 already extracted what it held. Leave the directory
|
|
136
139
|
and its `.gitignore` for the next map.
|
package/skills/grilling/SKILL.md
CHANGED
|
@@ -109,7 +109,8 @@ the tracker's `update` and `create` operations:
|
|
|
109
109
|
|
|
110
110
|
2. Create a node for each new question the answer surfaced, with `answers`
|
|
111
111
|
naming the node that surfaced it. Mark precise questions `open`; mark the
|
|
112
|
-
rest `fog`.
|
|
112
|
+
rest `fog`. If fog does not change the alignment artifact, write the
|
|
113
|
+
evidence or event that reopens it.
|
|
113
114
|
|
|
114
115
|
3. Invoke the `record-context` skill for each resolution – it decides whether
|
|
115
116
|
the decision earns an ADR, a glossary term, both, or neither.
|
|
@@ -44,6 +44,15 @@ These are the workable nodes: open, unblocked, and containing no decision.
|
|
|
44
44
|
Pull them regardless of depth – work can hang anywhere, including straight
|
|
45
45
|
off the root.
|
|
46
46
|
|
|
47
|
+
Before claiming one, check whether the map is ready to build from:
|
|
48
|
+
|
|
49
|
+
- If any `fog` node changes the alignment artifact, stop and point the user at
|
|
50
|
+
`/acstack:map`.
|
|
51
|
+
- If `workflow.alignment_packs.approval_gate` is true and no reviewer approved
|
|
52
|
+
the alignment artifact, stop and point the user at `/acstack:map`.
|
|
53
|
+
- If a `fog` node needs later evidence and does not change the artifact, leave
|
|
54
|
+
it on the map with its reopening trigger.
|
|
55
|
+
|
|
47
56
|
If the frontier holds only `hitl` nodes – human in the loop, meaning a
|
|
48
57
|
person must answer them – stop and point the user at `/acstack:map`. Those
|
|
49
58
|
need a human, not a pipeline.
|
|
@@ -186,9 +195,11 @@ With no map, skip the tracker write – still invoke `record-context` when a
|
|
|
186
195
|
decision landed. With a map, then:
|
|
187
196
|
|
|
188
197
|
- Invoke `record-context` – implementation decisions can earn ADRs too.
|
|
189
|
-
-
|
|
190
|
-
|
|
191
|
-
|
|
198
|
+
- Classify anything the work surfaced:
|
|
199
|
+
- Agent-clearable fog gets research, tests, or a throwaway prototype.
|
|
200
|
+
- Design-changing fog becomes a `hitl` node and returns to `/acstack:map`.
|
|
201
|
+
- Local fog that does not change the artifact stays inside the claim notes.
|
|
202
|
+
- Rebuild or rerun the alignment review when the work changes the artifact.
|
|
192
203
|
- Recompute the frontier – resolutions unblock nodes.
|
|
193
204
|
|
|
194
205
|
### 7. Build verification
|
package/skills/map/SKILL.md
CHANGED
|
@@ -20,12 +20,8 @@ Nodes live behind a pluggable tracker. A backend declares four operations –
|
|
|
20
20
|
create, read, update, list. ACStack builds everything else from those four:
|
|
21
21
|
frontier, claim, resolve and walk.
|
|
22
22
|
|
|
23
|
-
Two backends ship
|
|
24
|
-
|
|
25
|
-
| Backend | Doc | When |
|
|
26
|
-
| ------- | --- | ---- |
|
|
27
|
-
| GitHub issues | `trackers/github.md` | first choice when `gh` holds a login for the repo's GitHub remote |
|
|
28
|
-
| Files | `trackers/files.md` | the fallback – no auth, offline, any remote |
|
|
23
|
+
Two backends ship in this skill's directory: `trackers/github.md` for repos
|
|
24
|
+
with GitHub auth, and `trackers/files.md` as the fallback.
|
|
29
25
|
|
|
30
26
|
`workflow.maps.tracker` in `acstack/project.yaml` (`github` or `files`) records
|
|
31
27
|
the project's choice. If the key names a backend, read the matching doc and use
|
|
@@ -34,7 +30,6 @@ you first write the map's nodes down.
|
|
|
34
30
|
|
|
35
31
|
Recommend `github` when the repo qualifies, `files` otherwise. Confirm the
|
|
36
32
|
choice with the user. Then write the key, so later sessions need not re-decide.
|
|
37
|
-
|
|
38
33
|
## Which mode
|
|
39
34
|
|
|
40
35
|
One command runs two modes, and what already exists picks between them. Check
|
|
@@ -45,10 +40,8 @@ If `$ARGUMENTS` names a map, or exactly one exists, work its frontier – the
|
|
|
45
40
|
nodes ready to work now. If none exists, chart. If several exist and
|
|
46
41
|
`$ARGUMENTS` does not pick one, ask.
|
|
47
42
|
|
|
48
|
-
There are no tiers
|
|
49
|
-
|
|
50
|
-
One question is a small map or no map at all. Fifty questions is a long
|
|
51
|
-
effort. Nothing declares which.
|
|
43
|
+
There are no tiers. One question is a small map or no map. Fifty questions is
|
|
44
|
+
still one map.
|
|
52
45
|
|
|
53
46
|
## Charting
|
|
54
47
|
|
|
@@ -71,18 +64,18 @@ effort. Nothing declares which.
|
|
|
71
64
|
sharp. The test is whether you can *state* the question precisely, not
|
|
72
65
|
whether you can answer it.
|
|
73
66
|
|
|
74
|
-
|
|
67
|
+
5. **Classify fog.** Read `alignment.md`. Blocking fog changes the alignment
|
|
68
|
+
artifact. Deferred fog does not.
|
|
75
69
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- **No fog surfaced** – the way was already clear. No map. Say so and proceed
|
|
79
|
-
to the work.
|
|
70
|
+
### Progressive materialisation
|
|
80
71
|
|
|
81
|
-
|
|
82
|
-
`record-context` on each decision. No map – there is nothing to resume.
|
|
72
|
+
The machinery appears only when it must persist. After the opening grill:
|
|
83
73
|
|
|
84
|
-
- **
|
|
85
|
-
|
|
74
|
+
- **No fog surfaced** – say so and proceed to the work
|
|
75
|
+
- **At most one session's worth** – settle it in conversation and invoke
|
|
76
|
+
`record-context` on each decision
|
|
77
|
+
- **More than one session's worth** – materialise the map and work the frontier
|
|
78
|
+
across sessions
|
|
86
79
|
|
|
87
80
|
The test is mechanical. Will the fog outlive this session?
|
|
88
81
|
|
|
@@ -148,6 +141,8 @@ operation. First the root:
|
|
|
148
141
|
diagrams below. A parent draws its subtree, so nothing can draw one earlier.
|
|
149
142
|
The root is a parent too, and it draws the whole map.
|
|
150
143
|
|
|
144
|
+
- Apply `alignment.md` after diagrams are current. Build the artifact, run the
|
|
145
|
+
review gate, and start implementation only after approval.
|
|
151
146
|
- On the files backend, suggest adding `acstack/maps/` to `.gitignore`
|
|
152
147
|
(`trackers/files.md` gives the reason).
|
|
153
148
|
|
|
@@ -208,10 +203,12 @@ the list, marked `skip: <reason>`.
|
|
|
208
203
|
5. **After every resolution**, in order:
|
|
209
204
|
- Invoke `record-context`
|
|
210
205
|
- Create nodes for anything the resolution surfaced
|
|
206
|
+
- Classify new fog by whether it changes the alignment artifact
|
|
211
207
|
- Create the critique node when the resolved node changed the frontend,
|
|
212
208
|
per `frontend.md`
|
|
213
209
|
- Regenerate the diagram on the resolved node's parent (see Regenerating
|
|
214
210
|
diagrams)
|
|
211
|
+
- Rebuild or rerun the alignment review when the artifact changes
|
|
215
212
|
- Recompute the frontier
|
|
216
213
|
|
|
217
214
|
The regeneration comes after the new nodes exist. A surfaced node hangs
|
|
@@ -238,10 +235,13 @@ diagram).
|
|
|
238
235
|
|
|
239
236
|
## Done
|
|
240
237
|
|
|
241
|
-
The map clears when the frontier is empty and no fog remains.
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
238
|
+
The map clears when the frontier is empty and no fog remains. Deferred fog can
|
|
239
|
+
let implementation start, but archive still needs an answer or an out-of-scope
|
|
240
|
+
resolution.
|
|
241
|
+
|
|
242
|
+
The durable residue is what the map leaves behind – the living specs through
|
|
243
|
+
commit-time sync, the ADRs and glossary entries through `record-context`. You
|
|
244
|
+
have already extracted it along the way.
|
|
245
245
|
|
|
246
246
|
Report what the map settled. Point at anything the map left `out-of-scope`.
|
|
247
247
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Alignment review
|
|
2
|
+
|
|
3
|
+
The alignment artifact is the human-readable end-state view that the CLI renders from the map.
|
|
4
|
+
|
|
5
|
+
## Fog classes
|
|
6
|
+
|
|
7
|
+
- Blocking fog changes the artifact
|
|
8
|
+
- Deferred fog needs later evidence, or sits below the level the artifact must settle
|
|
9
|
+
- Clear blocking fog before implementation starts
|
|
10
|
+
- Leave deferred fog on the map with the evidence or event that reopens it
|
|
11
|
+
- Never defer fog because asking feels inconvenient
|
|
12
|
+
|
|
13
|
+
## Review gate
|
|
14
|
+
|
|
15
|
+
Build the artifact after diagrams are current:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
~/.claude/acstack/bin/acstack map --map <name>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The artifact is disposable. The map remains the source of truth.
|
|
22
|
+
|
|
23
|
+
Run the review before implementation when `workflow.alignment_packs.approval_gate` is true:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
~/.claude/acstack/bin/acstack align-viewer --map <name>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
If the review requests changes, read the feedback file the command prints.
|
|
30
|
+
Update the map, regenerate the diagrams, and rerun the review.
|
|
31
|
+
|
|
32
|
+
Start implementation only after the reviewer approves the artifact, or after the project disables the approval gate.
|
|
33
|
+
|
|
34
|
+
## New fog during implementation
|
|
35
|
+
|
|
36
|
+
- If new fog changes the artifact, return to `/acstack:map`
|
|
37
|
+
- If new fog does not change the artifact, keep working with a local note
|
|
38
|
+
- Rebuild or rerun the review when implementation changes the artifact
|