Once (hq 250): the merge tool emitted pull.merged and so did the 30 s poll added for issue 131, so every merge made through the tool reached the controller (and records) twice. The poll sees every path and carries the clone url; it is now the only emitter. The tool returns the merge commit instead.
Every page (hq 252): listPullFiles asked for 100 and the forge caps a page at 50, so PR #60's list stopped at 50 of 59 files with truncated: false — a module whose files moved could go unrebuilt. It now reads until a page comes back short; past 3 000 files the list is cut and says so (the mesh then rebuilds everything, the safe direction).
Tests: test/pages.test.ts (a fake forge capping pages at 50, 59 files → all 59, not truncated) passes; tsc --strict on client.ts/token.ts clean; tools/index.ts and index.ts syntax-checked. The module stays TypeScript: its npm-registry provisioner needs the SDK's provisioner harness, which the Go SDK does not have.
- **Once** (hq 250): the merge tool emitted `pull.merged` and so did the 30 s poll added for issue 131, so every merge made through the tool reached the controller (and records) twice. The poll sees every path and carries the clone url; it is now the only emitter. The tool returns the merge commit instead.
- **Every page** (hq 252): `listPullFiles` asked for 100 and the forge caps a page at 50, so PR #60's list stopped at 50 of 59 files with `truncated: false` — a module whose files moved could go unrebuilt. It now reads until a page comes back short; past 3 000 files the list is cut and says so (the mesh then rebuilds everything, the safe direction).
Tests: `test/pages.test.ts` (a fake forge capping pages at 50, 59 files → all 59, not truncated) passes; `tsc --strict` on client.ts/token.ts clean; tools/index.ts and index.ts syntax-checked. The module stays TypeScript: its npm-registry provisioner needs the SDK's provisioner harness, which the Go SDK does not have.
The merge tool announced pull.merged and so did the poll added for issue
131, so every merge made through the tool reached the controller twice.
The poll sees every path and carries the clone url; it is now the only
emitter. hq issue 250.
The forge caps a page at fifty when asked for a hundred, so a large merge's
file list was cut short and reported whole: a module whose own files moved
was not rebuilt. Read until a page comes back short. hq issue 252.
Deliverynovox/mesh-catalog@053eba695000 — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds gitea → novox; no bus step
tier 0: gitea
novox: receives gitea
gitea provides npm-package-registry, git: its consumers are sent again after it
gitea keeps data (ADR 0233): what it holds is backed up before it moves
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#63 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@053eba695000` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds gitea → novox; no bus step
- tier 0: gitea
- novox: receives gitea
- gitea provides npm-package-registry, git: its consumers are sent again after it
- gitea keeps data (ADR 0233): what it holds is backed up before it moves
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#63 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
pull.mergedand so did the 30 s poll added for issue 131, so every merge made through the tool reached the controller (and records) twice. The poll sees every path and carries the clone url; it is now the only emitter. The tool returns the merge commit instead.listPullFilesasked for 100 and the forge caps a page at 50, so PR #60's list stopped at 50 of 59 files withtruncated: false— a module whose files moved could go unrebuilt. It now reads until a page comes back short; past 3 000 files the list is cut and says so (the mesh then rebuilds everything, the safe direction).Tests:
test/pages.test.ts(a fake forge capping pages at 50, 59 files → all 59, not truncated) passes;tsc --stricton client.ts/token.ts clean; tools/index.ts and index.ts syntax-checked. The module stays TypeScript: its npm-registry provisioner needs the SDK's provisioner harness, which the Go SDK does not have.Delivery
novox/mesh-catalog@053eba695000— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds gitea → novox; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.