Skip to content

Commit e66b7ef

Browse files
dmealingclaude
andcommitted
chore(hygiene): scrub the private product name from the public repo
The private/commercial product name was leaking into this public repo: - @metaobjectsdev/sdk exported MetaForge* symbols (MetaForgeNode, MetaForgeRecordNotFoundError, MetaForgeAlreadyPromotedError, MetaForgeRecordParseError). Renamed MetaForge* → Forge*, aligning with the existing public @metaobjectsdev/forge package + ForgeType/ForgeAttr naming. No other workspace package imports them; the generic "forge" concept stays. (Breaking change to @metaobjectsdev/sdk's public API.) - spec/design-docs/2026-05-14-polyglot-monorepo-design.md was a historical private→public migration doc that documented the private project's structure + commercial roadmap; referenced by nothing. Removed. - Genericized a "superseded by <private> (private)" banner in one plan doc. SDK storage/forge-types tests green (23/0); zero references to the private name remain in tracked files. The name is now on the public-repo commit-guard denylist. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent aa6a48a commit e66b7ef

10 files changed

Lines changed: 30 additions & 356 deletions

File tree

docs/superpowers/plans/2026-05-19-java-conformance-harness.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
> **Superseded by `metaforge/docs/superpowers/plans/2026-05-19-java-h3b2-conformance-harness.md` (private). This file is the original draft and is no longer the source of truth.**
1+
> **Superseded — this file is the original draft and is no longer the source of truth.**
22
33
# Java Conformance Harness Implementation Plan
44

server/typescript/packages/sdk/src/forge-types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ import {
114114
} from "@metaobjectsdev/metadata";
115115

116116
/** Minimal concrete MetaData subclass used for all forge descriptive nodes. */
117-
class MetaForgeNode extends MetaData {}
117+
class ForgeNode extends MetaData {}
118118

119119
function wildcardOf(childType: string): ChildRule {
120120
return {
@@ -133,7 +133,7 @@ function def(
133133
return {
134134
typeId: new TypeId(type, subType),
135135
description,
136-
factory: (typeId, name) => new MetaForgeNode(typeId, name),
136+
factory: (typeId, name) => new ForgeNode(typeId, name),
137137
childRules,
138138
attributes: [],
139139
};

server/typescript/packages/sdk/src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ export {
1616
listRecords,
1717
promoteRecord,
1818
supersede,
19-
MetaForgeRecordNotFoundError,
20-
MetaForgeAlreadyPromotedError,
21-
MetaForgeRecordParseError,
19+
ForgeRecordNotFoundError,
20+
ForgeAlreadyPromotedError,
21+
ForgeRecordParseError,
2222
} from "./storage/index.js";
2323
export type { ListOptions } from "./storage/index.js";
2424

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
export class MetaForgeRecordNotFoundError extends Error {
1+
export class ForgeRecordNotFoundError extends Error {
22
constructor(public readonly path: string) {
33
super(`Record not found: ${path}`);
4-
this.name = "MetaForgeRecordNotFoundError";
4+
this.name = "ForgeRecordNotFoundError";
55
}
66
}
77

8-
export class MetaForgeAlreadyPromotedError extends Error {
8+
export class ForgeAlreadyPromotedError extends Error {
99
constructor(public readonly path: string) {
1010
super(`A canonical record already exists at: ${path}`);
11-
this.name = "MetaForgeAlreadyPromotedError";
11+
this.name = "ForgeAlreadyPromotedError";
1212
}
1313
}
1414

15-
export class MetaForgeRecordParseError extends Error {
15+
export class ForgeRecordParseError extends Error {
1616
constructor(
1717
public readonly path: string,
1818
public override readonly cause: unknown,
1919
) {
2020
super(`Failed to parse record at ${path}: ${cause instanceof Error ? cause.message : String(cause)}`);
21-
this.name = "MetaForgeRecordParseError";
21+
this.name = "ForgeRecordParseError";
2222
}
2323
}

server/typescript/packages/sdk/src/storage/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export { listRecords } from "./list.js";
44
export type { ListOptions } from "./list.js";
55
export { promoteRecord, supersede } from "./lifecycle.js";
66
export {
7-
MetaForgeRecordNotFoundError,
8-
MetaForgeAlreadyPromotedError,
9-
MetaForgeRecordParseError,
7+
ForgeRecordNotFoundError,
8+
ForgeAlreadyPromotedError,
9+
ForgeRecordParseError,
1010
} from "./errors.js";

server/typescript/packages/sdk/src/storage/lifecycle.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type { AnyRecord } from "../records/any.js";
22
import type { RecordType } from "../records/core.js";
33
import { readRecord, recordExists } from "./read.js";
44
import { writeRecord, removeRecord } from "./write.js";
5-
import { MetaForgeAlreadyPromotedError, MetaForgeRecordNotFoundError } from "./errors.js";
5+
import { ForgeAlreadyPromotedError, ForgeRecordNotFoundError } from "./errors.js";
66
import { recordPath } from "../paths.js";
77

88
export async function promoteRecord(
@@ -11,10 +11,10 @@ export async function promoteRecord(
1111
id: string,
1212
): Promise<void> {
1313
if (!(await recordExists(metaRoot, type, id, { pending: true }))) {
14-
throw new MetaForgeRecordNotFoundError(recordPath(metaRoot, type, id, { pending: true }));
14+
throw new ForgeRecordNotFoundError(recordPath(metaRoot, type, id, { pending: true }));
1515
}
1616
if (await recordExists(metaRoot, type, id)) {
17-
throw new MetaForgeAlreadyPromotedError(recordPath(metaRoot, type, id));
17+
throw new ForgeAlreadyPromotedError(recordPath(metaRoot, type, id));
1818
}
1919
const record = await readRecord(metaRoot, type, id, { pending: true });
2020
await writeRecord(metaRoot, record);
@@ -27,7 +27,7 @@ export async function supersede(
2727
newRecord: AnyRecord,
2828
): Promise<void> {
2929
if (!(await recordExists(metaRoot, newRecord.type, oldId))) {
30-
throw new MetaForgeRecordNotFoundError(recordPath(metaRoot, newRecord.type, oldId));
30+
throw new ForgeRecordNotFoundError(recordPath(metaRoot, newRecord.type, oldId));
3131
}
3232
// Write the new record first, so a failure leaves the old record intact.
3333
await writeRecord(metaRoot, newRecord);

server/typescript/packages/sdk/src/storage/read.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { AnyRecord } from "../records/any.js";
33
import { AnyRecord as AnyRecordSchema } from "../records/any.js";
44
import type { RecordType } from "../records/core.js";
55
import { recordPath } from "../paths.js";
6-
import { MetaForgeRecordNotFoundError, MetaForgeRecordParseError } from "./errors.js";
6+
import { ForgeRecordNotFoundError, ForgeRecordParseError } from "./errors.js";
77

88
export async function readRecord(
99
metaRoot: string,
@@ -16,17 +16,17 @@ export async function readRecord(
1616
try {
1717
raw = await readFile(path, "utf8");
1818
} catch (err) {
19-
if (isNoEntError(err)) throw new MetaForgeRecordNotFoundError(path);
19+
if (isNoEntError(err)) throw new ForgeRecordNotFoundError(path);
2020
throw err;
2121
}
2222
let parsedJson: unknown;
2323
try {
2424
parsedJson = JSON.parse(raw);
2525
} catch (err) {
26-
throw new MetaForgeRecordParseError(path, err);
26+
throw new ForgeRecordParseError(path, err);
2727
}
2828
const result = AnyRecordSchema.safeParse(parsedJson);
29-
if (!result.success) throw new MetaForgeRecordParseError(path, result.error);
29+
if (!result.success) throw new ForgeRecordParseError(path, result.error);
3030
return result.data;
3131
}
3232

server/typescript/packages/sdk/src/storage/write.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { dirname } from "node:path";
33
import type { AnyRecord } from "../records/any.js";
44
import { AnyRecord as AnyRecordSchema } from "../records/any.js";
55
import { recordPath } from "../paths.js";
6-
import { MetaForgeRecordNotFoundError } from "./errors.js";
6+
import { ForgeRecordNotFoundError } from "./errors.js";
77
import { recordExists } from "./read.js";
88

99
export async function writeRecord(
@@ -26,7 +26,7 @@ export async function removeRecord(
2626
opts: { pending?: boolean } = {},
2727
): Promise<void> {
2828
if (!(await recordExists(metaRoot, type, id, opts))) {
29-
throw new MetaForgeRecordNotFoundError(recordPath(metaRoot, type, id, opts));
29+
throw new ForgeRecordNotFoundError(recordPath(metaRoot, type, id, opts));
3030
}
3131
await unlink(recordPath(metaRoot, type, id, opts));
3232
}

server/typescript/packages/sdk/test/storage.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
44
import { join } from "node:path";
55
import { writeRecord } from "../src/storage/write.js";
66
import { readRecord, recordExists } from "../src/storage/read.js";
7-
import { MetaForgeRecordNotFoundError } from "../src/storage/errors.js";
7+
import { ForgeRecordNotFoundError } from "../src/storage/errors.js";
88

99
let metaRoot: string;
1010
beforeEach(() => {
@@ -48,9 +48,9 @@ describe("writeRecord", () => {
4848
});
4949

5050
describe("readRecord", () => {
51-
test("throws MetaForgeRecordNotFoundError when missing", async () => {
51+
test("throws ForgeRecordNotFoundError when missing", async () => {
5252
await expect(readRecord(metaRoot, "decision", "missing")).rejects.toBeInstanceOf(
53-
MetaForgeRecordNotFoundError,
53+
ForgeRecordNotFoundError,
5454
);
5555
});
5656
test("round-trips a record losslessly", async () => {
@@ -99,7 +99,7 @@ describe("listRecords", () => {
9999
});
100100
});
101101
import { promoteRecord, supersede } from "../src/storage/lifecycle.js";
102-
import { MetaForgeAlreadyPromotedError, MetaForgeRecordNotFoundError as NotFoundError } from "../src/storage/errors.js";
102+
import { ForgeAlreadyPromotedError, ForgeRecordNotFoundError as NotFoundError } from "../src/storage/errors.js";
103103

104104
describe("promoteRecord", () => {
105105
test("moves a pending record to canonical", async () => {
@@ -115,7 +115,7 @@ describe("promoteRecord", () => {
115115
await writeRecord(metaRoot, aDecision);
116116
await writeRecord(metaRoot, aDecision, { pending: true });
117117
await expect(promoteRecord(metaRoot, "decision", "decision-tanstack")).rejects.toBeInstanceOf(
118-
MetaForgeAlreadyPromotedError,
118+
ForgeAlreadyPromotedError,
119119
);
120120
});
121121
});

0 commit comments

Comments
 (0)