@inerrata-corporation/errata 2.0.0-dev.75 → 2.0.0-dev.77
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 +24 -4
- package/errata.mjs +128 -6
- package/package.json +1 -1
- package/pass-worker.mjs +24 -4
package/consolidate-worker.mjs
CHANGED
|
@@ -53,7 +53,18 @@ var init_castalia = __esm({
|
|
|
53
53
|
"OperatingSystem",
|
|
54
54
|
"Paradigm",
|
|
55
55
|
"DataStructure",
|
|
56
|
-
"AgentModel"
|
|
56
|
+
"AgentModel",
|
|
57
|
+
// An OPAQUE anchor identity in a project's stratum (PJ-anchors · plan §6c).
|
|
58
|
+
// Deliberately NOT one of the CODE_NODE_LABELS below — those are the local code
|
|
59
|
+
// graph and never cross. A cloud `Symbol` carries the salted `sym_` id and a
|
|
60
|
+
// coarse `kind`, and NOTHING ELSE: no path, no qualified name. It exists so two
|
|
61
|
+
// teammates' knowledge about the same function lands on one node; the cloud
|
|
62
|
+
// learns THAT they concern the same symbol, never WHICH symbol.
|
|
63
|
+
//
|
|
64
|
+
// Project-stratum only. The ingest door rejects a `Symbol` node — and any
|
|
65
|
+
// ANCHORED_AT edge — on a batch that carries no verified projectId, so the
|
|
66
|
+
// org/team/public lanes can never acquire one by accident.
|
|
67
|
+
"Symbol"
|
|
57
68
|
];
|
|
58
69
|
CODE_NODE_LABELS = [
|
|
59
70
|
"File",
|
|
@@ -15123,7 +15134,7 @@ var init_symbol_intent = __esm({
|
|
|
15123
15134
|
});
|
|
15124
15135
|
|
|
15125
15136
|
// ../../packages/shared/src/wire.ts
|
|
15126
|
-
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15137
|
+
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, PROJECT_ONLY_NODE_LABELS, PROJECT_ONLY_NODE_LABEL_SET, PROJECT_ONLY_EDGE_TYPES, PROJECT_ONLY_EDGE_TYPE_SET, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15127
15138
|
var init_wire = __esm({
|
|
15128
15139
|
"../../packages/shared/src/wire.ts"() {
|
|
15129
15140
|
"use strict";
|
|
@@ -15154,11 +15165,20 @@ var init_wire = __esm({
|
|
|
15154
15165
|
"DataStructure",
|
|
15155
15166
|
"Triage",
|
|
15156
15167
|
"Claim",
|
|
15157
|
-
"AntiPattern"
|
|
15168
|
+
"AntiPattern",
|
|
15169
|
+
// PJ-anchors (§6c): the OPAQUE project anchor identity — salted `sym_` id +
|
|
15170
|
+
// coarse kind, no path, no qualified name. Writable ONLY on a batch with a
|
|
15171
|
+
// verified projectId; the ingest door rejects it outright otherwise, so its
|
|
15172
|
+
// presence in this list does not admit it to the org/team/public lanes.
|
|
15173
|
+
"Symbol"
|
|
15158
15174
|
];
|
|
15175
|
+
PROJECT_ONLY_NODE_LABELS = ["Symbol"];
|
|
15176
|
+
PROJECT_ONLY_NODE_LABEL_SET = new Set(PROJECT_ONLY_NODE_LABELS);
|
|
15177
|
+
PROJECT_ONLY_EDGE_TYPES = ["ANCHORED_AT"];
|
|
15178
|
+
PROJECT_ONLY_EDGE_TYPE_SET = new Set(PROJECT_ONLY_EDGE_TYPES);
|
|
15159
15179
|
CLOUD_WRITABLE_NODE_LABEL_SET = new Set(CLOUD_WRITABLE_NODE_LABELS);
|
|
15160
15180
|
CLOUD_EDGE_TYPES = ALL_EDGE_TYPES.filter(
|
|
15161
|
-
(e) => !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15181
|
+
(e) => e === "ANCHORED_AT" || !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15162
15182
|
);
|
|
15163
15183
|
INGEST_SOURCES = ["agent", "daemon", "corpus-importer", "spine-importer"];
|
|
15164
15184
|
INGEST_EXTRACTION_SOURCES = [
|
package/errata.mjs
CHANGED
|
@@ -103,7 +103,18 @@ var init_castalia = __esm({
|
|
|
103
103
|
"OperatingSystem",
|
|
104
104
|
"Paradigm",
|
|
105
105
|
"DataStructure",
|
|
106
|
-
"AgentModel"
|
|
106
|
+
"AgentModel",
|
|
107
|
+
// An OPAQUE anchor identity in a project's stratum (PJ-anchors · plan §6c).
|
|
108
|
+
// Deliberately NOT one of the CODE_NODE_LABELS below — those are the local code
|
|
109
|
+
// graph and never cross. A cloud `Symbol` carries the salted `sym_` id and a
|
|
110
|
+
// coarse `kind`, and NOTHING ELSE: no path, no qualified name. It exists so two
|
|
111
|
+
// teammates' knowledge about the same function lands on one node; the cloud
|
|
112
|
+
// learns THAT they concern the same symbol, never WHICH symbol.
|
|
113
|
+
//
|
|
114
|
+
// Project-stratum only. The ingest door rejects a `Symbol` node — and any
|
|
115
|
+
// ANCHORED_AT edge — on a batch that carries no verified projectId, so the
|
|
116
|
+
// org/team/public lanes can never acquire one by accident.
|
|
117
|
+
"Symbol"
|
|
107
118
|
];
|
|
108
119
|
CODE_NODE_LABELS = [
|
|
109
120
|
"File",
|
|
@@ -15259,6 +15270,18 @@ var init_edge_rules = __esm({
|
|
|
15259
15270
|
"../../packages/shared/src/edge-rules.ts"() {
|
|
15260
15271
|
"use strict";
|
|
15261
15272
|
EDGE_RULES = {
|
|
15273
|
+
// ── Project anchors (PJ-anchors · PLAN_PROJECT_STORE §6c) ──
|
|
15274
|
+
// ANCHORED_AT is the ONE bridge edge admitted to the cloud, and it exists for
|
|
15275
|
+
// exactly one purpose: point a piece of knowledge at an OPAQUE project `Symbol`
|
|
15276
|
+
// so two teammates' observations about the same function converge on one node.
|
|
15277
|
+
// Constrain it to that purpose — an unconstrained ANCHORED_AT (its state before
|
|
15278
|
+
// this rule, since a missing entry means "anything goes") would let a batch
|
|
15279
|
+
// anchor anything at anything, e.g. at a public `Package`, quietly re-creating
|
|
15280
|
+
// the code↔collective bridge the membrane exists to prevent.
|
|
15281
|
+
ANCHORED_AT: {
|
|
15282
|
+
from: ["Problem", "Solution", "RootCause", "Claim"],
|
|
15283
|
+
to: ["Symbol"]
|
|
15284
|
+
},
|
|
15262
15285
|
// ── Security spine (v1 taxonomy.ts SECURITY_FORWARD_ONLY commentary) ──
|
|
15263
15286
|
TARGETS: { from: ["Exploit"], to: ["Vulnerability"] },
|
|
15264
15287
|
ENABLES: { from: ["AntiPattern"], to: ["Vulnerability"] },
|
|
@@ -15385,6 +15408,12 @@ var init_symbol_intent = __esm({
|
|
|
15385
15408
|
});
|
|
15386
15409
|
|
|
15387
15410
|
// ../../packages/shared/src/wire.ts
|
|
15411
|
+
function isProjectOnlyNodeLabel(label) {
|
|
15412
|
+
return PROJECT_ONLY_NODE_LABEL_SET.has(label);
|
|
15413
|
+
}
|
|
15414
|
+
function isProjectOnlyEdgeType(type) {
|
|
15415
|
+
return PROJECT_ONLY_EDGE_TYPE_SET.has(type);
|
|
15416
|
+
}
|
|
15388
15417
|
function isCloudWritableNodeLabel(label) {
|
|
15389
15418
|
return CLOUD_WRITABLE_NODE_LABEL_SET.has(label);
|
|
15390
15419
|
}
|
|
@@ -15440,7 +15469,7 @@ function summarizeIngestResult(r) {
|
|
|
15440
15469
|
...r.patternReconciliation ? { patternReconciliation: r.patternReconciliation } : {}
|
|
15441
15470
|
};
|
|
15442
15471
|
}
|
|
15443
|
-
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, QUARANTINE_EXTRACTION_SOURCE_PREFIX, MAX_NODES_PER_PAYLOAD, MAX_EDGES_PER_PAYLOAD, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15472
|
+
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, PROJECT_ONLY_NODE_LABELS, PROJECT_ONLY_NODE_LABEL_SET, PROJECT_ONLY_EDGE_TYPES, PROJECT_ONLY_EDGE_TYPE_SET, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, QUARANTINE_EXTRACTION_SOURCE_PREFIX, MAX_NODES_PER_PAYLOAD, MAX_EDGES_PER_PAYLOAD, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
15444
15473
|
var init_wire = __esm({
|
|
15445
15474
|
"../../packages/shared/src/wire.ts"() {
|
|
15446
15475
|
"use strict";
|
|
@@ -15471,11 +15500,20 @@ var init_wire = __esm({
|
|
|
15471
15500
|
"DataStructure",
|
|
15472
15501
|
"Triage",
|
|
15473
15502
|
"Claim",
|
|
15474
|
-
"AntiPattern"
|
|
15503
|
+
"AntiPattern",
|
|
15504
|
+
// PJ-anchors (§6c): the OPAQUE project anchor identity — salted `sym_` id +
|
|
15505
|
+
// coarse kind, no path, no qualified name. Writable ONLY on a batch with a
|
|
15506
|
+
// verified projectId; the ingest door rejects it outright otherwise, so its
|
|
15507
|
+
// presence in this list does not admit it to the org/team/public lanes.
|
|
15508
|
+
"Symbol"
|
|
15475
15509
|
];
|
|
15510
|
+
PROJECT_ONLY_NODE_LABELS = ["Symbol"];
|
|
15511
|
+
PROJECT_ONLY_NODE_LABEL_SET = new Set(PROJECT_ONLY_NODE_LABELS);
|
|
15512
|
+
PROJECT_ONLY_EDGE_TYPES = ["ANCHORED_AT"];
|
|
15513
|
+
PROJECT_ONLY_EDGE_TYPE_SET = new Set(PROJECT_ONLY_EDGE_TYPES);
|
|
15476
15514
|
CLOUD_WRITABLE_NODE_LABEL_SET = new Set(CLOUD_WRITABLE_NODE_LABELS);
|
|
15477
15515
|
CLOUD_EDGE_TYPES = ALL_EDGE_TYPES.filter(
|
|
15478
|
-
(e) => !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15516
|
+
(e) => e === "ANCHORED_AT" || !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15479
15517
|
);
|
|
15480
15518
|
INGEST_SOURCES = ["agent", "daemon", "corpus-importer", "spine-importer"];
|
|
15481
15519
|
INGEST_EXTRACTION_SOURCES = [
|
|
@@ -15677,6 +15715,8 @@ __export(src_exports, {
|
|
|
15677
15715
|
MAX_SYMBOL_SUMMARY_CHARS: () => MAX_SYMBOL_SUMMARY_CHARS,
|
|
15678
15716
|
PAGERANK_EXCLUSIONS: () => PAGERANK_EXCLUSIONS,
|
|
15679
15717
|
PROBLEM_RESOLUTION: () => PROBLEM_RESOLUTION,
|
|
15718
|
+
PROJECT_ONLY_EDGE_TYPES: () => PROJECT_ONLY_EDGE_TYPES,
|
|
15719
|
+
PROJECT_ONLY_NODE_LABELS: () => PROJECT_ONLY_NODE_LABELS,
|
|
15680
15720
|
QUARANTINE_EXTRACTION_SOURCE_PREFIX: () => QUARANTINE_EXTRACTION_SOURCE_PREFIX,
|
|
15681
15721
|
RESOLUTION_EDGES: () => RESOLUTION_EDGES,
|
|
15682
15722
|
RouteContextCountWireSchema: () => RouteContextCountWireSchema,
|
|
@@ -15713,6 +15753,8 @@ __export(src_exports, {
|
|
|
15713
15753
|
isCodeLabel: () => isCodeLabel,
|
|
15714
15754
|
isContextLabel: () => isContextLabel,
|
|
15715
15755
|
isInferredSource: () => isInferredSource,
|
|
15756
|
+
isProjectOnlyEdgeType: () => isProjectOnlyEdgeType,
|
|
15757
|
+
isProjectOnlyNodeLabel: () => isProjectOnlyNodeLabel,
|
|
15716
15758
|
isQuarantinedExtractionSource: () => isQuarantinedExtractionSource,
|
|
15717
15759
|
isSeedProvenance: () => isSeedProvenance,
|
|
15718
15760
|
isSemanticLabel: () => isSemanticLabel,
|
|
@@ -20857,6 +20899,11 @@ function toWirePayload(batch, runId) {
|
|
|
20857
20899
|
// Origin key (= project) for the refute channel's cross-origin gate; absent
|
|
20858
20900
|
// for id-less batches (principle sync) → those nodes stay fail-open.
|
|
20859
20901
|
...batch.originProject ? { originProject: batch.originProject } : {},
|
|
20902
|
+
// PJ-write (§5a): the AUDIENCE assertion — which project stratum this batch is
|
|
20903
|
+
// contributed to. Verified server-side against the projected link record; an
|
|
20904
|
+
// unverifiable assertion rejects the whole batch rather than downgrading it to a
|
|
20905
|
+
// wider audience. Absent ⇒ exactly today's wire.
|
|
20906
|
+
...batch.projectId ? { projectId: batch.projectId } : {},
|
|
20860
20907
|
nodes,
|
|
20861
20908
|
edges,
|
|
20862
20909
|
...symbolSummaries ? { symbolSummaries } : {}
|
|
@@ -21103,6 +21150,18 @@ var init_client = __esm({
|
|
|
21103
21150
|
async attachProject(projectId, locator) {
|
|
21104
21151
|
return this.json("POST", "/api/gate/projects/attach", { projectId, locator });
|
|
21105
21152
|
}
|
|
21153
|
+
/** Fetch the project's symbol salt (PJ-anchors · plan §6c) — the HMAC key this
|
|
21154
|
+
* workspace needs to derive project-canonical `sym_` anchor ids that CONVERGE
|
|
21155
|
+
* with every other member's.
|
|
21156
|
+
*
|
|
21157
|
+
* Members-only: the server gates it with the same fail-closed check the ingest
|
|
21158
|
+
* door uses (known + active + owned by the caller's org), and 403s otherwise.
|
|
21159
|
+
* Safe to hold locally for exactly one reason — a project member can already read
|
|
21160
|
+
* the project's code, so the salt lets them compute ids for symbols they can see
|
|
21161
|
+
* anyway. It is key material: keep it in memory, never log it. */
|
|
21162
|
+
async projectSymbolSalt(projectId) {
|
|
21163
|
+
return this.json("GET", `/v2/projects/${encodeURIComponent(projectId)}/symbol-salt`);
|
|
21164
|
+
}
|
|
21106
21165
|
/** Create a locator-less project — `errata link --name` for repos without a
|
|
21107
21166
|
* usable remote. Discovery can't find it; the caller stamps the id locally. */
|
|
21108
21167
|
async createProject(name2) {
|
|
@@ -43234,7 +43293,7 @@ function startLoopLagMonitor(thresholdMs = 1e3) {
|
|
|
43234
43293
|
}
|
|
43235
43294
|
|
|
43236
43295
|
// src/engine.ts
|
|
43237
|
-
var DAEMON_VERSION = true ? "2.0.0-dev.
|
|
43296
|
+
var DAEMON_VERSION = true ? "2.0.0-dev.77" : "2.0.0-alpha.0";
|
|
43238
43297
|
var IGNORED_PATH = /[\\/](?:\.git|node_modules|\.errata|\.claude|\.codex|\.cursor|\.turbo|\.next|dist|coverage|test-results|playwright-report|__pycache__)(?:[\\/]|$)/;
|
|
43239
43298
|
var IGNORED_NOISE = /castalia\.db|eventlog\.sqlite|turn-cursors/;
|
|
43240
43299
|
var GIT_OP_MUTE_MS = 4e3;
|
|
@@ -44963,6 +45022,7 @@ function runLockfilePass(opts) {
|
|
|
44963
45022
|
init_src();
|
|
44964
45023
|
init_src2();
|
|
44965
45024
|
init_src8();
|
|
45025
|
+
init_src();
|
|
44966
45026
|
|
|
44967
45027
|
// src/contribution-ready.ts
|
|
44968
45028
|
init_src3();
|
|
@@ -45101,6 +45161,50 @@ function buildInstanceIngest(store, profile, daemonVersion, ignorePatterns = [],
|
|
|
45101
45161
|
contextNodes.push(shareableContext(t, wireId));
|
|
45102
45162
|
}
|
|
45103
45163
|
}
|
|
45164
|
+
const project = opts.project;
|
|
45165
|
+
if (project) {
|
|
45166
|
+
const now = Date.now();
|
|
45167
|
+
for (const sourceId of anchorSources) {
|
|
45168
|
+
const source = store.getNode(sourceId);
|
|
45169
|
+
if (!source) continue;
|
|
45170
|
+
for (const e of store.outEdges(sourceId, ["ANCHORED_AT"])) {
|
|
45171
|
+
const target = store.getNode(e.to);
|
|
45172
|
+
if (!target) continue;
|
|
45173
|
+
const relPath = target.attrs["relPath"];
|
|
45174
|
+
const qname = target.attrs["qname"];
|
|
45175
|
+
if (typeof relPath !== "string" || typeof qname !== "string") continue;
|
|
45176
|
+
if (ignored(relPath) || ignored(qname)) continue;
|
|
45177
|
+
const symId = projectSymbolId(project.salt, project.projectId, relPath, qname, target.label);
|
|
45178
|
+
if (!contextSeen.has(symId)) {
|
|
45179
|
+
contextSeen.add(symId);
|
|
45180
|
+
contextNodes.push({
|
|
45181
|
+
id: symId,
|
|
45182
|
+
label: "Symbol",
|
|
45183
|
+
// The id IS the description: there is nothing that can be said about an
|
|
45184
|
+
// opaque symbol without disclosing it, and the wire requires a non-empty
|
|
45185
|
+
// string. It must never carry the name or the path.
|
|
45186
|
+
description: symId,
|
|
45187
|
+
// `kind` is coarse (Function/Class/…) — shape, not identity.
|
|
45188
|
+
attrs: { kind: target.label },
|
|
45189
|
+
embedding: [],
|
|
45190
|
+
extractionConfidence: 1,
|
|
45191
|
+
extractionSource: "daemon-extracted",
|
|
45192
|
+
cumulativeSurprise: 0,
|
|
45193
|
+
peakSurprise: 0,
|
|
45194
|
+
cumulativeHits: 0,
|
|
45195
|
+
lastUpdatedAt: now,
|
|
45196
|
+
createdAt: now,
|
|
45197
|
+
memoryTier: "short-term",
|
|
45198
|
+
pageRank: 0,
|
|
45199
|
+
isLandmark: false,
|
|
45200
|
+
community: null,
|
|
45201
|
+
stability: "unstable"
|
|
45202
|
+
});
|
|
45203
|
+
}
|
|
45204
|
+
anchorEdges.push({ ...e, to: symId, attrs: {} });
|
|
45205
|
+
}
|
|
45206
|
+
}
|
|
45207
|
+
}
|
|
45104
45208
|
if (nodes.length === 0 && anchorEdges.length === 0) return null;
|
|
45105
45209
|
let symbolSummaries;
|
|
45106
45210
|
if (opts.lexicon && opts.lexicon.size > 0 && nodes.length > 0) {
|
|
@@ -45402,6 +45506,14 @@ function createRootAdopter(deps) {
|
|
|
45402
45506
|
}
|
|
45403
45507
|
|
|
45404
45508
|
// src/multi.ts
|
|
45509
|
+
var projectSymbolSalts = /* @__PURE__ */ new Map();
|
|
45510
|
+
async function resolveProjectSymbolSalt(client, projectId) {
|
|
45511
|
+
const cached2 = projectSymbolSalts.get(projectId);
|
|
45512
|
+
if (cached2) return { projectId, salt: cached2 };
|
|
45513
|
+
const { salt } = await client.projectSymbolSalt(projectId);
|
|
45514
|
+
projectSymbolSalts.set(projectId, salt);
|
|
45515
|
+
return { projectId, salt };
|
|
45516
|
+
}
|
|
45405
45517
|
function normPath(p) {
|
|
45406
45518
|
return p.replace(/\\/g, "/").replace(/\/+$/, "").toLowerCase();
|
|
45407
45519
|
}
|
|
@@ -46010,11 +46122,21 @@ async function startMultiDaemon(opts = {}) {
|
|
|
46010
46122
|
if (summaries.size > 0) lexicon = buildSymbolLexicon(store, summaries);
|
|
46011
46123
|
} catch {
|
|
46012
46124
|
}
|
|
46125
|
+
const projectId = r.engine.profile.projectId;
|
|
46126
|
+
let project;
|
|
46127
|
+
if (projectId) {
|
|
46128
|
+
try {
|
|
46129
|
+
project = await resolveProjectSymbolSalt(client, projectId);
|
|
46130
|
+
} catch {
|
|
46131
|
+
}
|
|
46132
|
+
}
|
|
46013
46133
|
const instances = buildInstanceIngest(store, r.engine.profile, DAEMON_VERSION, ignore, {
|
|
46014
46134
|
includePackages: cfg2.consent.contributePackages,
|
|
46015
|
-
...lexicon ? { lexicon } : {}
|
|
46135
|
+
...lexicon ? { lexicon } : {},
|
|
46136
|
+
...project ? { project } : {}
|
|
46016
46137
|
});
|
|
46017
46138
|
if (instances) {
|
|
46139
|
+
if (project) instances.projectId = project.projectId;
|
|
46018
46140
|
const res = await client.ingest(instances);
|
|
46019
46141
|
uploaded += res.accepted;
|
|
46020
46142
|
const seq = store.currentIngestSeq();
|
package/package.json
CHANGED
package/pass-worker.mjs
CHANGED
|
@@ -64,7 +64,18 @@ var init_castalia = __esm({
|
|
|
64
64
|
"OperatingSystem",
|
|
65
65
|
"Paradigm",
|
|
66
66
|
"DataStructure",
|
|
67
|
-
"AgentModel"
|
|
67
|
+
"AgentModel",
|
|
68
|
+
// An OPAQUE anchor identity in a project's stratum (PJ-anchors · plan §6c).
|
|
69
|
+
// Deliberately NOT one of the CODE_NODE_LABELS below — those are the local code
|
|
70
|
+
// graph and never cross. A cloud `Symbol` carries the salted `sym_` id and a
|
|
71
|
+
// coarse `kind`, and NOTHING ELSE: no path, no qualified name. It exists so two
|
|
72
|
+
// teammates' knowledge about the same function lands on one node; the cloud
|
|
73
|
+
// learns THAT they concern the same symbol, never WHICH symbol.
|
|
74
|
+
//
|
|
75
|
+
// Project-stratum only. The ingest door rejects a `Symbol` node — and any
|
|
76
|
+
// ANCHORED_AT edge — on a batch that carries no verified projectId, so the
|
|
77
|
+
// org/team/public lanes can never acquire one by accident.
|
|
78
|
+
"Symbol"
|
|
68
79
|
];
|
|
69
80
|
CODE_NODE_LABELS = [
|
|
70
81
|
"File",
|
|
@@ -14978,7 +14989,7 @@ var init_symbol_intent = __esm({
|
|
|
14978
14989
|
});
|
|
14979
14990
|
|
|
14980
14991
|
// ../../packages/shared/src/wire.ts
|
|
14981
|
-
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
14992
|
+
var CLOUD_NODE_LABELS, CLOUD_WRITABLE_NODE_LABELS, PROJECT_ONLY_NODE_LABELS, PROJECT_ONLY_NODE_LABEL_SET, PROJECT_ONLY_EDGE_TYPES, PROJECT_ONLY_EDGE_TYPE_SET, CLOUD_WRITABLE_NODE_LABEL_SET, CLOUD_EDGE_TYPES, INGEST_SOURCES, INGEST_EXTRACTION_SOURCES, CastaliaIngestNodeSchema, RouteContextCountWireSchema, CastaliaIngestEdgeSchema, SymbolSummarySidecarSchema, CastaliaIngestPayloadSchema;
|
|
14982
14993
|
var init_wire = __esm({
|
|
14983
14994
|
"../../packages/shared/src/wire.ts"() {
|
|
14984
14995
|
"use strict";
|
|
@@ -15009,11 +15020,20 @@ var init_wire = __esm({
|
|
|
15009
15020
|
"DataStructure",
|
|
15010
15021
|
"Triage",
|
|
15011
15022
|
"Claim",
|
|
15012
|
-
"AntiPattern"
|
|
15023
|
+
"AntiPattern",
|
|
15024
|
+
// PJ-anchors (§6c): the OPAQUE project anchor identity — salted `sym_` id +
|
|
15025
|
+
// coarse kind, no path, no qualified name. Writable ONLY on a batch with a
|
|
15026
|
+
// verified projectId; the ingest door rejects it outright otherwise, so its
|
|
15027
|
+
// presence in this list does not admit it to the org/team/public lanes.
|
|
15028
|
+
"Symbol"
|
|
15013
15029
|
];
|
|
15030
|
+
PROJECT_ONLY_NODE_LABELS = ["Symbol"];
|
|
15031
|
+
PROJECT_ONLY_NODE_LABEL_SET = new Set(PROJECT_ONLY_NODE_LABELS);
|
|
15032
|
+
PROJECT_ONLY_EDGE_TYPES = ["ANCHORED_AT"];
|
|
15033
|
+
PROJECT_ONLY_EDGE_TYPE_SET = new Set(PROJECT_ONLY_EDGE_TYPES);
|
|
15014
15034
|
CLOUD_WRITABLE_NODE_LABEL_SET = new Set(CLOUD_WRITABLE_NODE_LABELS);
|
|
15015
15035
|
CLOUD_EDGE_TYPES = ALL_EDGE_TYPES.filter(
|
|
15016
|
-
(e) => !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15036
|
+
(e) => e === "ANCHORED_AT" || !CODE_EDGES.includes(e) && !GIT_EDGES.includes(e) && !BRIDGE_EDGES.includes(e)
|
|
15017
15037
|
);
|
|
15018
15038
|
INGEST_SOURCES = ["agent", "daemon", "corpus-importer", "spine-importer"];
|
|
15019
15039
|
INGEST_EXTRACTION_SOURCES = [
|