Current authoritative state
Protected shipped truth is exact main@a40b9489665bed7d95af619a6079b9c51cab299a; remote collaborator counting still accepts malformed identifiers and directly reads caller-controlled properties. Closed Draft #167 is historical evidence only.
Issue-specific Draft PR #408 / codex/remote-collaborator-id-validation-309 owns this repair. It is stacked on #407 at exact base 7a7093b92616296be6b4c3c7ce990880d12f8271; current exact head is 55965a8d69c51801bc1b56a8293763a8fc1a0ec2. This is active-PR behavior, not protected-main shipped truth.
Required behavior
Remote user and id are accepted only as own enumerable data properties; accessors, inherited/non-enumerable values, primitives, nulls, and reflection-hostile shapes are skipped without executing caller code or aborting later entries. Identifier sources above 1,024 UTF-16 code units are rejected before trim. In-bound values are trimmed, nonblank, nonnumeric, and at most 80 Unicode code points using the allocation-free public bound from #407.
Remote awareness remains untrusted presentation data and never authorization evidence. Provider transport/lifecycle, authorization, tenancy, persistence, credentials, deployment, retention, migration, model policy, and durable audit remain host-owned.
Exact-head evidence
Test-only 4c0591522ec39d608450690f5e05937ca87a53f4 reproduces 5 failures / 1 passing hostile-shape check. Current GREEN head passes:
- focused count/containment suite: 3 files / 48 tests;
- full TypeScript suite: 161 files / 907 tests;
- statement, branch, function, and line coverage: 100%;
- typecheck, build, and packed-package consumers.
Repository-local success is not protected integration, independent approval, or release proof. Keep #408 Draft until its dependency chain integrates or is otherwise resolved, and while #118 owns the protected release boundary. Before lifecycle action, refetch exact head/base, reviews, threads, live rules, and every applicable workflow; do not transfer #167 evidence, self-approve, weaken gates, or fabricate release identity.
Current authoritative state
Protected shipped truth is exact
main@a40b9489665bed7d95af619a6079b9c51cab299a; remote collaborator counting still accepts malformed identifiers and directly reads caller-controlled properties. Closed Draft #167 is historical evidence only.Issue-specific Draft PR #408 /
codex/remote-collaborator-id-validation-309owns this repair. It is stacked on #407 at exact base7a7093b92616296be6b4c3c7ce990880d12f8271; current exact head is55965a8d69c51801bc1b56a8293763a8fc1a0ec2. This is active-PR behavior, not protected-main shipped truth.Required behavior
Remote
userandidare accepted only as own enumerable data properties; accessors, inherited/non-enumerable values, primitives, nulls, and reflection-hostile shapes are skipped without executing caller code or aborting later entries. Identifier sources above 1,024 UTF-16 code units are rejected before trim. In-bound values are trimmed, nonblank, nonnumeric, and at most 80 Unicode code points using the allocation-free public bound from #407.Remote awareness remains untrusted presentation data and never authorization evidence. Provider transport/lifecycle, authorization, tenancy, persistence, credentials, deployment, retention, migration, model policy, and durable audit remain host-owned.
Exact-head evidence
Test-only
4c0591522ec39d608450690f5e05937ca87a53f4reproduces 5 failures / 1 passing hostile-shape check. Current GREEN head passes:Repository-local success is not protected integration, independent approval, or release proof. Keep #408 Draft until its dependency chain integrates or is otherwise resolved, and while #118 owns the protected release boundary. Before lifecycle action, refetch exact head/base, reviews, threads, live rules, and every applicable workflow; do not transfer #167 evidence, self-approve, weaken gates, or fabricate release identity.