people twice / multiple roles).contact-already-on-job answers a single global question: among everyone on the job (_conditionScopePeople), does any contact identity appear more than once? Identity comes from resolveContactIdentity (contact id, else normalized email) in attik-backend/src/util/functions/actionFlows/recipientIdentity.ts.attik-backend/src/util/functions/actionFlows/attributePathResolver.ts counts duplicates across _conditionScopePeople || inspection.people, so it does not mean “this To recipient is duplicated.”jobForRecipient with people: [toPerson] and _conditionScopePeople: jobData.people in attik-backend/src/util/functions/emailBuilder/renderEmail.ts, which is correct for role-scoped attributes—but contact-already-on-job still reads the full list, so every recipient sees the same true/false when anyone on the job is duplicated.attik-frontend/src/components/conditions/templatingData.ts as a boolean with no extra parameters—UI/schema work may be needed if the behavior becomes configurable.attik-backend/src/util/functions/actionFlows/attributePathResolver.ts — contact-already-on-job resolver and how it uses _conditionScopePeople vs people for recipient-scoped evaluation.attik-backend/src/util/functions/emailBuilder/renderEmail.ts — sendToRecipient / jobForRecipient shape (already passes _conditionScopePeople); any new attribute must compose cleanly here.attik-backend/src/util/functions/actionFlows/conditionsResolver.ts (and related tests e.g. tests/unit/email.blockConditions.test.ts, tests/unit/attributePathResolver.test.ts) — ensure evaluation semantics and tests cover recipient-scoped duplicate vs job-wide duplicate.attik-backend/src/util/functions/emailBuilder/backendTemplatingData.ts — registry for template/condition keys if a new key is added alongside the existing one.attik-frontend/src/components/conditions/templatingData.ts — register display metadata, conditionType, and any enum or help text so authors understand global vs current-recipient (or similar) semantics.contact-already-on-job (risk: changes meaning for existing flows) vs add a new condition (e.g. current contact duplicated on job) with contact-already-on-job unchanged for backward compatibility.resolveContactIdentity appears in more than one people row on the job” while evaluating for that recipient only—regardless of which roles those rows are?_conditionScopePeople (e.g. attik-backend/src/util/functions/actionFlows/renderSms.ts) if those paths evaluate the same attributes.attik-backend/src/util/functions/actionFlows/attributePathResolver.ts (contact-already-on-job)attik-backend/src/util/functions/emailBuilder/renderEmail.ts (jobForRecipient, _conditionScopePeople)attik-backend/src/util/functions/actionFlows/recipientIdentity.ts (resolveContactIdentity)attik-frontend/src/components/conditions/templatingData.tstests/unit/email.blockConditions.test.ts, tests/unit/attributePathResolver.test.tsPlease authenticate to join the conversation.
Completed
Main App
2 months ago
Linear
Get notified by email when there are changes.
Completed
Main App
2 months ago
Linear
Get notified by email when there are changes.