@de-otio/repo-aegis-core 0.3.2 → 0.4.0

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.
@@ -1,5 +1,13 @@
1
1
  import type { RepoConfig } from "./repo.js";
2
2
  export declare const ALWAYS_FILE_STEM = "_always";
3
+ /**
4
+ * Minimum engagement-identifier length for the auto-block self-marker (see
5
+ * computeDenySet). Identifiers shorter than this are NOT auto-added as patterns,
6
+ * because a 2–3 character literal (e.g. `qa`, `ci`, `api`) matched
7
+ * case-insensitively as a substring would flood unrelated content with false
8
+ * positives. Such engagements should carry explicit markers instead.
9
+ */
10
+ export declare const MIN_AUTO_BLOCK_IDENTIFIER_LENGTH = 4;
3
11
  export interface DenySetFile {
4
12
  stem: string;
5
13
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"deny-set.d.ts","sourceRoot":"","sources":["../src/deny-set.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAsED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAoGnF"}
1
+ {"version":3,"file":"deny-set.d.ts","sourceRoot":"","sources":["../src/deny-set.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAOlD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAsED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CA8HnF"}
package/dist/deny-set.js CHANGED
@@ -5,6 +5,18 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSy
5
5
  import { dirname, join } from "node:path";
6
6
  import { denySetCachePath as defaultDenySetCachePath, markersDir as defaultMarkersDir, } from "./paths.js";
7
7
  export const ALWAYS_FILE_STEM = "_always";
8
+ /**
9
+ * Minimum engagement-identifier length for the auto-block self-marker (see
10
+ * computeDenySet). Identifiers shorter than this are NOT auto-added as patterns,
11
+ * because a 2–3 character literal (e.g. `qa`, `ci`, `api`) matched
12
+ * case-insensitively as a substring would flood unrelated content with false
13
+ * positives. Such engagements should carry explicit markers instead.
14
+ */
15
+ export const MIN_AUTO_BLOCK_IDENTIFIER_LENGTH = 4;
16
+ /** Escape a string so it matches literally when used as a regex pattern. */
17
+ function escapeRegexLiteral(s) {
18
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
19
+ }
8
20
  // Bumped to 2 when patternSources was added; v1 caches are invalidated
9
21
  // (the read path's schemaVersion check returns null, falling through to
10
22
  // recompute).
@@ -140,6 +152,33 @@ export function computeDenySet(repo, opts = {}) {
140
152
  patternSources.push(f.stem);
141
153
  }
142
154
  }
155
+ // Auto-block each engagement's own identifier as an always-on self-marker.
156
+ //
157
+ // The patterns above come only from marker-file *contents*. An engagement
158
+ // whose marker file is empty therefore contributes nothing — yet the
159
+ // engagement id is itself operator-chosen and typically customer-derived. It
160
+ // is, in fact, the string most prone to leaking: it appears in this tool's
161
+ // own `status` output and registry, so it readily enters an author's context
162
+ // and gets emitted by reflex. Without this, a zero-marker engagement is
163
+ // "configured but inert" — registered, listed under `blocked:`, protecting
164
+ // nothing.
165
+ //
166
+ // The id is added as an escaped, case-insensitive literal (identical matching
167
+ // to every other marker). For customer-coupled / scratch classes the repo's
168
+ // OWN engagement files are already excluded from `files` (the filter above),
169
+ // so a repo may still mention its own engagement id; only OTHER engagements'
170
+ // ids are blocked. `_always` is a system stem, not an identifier.
171
+ for (const f of files) {
172
+ if (f.stem === ALWAYS_FILE_STEM)
173
+ continue;
174
+ if (f.stem.length < MIN_AUTO_BLOCK_IDENTIFIER_LENGTH)
175
+ continue;
176
+ const literal = escapeRegexLiteral(f.stem);
177
+ if (patterns.includes(literal))
178
+ continue; // already present as an explicit marker
179
+ patterns.push(literal);
180
+ patternSources.push(f.stem);
181
+ }
143
182
  const result = {
144
183
  files,
145
184
  patterns,
@@ -1 +1 @@
1
- {"version":3,"file":"deny-set.js","sourceRoot":"","sources":["../src/deny-set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deny-set.js","sourceRoot":"","sources":["../src/deny-set.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@ import assert from "node:assert/strict";
5
5
  import { existsSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync } from "node:fs";
6
6
  import { tmpdir } from "node:os";
7
7
  import { join } from "node:path";
8
- import { computeDenySet, ALWAYS_FILE_STEM } from "./deny-set.js";
8
+ import { computeDenySet, ALWAYS_FILE_STEM, MIN_AUTO_BLOCK_IDENTIFIER_LENGTH, } from "./deny-set.js";
9
+ import { scanText } from "./scan.js";
9
10
  let tmp;
10
11
  let markersDir;
11
12
  function setupMarkers() {
@@ -139,6 +140,70 @@ describe("computeDenySet", () => {
139
140
  assert.equal(ds.patternSources[acmeIdx], "customer-a");
140
141
  }
141
142
  });
143
+ describe("auto-block engagement identifiers (self-marker)", () => {
144
+ it("blocks each engagement's own id, not just its marker-file contents", () => {
145
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
146
+ assert.ok(ds.patterns.includes("customer-a"), "engagement id is auto-blocked");
147
+ assert.ok(ds.patterns.includes("customer-b"), "engagement id is auto-blocked");
148
+ // The id pattern is attributed to its own engagement.
149
+ const idx = ds.patterns.indexOf("customer-a");
150
+ assert.equal(ds.patternSources?.[idx], "customer-a");
151
+ });
152
+ it("a ZERO-marker engagement still blocks its own identifier (the close-call fix)", () => {
153
+ // An engagement registered with no markers materialises an empty (header-
154
+ // only) marker file. Before the fix it contributed nothing — so the
155
+ // customer-derived id leaked freely. It must now block its own id.
156
+ writeFileSync(join(markersDir, "zero-marker-customer.txt"), "; no markers populated yet\n");
157
+ try {
158
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
159
+ assert.ok(ds.patterns.includes("zero-marker-customer"), "zero-marker engagement must still block its identifier");
160
+ // And it actually matches content (case-insensitively), end to end.
161
+ const hits = scanText("see ~/repos/Zero-Marker-Customer/notes.md", ds);
162
+ assert.equal(hits.length, 1, "identifier match fires case-insensitively");
163
+ assert.equal(hits[0]?.engagement, "zero-marker-customer");
164
+ }
165
+ finally {
166
+ rmSync(join(markersDir, "zero-marker-customer.txt"));
167
+ }
168
+ });
169
+ it("does NOT auto-block the _always system stem", () => {
170
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
171
+ assert.ok(!ds.patterns.includes(ALWAYS_FILE_STEM), "_always is not an identifier");
172
+ });
173
+ it("escapes regex-special characters in the identifier", () => {
174
+ // A stem with regex metacharacters must be matched literally, not as a
175
+ // pattern (e.g. `a.b+c` must not also match `axbcc`).
176
+ writeFileSync(join(markersDir, "a.b+c.txt"), "; empty\n");
177
+ try {
178
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
179
+ assert.ok(ds.patterns.includes("a\\.b\\+c"), "special chars are escaped");
180
+ assert.equal(scanText("literal a.b+c here", ds).length, 1, "matches the literal");
181
+ assert.equal(scanText("regex axbcc here", ds).length, 0, "does not match as a regex");
182
+ }
183
+ finally {
184
+ rmSync(join(markersDir, "a.b+c.txt"));
185
+ }
186
+ });
187
+ it("skips identifiers shorter than the guard (false-positive safety)", () => {
188
+ assert.ok(MIN_AUTO_BLOCK_IDENTIFIER_LENGTH >= 3);
189
+ writeFileSync(join(markersDir, "qa.txt"), "; empty\n");
190
+ try {
191
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
192
+ assert.ok(!ds.patterns.includes("qa"), "too-short id is not auto-blocked");
193
+ }
194
+ finally {
195
+ rmSync(join(markersDir, "qa.txt"));
196
+ }
197
+ });
198
+ it("customer-coupled: blocks OTHER engagement ids but not the repo's own", () => {
199
+ const ds = computeDenySet(makeRepo("customer-coupled", ["customer-a"]), {
200
+ markersDir,
201
+ cachePath: null,
202
+ });
203
+ assert.ok(!ds.patterns.includes("customer-a"), "own id is not blocked (file excluded)");
204
+ assert.ok(ds.patterns.includes("customer-b"), "other engagement id is blocked");
205
+ });
206
+ });
142
207
  it("preserves mid-line ; characters in marker patterns", () => {
143
208
  // Regression: legitimate patterns containing `;` (e.g. `db;internal`,
144
209
  // `key;value` form codenames) used to be silently truncated at the
@@ -1 +1 @@
1
- {"version":3,"file":"deny-set.test.js","sourceRoot":"","sources":["../src/deny-set.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deny-set.test.js","sourceRoot":"","sources":["../src/deny-set.test.ts"],"names":[],"mappings":"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"}
@@ -138,7 +138,10 @@ describe("renderMarkers", () => {
138
138
  classExplicit: true,
139
139
  engagements: [],
140
140
  }, { markersDir: dir });
141
- assert.deepEqual(ds.patterns, ["foo-marker"]);
141
+ // "foo-marker" is the file content; "customer-a" is the engagement
142
+ // identifier auto-blocked as a self-marker (see computeDenySet). The header
143
+ // comment lines must NOT appear.
144
+ assert.deepEqual(ds.patterns, ["foo-marker", "customer-a"]);
142
145
  // No pattern in the deny set should be a comment line.
143
146
  for (const p of ds.patterns) {
144
147
  assert.ok(!p.startsWith(";"), `pattern leaked from header: ${p}`);
@@ -1 +1 @@
1
- {"version":3,"file":"render.test.js","sourceRoot":"","sources":["../src/render.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.test.js","sourceRoot":"","sources":["../src/render.test.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,qDAAqD;AACrD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,IAAI,GAAW,CAAC;AAEhB,MAAM,CAAC,GAAG,EAAE;IACV,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,GAAG,EAAE;IACT,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAChC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,aAAa,CACrB;YACE,WAAW,EAAE;gBACX,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE;gBACvD,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE;aACrD;YACD,WAAW,EAAE,CAAC,wBAAwB,CAAC;YACvC,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,CAC9D,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B;QAC7D,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,aAAa,CACrB;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAChE,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,gDAAgD;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAClC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CACH,aAAa,CACX;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YACtE,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAClD,EACH,sBAAsB,CACvB,CAAC;QACF,+BAA+B;QAC/B,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACpC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,0BAA0B;QAC1B,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,aAAa,CACrB;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAClD,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACxC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,aAAa,CACrB;YACE,WAAW,EAAE;gBACX,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;gBAClD,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;aAC9E;YACD,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CACvE,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACnC,aAAa,CACX;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,WAAW,EAAE,CAAC,WAAW,CAAC;YAC1B,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CACpC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC5C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CACX;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACvE,WAAW,EAAE,CAAC,eAAe,CAAC;YAC9B,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,EAAE,CACpE,CAAC;QAEF,MAAM,QAAQ,GAAG,+BAA+B,qBAAqB,EAAE,CAAC;QAExE,oEAAoE;QACpE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CACP,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC1B,4CAA4C,QAAQ,YAAY,OAAO,EAAE,CAC1E,CAAC;QACF,oBAAoB;QACpB,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CACP,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC7B,qCAAqC,QAAQ,YAAY,UAAU,EAAE,CACtE,CAAC;QACF,kBAAkB;QAClB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,CAAC,EAAE,CACP,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC3B,mCAAmC,QAAQ,YAAY,QAAQ,EAAE,CAClE,CAAC;QAEF,uEAAuE;QACvE,+DAA+D;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,iEAAiE;QACjE,mEAAmE;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC/C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CACX;YACE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;YACvE,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,CAAC;SACjB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,4BAA4B,CAAC,EAAE,CACvE,CAAC;QACF,MAAM,EAAE,GAAG,cAAc,CACvB;YACE,GAAG,EAAE,GAAG;YACR,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,iBAAiB;YACxB,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,EAAE;SAChB,EACD,EAAE,UAAU,EAAE,GAAG,EAAE,CACpB,CAAC;QACF,mEAAmE;QACnE,4EAA4E;QAC5E,iCAAiC;QACjC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QAC5D,uDAAuD;QACvD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,uCAAuC,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@de-otio/repo-aegis-core",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Core library for repo-aegis: engagement registry, deny-set computation, marker scanner",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "author": "Richard Myers",
@@ -5,7 +5,12 @@ import assert from "node:assert/strict";
5
5
  import { existsSync, mkdtempSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync, rmSync } from "node:fs";
6
6
  import { tmpdir } from "node:os";
7
7
  import { join } from "node:path";
8
- import { computeDenySet, ALWAYS_FILE_STEM } from "./deny-set.js";
8
+ import {
9
+ computeDenySet,
10
+ ALWAYS_FILE_STEM,
11
+ MIN_AUTO_BLOCK_IDENTIFIER_LENGTH,
12
+ } from "./deny-set.js";
13
+ import { scanText } from "./scan.js";
9
14
  import type { RepoConfig, RepoClass } from "./repo.js";
10
15
 
11
16
  let tmp: string;
@@ -187,6 +192,76 @@ describe("computeDenySet", () => {
187
192
  }
188
193
  });
189
194
 
195
+ describe("auto-block engagement identifiers (self-marker)", () => {
196
+ it("blocks each engagement's own id, not just its marker-file contents", () => {
197
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
198
+ assert.ok(ds.patterns.includes("customer-a"), "engagement id is auto-blocked");
199
+ assert.ok(ds.patterns.includes("customer-b"), "engagement id is auto-blocked");
200
+ // The id pattern is attributed to its own engagement.
201
+ const idx = ds.patterns.indexOf("customer-a");
202
+ assert.equal(ds.patternSources?.[idx], "customer-a");
203
+ });
204
+
205
+ it("a ZERO-marker engagement still blocks its own identifier (the close-call fix)", () => {
206
+ // An engagement registered with no markers materialises an empty (header-
207
+ // only) marker file. Before the fix it contributed nothing — so the
208
+ // customer-derived id leaked freely. It must now block its own id.
209
+ writeFileSync(join(markersDir, "zero-marker-customer.txt"), "; no markers populated yet\n");
210
+ try {
211
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
212
+ assert.ok(
213
+ ds.patterns.includes("zero-marker-customer"),
214
+ "zero-marker engagement must still block its identifier",
215
+ );
216
+ // And it actually matches content (case-insensitively), end to end.
217
+ const hits = scanText("see ~/repos/Zero-Marker-Customer/notes.md", ds);
218
+ assert.equal(hits.length, 1, "identifier match fires case-insensitively");
219
+ assert.equal(hits[0]?.engagement, "zero-marker-customer");
220
+ } finally {
221
+ rmSync(join(markersDir, "zero-marker-customer.txt"));
222
+ }
223
+ });
224
+
225
+ it("does NOT auto-block the _always system stem", () => {
226
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
227
+ assert.ok(!ds.patterns.includes(ALWAYS_FILE_STEM), "_always is not an identifier");
228
+ });
229
+
230
+ it("escapes regex-special characters in the identifier", () => {
231
+ // A stem with regex metacharacters must be matched literally, not as a
232
+ // pattern (e.g. `a.b+c` must not also match `axbcc`).
233
+ writeFileSync(join(markersDir, "a.b+c.txt"), "; empty\n");
234
+ try {
235
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
236
+ assert.ok(ds.patterns.includes("a\\.b\\+c"), "special chars are escaped");
237
+ assert.equal(scanText("literal a.b+c here", ds).length, 1, "matches the literal");
238
+ assert.equal(scanText("regex axbcc here", ds).length, 0, "does not match as a regex");
239
+ } finally {
240
+ rmSync(join(markersDir, "a.b+c.txt"));
241
+ }
242
+ });
243
+
244
+ it("skips identifiers shorter than the guard (false-positive safety)", () => {
245
+ assert.ok(MIN_AUTO_BLOCK_IDENTIFIER_LENGTH >= 3);
246
+ writeFileSync(join(markersDir, "qa.txt"), "; empty\n");
247
+ try {
248
+ const ds = computeDenySet(makeRepo("private-strict"), { markersDir, cachePath: null });
249
+ assert.ok(!ds.patterns.includes("qa"), "too-short id is not auto-blocked");
250
+ } finally {
251
+ rmSync(join(markersDir, "qa.txt"));
252
+ }
253
+ });
254
+
255
+ it("customer-coupled: blocks OTHER engagement ids but not the repo's own", () => {
256
+ const ds = computeDenySet(makeRepo("customer-coupled", ["customer-a"]), {
257
+ markersDir,
258
+ cachePath: null,
259
+ });
260
+ assert.ok(!ds.patterns.includes("customer-a"), "own id is not blocked (file excluded)");
261
+ assert.ok(ds.patterns.includes("customer-b"), "other engagement id is blocked");
262
+ });
263
+ });
264
+
190
265
  it("preserves mid-line ; characters in marker patterns", () => {
191
266
  // Regression: legitimate patterns containing `;` (e.g. `db;internal`,
192
267
  // `key;value` form codenames) used to be silently truncated at the
package/src/deny-set.ts CHANGED
@@ -18,6 +18,20 @@ import type { RepoConfig } from "./repo.js";
18
18
 
19
19
  export const ALWAYS_FILE_STEM = "_always";
20
20
 
21
+ /**
22
+ * Minimum engagement-identifier length for the auto-block self-marker (see
23
+ * computeDenySet). Identifiers shorter than this are NOT auto-added as patterns,
24
+ * because a 2–3 character literal (e.g. `qa`, `ci`, `api`) matched
25
+ * case-insensitively as a substring would flood unrelated content with false
26
+ * positives. Such engagements should carry explicit markers instead.
27
+ */
28
+ export const MIN_AUTO_BLOCK_IDENTIFIER_LENGTH = 4;
29
+
30
+ /** Escape a string so it matches literally when used as a regex pattern. */
31
+ function escapeRegexLiteral(s: string): string {
32
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
33
+ }
34
+
21
35
  export interface DenySetFile {
22
36
  stem: string;
23
37
  path: string;
@@ -205,6 +219,32 @@ export function computeDenySet(repo: RepoConfig, opts: DenySetOptions = {}): Den
205
219
  patternSources.push(f.stem);
206
220
  }
207
221
  }
222
+
223
+ // Auto-block each engagement's own identifier as an always-on self-marker.
224
+ //
225
+ // The patterns above come only from marker-file *contents*. An engagement
226
+ // whose marker file is empty therefore contributes nothing — yet the
227
+ // engagement id is itself operator-chosen and typically customer-derived. It
228
+ // is, in fact, the string most prone to leaking: it appears in this tool's
229
+ // own `status` output and registry, so it readily enters an author's context
230
+ // and gets emitted by reflex. Without this, a zero-marker engagement is
231
+ // "configured but inert" — registered, listed under `blocked:`, protecting
232
+ // nothing.
233
+ //
234
+ // The id is added as an escaped, case-insensitive literal (identical matching
235
+ // to every other marker). For customer-coupled / scratch classes the repo's
236
+ // OWN engagement files are already excluded from `files` (the filter above),
237
+ // so a repo may still mention its own engagement id; only OTHER engagements'
238
+ // ids are blocked. `_always` is a system stem, not an identifier.
239
+ for (const f of files) {
240
+ if (f.stem === ALWAYS_FILE_STEM) continue;
241
+ if (f.stem.length < MIN_AUTO_BLOCK_IDENTIFIER_LENGTH) continue;
242
+ const literal = escapeRegexLiteral(f.stem);
243
+ if (patterns.includes(literal)) continue; // already present as an explicit marker
244
+ patterns.push(literal);
245
+ patternSources.push(f.stem);
246
+ }
247
+
208
248
  const result: DenySet = {
209
249
  files,
210
250
  patterns,
@@ -192,7 +192,10 @@ describe("renderMarkers", () => {
192
192
  },
193
193
  { markersDir: dir },
194
194
  );
195
- assert.deepEqual(ds.patterns, ["foo-marker"]);
195
+ // "foo-marker" is the file content; "customer-a" is the engagement
196
+ // identifier auto-blocked as a self-marker (see computeDenySet). The header
197
+ // comment lines must NOT appear.
198
+ assert.deepEqual(ds.patterns, ["foo-marker", "customer-a"]);
196
199
  // No pattern in the deny set should be a comment line.
197
200
  for (const p of ds.patterns) {
198
201
  assert.ok(!p.startsWith(";"), `pattern leaked from header: ${p}`);