Permanent Engineer Memory
Kashira carries engineering context across sessions by recording decisions, architecture, bugs, conventions, commands, research, and important file changes in a project journal you can inspect.
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.
Durable project memory for the decisions and actions that code alone cannot explain.
- Preserve decisions and their rationale
- Keep architecture, conventions, and incidents findable
- Carry useful project context across sessions