Skip to content

Commit 87893fb

Browse files
committed
docs(runtime): strip the tracker id from the duplicate route's ledger note
`check:doc-authoring` refuses a new internal issue-id reference in sibling-package STRING prose, and the note added to `packages/runtime/src/route-ledger.ts` carried two: the `[#NNNN]` prefix and a `pre-#NNNN` back-reference. A route-ledger note is a runtime string that reaches authors, operators and generated surfaces, none of whom can resolve a tracker id. Maintainer ruling 2026-08-12, verbatim and untranslated: 「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」 So the note now states the lesson self-containedly -- what the refusal is, where it lives, why it must precede the protocol call, and what the answer looked like before it -- with no id to resolve. The adjacent `//` comments in `domains/packages.ts` keep their ids: comments are the sanctioned carrier, and the gate reads only strings. ⛔ Not repaired by a baseline entry: `doc-authoring-prose-id.baseline.json` pins the adjudicated pre-existing population and is shrink-only, so an entry there weakens a ratchet and is maintainer-only. Gate now reads: sibling-package prose ids hold the baseline -- 829 pinned site(s) across 231 file(s), 85387 string(s) read in 1156 parsed source(s), no growth, no burn-down unrecorded. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D47qPfEWVPmhguWgBZCi5N
1 parent 01aed5e commit 87893fb

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

packages/runtime/src/route-ledger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ export const ROUTE_LEDGER: readonly RouteLedgerEntry[] = [
367367
note: '[#12038] enveloped — the named schema is the `data`: `reassignOrphanedMetadata`\'s declared return, transcribed describe-only. Conformance: spec `api/package-lifecycle.test.ts`' },
368368
{ route: 'POST /packages/:id/duplicate', domain: '/packages', disposition: 'sdk', client: 'packages.duplicate',
369369
responseSchema: 'DuplicatePackageResponseSchema',
370-
note: '[#12038] enveloped — the named schema is the `data`: `duplicatePackage`\'s declared return, transcribed describe-only. ⚠ `data.success` is the operation\'s verdict; the envelope `success` is transport-level and true even for a partial/empty duplicate (the objectui#6593 defect). [#14451] The SOURCE must be a writable base: a code-loaded or platform/marketplace source is refused 422 `DUPLICATE_SOURCE_NOT_A_BASE` (`requireDuplicableSource`, `domains/packages.ts`), BEFORE the protocol call and therefore before the target package record is minted — `duplicatePackage` installs that record ahead of its copy loop, so the pre-#14451 answer left a real empty shell behind. ADR-0070 D4 is declared-and-not-built and its object is a BASE, so cloning a code package\'s items would EXTEND D4 rather than implement it; the unbuilt case refuses loudly instead of answering 200 with `copiedCount: 0`, which no caller could tell from a base that really is empty. An empty WRITABLE base still answers 200 / `copiedCount: 0` — that read happened and found nothing. Pinned in `domains/packages-readonly-gate.test.ts`. Conformance: spec `api/package-lifecycle.test.ts`' },
370+
note: '[#12038] enveloped — the named schema is the `data`: `duplicatePackage`\'s declared return, transcribed describe-only. ⚠ `data.success` is the operation\'s verdict; the envelope `success` is transport-level and true even for a partial/empty duplicate (the objectui#6593 defect). The SOURCE must be a writable base: a code-loaded or platform/marketplace source is refused 422 `DUPLICATE_SOURCE_NOT_A_BASE` (`requireDuplicableSource`, `domains/packages.ts`), BEFORE the protocol call and therefore before the target package record is minted — `duplicatePackage` installs that record ahead of its copy loop, so refusing any later still left a real, listed, empty shell package behind. ADR-0070 D4 is declared-and-not-built and its object is a BASE, so cloning a code package\'s items would EXTEND D4 rather than implement it; the unbuilt case refuses loudly instead of answering 200 with `copiedCount: 0`, which no caller could tell from a base that really is empty. An empty WRITABLE base still answers 200 / `copiedCount: 0` — that read happened and found nothing. Pinned in `domains/packages-readonly-gate.test.ts`. Conformance: spec `api/package-lifecycle.test.ts`' },
371371

372372
// ── automation ────────────────────────────────────────────────────────────
373373
{ route: 'POST /automation/trigger/:name', domain: '/automation', disposition: 'sdk', client: 'automation.trigger',

0 commit comments

Comments
 (0)