acstack 0.54.0 → 0.54.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/.claude-plugin/plugin.json +1 -1
- package/cli/dist/index.js +16 -14
- package/cli/dist/index.js.map +2 -2
- package/cli/package.json +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "acstack",
|
|
3
3
|
"description": "Agentic coding stack where planning grows only as far as needed: a map of decisions, tasks, checks, and handoffs behind a pluggable tracker.",
|
|
4
|
-
"version": "0.54.
|
|
4
|
+
"version": "0.54.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "ac8318740"
|
|
7
7
|
},
|
package/cli/dist/index.js
CHANGED
|
@@ -20275,12 +20275,12 @@ function openDesignLifecycle(root, entry, reviewFile) {
|
|
|
20275
20275
|
const staleRendered = doc.sourceRevision !== rendered.sourceRevision;
|
|
20276
20276
|
const inputs = designMapInputs(root, doc, entry);
|
|
20277
20277
|
const feedbackPath = reviewFile ? resolve6(reviewFile) : review.reviewPath;
|
|
20278
|
-
const latestReceipts = new Map(saved.lifecycle?.reconciliations.map((receipt) => [
|
|
20278
|
+
const latestReceipts = new Map(saved.lifecycle?.reconciliations.map((receipt) => [historyPath(root, receipt.reviewPath), receipt]));
|
|
20279
20279
|
const histories = readDesignReviewHistories(root, doc.id);
|
|
20280
20280
|
histories.set(review.reviewPath, saved);
|
|
20281
20281
|
const obligations = /* @__PURE__ */ new Set();
|
|
20282
20282
|
for (const [path, snapshot] of histories) {
|
|
20283
|
-
const receipts = new Map(snapshot.lifecycle?.reconciliations.map((receipt) => [
|
|
20283
|
+
const receipts = new Map(snapshot.lifecycle?.reconciliations.map((receipt) => [historyPath(root, receipt.reviewPath), receipt]));
|
|
20284
20284
|
for (const [selected, receipt] of receipts) {
|
|
20285
20285
|
if (selected !== path || snapshot.annotations.length || receipt.decisions.some((decision) => decision.outcome === "needs-human")) obligations.add(selected);
|
|
20286
20286
|
}
|
|
@@ -20293,24 +20293,21 @@ function openDesignLifecycle(root, entry, reviewFile) {
|
|
|
20293
20293
|
return { path, snapshot, receipt, fresh };
|
|
20294
20294
|
});
|
|
20295
20295
|
const feedback = scopes.find((scope) => scope.path === feedbackPath).snapshot;
|
|
20296
|
-
const
|
|
20297
|
-
|
|
20298
|
-
|
|
20299
|
-
|
|
20300
|
-
|
|
20301
|
-
|
|
20302
|
-
|
|
20303
|
-
|
|
20304
|
-
annotations: snapshot.annotations
|
|
20305
|
-
})))
|
|
20306
|
-
};
|
|
20296
|
+
const commentsDigest = (prefix) => digest(scopes.map(({ path, snapshot }) => ({
|
|
20297
|
+
path: prefix + relative4(root, path).split(sep).join("/"),
|
|
20298
|
+
packVersion: snapshot.packVersion,
|
|
20299
|
+
revision: snapshot.revision,
|
|
20300
|
+
annotations: snapshot.annotations
|
|
20301
|
+
})));
|
|
20302
|
+
const tuple = { sourceRevision: doc.sourceRevision, reviewRevision: feedback.revision, mapInputsDigest: inputs.mapInputsDigest, commentsDigest: commentsDigest("") };
|
|
20303
|
+
const legacyTuple = { ...tuple, commentsDigest: commentsDigest(LEGACY_PREFIX) };
|
|
20307
20304
|
const unsettled = scopes.find((scope) => (obligations.has(scope.path) || scope.receipt || scope.snapshot.annotations.length) && (!scope.fresh || scope.receipt?.decisions.some((decision) => decision.outcome === "needs-human")));
|
|
20308
20305
|
let reason;
|
|
20309
20306
|
if (staleRendered) reason = "Authored source changed. Reopen this revision before reviewing.";
|
|
20310
20307
|
else if (inputs.blockingQuestions.length) reason = "Unresolved design decisions";
|
|
20311
20308
|
else if (unsettled) reason = unsettled.fresh ? "Reconciliation needs a human decision" : "Feedback and contributions need explicit reconciliation";
|
|
20312
20309
|
else if (inputs.contributions.length && !scopes.some((scope) => scope.fresh)) reason = "Feedback and contributions need explicit reconciliation";
|
|
20313
|
-
const approved = saved.lifecycle?.approvals.some((item) => sameTuple(item, tuple)) ?? false;
|
|
20310
|
+
const approved = saved.lifecycle?.approvals.some((item) => sameTuple(item, tuple) || sameTuple(item, legacyTuple)) ?? false;
|
|
20314
20311
|
return {
|
|
20315
20312
|
...tuple,
|
|
20316
20313
|
planning: doc.planning ?? null,
|
|
@@ -20381,9 +20378,13 @@ function openDesignLifecycle(root, entry, reviewFile) {
|
|
|
20381
20378
|
})
|
|
20382
20379
|
};
|
|
20383
20380
|
}
|
|
20381
|
+
function historyPath(root, reviewPath) {
|
|
20382
|
+
return resolve6(root, reviewPath.startsWith(LEGACY_PREFIX) ? reviewPath.slice(LEGACY_PREFIX.length) : reviewPath);
|
|
20383
|
+
}
|
|
20384
20384
|
function sameTuple(a, b) {
|
|
20385
20385
|
return a.sourceRevision === b.sourceRevision && a.reviewRevision === b.reviewRevision && a.commentsDigest === b.commentsDigest && a.mapInputsDigest === b.mapInputsDigest;
|
|
20386
20386
|
}
|
|
20387
|
+
var LEGACY_PREFIX;
|
|
20387
20388
|
var init_design_lifecycle = __esm({
|
|
20388
20389
|
"src/lib/design-lifecycle.ts"() {
|
|
20389
20390
|
"use strict";
|
|
@@ -20392,6 +20393,7 @@ var init_design_lifecycle = __esm({
|
|
|
20392
20393
|
init_design_map();
|
|
20393
20394
|
init_design_review();
|
|
20394
20395
|
init_review_server();
|
|
20396
|
+
LEGACY_PREFIX = ".acstack/";
|
|
20395
20397
|
}
|
|
20396
20398
|
});
|
|
20397
20399
|
|