@inerrata-corporation/errata 2.0.2-dev.1189 → 2.0.2-dev.1196
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/errata.mjs +60 -3
- package/package.json +1 -1
- package/pass-worker.mjs +14 -1
package/errata.mjs
CHANGED
|
@@ -19495,6 +19495,21 @@ function markResolvedRecurrence(store, nodeId, ts, source) {
|
|
|
19495
19495
|
const reopened = source ? maybeReopenFromRegression(store, nodeId, ts) : false;
|
|
19496
19496
|
return { marked: true, reopened };
|
|
19497
19497
|
}
|
|
19498
|
+
function confirmFixHeld(store, solutionId, ts) {
|
|
19499
|
+
let acknowledged = 0;
|
|
19500
|
+
for (const e of store.inEdges(solutionId, ["SOLVED_BY", "FIXED_BY"])) {
|
|
19501
|
+
const p = store.getNode(e.from);
|
|
19502
|
+
if (!p || p.label !== "Problem") continue;
|
|
19503
|
+
if (p.attrs["resolutionSuspect"] !== true || p.attrs["resolvedAt"] == null) continue;
|
|
19504
|
+
const attrs = { ...p.attrs };
|
|
19505
|
+
delete attrs["resolutionSuspect"];
|
|
19506
|
+
attrs["fixHeldConfirmedAt"] = ts;
|
|
19507
|
+
delete attrs["recurrenceSources"];
|
|
19508
|
+
store.updateNode(p.id, { attrs, lastUpdatedAt: ts });
|
|
19509
|
+
acknowledged++;
|
|
19510
|
+
}
|
|
19511
|
+
return acknowledged;
|
|
19512
|
+
}
|
|
19498
19513
|
function isFragmentFixNote(note) {
|
|
19499
19514
|
const t = note.trim();
|
|
19500
19515
|
if (t.length === 0) return true;
|
|
@@ -22793,6 +22808,7 @@ __export(src_exports2, {
|
|
|
22793
22808
|
communityInductionRequests: () => communityInductionRequests,
|
|
22794
22809
|
communitySeeds: () => communitySeeds,
|
|
22795
22810
|
compareSemver: () => compareSemver,
|
|
22811
|
+
confirmFixHeld: () => confirmFixHeld,
|
|
22796
22812
|
corroborateClaim: () => corroborateClaim,
|
|
22797
22813
|
creditAssignment: () => creditAssignment,
|
|
22798
22814
|
crystallize: () => crystallize,
|
|
@@ -22937,7 +22953,19 @@ function buildSnapshot(opts) {
|
|
|
22937
22953
|
anchors: opts.store.outEdges(p.id, ["MANIFESTED_IN", "EVIDENCED_BY"])
|
|
22938
22954
|
}));
|
|
22939
22955
|
const recentConstraints = stillOpen.filter((p) => isConstraintProblem(p)).sort((a, b) => b.lastUpdatedAt - a.lastUpdatedAt).slice(0, 3);
|
|
22940
|
-
const
|
|
22956
|
+
const regressions = problems.filter((p) => p.attrs["resolvedAt"] == null && p.attrs["mergedInto"] === void 0).flatMap(
|
|
22957
|
+
(open2) => opts.store.outEdges(open2.id, ["REGRESSION_OF"]).flatMap((e) => {
|
|
22958
|
+
const closed = opts.store.getNode(e.to);
|
|
22959
|
+
if (!closed || closed.attrs["resolutionSuspect"] !== true || closed.attrs["resolvedAt"] == null) {
|
|
22960
|
+
return [];
|
|
22961
|
+
}
|
|
22962
|
+
const solEdge = opts.store.outEdges(closed.id, ["SOLVED_BY"])[0];
|
|
22963
|
+
const solution = solEdge ? opts.store.getNode(solEdge.to) ?? void 0 : void 0;
|
|
22964
|
+
return [{ open: open2, closed, ...solution ? { solution } : {} }];
|
|
22965
|
+
})
|
|
22966
|
+
).sort((a, b) => Number(b.closed.attrs["recurredAt"] ?? 0) - Number(a.closed.attrs["recurredAt"] ?? 0)).slice(0, 2);
|
|
22967
|
+
const regressionClosedIds = new Set(regressions.map((r) => r.closed.id));
|
|
22968
|
+
const recentResolved = problems.filter((p) => p.attrs["resolvedAt"] != null && p.attrs["resolvedAs"] == null).filter((p) => !regressionClosedIds.has(p.id)).sort((a, b) => Number(b.attrs["resolvedAt"] ?? 0) - Number(a.attrs["resolvedAt"] ?? 0)).slice(0, 4).map((p) => {
|
|
22941
22969
|
const solEdge = opts.store.outEdges(p.id, ["SOLVED_BY"])[0];
|
|
22942
22970
|
const solution = solEdge ? opts.store.getNode(solEdge.to) ?? void 0 : void 0;
|
|
22943
22971
|
return { node: p, ...solution ? { solution } : {} };
|
|
@@ -23007,6 +23035,7 @@ function buildSnapshot(opts) {
|
|
|
23007
23035
|
recentProblems: recent2,
|
|
23008
23036
|
recentResolved,
|
|
23009
23037
|
recentConstraints,
|
|
23038
|
+
regressions,
|
|
23010
23039
|
...causalNudge ? { causalNudge } : {},
|
|
23011
23040
|
...opts.selfCiteSkips && opts.selfCiteSkips > 0 ? { selfCiteSkips: opts.selfCiteSkips } : {},
|
|
23012
23041
|
...domainNudge ? { domainNudge } : {},
|
|
@@ -23171,7 +23200,7 @@ function renderSnapshot(s) {
|
|
|
23171
23200
|
lines.push("");
|
|
23172
23201
|
}
|
|
23173
23202
|
lines.push("### Recently observed problems in this workspace");
|
|
23174
|
-
if (s.recentProblems.length === 0 && s.recentResolved.length === 0 && s.recentConstraints.length === 0) {
|
|
23203
|
+
if (s.recentProblems.length === 0 && s.recentResolved.length === 0 && s.recentConstraints.length === 0 && s.regressions.length === 0) {
|
|
23175
23204
|
lines.push("- _none yet \u2014 errata is still building its model_");
|
|
23176
23205
|
} else {
|
|
23177
23206
|
if (s.recentProblems.length > 0) {
|
|
@@ -23193,6 +23222,22 @@ function renderSnapshot(s) {
|
|
|
23193
23222
|
);
|
|
23194
23223
|
}
|
|
23195
23224
|
}
|
|
23225
|
+
if (s.regressions.length > 0) {
|
|
23226
|
+
lines.push("_\u{1F501} RECURRED \u2014 a previously-solved problem appears to be back; did the fix hold?_");
|
|
23227
|
+
for (const g of s.regressions) {
|
|
23228
|
+
lines.push(`- **${g.open.description}** \u2014 \`${g.open.id}\`${tagOf(g.open)}`);
|
|
23229
|
+
lines.push(` - previously resolved as: ${g.closed.description.slice(0, 120)} \u2014 \`${g.closed.id}\``);
|
|
23230
|
+
if (g.solution) {
|
|
23231
|
+
lines.push(
|
|
23232
|
+
` - the fix on record: ${g.solution.description.slice(0, 120)} \u2014 \`${g.solution.id}\` \xB7 fix still holds \u2192 (confirm:[${g.solution.id}]) \xB7 hitting it again \u2192 flag it (a second independent witness reopens the close)`
|
|
23233
|
+
);
|
|
23234
|
+
} else {
|
|
23235
|
+
lines.push(
|
|
23236
|
+
` - no fix prose on record \xB7 hitting it again \u2192 flag it (a second independent witness reopens the close)`
|
|
23237
|
+
);
|
|
23238
|
+
}
|
|
23239
|
+
}
|
|
23240
|
+
}
|
|
23196
23241
|
if (s.recentConstraints.length > 0) {
|
|
23197
23242
|
lines.push("_Design tensions \u2014 constraints this work is shaped around, not defects to fix:_");
|
|
23198
23243
|
for (const c of s.recentConstraints) {
|
|
@@ -56998,7 +57043,7 @@ function createWatchBreaker(deps) {
|
|
|
56998
57043
|
}
|
|
56999
57044
|
|
|
57000
57045
|
// src/engine.ts
|
|
57001
|
-
var DAEMON_VERSION = true ? "2.0.2-dev.
|
|
57046
|
+
var DAEMON_VERSION = true ? "2.0.2-dev.1196" : "2.0.0-alpha.0";
|
|
57002
57047
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
57003
57048
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
57004
57049
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -57836,6 +57881,7 @@ function createWorkspaceEngine(opts) {
|
|
|
57836
57881
|
let refutesStamped = 0;
|
|
57837
57882
|
let recurrencesMarked = 0;
|
|
57838
57883
|
let reopenedFromRegression = 0;
|
|
57884
|
+
let fixHeldConfirmed = 0;
|
|
57839
57885
|
const dispositions = emptyTagDispositions();
|
|
57840
57886
|
let unresolvedHandles = 0;
|
|
57841
57887
|
let priorEdgesFlagOff = 0;
|
|
@@ -57992,6 +58038,15 @@ function createWorkspaceEngine(opts) {
|
|
|
57992
58038
|
corroboratedEdges += plan.corroboratedEdges;
|
|
57993
58039
|
const refuteResult = applyLocalRefutations(store, plan.refutes, t);
|
|
57994
58040
|
refutesStamped += refuteResult.stamped;
|
|
58041
|
+
for (const c of plan.corroborations) {
|
|
58042
|
+
const node2 = store.getNode(c.nodeId);
|
|
58043
|
+
if (node2?.label !== "Solution") continue;
|
|
58044
|
+
const held = confirmFixHeld(store, c.nodeId, t);
|
|
58045
|
+
if (held > 0) {
|
|
58046
|
+
fixHeldConfirmed += held;
|
|
58047
|
+
console.log(`[errata] fix-held confirmed: ${node2.id} \u2014 ${held} regression question(s) acknowledged`);
|
|
58048
|
+
}
|
|
58049
|
+
}
|
|
57995
58050
|
for (const id of refuteResult.stampedIds) {
|
|
57996
58051
|
const node2 = store.getNode(id);
|
|
57997
58052
|
if (node2?.label !== "Solution") continue;
|
|
@@ -58488,6 +58543,8 @@ function createWorkspaceEngine(opts) {
|
|
|
58488
58543
|
recurrencesMarked,
|
|
58489
58544
|
// RG-reopen: closes flipped open on the two-touch evidence bar.
|
|
58490
58545
|
reopenedFromRegression,
|
|
58546
|
+
// RG-prime: regression questions acknowledged by a fix-held confirm.
|
|
58547
|
+
fixHeldConfirmed,
|
|
58491
58548
|
// WM-labels calibration cells (see prior-tags exposure split).
|
|
58492
58549
|
exposureShown,
|
|
58493
58550
|
exposureEvicted,
|
package/package.json
CHANGED
package/pass-worker.mjs
CHANGED
|
@@ -27052,7 +27052,19 @@ function buildSnapshot(opts) {
|
|
|
27052
27052
|
anchors: opts.store.outEdges(p.id, ["MANIFESTED_IN", "EVIDENCED_BY"])
|
|
27053
27053
|
}));
|
|
27054
27054
|
const recentConstraints = stillOpen.filter((p) => isConstraintProblem(p)).sort((a, b) => b.lastUpdatedAt - a.lastUpdatedAt).slice(0, 3);
|
|
27055
|
-
const
|
|
27055
|
+
const regressions = problems.filter((p) => p.attrs["resolvedAt"] == null && p.attrs["mergedInto"] === void 0).flatMap(
|
|
27056
|
+
(open) => opts.store.outEdges(open.id, ["REGRESSION_OF"]).flatMap((e) => {
|
|
27057
|
+
const closed = opts.store.getNode(e.to);
|
|
27058
|
+
if (!closed || closed.attrs["resolutionSuspect"] !== true || closed.attrs["resolvedAt"] == null) {
|
|
27059
|
+
return [];
|
|
27060
|
+
}
|
|
27061
|
+
const solEdge = opts.store.outEdges(closed.id, ["SOLVED_BY"])[0];
|
|
27062
|
+
const solution = solEdge ? opts.store.getNode(solEdge.to) ?? void 0 : void 0;
|
|
27063
|
+
return [{ open, closed, ...solution ? { solution } : {} }];
|
|
27064
|
+
})
|
|
27065
|
+
).sort((a, b) => Number(b.closed.attrs["recurredAt"] ?? 0) - Number(a.closed.attrs["recurredAt"] ?? 0)).slice(0, 2);
|
|
27066
|
+
const regressionClosedIds = new Set(regressions.map((r) => r.closed.id));
|
|
27067
|
+
const recentResolved = problems.filter((p) => p.attrs["resolvedAt"] != null && p.attrs["resolvedAs"] == null).filter((p) => !regressionClosedIds.has(p.id)).sort((a, b) => Number(b.attrs["resolvedAt"] ?? 0) - Number(a.attrs["resolvedAt"] ?? 0)).slice(0, 4).map((p) => {
|
|
27056
27068
|
const solEdge = opts.store.outEdges(p.id, ["SOLVED_BY"])[0];
|
|
27057
27069
|
const solution = solEdge ? opts.store.getNode(solEdge.to) ?? void 0 : void 0;
|
|
27058
27070
|
return { node: p, ...solution ? { solution } : {} };
|
|
@@ -27122,6 +27134,7 @@ function buildSnapshot(opts) {
|
|
|
27122
27134
|
recentProblems: recent,
|
|
27123
27135
|
recentResolved,
|
|
27124
27136
|
recentConstraints,
|
|
27137
|
+
regressions,
|
|
27125
27138
|
...causalNudge ? { causalNudge } : {},
|
|
27126
27139
|
...opts.selfCiteSkips && opts.selfCiteSkips > 0 ? { selfCiteSkips: opts.selfCiteSkips } : {},
|
|
27127
27140
|
...domainNudge ? { domainNudge } : {},
|