Memoria Permanent Engineer
Kashira conserva el contexto entre sesiones registrando decisiones, arquitectura, errores, convenciones, comandos, investigación y cambios importantes.
Project Memory
Durable engineering notes Kashira carries across sessions: decisions, bugs, conventions, architecture, and important research.
Prevent duplicate invite acceptance
BUGWebhook retries could accept the same organization invite twice. Acceptance now uses the persisted invite event ID as its idempotency key and returns the existing membership on a repeat request.
Open detailsClose detailsDURABLE IMPLEMENTATION CONTEXTThe existing event ID is the durable boundary between delivery retries and membership creation. Do not introduce a second idempotency identifier unless the upstream event format changes.
Prevent duplicate invite acceptance
BUGWebhook retries could accept the same organization invite twice. Acceptance now uses the persisted invite event ID as its idempotency key and returns the existing membership on a repeat request.
Open detailsClose detailsThe existing event ID is the durable boundary between delivery retries and membership creation. Do not introduce a second idempotency identifier unless the upstream event format changes.
Keep invite permissions server-authoritative
DECISIONThe client may hide unavailable actions, but the API remains responsible for checking organization role, seat availability, and existing membership before an invite is created.
Open detailsClose detailsDURABLE IMPLEMENTATION CONTEXTUI state is treated as guidance only. Authorization, capacity, and membership checks must run inside the invite transaction so alternate clients follow the same rules.
Keep invite permissions server-authoritative
DECISIONThe client may hide unavailable actions, but the API remains responsible for checking organization role, seat availability, and existing membership before an invite is created.
Open detailsClose detailsUI state is treated as guidance only. Authorization, capacity, and membership checks must run inside the invite transaction so alternate clients follow the same rules.
Return field errors in the shared API shape
CONVENTIONInvite validation uses the same field-error response as the rest of the admin API, allowing the existing form components to render errors without route-specific handling.
Open detailsClose detailsDURABLE IMPLEMENTATION CONTEXTNew admin endpoints should use the shared validation error helper and return field names that match the client schema. Avoid adding endpoint-specific error envelopes.
Return field errors in the shared API shape
CONVENTIONInvite validation uses the same field-error response as the rest of the admin API, allowing the existing form components to render errors without route-specific handling.
Open detailsClose detailsNew admin endpoints should use the shared validation error helper and return field names that match the client schema. Avoid adding endpoint-specific error envelopes.
Memoria duradera para decisiones y acciones que el código por sí solo no explica.
- Conservar decisiones y sus motivos
- Encontrar arquitectura, convenciones e incidentes
- Mantener contexto útil entre sesiones