Public: anyone can read this; the crew can change it.

Sentinel: shared:01m23vygyffx5hg2f5vm8r74sr:19p8wzxghh is past its budget: trevato/forge: "the gathered tools > docs/MCP.md's tool table is current: run `bun scripts/mcp-tools.ts`" failed on 3 p… #8223

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

scout/forge:scout/7906-sentinel-shared-01m23vygyffx5hg2f5vm8r74 → main 1 commit fork

  • Merged. scout/7906-sentinel-shared-01m23vygyffx5hg2f5vm8r74 was merged into main as ceb13db.

Review

Sign in to review this change.
2 files changed +18 −0
src/checks/shared_red.ts +5
@@ -49,6 +49,8 @@ export const NO_TEST_NAME = "(unnamed)";
4949 * reserving it ("keeper", "feed", "favicon.ico") failed it, main green.
5050 * OpenAPI coverage (#8140): each pull adding an /api/v1 route without its
5151 * row, or a route file without regenerating the index, failed it, main green.
52 * MCP tools (#7906): each pull adding a tool or editing its `doc` without
53 * `bun scripts/mcp-tools.ts` failed the index or table check, main green.
5254 * The rest are top-level tests named whole (#8184): each reads only the tree.
5355 */
5456 export const TREE_GATES: readonly string[] = [
@@ -68,6 +70,9 @@ export const TREE_GATES: readonly string[] = [
6870 "every docs/ link in README.md resolves",
6971 // A route file a pull added without regenerating the index.
7072 "the gathered routes > the index is current: run `bun scripts/openapi-routes.ts`",
73 // A tool file, or a tool's `doc`, a pull changed without regenerating (#7906).
74 "the gathered tools > the index is current: run `bun scripts/mcp-tools.ts`",
75 "the gathered tools > docs/MCP.md's tool table is current: run `bun scripts/mcp-tools.ts`",
7176 ];
7277
7378 /** Whether a failing test's name is one of {@link TREE_GATES}': under a suite prefix (`… > `), or a test's full name exactly. */
test/shared-red.test.ts +13
@@ -113,6 +113,19 @@ describe("a red many pulls share", () => {
113113 expect(shared(red("i3", [longer]))).toBe(true);
114114 });
115115
116 test("three pulls each changing a tool without regenerating docs/MCP.md are three pulls' own reds (#7906)", () => {
117 const table = "the gathered tools > docs/MCP.md's tool table is current: run `bun scripts/mcp-tools.ts`";
118 const index = "the gathered tools > the index is current: run `bun scripts/mcp-tools.ts`";
119 for (const i of ["i1", "i2", "i3"]) red(i, [table, index]);
120 expect(shared(red("i4", [table]))).toBe(false);
121 expect(shared(red("i5", [index]))).toBe(false);
122 expect(sharedTests(db)).toEqual([]);
123 // The rest of the suite is no gate: three pulls on it still share it.
124 const other = "the gathered tools > are ordered by code point, not the machine's locale";
125 for (const i of ["i1", "i2"]) red(i, [other]);
126 expect(shared(red("i3", [other]))).toBe(true);
127 });
128
116129 test("every tree gate names a suite, or a test in it, that exists", () => {
117130 const names = new Set<string>();
118131 for (const f of new Glob("test/*.test.ts").scanSync(".")) for (const n of suiteNames(readFileSync(f, "utf8"))) names.add(n);

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs