Skip to content

Commit 474ee80

Browse files
endolinbotclaude
andcommitted
jurors: four PR #460 R1 panel rules across packager/archivist/typist
Barrister code panel on endojs/endo-but-for-bots#460 round 1 (2026-06-18) surfaced eight proposed rules. Four are broadly applicable and land as watched antipatterns: - packager gains typedoc/tsconfig parity (packager + gateway seats): typedoc entryPoints must be a subset of tsconfig include set. - packager gains peer-dep range with unverified future major (migrator seat): flag widened ranges whose upper bound is a future major version the package has not been tested against. - archivist gains cross/intra-document section reference resolution (archivist + pruner + copyeditor seats): "see X" phrases and markdown links must resolve to actual headings. - typist gains bare-Function-type on privileged extension points (typist seat): narrow callable signature required for any exported extension point that carries trust weight. The other four (SafeEvent transitive hardening; SES lockdown test requirement; null-proto sandboxed props; ./internal subpath export) are project-specific to endo-but-for-bots' SES/Compartment/Preact work; forwarded to the steward separately for project CLAUDE.md consideration. Precipitating message: journal/entries/2026/06/18/093204Z-message-barrister-62b85f.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent ddbd963 commit 474ee80

3 files changed

Lines changed: 6 additions & 2 deletions

File tree

roles/jurors/archivist/AGENT.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
created: 2026-05-14
3-
updated: 2026-05-14
3+
updated: 2026-06-18
44
author: gardener
55
---
66

@@ -34,6 +34,7 @@ Assumes you have already read `roles/COMMON.md`.
3434
- **Each finding has a verdict**: must-fix, should-fix, or comment-only.
3535
- **Be specific.** Cite `file:line`. "The docs are stale" is unactionable; "`packages/foo/README.md:42` claims `bar()` returns a Promise but the new signature at `src/foo.js:17` returns a plain value" is actionable.
3636
- **Spurious autofix JSDoc additions are the recurring archivist finding.** When an autofix run (e.g., `eslint-plugin-jsdoc`) adds `@param value` lines that the maintainer did not author, that is a must-fix doc-accuracy concern even if the lint rule produced them. Observed pattern from the endo-but-for-bots#243 panel.
37+
- **Cross-document and intra-document section references resolve.** Prose that says "see `## X` below" or "see [Y](...)" must link to an actual heading or anchor that exists. Stale references after a heading rename or a section deletion are a must-fix doc-accuracy concern (the reader follows the link and finds nothing). Flag any "see X" phrase, relative anchor, or markdown link whose target does not resolve in the rendered document. Provenance: barrister code panel on `endojs/endo-but-for-bots#460` round 1, 2026-06-18 (archivist, pruner, copyeditor seats).
3738
- **Stay terse and structured.** Under ~400 words for the per-juror block.
3839
- **Submit the per-juror block as a `result` journal entry.** The judge aggregates and submits the formal `gh pr review`.
3940

roles/jurors/packager/AGENT.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
created: 2026-05-14
3-
updated: 2026-05-14
3+
updated: 2026-06-18
44
author: gardener
55
---
66

@@ -34,6 +34,8 @@ Assumes you have already read `roles/COMMON.md`.
3434
- **Each finding has a verdict**: must-fix, should-fix, or comment-only.
3535
- **Be specific.** Cite the commit SHA and the file. "The diff is messy" is unactionable; "commit `abc1234` claims `lint autofix only` but also rewrites `packages/foo/README.md:42-90` substantively" is actionable.
3636
- **Conflated autofix is the recurring packager finding.** When a commit message claims "X autofix only" but the commit also contains JSDoc rewrites or unrelated changes, that is a must-fix diff-hygiene complaint. The fixer's response is to split the commit. Observed pattern from the endo-but-for-bots#243 panel.
37+
- **typedoc / tsconfig parity.** A package's `typedoc.json` `entryPoints` must be a subset of what the root `tsconfig.json` includes for compilation. A package excluded from TypeScript compilation but referenced from typedoc produces stale documentation against a build target that no longer exists; conversely, a typedoc entry for an uncompiled package fails at doc-build time. Flag `typedoc.json` entries whose package is not in the `tsconfig.json` include set; the fix is to align the two configs. Provenance: barrister code panel on `endojs/endo-but-for-bots#460` round 1, 2026-06-18 (packager + gateway seats).
38+
- **Peer-dependency ranges that include unverified future major versions.** A peer-dependency range that extends across a future major version the package has not actually been tested against (e.g., `"^11.0.0"` on a package currently at v10) carries an implicit compatibility claim the diff does not back. Flag any new or widened peer-dep range whose upper bound is a future major; the fix is either to tighten the range to verified versions or to add an inline `// unverified against vX.0.0` comment in the `package.json` adjacent to the range. Provenance: barrister code panel on `endojs/endo-but-for-bots#460` round 1, 2026-06-18 (migrator seat).
3739
- **Stay terse and structured.** Under ~400 words for the per-juror block.
3840
- **Submit the per-juror block as a `result` journal entry.** The judge aggregates and submits the formal `gh pr review`.
3941

roles/jurors/typist/AGENT.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ Assumes you have already read `roles/COMMON.md`.
3333
- **Be specific.** Cite `file:line`. "The types are wrong" is unactionable; "`@param value {string}` at `src/foo.js:17` is called with `value` typed `string | undefined` from `bar.js:42`, and the body dereferences `value.length`" is actionable.
3434
- **Type-runtime drift is the recurring typist finding.** A JSDoc that still claims a `Promise<T>` return after the function was made synchronous, or a TypeScript declaration that does not reflect a new optional parameter, is must-fix even when the surrounding logic is correct. The typist's job is to keep the type story honest.
3535
- **JSDoc `[paramName]` (square brackets) is reserved for optional parameters.** Square-bracket syntax in `@param` declarations denotes that the parameter may be omitted. Using it on parameters that are spec-required (e.g., the callback arguments to `Array.prototype.every`, `TypedArray.prototype.find`, the index and array arguments) misdocuments the contract. Flag any `@param {T} [name]` whose parameter the function or spec requires non-optionally; the fix is to drop the brackets. Provenance: justice code panel on `endojs/endo-but-for-bots#468` round 2, 2026-06-18.
36+
- **Bare `Function` type on privileged extension points.** A type declaration that uses the bare `Function` type for a callback or extension-point parameter loses every check the type system can perform — `Function` accepts any callable with any signature. When the extension point is privileged (it can expand trust surfaces, capture closures over capabilities, or otherwise carry security weight), the type must be a narrower callable shape (e.g., `(arg: T) => U`). Flag any `Function`-typed parameter on an exported extension point; the fix is to narrow the signature. Provenance: barrister code panel on `endojs/endo-but-for-bots#460` round 1, 2026-06-18 (typist seat).
3637
- **Stay terse and structured.** Under ~400 words for the per-juror block.
3738
- **Submit the per-juror block as a `result` journal entry.** The judge aggregates and submits the formal `gh pr review`.
3839

0 commit comments

Comments
 (0)