@inerrata-corporation/errata 2.0.22-dev.4180 → 2.0.22-dev.4277
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/consolidate-worker.mjs +42 -9
- package/errata.mjs +644 -198
- package/generalize-worker.mjs +13 -7
- package/package.json +1 -1
- package/pass-worker.mjs +57 -10
- package/resources/context-plugin/.codex-plugin/plugin.json +1 -1
- package/resources/context-plugin/SHA256SUMS +1 -1
package/generalize-worker.mjs
CHANGED
|
@@ -15630,7 +15630,7 @@ function installHistoryAttrSlim(db) {
|
|
|
15630
15630
|
}
|
|
15631
15631
|
|
|
15632
15632
|
// ../../packages/local-graph/src/text-index.ts
|
|
15633
|
-
var TEXT_INDEX_KEY = "text-index-trigram-
|
|
15633
|
+
var TEXT_INDEX_KEY = "text-index-trigram-2";
|
|
15634
15634
|
var TEXT_INDEX_MIN_TERM = 3;
|
|
15635
15635
|
function installTextIndex(db) {
|
|
15636
15636
|
if (db.prepare("SELECT value FROM store_meta WHERE key = ?").get(TEXT_INDEX_KEY)) return;
|
|
@@ -15643,17 +15643,23 @@ function installTextIndex(db) {
|
|
|
15643
15643
|
db.transaction(() => {
|
|
15644
15644
|
db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS nodes_text
|
|
15645
15645
|
USING fts5(description, content='nodes', content_rowid='rowid', tokenize='trigram')`);
|
|
15646
|
+
db.exec(`DROP TRIGGER IF EXISTS nodes_text_update_out; DROP TRIGGER IF EXISTS nodes_text_update_in;
|
|
15647
|
+
DROP TRIGGER IF EXISTS nodes_text_update`);
|
|
15646
15648
|
db.exec(`CREATE TRIGGER IF NOT EXISTS nodes_text_insert AFTER INSERT ON nodes WHEN NEW.valid_to IS NULL
|
|
15647
15649
|
BEGIN INSERT INTO nodes_text(rowid, description) VALUES (NEW.rowid, NEW.description); END;`);
|
|
15648
|
-
db.exec(`CREATE TRIGGER
|
|
15649
|
-
WHEN OLD.valid_to IS
|
|
15650
|
-
BEGIN
|
|
15651
|
-
|
|
15652
|
-
|
|
15653
|
-
|
|
15650
|
+
db.exec(`CREATE TRIGGER nodes_text_update AFTER UPDATE OF description, valid_to ON nodes
|
|
15651
|
+
WHEN OLD.description IS NOT NEW.description OR OLD.valid_to IS NOT NEW.valid_to
|
|
15652
|
+
BEGIN
|
|
15653
|
+
INSERT INTO nodes_text(nodes_text, rowid, description)
|
|
15654
|
+
SELECT 'delete', OLD.rowid, OLD.description WHERE OLD.valid_to IS NULL;
|
|
15655
|
+
INSERT INTO nodes_text(rowid, description)
|
|
15656
|
+
SELECT NEW.rowid, NEW.description WHERE NEW.valid_to IS NULL;
|
|
15657
|
+
END;`);
|
|
15654
15658
|
db.exec(`CREATE TRIGGER IF NOT EXISTS nodes_text_delete AFTER DELETE ON nodes WHEN OLD.valid_to IS NULL
|
|
15655
15659
|
BEGIN INSERT INTO nodes_text(nodes_text, rowid, description) VALUES ('delete', OLD.rowid, OLD.description); END;`);
|
|
15660
|
+
db.exec(`INSERT INTO nodes_text(nodes_text) VALUES ('delete-all')`);
|
|
15656
15661
|
db.exec(`INSERT INTO nodes_text(rowid, description) SELECT rowid, description FROM nodes WHERE valid_to IS NULL`);
|
|
15662
|
+
db.prepare("INSERT OR REPLACE INTO store_meta(key,value) VALUES (?,?)").run("text-index-trigram-1", "installed");
|
|
15657
15663
|
db.prepare("INSERT INTO store_meta(key,value) VALUES (?,?)").run(TEXT_INDEX_KEY, "installed");
|
|
15658
15664
|
});
|
|
15659
15665
|
}
|
package/package.json
CHANGED
package/pass-worker.mjs
CHANGED
|
@@ -26062,7 +26062,7 @@ function installHistoryAttrSlim(db) {
|
|
|
26062
26062
|
}
|
|
26063
26063
|
|
|
26064
26064
|
// ../../packages/local-graph/src/text-index.ts
|
|
26065
|
-
var TEXT_INDEX_KEY = "text-index-trigram-
|
|
26065
|
+
var TEXT_INDEX_KEY = "text-index-trigram-2";
|
|
26066
26066
|
var TEXT_INDEX_MIN_TERM = 3;
|
|
26067
26067
|
function installTextIndex(db) {
|
|
26068
26068
|
if (db.prepare("SELECT value FROM store_meta WHERE key = ?").get(TEXT_INDEX_KEY)) return;
|
|
@@ -26075,17 +26075,23 @@ function installTextIndex(db) {
|
|
|
26075
26075
|
db.transaction(() => {
|
|
26076
26076
|
db.exec(`CREATE VIRTUAL TABLE IF NOT EXISTS nodes_text
|
|
26077
26077
|
USING fts5(description, content='nodes', content_rowid='rowid', tokenize='trigram')`);
|
|
26078
|
+
db.exec(`DROP TRIGGER IF EXISTS nodes_text_update_out; DROP TRIGGER IF EXISTS nodes_text_update_in;
|
|
26079
|
+
DROP TRIGGER IF EXISTS nodes_text_update`);
|
|
26078
26080
|
db.exec(`CREATE TRIGGER IF NOT EXISTS nodes_text_insert AFTER INSERT ON nodes WHEN NEW.valid_to IS NULL
|
|
26079
26081
|
BEGIN INSERT INTO nodes_text(rowid, description) VALUES (NEW.rowid, NEW.description); END;`);
|
|
26080
|
-
db.exec(`CREATE TRIGGER
|
|
26081
|
-
WHEN OLD.valid_to IS
|
|
26082
|
-
BEGIN
|
|
26083
|
-
|
|
26084
|
-
|
|
26085
|
-
|
|
26082
|
+
db.exec(`CREATE TRIGGER nodes_text_update AFTER UPDATE OF description, valid_to ON nodes
|
|
26083
|
+
WHEN OLD.description IS NOT NEW.description OR OLD.valid_to IS NOT NEW.valid_to
|
|
26084
|
+
BEGIN
|
|
26085
|
+
INSERT INTO nodes_text(nodes_text, rowid, description)
|
|
26086
|
+
SELECT 'delete', OLD.rowid, OLD.description WHERE OLD.valid_to IS NULL;
|
|
26087
|
+
INSERT INTO nodes_text(rowid, description)
|
|
26088
|
+
SELECT NEW.rowid, NEW.description WHERE NEW.valid_to IS NULL;
|
|
26089
|
+
END;`);
|
|
26086
26090
|
db.exec(`CREATE TRIGGER IF NOT EXISTS nodes_text_delete AFTER DELETE ON nodes WHEN OLD.valid_to IS NULL
|
|
26087
26091
|
BEGIN INSERT INTO nodes_text(nodes_text, rowid, description) VALUES ('delete', OLD.rowid, OLD.description); END;`);
|
|
26092
|
+
db.exec(`INSERT INTO nodes_text(nodes_text) VALUES ('delete-all')`);
|
|
26088
26093
|
db.exec(`INSERT INTO nodes_text(rowid, description) SELECT rowid, description FROM nodes WHERE valid_to IS NULL`);
|
|
26094
|
+
db.prepare("INSERT OR REPLACE INTO store_meta(key,value) VALUES (?,?)").run("text-index-trigram-1", "installed");
|
|
26089
26095
|
db.prepare("INSERT INTO store_meta(key,value) VALUES (?,?)").run(TEXT_INDEX_KEY, "installed");
|
|
26090
26096
|
});
|
|
26091
26097
|
}
|
|
@@ -29767,6 +29773,28 @@ var MECHANISMS = [
|
|
|
29767
29773
|
// climbs while `accepted` stays flat is the shape of a silently-closed door.
|
|
29768
29774
|
backlogCounter: "candidates"
|
|
29769
29775
|
},
|
|
29776
|
+
{
|
|
29777
|
+
id: "edge-park-replay",
|
|
29778
|
+
what: "parks causal/anchor edges the door refused as unresolvable, replays them when due, drops them with a disposition",
|
|
29779
|
+
pass: "ship",
|
|
29780
|
+
// FED = a source whose whole binding-edge family LANDED: the digest is
|
|
29781
|
+
// stamped only when every edge in it came back created/reinforced, so it is
|
|
29782
|
+
// the store-side proof that edges (not just nodes) cross. Live dev
|
|
29783
|
+
// 2026-10-12 sat with the same 241 refusals re-sent every drain and this
|
|
29784
|
+
// stamp frozen — nodes crossed, their causal wiring did not.
|
|
29785
|
+
fed: {
|
|
29786
|
+
labels: ["Problem", "RootCause"],
|
|
29787
|
+
attr: "semanticEdgesContributedDigest",
|
|
29788
|
+
minFraction: 0.01
|
|
29789
|
+
},
|
|
29790
|
+
// A parked edge that later LANDED — the replay doing its job.
|
|
29791
|
+
effectCounter: "edgesReplayLanded",
|
|
29792
|
+
// Outstanding parked edges (a level). Flat-and-nonzero while replays keep
|
|
29793
|
+
// re-parking is an endpoint that never resolves; it drains to tombstones
|
|
29794
|
+
// (`edgesDroppedExhausted`) instead of being resent forever.
|
|
29795
|
+
backlogCounter: "edgeParkSize",
|
|
29796
|
+
note: "edge-park.ts; quiet (no-effect) is healthy when nothing is refused \u2014 read edgesParked/edgesDropped* on the ship row"
|
|
29797
|
+
},
|
|
29770
29798
|
{
|
|
29771
29799
|
id: "orphan-reap",
|
|
29772
29800
|
what: "closes File nodes whose path the indexer no longer covers",
|
|
@@ -29821,12 +29849,31 @@ var MECHANISMS = [
|
|
|
29821
29849
|
// the bar is "the field is written at all", the revisit-sweep precedent.
|
|
29822
29850
|
fed: { labels: ["Problem"], attr: "foldCandidate", minFraction: 0 },
|
|
29823
29851
|
effectCounter: "folded",
|
|
29824
|
-
//
|
|
29825
|
-
//
|
|
29826
|
-
|
|
29852
|
+
// The open-nomination POOL is the backlog. It used to be `standing`, which
|
|
29853
|
+
// only counts what the pass examined — capped at the per-run limit — so it
|
|
29854
|
+
// read a flat 8 for weeks while 824 nominations sat open (2026-10-12): the
|
|
29855
|
+
// gauge could not see past the slice it was meant to be measuring.
|
|
29856
|
+
backlogCounter: "pending",
|
|
29827
29857
|
configCounter: "judgeConfigured",
|
|
29828
29858
|
note: "the ambiguous band needs the opt-in judge: set ERRATA_FOLD_JUDGE=1 + a configured chat provider (azure env), or leave it off and the nominations stand"
|
|
29829
29859
|
},
|
|
29860
|
+
{
|
|
29861
|
+
id: "fold-candidate-coverage",
|
|
29862
|
+
what: "rotates the fold-judge pass through every open nomination (never-examined first, standing ones re-examined on new evidence)",
|
|
29863
|
+
// Judge-INDEPENDENT on purpose — no configCounter. The embedding-certain
|
|
29864
|
+
// bands fold/reject with no judge at all, and the defect this watches is
|
|
29865
|
+
// the pass re-reading the same oldest 8 forever (101 runs, 8 distinct
|
|
29866
|
+
// nodes, 816 of 824 nominations never looked at). That starves those
|
|
29867
|
+
// bands on a judge-less daemon exactly as much as on a judged one, so an
|
|
29868
|
+
// opt-in being off must not excuse it.
|
|
29869
|
+
pass: "fold-judge",
|
|
29870
|
+
fed: { labels: ["Problem"], attr: "foldCandidate", minFraction: 0 },
|
|
29871
|
+
effectCounter: "firstExamined",
|
|
29872
|
+
// A LEVEL: open nominations never examined. Flat-and-positive with no
|
|
29873
|
+
// first examinations across the stall window = the rotation is stuck.
|
|
29874
|
+
backlogCounter: "neverExamined",
|
|
29875
|
+
note: "neverExamined must drain while the pass runs; flat means the selection is re-reading the same slice"
|
|
29876
|
+
},
|
|
29830
29877
|
{
|
|
29831
29878
|
id: "cite-anchor-accrual",
|
|
29832
29879
|
what: "accrues cite-context anchor evidence on anchorless cited priors; two distinct sessions promote a cite-confirmed ANCHORED_AT",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
aab4192882dd94674f8df9d0515c99855cf4eb522269d0d7c79e4f6e8063561e .codex-plugin/plugin.json
|
|
2
2
|
a7bebae9fb01c838d6c75fc784129e28be571233fa66ff5ee8039b574f35ccf7 assets/icon.png
|
|
3
3
|
fc38b64e4df1e0b72c35764bef6c4c05430d97c9009ad0ecc8a9e75b4deab232 configure-local.mjs
|
|
4
4
|
73dc6028b3b070257c7c31f252d11e55a9e096f4aed0f187f10cb21716e1e6d7 dist/client.js
|