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.
In Progress
Main App
16 days ago
Linear
Get notified by email when there are changes.
In Progress
Main App
16 days ago
Linear
Get notified by email when there are changes.