{
 "claim": "Every combination of four choices a caller can make before setPasswordProtection(project, user, password, { manage, plan }), type-checked. 60 combinations; 3 compile: the honest one, and two forgeries (an 'as' assertion to the proof type, and 'null as any'). The forgeries are what the lint preset exists for.",
 "method": "Generated one name() callback per combination from the gdp-ts README/examples pattern (src/index.ts copied verbatim from rauchg/gdp-ts at ebd0af9; proofs, policies and the sensitive function re-declared in one file following examples/basic). Ran tsc 5.9.3 with the repo bench's compiler options (strict, es2022, nodenext). Errors were attributed to a combination by line range; tsc reports the first failing argument of a call, so a raw id masks the proof errors behind it.",
 "source": "https://github.com/rauchg/gdp-ts",
 "captured": "2026-10-06",
 "note": "TypeScript 5.9.3, not the 7.0 the repo's own snapshots use; the error codes match the repo's snapshot for the same mistakes, the type-parameter letters can differ.",
 "columns": [
  {
   "key": "role",
   "label": "role check",
   "align": "left"
  },
  {
   "key": "nulls",
   "label": "null result",
   "align": "left"
  },
  {
   "key": "plan",
   "label": "plan check",
   "align": "left"
  },
  {
   "key": "project",
   "label": "project arg",
   "align": "left"
  },
  {
   "key": "tsc",
   "label": "tsc",
   "align": "left"
  },
  {
   "key": "first",
   "label": "first error",
   "align": "left",
   "mono": true
  }
 ],
 "rows": [
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{}' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<unknown, ProjectId>'."
  },
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ plan: PlanIncludesPasswordProtection<M>; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O>' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "no role check",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<O, ProjectId>'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{}' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<unknown, ProjectId>'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<M> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "no role check",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<O, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M>' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M>' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M>' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | UserHasProjectAccess<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canViewProtection (view)",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ manage: UserIsProjectAdmin<N, M>; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "compiles",
   "first": "\u2014"
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O>' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'UserIsProjectAdmin<N, M> | null' is not assignable to type 'CanManageProtection<N, M>'."
  },
  {
   "role": "canManageProtection (admin)",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ manage: CanManageProtection<N, M>; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "compiles",
   "first": "\u2014"
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O>' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ manage: CanManageProtection<N, M>; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<M> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: {} as CanManageProtection",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ manage: any; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<unknown, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "compiles",
   "first": "\u2014"
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O>' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<O, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "named",
   "tsc": "error",
   "first": "TS2345: Argument of type '{ manage: any; }' is not assignable to parameter of type '{ manage: CanManageProtection<N, M>; plan: PlanIncludesPasswordProtection<M>; }'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "no plan check",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<unknown, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<M> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "plan checked on this project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<M, ProjectId>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "named",
   "tsc": "error",
   "first": "TS2322: Type 'PlanIncludesPasswordProtection<O> | null' is not assignable to type 'PlanIncludesPasswordProtection<M>'."
  },
  {
   "role": "forged: null as any",
   "nulls": "not handled",
   "plan": "plan checked on the other project",
   "project": "raw id",
   "tsc": "error",
   "first": "TS2345: Argument of type 'ProjectId' is not assignable to parameter of type 'Named<O, ProjectId>'."
  }
 ]
}