Awesome Reviewers

When designing or evolving API surfaces (HTTP headers, RPC calls, and event envelopes), treat them as round-trip contracts: don’t silently change the meaning of identifiers/fields, and don’t let newly introduced fields disappear across layers.

Rules 1) Preserve meaning or rename the contract

2) Guarantee field propagation across projections

3) Make API parameters self-describing

Examples

// GOOD: rename to match semantics headers[‘X-Task-ULID’] = ulid; // or revert to actual task id headers[‘X-Task-ID’] = taskId;


- Event field “goes in but never comes out” (fix by forwarding):
```ts
// Server projector: include displayPrompt in the outgoing envelope
pending_prompt_submitted: ({ displayPrompt, ...rest }) => ({
  ...rest,
  displayPrompt,
});

// Runtime host conversion: carry it through to the core event
const coreEvent = {
  ...serverProjection,
  displayPrompt: serverProjection.displayPrompt,
};

// GOOD load({ refresh: true, userInitiated: true }); ```

Test checklist (practical)