@inerrata-corporation/errata 2.0.2-dev.346 → 2.0.2-dev.354
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 +8 -0
- package/errata.mjs +34 -2
- package/package.json +1 -1
- package/pass-worker.mjs +9 -0
package/consolidate-worker.mjs
CHANGED
|
@@ -15329,6 +15329,14 @@ var init_wire = __esm({
|
|
|
15329
15329
|
* deployment a self-corroboration). Optional + additive: absent leaves the
|
|
15330
15330
|
* gate fail-open for that node, exactly today's behaviour. */
|
|
15331
15331
|
originSession: external_exports.string().min(3).max(64).optional(),
|
|
15332
|
+
/** Epoch ms of the ORIGINATING local node's creation — when the knowledge was
|
|
15333
|
+
* actually captured, as opposed to when its public twin reached the cloud.
|
|
15334
|
+
* Stored as `observedAt`; the network board's chronological view orders on
|
|
15335
|
+
* it. Without this the wire carried NO timestamp at all, so a node captured
|
|
15336
|
+
* days ago surfaced as "new" the moment it was generalized and published —
|
|
15337
|
+
* the board showed ingest order wearing a chronology's clothes. Optional +
|
|
15338
|
+
* additive: absent keeps ingest-time ordering for that node. */
|
|
15339
|
+
originCreatedAtMs: external_exports.number().int().positive().optional(),
|
|
15332
15340
|
extractionSource: external_exports.enum(INGEST_EXTRACTION_SOURCES),
|
|
15333
15341
|
validationSource: external_exports.enum(VALIDATION_SOURCES).optional(),
|
|
15334
15342
|
/** Org-membrane (M2): the daemon's anchor tag — it owns the lockfile, so it
|
package/errata.mjs
CHANGED
|
@@ -15630,6 +15630,14 @@ var init_wire = __esm({
|
|
|
15630
15630
|
* deployment a self-corroboration). Optional + additive: absent leaves the
|
|
15631
15631
|
* gate fail-open for that node, exactly today's behaviour. */
|
|
15632
15632
|
originSession: external_exports.string().min(3).max(64).optional(),
|
|
15633
|
+
/** Epoch ms of the ORIGINATING local node's creation — when the knowledge was
|
|
15634
|
+
* actually captured, as opposed to when its public twin reached the cloud.
|
|
15635
|
+
* Stored as `observedAt`; the network board's chronological view orders on
|
|
15636
|
+
* it. Without this the wire carried NO timestamp at all, so a node captured
|
|
15637
|
+
* days ago surfaced as "new" the moment it was generalized and published —
|
|
15638
|
+
* the board showed ingest order wearing a chronology's clothes. Optional +
|
|
15639
|
+
* additive: absent keeps ingest-time ordering for that node. */
|
|
15640
|
+
originCreatedAtMs: external_exports.number().int().positive().optional(),
|
|
15633
15641
|
extractionSource: external_exports.enum(INGEST_EXTRACTION_SOURCES),
|
|
15634
15642
|
validationSource: external_exports.enum(VALIDATION_SOURCES).optional(),
|
|
15635
15643
|
/** Org-membrane (M2): the daemon's anchor tag — it owns the lockfile, so it
|
|
@@ -21405,6 +21413,7 @@ function buildSnapshot(opts) {
|
|
|
21405
21413
|
recentResolved,
|
|
21406
21414
|
recentConstraints,
|
|
21407
21415
|
...causalNudge ? { causalNudge } : {},
|
|
21416
|
+
...opts.selfCiteSkips && opts.selfCiteSkips > 0 ? { selfCiteSkips: opts.selfCiteSkips } : {},
|
|
21408
21417
|
...domainNudge ? { domainNudge } : {},
|
|
21409
21418
|
motifs,
|
|
21410
21419
|
reviewCount: opts.reviewCount,
|
|
@@ -21552,6 +21561,12 @@ function renderSnapshot(s) {
|
|
|
21552
21561
|
lines.push("");
|
|
21553
21562
|
}
|
|
21554
21563
|
const tagOf = (n) => s.edgeElicitation ? ` \`[${priorHandle(n)}]\`` : "";
|
|
21564
|
+
if (s.selfCiteSkips) {
|
|
21565
|
+
lines.push(
|
|
21566
|
+
`_**${s.selfCiteSkips} of your citations last turn were dropped** \u2014 they named priors this same session captured, and corroboration counts independent sessions, so citing your own capture is void by construction. It still records the link; it just cannot corroborate. To corroborate, cite a prior you were SHOWN (the collective block, or a problem from an earlier session) \u2014 that is the evidence the graph is short of._`
|
|
21567
|
+
);
|
|
21568
|
+
lines.push("");
|
|
21569
|
+
}
|
|
21555
21570
|
lines.push("### Recently observed problems in this workspace");
|
|
21556
21571
|
if (s.recentProblems.length === 0 && s.recentResolved.length === 0 && s.recentConstraints.length === 0) {
|
|
21557
21572
|
lines.push("- _none yet \u2014 errata is still building its model_");
|
|
@@ -22101,6 +22116,19 @@ function toWirePayload(batch, runId) {
|
|
|
22101
22116
|
// attrs travel; node-level bookkeeping (embedding, momentum counters,
|
|
22102
22117
|
// bi-temporal fields) is local-stratum and never crosses.
|
|
22103
22118
|
attrs: n.attrs ?? {},
|
|
22119
|
+
// The SESSION independence key. The daemon's shareable() projection has
|
|
22120
|
+
// stamped this since the session-unit fix — and this map silently dropped
|
|
22121
|
+
// it, so `authoringSession` landed null on every cloud node and the
|
|
22122
|
+
// server-side self-corroboration gate was permanently fail-open. The
|
|
22123
|
+
// client-side gate caught this session's own nodes; nothing caught a
|
|
22124
|
+
// later session on the SAME machine citing them.
|
|
22125
|
+
...n.originSession ? { originSession: n.originSession } : {},
|
|
22126
|
+
// When the knowledge was CAPTURED locally (epoch ms). Deliberately an
|
|
22127
|
+
// exception to "temporal fields never cross": cloud `createdAt` is ingest
|
|
22128
|
+
// time, and the network board's chronological view was ordering on it —
|
|
22129
|
+
// ingest order wearing a chronology's clothes. One scalar, no bi-temporal
|
|
22130
|
+
// machinery crosses with it.
|
|
22131
|
+
...n.createdAt ? { originCreatedAtMs: n.createdAt } : {},
|
|
22104
22132
|
extractionSource: n.extractionSource,
|
|
22105
22133
|
// Org-membrane anchor tag (OM-anchor-tag): the batch builders set these
|
|
22106
22134
|
// on wire-bound projections only; the door re-validates the claim on the
|
|
@@ -53236,7 +53264,7 @@ function startLoopLagMonitor(thresholdMs = 1e3) {
|
|
|
53236
53264
|
}
|
|
53237
53265
|
|
|
53238
53266
|
// src/engine.ts
|
|
53239
|
-
var DAEMON_VERSION = true ? "2.0.2-dev.
|
|
53267
|
+
var DAEMON_VERSION = true ? "2.0.2-dev.354" : "2.0.0-alpha.0";
|
|
53240
53268
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
53241
53269
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
53242
53270
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -53549,6 +53577,7 @@ function createWorkspaceEngine(opts) {
|
|
|
53549
53577
|
const REMOTE_REFRESH_MS = 5 * 6e4;
|
|
53550
53578
|
let ctxRefreshInFlight = false;
|
|
53551
53579
|
let ctxRefreshQueued = false;
|
|
53580
|
+
let lastSelfCiteSkips = 0;
|
|
53552
53581
|
const refreshContextNow = () => {
|
|
53553
53582
|
void refreshContextAsync().catch((err2) => {
|
|
53554
53583
|
console.warn("[errata] context refresh failed:", err2 instanceof Error ? err2.message : err2);
|
|
@@ -53578,7 +53607,8 @@ function createWorkspaceEngine(opts) {
|
|
|
53578
53607
|
reviewCount: pendingCount(paths),
|
|
53579
53608
|
reviewUiUrl: opts.reviewUrl(),
|
|
53580
53609
|
workingFile: workingFiles.mostRecent() ?? void 0,
|
|
53581
|
-
skills: readSkillManifest(paths.skillsManifest)
|
|
53610
|
+
skills: readSkillManifest(paths.skillsManifest),
|
|
53611
|
+
...lastSelfCiteSkips > 0 ? { selfCiteSkips: lastSelfCiteSkips } : {}
|
|
53582
53612
|
};
|
|
53583
53613
|
const prebuilt = passWorker ? await passWorker.snapshot(snapOpts).catch(() => null) : null;
|
|
53584
53614
|
const doneRender = prebuilt ? null : markPass(`context-render-inline:${profile.name}`);
|
|
@@ -54285,6 +54315,8 @@ function createWorkspaceEngine(opts) {
|
|
|
54285
54315
|
if (skipped > 0) {
|
|
54286
54316
|
console.log(`[errata] corroborate: ${skipped} skipped (this session authored the node)`);
|
|
54287
54317
|
appendWitnessLedger(paths.configDir, { ts: Date.now(), channel: "corroborate", clientSelfSkipped: skipped });
|
|
54318
|
+
lastSelfCiteSkips = skipped;
|
|
54319
|
+
refreshContextNow();
|
|
54288
54320
|
}
|
|
54289
54321
|
await sendWitnesses(
|
|
54290
54322
|
"corroborate",
|
package/package.json
CHANGED
package/pass-worker.mjs
CHANGED
|
@@ -15184,6 +15184,14 @@ var init_wire = __esm({
|
|
|
15184
15184
|
* deployment a self-corroboration). Optional + additive: absent leaves the
|
|
15185
15185
|
* gate fail-open for that node, exactly today's behaviour. */
|
|
15186
15186
|
originSession: external_exports.string().min(3).max(64).optional(),
|
|
15187
|
+
/** Epoch ms of the ORIGINATING local node's creation — when the knowledge was
|
|
15188
|
+
* actually captured, as opposed to when its public twin reached the cloud.
|
|
15189
|
+
* Stored as `observedAt`; the network board's chronological view orders on
|
|
15190
|
+
* it. Without this the wire carried NO timestamp at all, so a node captured
|
|
15191
|
+
* days ago surfaced as "new" the moment it was generalized and published —
|
|
15192
|
+
* the board showed ingest order wearing a chronology's clothes. Optional +
|
|
15193
|
+
* additive: absent keeps ingest-time ordering for that node. */
|
|
15194
|
+
originCreatedAtMs: external_exports.number().int().positive().optional(),
|
|
15187
15195
|
extractionSource: external_exports.enum(INGEST_EXTRACTION_SOURCES),
|
|
15188
15196
|
validationSource: external_exports.enum(VALIDATION_SOURCES).optional(),
|
|
15189
15197
|
/** Org-membrane (M2): the daemon's anchor tag — it owns the lockfile, so it
|
|
@@ -26396,6 +26404,7 @@ function buildSnapshot(opts) {
|
|
|
26396
26404
|
recentResolved,
|
|
26397
26405
|
recentConstraints,
|
|
26398
26406
|
...causalNudge ? { causalNudge } : {},
|
|
26407
|
+
...opts.selfCiteSkips && opts.selfCiteSkips > 0 ? { selfCiteSkips: opts.selfCiteSkips } : {},
|
|
26399
26408
|
...domainNudge ? { domainNudge } : {},
|
|
26400
26409
|
motifs,
|
|
26401
26410
|
reviewCount: opts.reviewCount,
|