Skip to content

M2: naming/curation wall verification batch (C17 C18 C19 C20) #22

Closed

Description

@Blind-Striker

Source: multi-agent review of PR #16, all UNVERIFIED-FINDER — verify first, then fix what holds. 2026-08-13. M-anchor: M2 — the List* verb rule already lands in OperationNamePolicy and curation grows with the first breadth batch; verify these inside that work.

  • C18 (highest priority of the four — public generated naming): OperationNamePolicy.Subject filters every post-group segment equal to the HTTP method (OperationNamePolicy.cs:44-49) — a value filter, not a structural verb position. A future operation whose resource subject legitimately contains the verb word loses that segment (v2.cache.get.entry → GetEntryAsync) and can collide with another generated name. Fix direction: strip only the structural verb position; pin fixtures where a later segment equals the verb.
  • C17: mechanically derived payload names never pass through identifier validation — ValidateEnvelopeNames covers curated overrides only (CurationValidator.cs:128-150); binder checks only the response-spine blacklist (OperationPlanBinder.cs:345-356). Note: the finder's ToPascalCase("2fa") example is stale (CSharpNamePolicy.cs:23-26 prefixes _), but keyword/punctuation/empty-transform cases remain unvalidated. Fix: one identifier validator after derivation for every final payload name, curated or mechanical; coordinate with C20.
  • C19: ReservedPayloadNames is a four-string blacklist (Error/IsError/RawBody/Status, OperationPlanBinder.cs:17,345-356); record-generated/inherited members (PrintMembers, Equals, GetHashCode) are unguarded — verify against the exact emitted record shape, then replace the ad hoc list with a centralized response-member collision rule tested as a whole.
  • C20: CSharpNamePolicy.IsValidIdentifier is a char predicate only (CSharpNamePolicy.cs:37-45) — C# keywords (class, event, namespace) pass and reach emitters bare. Fix: Roslyn keyword classification; fail-closed posture favors refusal over escaping. Tests across reserved + contextual keywords per curated name category.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentSpecified enough that the work is mechanical

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions