CDP — Sprint 2 Goals (2026-Q3)
Sprint window: 2026-07-21 → 2026-08-04 (2 weeks)
Sprint goal: ship Customer Segmentation by 2026-07-28; drive Mention User toward 2026-08-14; Bulk Export ahead of Team Owner; land engineering-bucket Expedite A5-A8; close Sprint 1's carryover findings.
Provisional: rederive queues from Sprint 1's close pass before 2026-07-21 — pass-10 (2026-07-17) was cited at initial draft time; pass-11 is the actual close pass (2026-07-21, final — F-5 resolved, Team Owner BE-complete / FE Ready to Deploy). Team Owner's rows below are reconciled against pass-11; every other lane in this doc still reflects pass-10 and needs a full
sprint-plannerrederivation before being treated as current.
Delivery / Program Management — team-level, cross-initiative. A sprint is a derived render of the roadmap Priority table × per-discipline
implementors:× each initiative'srfcs/*.task-breakdown.mdreadiness ×capacity.md, plus the sprint envelope above. It is not a source of truth for priority, effort, or staffing — those stay canonical in the roadmap / README / capacity. See CLAUDE.md "Sprint layer".
Approach: unchanged from Sprint 1 — priority-ordered backlogs per engineer, not capacity-boxed.
Each person works their list top to bottom; a genuinely blocked item (external dependency,
governance gate, missing design/spec — not "no time left") is skipped and circled back once the
blocker clears. There is no man-day ceiling in this plan — effort figures live in
../capacity.md and each initiative's task-breakdown for sequencing context only.
Source: the ## Priority table in ../roadmap.md, reconciled against each
initiative's rfcs/*.task-breakdown.md, and Sprint 1's 2026-07-17 pass-10 findings ledger
for what has actually shipped/merged since the roadmap's own progress cache was last refreshed.
This is a continuation, not a restatement. No priority, effort, or staffing is re-declared here
— see ../roadmap.md / ../capacity.md for canonical figures.
Per sprint doctrine, nothing carries over by default: every row below is re-derived from the
current roadmap rank + each initiative's remaining task-breakdown work (cited to pass-10 where
corroborated, flagged TBD at close where Sprint 1's own progress evidence doesn't pin an exact
task position). QA defaults to Hendry; Izzul is backup only for timeline clashes or extra support
(roadmap sequencing policy, rule 4).
How to point your AI agent at this plan
This file is written to be handed to a coding agent as-is. Copy-paste brief:
Read
cdp/delivery/sprints/2026-07-21-sprint-02.md. Find the section## <my name>— that table is my priority-ordered sprint queue. Start at item #1 that is not marked Blocked. Before writing any code for an item, read (in order) its task-breakdown, its RFC, and its PRD from the Initiative index table — the task-breakdown defines the task ids/order referenced in my queue, the RFC defines the design, the PRD's Section-8 story tables define the acceptance criteria. Work the tasks in the stated order; when a task is done per its breakdown acceptance, move to the next. If I hit a blocker listed under "The real blockers", stop that item, note it, and move to my next Ready item.
Ground rules for the agent (and the human driving it) — identical to Sprint 1:
- The task-breakdown is the work contract. Task ids in the queue tables refer to the linked
*.task-breakdown.md, never to Jira ticket numbers. Read it first, every time. - Done means the breakdown's acceptance for that task is met — code merged behind the
stated flags/contracts, and the PRD's composite AC ids (
<STORY-ID>/AC-n) it maps to are satisfied. QA items are done when the covered ACs have executed test evidence. - Never renumber or invent AC/story ids — they key Jira tickets and test specs.
- Effort numbers are context, not caps. Only the named blockers below justify skipping an item.
- Blocked ≠ idle. Do non-gated prep where noted, otherwise skip cleanly and record what you're waiting on.
- Do not touch Jira automation. Never trigger the
jira-syncpipeline. - Cross-person handoffs: if your task unblocks someone else's queue, say so in your status update the day it merges.
Initiative index (agent lookup table)
All paths are relative to this file. Priority ranks come from the roadmap ## Priority table —
unchanged since the 2026-07-10 reprioritization (no reorder this window).
| Pri | Initiative (Epic) | Task breakdown | RFC | PRD |
|---|---|---|---|---|
| P1 | Customer Segmentation (TF-2544) | FE breakdown · BE breakdown | fe rfc · be rfc | basic-attributes · use-case-activities · anchor |
| P2 | Mention User in CDP Notes (TF-3184) | breakdown | rfc · review | prd |
| P3 | Export Customer Data with Layout (TF-3181) | breakdown | rfc · review | prd |
| P4 | Team Owner Field & Team Permission (TF-3185) | BE breakdown — F-5 residual, see status | rfc · review | prd |
| P5 | Legacy Migration: CRM Notes → CDP (TF-3183) | breakdown | rfc · review | prd |
| P6 | Legacy Migration: CRM Activity Logs → CDP (TF-3182) | breakdown | rfc · review | prd |
| P7 | Create Ticket & Auto-Associate from CDP (TF-3359) | web breakdown | web rfc · review | web · mobile · anchor |
| P8 | Customer Event-Based Engine — CEBE (TF-3302) | none — no RFC yet; F-4 ESCALATED, see blockers below | — (RFC not authored) | core-infra · marketing · anchor |
| Adhoc lane | CDP 26Q3 Engineering Initiatives (TF-3500, bucket) | — (unsized) | — (no RFC per story) | README tracker |
| Adhoc lane | 26Q3 CDP Adhoc (TF-3477, bucket) | — (unsized) | — (no RFC per story) | PRDs · README tracker |
Not queued this sprint (excluded deliberately, not an oversight — see Deviations and
Blockers): Multi-BSUIDs (P9, past-quarter target, no DRI/timeline, pending shipped/slipped/closed
decision); PII Encryption — Contact Service (P10, ranked last pending a PM priority call, no CDP
implementor assigned); CDP Contact Enrichment (P11, target_quarter: TBD — not yet agreed for
26Q3); Customer Health Score (P12, target_quarter: TBD — not yet agreed for 26Q3); and Create
Ticket & Auto-Associate (P7) Mobile track for Alfi (PM/TPM defer-or-expand decision still
unresolved from Sprint 1 — Alfi is 11 days / 1.46 load over capacity, the third Mobile initiative
in his queue without a lane).
Each initiative folder also has a README.md (DRI, jira_epic, qa_lane) and
delivery/timeline.md (dependencies & gates) — consult them when a row's status here is ambiguous.
Per-engineer queues
Each person works their list top-to-bottom; a genuinely blocked item (external dependency, governance gate, missing design/spec — not "no time left") is skipped and circled back once the blocker clears. Queue order mirrors the roadmap Priority rank unless the item appears in "Deviations from roadmap priority" below.
Ghozi (BE)
Agent brief: finish the 🔴 Expedite A7 (TF-3526, chat_data back-sync) first — the
DefineTarget duplicate-contact fix must land before the webhook is re-enabled
(Expedite log). Then Export #2; Team Owner's
BE core (all 12 TEAM-S stories) already shipped in Sprint 1 (pass-11
close —
status) — do not
rebuild it; #3 is now backfill-job + confirmation work against the now-existing breakdown, not
breakdown authoring. The Export merge opens Hendry QA #3. Also owns A5's Phase-3
chat-producer coordination (#5, gated — see row) and the adhoc bucket's A6 placeholder (#7).
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE for A7 (TF-3552/TF-3526, 🔴 Expedite) | CDP-side of the chat_data back-sync (Qontak One): ContactSyncRequest + DefineTarget qontak_customer_id lookup fix (land before the chat squad re-enables the webhook), coordinate the hub_core flag/payload side → prd | 🔴 In Progress — pulled 2026-07-21 (Expedite log) |
| 2 | Export Customer Data with Layout (TF-3181, P3) | Close Tasks 2.1–2.5, then 2.7–2.8 | Ready — core in testing (pass 10) |
| 3 | Team Owner Field & Team Permission (TF-3185, P4) | Confirm chunk 6 fallback/events actually landed (code check vs TF-3488, which only evidences the flag gate in its description); execute the backfill job TF-3548 (To Do); size the task breakdown to close F-5's residual | Ready after #2 — BE core already Done pass 11 (status); 08-31 does not override P3 (decision 0002) |
| 4 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE for A4 (UUID consolidation, TF-3499) | Re-home tracker from TF-3477 → TF-3500 (already done 2026-07-14); close Story TF-3504 once Hendry's Lane-B QA gate passes and flip A4 → done (rollup 1/4) | 🟡 In-review close — pull-in fill, only when #2/#3 are between items |
| 5 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE-Chat for A5 (Story pending mint, 🔴 Expedite, reclassified 2026-07-21) | Coordinate with the chat/omnichannel producer team to stop duplicating source into custom_fields (RFC's Phase 3, cross-team ask) — Julio Jeffer owns the contact-service side (Phases 0-2) in parallel → rfc | Not startable yet — gated on Jeffer's #2 shipping + a bake period, per the RFC's sequencing note; not a capacity/priority block, so its position here doesn't change once unblocked |
| 6 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE for A1 (Go bump, BIF-keyed TF ticket TBD) | Standard, pull-in fill — chase when #2's Export BE core has converged and #3 is between sub-tasks | Backlog — pull-in fill only, behind #5 |
| 7 | 26Q3 CDP Adhoc (TF-3477, Adhoc lane) — BE for A6 (TF-3609, Sticky Agents set/remove assignment support, Chat ask — 🔴 Expedite) | Intake placeholder only — Chat/Omnichannel needs CDP support for set/remove assignment actions; nothing beyond that one sentence is scoped yet → rfc | Not real work yet — classification unconfirmed, see tracker |
Berlianto (BE)
Agent brief: Mention User's BE half is this sprint's top BE priority (P2, 08-14 — p50 08-10 / p85 08-19, the tightest deadline in the sprint). Finish the BE chain first (core near-merge per pass 10); unblocking P5 (Legacy Migration: CRM Notes) downstream is the largest single portfolio-risk move this window can make. P5 build-ahead resumes in parallel — the CRM extraction client (Task 2.3) continues against the stub contract; an end-to-end run stays blocked on P2 shipping + the Legacy CRM Squad's extraction endpoint (OQ-7).
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Mention User in CDP Notes (TF-3184, P2) | Close TF-3328 + TF-3329 (READY TO MERGED) → finish TF-3330 (notification client, In Progress) → sweep Tasks 2.4–2.6 for any residual wiring | Ready — 10 BE days against the 08-14 hard date; resuming mid-stream, near-Merge on the core chain |
| 2 | Legacy Migration: CRM Notes → CDP (TF-3183, P5) | Task 1.1 → 1.2 (data model + job constants → HTML normalizer) → Task 2.1 → 2.2 → 2.3 (contact/owner resolver → attachment processor → CRM extraction client, stub-contract) — build progresses against the stub; do not enable end-to-end runs | Buildable now, do not enable end-to-end runs — P5 is blocked on P2 shipping and on the Legacy CRM Squad's org-scoped extraction endpoint (OQ-7); building against the stub is explicitly sanctioned by the task-breakdown's own confidence note |
| 3 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE co-owner for A1–A4 | Co-own the EOL items (A1 Go 1.25→1.26, A2 Alpine 3.18→3.21/3.22, A3 gocraft/work migration, A4 satori/go.uuid close) — 🟡 Standard / ⚪ Intangible pull-in fill per the bucket's pull rule; never ahead of ranked work | Backlog — pull-in fill only when #1/#2 are between items; A2 is 🔴 Expedite (may preempt, WIP ≤2, logged in the bucket ## Expedite log) |
Julio Jeffer (BE)
Agent brief: five lanes, strict priority + hard-date order. Segmentation's 07-28
commitment is the nearest deadline in the whole sprint — close its remaining BE scope first
(pass-07: datamart hardening TF-3507/3508/3511 all READY TO DEPLOY; F-8 asks the DRI to confirm
these are in-scope hardening and retro-cost them — do not silently absorb them into the P1 scope).
Directly under it sit two 🔴 Expedite items — A5 (now outranks A6, see Adhoc interrupts below)
and A6 (TF-3517, crm_data_id back-sync). Pull A5 first: Phase 0 (TF-2991, zero-code) then
contact-service execution (BE CDP, Phases 0-2); then A6 (settle transport with CRM). WIP ≤2 — A7
is already in flight, so only one of A5/A6 can also run at once. See
A5 RFC /
A6 PRD. Then
Legacy Migration Activity Logs (09-07). CEBE (P8) has no RFC yet — F-4 ESCALATED open 7 passes
with zero board movement; the only startable work is authoring the RFC (the 5-day slice Jeffer
already sized). A third sprint without that RFC filed is itself the decision to deprioritize CEBE —
make the call deliberately, not by default.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Customer Segmentation (TF-2544, P1) | Close BE hardening TF-3507/3508/3511 (READY TO DEPLOY → merged) and any remaining buffer-bugfixing scope (4 confirmed BE days, mostly landed); flag F-8 retro-cost to DRI before treating as fully done | Ready — hard dates 2026-07-28 (10 days inside this window); the P1 commitment's remaining BE scope is finishing, not starting |
| 2 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE-CDP for A5 (Story pending mint, 🔴 Expedite, reclassified 2026-07-21; prioritized ahead of A6, 2026-07-21) | Own the contact-service execution surface (Phases 0-2: shared resolver, Family A wiring, serializer/search-filter fixes, self-healing, SourceName persistence) — Ghozi owns the parallel Phase-3 chat-producer coordination ask once this ships and bakes → rfc | 🔴 Expedite — pull after #1, ahead of #3, may preempt #4/#5 (Expedite log); WIP ≤2 with A7 already in flight — see agent brief |
| 3 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE for A6 (TF-3551/TF-3517, 🔴 Expedite) | CDP-side of the crm_data_id back-sync for CDP-originated contacts (Qontak One): agree transport + payload contract with the CRM squad (webhook-reuse precedent per TF-3526), then build the ingestion/matching side → prd | 🔴 Expedite — pull after #1/#2, may preempt #4 (Expedite log) |
| 4 | Legacy Migration: CRM Activity Logs → CDP (TF-3182, P6) | Task 1 already done + code-corroborated (PR #855/#858); Task 2 (TF-3465) READY TO DEPLOY → close. Continue Tasks 3 → 4 → 5 → 6 → 8 → 9 (contact finder → schema transformer → MigrateBatch service → trigger/status/rollback/Phase-A gate → consumer/worker → sync watermark → association-log enricher). TPM action required (F-1 STILL OPEN pass 7): add TF-3466–3472 to the new Jira sprint before this window opens — they exist as tickets but were never sprint-scoped in Sprint 1 | Ready — 17 confirmed BE days; build proceeds, running Stage 0 stays gated on CRM's read-only DSN access + passing query plan (Gate A/B) |
| 5 | Customer Event-Based Engine — CEBE (TF-3302, P8) | Author the RFC & standardized design (the 5-day slice Jeffer already sized). F-4 ESCALATED: file the Jira Task this sprint or record explicit not-started in this doc's Deviations — 7 passes with zero movement already | Author-only this sprint — do not start the CTWA+Broadcast or customer-change/segments-event work (the other 10 of his 15 days) until the RFC exists and is reviewed; see blockers below |
| 6 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — BE co-owner for A1–A4 | Co-own the EOL items — 🟡 Standard / ⚪ Intangible pull-in fill when #1–#5 are blocked or between items; A2 (Alpine EOL) is 🔴 Expedite (security — no more upstream fixes) and may preempt ranked work when pulled (WIP ≤2, logged in the bucket ## Expedite log) | Backlog — pull-in fill only, behind #5 |
Jovi (FE)
Agent brief: Mention User FE (P2, 08-14) leads — finish the composer/renderer/preview chain so Berlianto's BE merge closes the FE lane for the commitment. New 🔴 Expedite A8 (legacy CRM contact-page guard/redirect) sits directly behind it — pull once Mention User is between items; see row #2 for preemption order. No Story minted; confirm the v1/v2 location + restrict-vs-redirect call (A8 RFC) before starting. Then Export FE (P3), then Create Ticket's web track (P7): Task 1 (gate + UI shell) is unblocked behind an OFF flag; Tasks 2-3 (postMessage contract → fallback associate) are gated on CRM decisions due 2026-07-04, now 17+ days overdue — PM/TPM confirm whether they landed before starting Tasks 2-3. Per-task merge/RTD state: pass 10.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Mention User in CDP Notes (TF-3184, P2) | Close TF-3331 + TF-3382 (RTD → merged, then wire preview card to real user detail — Task 2.8) → Task 2.7 (wire to real APIs, may already be done) → TF-3509 (deleted-user fallback, To Do) | Ready — 9.5 confirmed FE days against the 08-14 hard date; resuming mid-stream |
| 2 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — FE for A8 (pending mint, 🔴 Expedite) | Guard the legacy CRM contact page for Qontak One users who force-navigate its URL — restrict or redirect to CDP /customer/{id} → rfc | 🔴 Expedite — pull once #1 is between items, may preempt #3/#4 (Expedite log — add a row once actually pulled in flight) |
| 3 | Export Customer Data with Layout (TF-3181, P3) | Close TF-3512 (Done + corroborated) → continue TF-3429/3430 (export-history/report, In Progress) → Task 2.6 (wire real POST + error handling + Mixpanel) | Ready — 7.5 confirmed FE days; resuming mid-stream |
| 4 | Create Ticket & Auto-Associate from CDP (TF-3359, P7) — web track | Task 1 (gate + UI shell) unblocked now → Tasks 2 → 3 (postMessage contract → fallback associate) | Task 1 Ready; Tasks 2-3 pending CRM decisions overdue since 2026-07-04 — PM/TPM confirm before starting |
Azani (FE)
Agent brief: Segmentation's 07-28 commitment is the nearest deadline on the team — lead with it per the roadmap's 2026-07-01 correction, confirmed for this sprint. Pass-07 landed Azani's TF-3399 (SegmentStore integration tests) and TF-3400 (SegmentListPage integration tests) Done + code-corroborated 2026-07-15 — the first real FE build progress beyond QA test-case writing. TF-3401 (reachability fields) is Blocked — confirm the block's cause with Julio Jeffer/DRI this sprint: it's the last FE item on the 07-28 commitment's critical path, and Azani has no higher-priority FE work until Team Owner (P4) opens up. Team Owner FE follows, but per Sprint 1's close pass FE Tasks 1–5 (TF-3312–3316) already sit at Ready to Deploy — this is a deploy-gate clear, not a 10-day build.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Customer Segmentation (TF-2544, P1) | Task 2.3 — TF-3401 (reachability fields) is Blocked; unblock + finish it. Highest urgency FE item in this sprint — the 07-28 commitment depends on it | Ready — 3 confirmed FE days against the 07-28 hard date; 2 of 3 already shipped (TF-3399/3400 Done) |
| 2 | Team Owner Field & Team Permission (TF-3185, P4) | FE Tasks 1–5 (TF-3312–3316 — team-owner field UI MpInputTag multi-select, /customers/teams route, per-note permission controls reading level) already Ready to Deploy since Sprint 1's close — clear the deploy gate, do not rebuild; the BE-only task breakdown still has no FE chunk mapping (F-5 residual) — cross-check against the RFC's Detail 2.A/2.C if any FE scope remains beyond these 5 tickets | Ready — deploy-gate clearing, not new build (status) |
| 3 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — FE | No FE-scoped items in the bucket today (A1–A4 are all Backend/Infra — FE column is —). The bucket grows mid-quarter per the How the bucket grows checklist — pull-in fill if a FE-scoped engineering item is appended | Backlog — contingent on a future FE-scoped item being appended |
Wulan Febyazzahra Putri (Bulan) (PD, FE-capable, conditional)
Agent brief: Wulan has no standing CDP capacity allocation. This queue records the live Jira assignment deterministically; it does not infer quarterly availability or committed effort.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Export Customer Data with Layout (Epic linkage missing — F-14) | TF-3550 — [FE] Unable to add field on layout | Jira-observed off-plan assignment — Ready to Test at pass-01; DRI must parent it to the owning executable Epic before it is treated as initiative-planned work |
Alfi (Mobile)
Agent brief: over capacity (load 1.46) across 4 initiatives — see capacity.
Third sprint without resolution. Create Ticket Mobile (P7, 10 d) stays out of
his active queue — the PM/TPM defer-or-expand decision is overdue and must land this window (Sprint
1 blocker 6, open since 2026-07-01). Mention User Mobile is near-finishing; TF-3506 (list-picker
pagination) is Done but out-of-breakdown-scope — DRI must retro-cost or declare out-of-band (F-7).
Per-task evidence: pass 10.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Mention User in CDP Notes (TF-3184, P2) | Close remaining verification items (TF-3292/3293 already Done; confirm any Mobile-side residue from Berlianto's BE notification chain as it merges). F-7 retro-cost decision needed from DRI for TF-3506 (out-of-mention-scope build) | Ready — 10 confirmed days against the 08-14 hard date, near-finishing |
| 2 | Export Customer Data with Layout (TF-3181, P3) | Mobile tap-through routing (OQ-12, optional) | Ready — first shared-capacity claim after Mention User; 5 confirmed days |
| 3 | Team Owner Field & Team Permission (TF-3185, P4) | Mobile rendering of Team Owner field + per-note permission flags (read permission flags per note on CDP/Contact360 notes) | Ready after #2 — 10 confirmed days against the 08-31 hard date; Mobile Squad contract confirmation remains an external dependency |
| 4 | Create Ticket & Auto-Associate from CDP (TF-3359, P7) — Mobile track | Mobile ticket-create and auto-associate flow | Do not start — no Q3 room; defer or add capacity (capacity) |
| 5 | CDP 26Q3 Engineering Initiatives (TF-3500, Adhoc lane) — Mobile | No Mobile-scoped items in the bucket today (A1–A4 are all Backend/Infra — Mobile column is —). The bucket grows mid-quarter per the How the bucket grows checklist — pull-in fill if a Mobile-scoped engineering item is appended | Backlog — contingent on a future Mobile-scoped item being appended |
Hendry (QA, primary)
Agent brief: Start P1 QA, then P2, Export P3, and Team Owner P4; skip both migrations until their gates clear.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | Customer Segmentation (TF-2544, P1) | QA against composite AC ids — close the 07-28 commitment | Ready — 1.5 confirmed days, Lane C |
| 2 | Mention User in CDP Notes (TF-3184, P2) | QA against composite AC ids in the PRD's story tables — major testing push as BE/FE/Mobile code merges (TF-3489 test cases already Done) | Ready — 4.5 confirmed days, Lane B |
| 3 | Export Customer Data with Layout (TF-3181, P3) | QA — first end-to-end integration window opens as Ghozi's BE core (TF-3284–3288) clears testing and Jovi's FE export-history lands | Ready — first shared-capacity claim after P1/P2; 5 confirmed days, Lane B |
| 4 | Team Owner Field & Team Permission (TF-3185, P4) | QA against composite AC ids — BE (all 12 TEAM-S stories) and FE (Tasks 1–5) already Done/Ready to Deploy per pass-11; Alfi's Mobile track (#3) remains the gating piece for full end-to-end QA | Ready after #3 for full coverage, BE/FE portions startable now — 7.5 confirmed days (1.5 man-weeks), Lane B |
| 5 | Legacy Migration: CRM Notes → CDP (TF-3183, P5) | QA — before/after data crosscheck (manual) | Queued, not startable — blocked on P2 shipping + CRM extraction endpoint (OQ-7); prep test plan when Berlianto's stub-contract build allows |
| 6 | Legacy Migration: CRM Activity Logs → CDP (TF-3182, P6) | QA — before/after data crosscheck (manual) | Queued, not startable — blocked on CRM Stage-0 DSN query-plan gate; prep test plan as Jeffer's tasks 3-9 land |
| 7 | Create Ticket & Auto-Associate from CDP (TF-3359, P7) — web track | QA for Task 1 (gate + UI shell) | Ready — 1.5 confirmed days, Lane C (strongest Lane-A candidate); Tasks 2-3 blocked with Jovi's #3 |
| 8 | QA BAU — Automation Coverage & Deployment Support (TF-3521) | Own automation-coverage improvements and partner with Izzul on release verification; create a Jira item for every discrete BAU outcome using the contract below | Ongoing — scheduled deployment verification takes precedence; otherwise pull into gaps between ready initiative work |
Izzul (QA, backup)
Agent brief: per the roadmap sequencing policy (rule 4), Izzul only picks up initiative work if Hendry's timeline clashes or CDP needs extra QA support. The one standing exception is QA BAU — Izzul can lead or back up release verification and automation-coverage work alongside Hendry without a clash trigger, since BAU is ongoing and not tied to a specific initiative's deadline.
No in-scope initiative queue is active for Izzul in this sprint. Izzul can still co-lead release verification and TF-3521 BAU outcomes with Hendry under the standing BAU contract below.
| # | Epic (Jira) | Task | Status |
|---|---|---|---|
| 1 | QA BAU — Automation Coverage & Deployment Support (TF-3521) | TF-3570 and TF-3571 — QA automation outcomes | Active-sprint Jira assignments; intentionally mapped to the off-initiative QA BAU lane, not an initiative queue |
QA BAU Jira-item contract (Hendry & Izzul)
QA BAU is an unsized standing workstream owned by Hendry and Izzul. Create each outcome under the
current Epic and follow the routing, item, and evidence contract in
../qa-bau.md.
Epic-wiring disposition (2026-07-26 pass-03): TF-3521 is the intentional executable container for CDP QA BAU, including TF-3570 and TF-3571. It is deliberately off the initiative map because QA BAU is a team-level standing workstream, not a product initiative. Do not re-parent these issues to an unrelated initiative Epic; reconciliation should treat TF-3521 as the documented off-map exception.
Adhoc interrupts (this sprint)
A7 (Ghozi #1) and A5 (Jeffer #2, now outranking A6 #3) are this sprint's 🔴 Expedite pulls — WIP ≤2, one slot free. See Expedite log for authorization and cap accounting.
- CDP 26Q3 Engineering Initiatives bucket (TF-3500): A2 (Alpine 3.18 EOL → 3.21/3.22) is
classed 🔴 Expedite (security — no more upstream fixes) but is still
backlog, so it preempts nothing yet. If pulled mid-sprint, it enters this running sprint via the mid-sprint Expedite intake gate — authorization lives in the bucket README## Expedite log, it is WIP-capped (≤2 in flight perexpedite_wip_limit), and a preemption's displaced-work note lives in the affected initiative's datedstatus/. Render it in this subsection only when that happens. - Every developer carries a 🟡/⚪ Engineering bucket pull-in-fill row this sprint for the non-Expedite items A1/A3/A4/A9 (Ghozi #4/#6, Berlianto #3, Julio Jeffer #6, Jovi #4, Azani #3, Alfi #5) — A5 and A6 are called out separately above since they're now both 🔴 Expedite, not ordinary pull-in fill. Per the tracker, these pull-in-fill items carry no assigned FE/Mobile work today; Jovi's, Azani's, and Alfi's rows are therefore contingent on an FE/Mobile-scoped assignment landing per the How the bucket grows checklist — they are present so the queue is ready to pull the moment such an item lands, not because there is FE/Mobile work today.
- 26Q3 CDP Adhoc bucket (TF-3477): A2 (billing-duplicate-charge fix) closed in Sprint 1 —
no active Expedite. A4 (Edit Customer null-address edge case) is 🟡 Standard,
in-review— Lane-B QA gate pending (Hendry), then close. - New this sprint — A9 (Team Owner backfill, engineering bucket): added 2026-07-21,
backlog, not pulled by anyone — it isn't startable until CRM migrates its own Team data into USMAN (no committed date). See blocker 3(c) above and the RFC. - A5 reclassified 🟡→🔴 Expedite 2026-07-21, now outranks A6 for Jeffer's pull order — see Expedite log for the justification. FE/Mobile ownership still unconfirmed — see Deviations below.
Deviations from roadmap priority
Anything not listed here is expected to match the roadmap ## Priority rank.
- Bulk Export / Team Owner: no deviation — shared queues follow P3 → P4 (decision 0002).
- Alfi / Create Ticket Mobile: excluded — PM/TPM must defer it or add capacity (capacity).
- Julio Jeffer (BE) — CEBE (P8): queued last and scoped to RFC-authoring only, even though its 15 confirmed days would otherwise put real build work in this sprint. Deliberate: CEBE has no RFC yet, and per CLAUDE.md doctrine an agent must not invent scope from the PRDs alone. F-4 ESCALATED open 7 passes with zero board movement: if the RFC is not filed (or explicit not-started not declared in this doc) this sprint, that itself is the decision to deprioritize CEBE for 26Q3 — make the call deliberately.
- Multi-BSUIDs (P9), PII Encryption (P10), CDP Contact Enrichment (P11), Customer Health Score (P12): not queued for anyone. Per CLAUDE.md doctrine, an unresolved/unsequenced item does not get invented into a queue row — all four need a PM priority call first (Multi-BSUIDs also needs a shipped/slipped/closed call against its past-quarter 2026-Q2 target).
- Zhelia / Wulan — off-plan: rostered; Wulan's TF-3550 alignment remains open — pass-03.
- A5 (contact
sourceID/label split) FE + Mobile ownership unconfirmed: per 2026-07-21 sprint planning, BE ownership is settled (Jeffer/BE-CDP, Ghozi/BE-Chat — see Jeffer #5/Ghozi #5 above), but the qontak-customer-fe owner is stillTBDand whether Mobile has any scope here at all still needs checking. Owner: DRI (Zhelia) — confirm an FE owner and rule Mobile in or out before A5's FE chunk (RFC §qontak-customer-fe) can be pulled by anyone. - Sticky Agents (Chat) — set/remove assignment support ask, placeholder only: tracked as A6 in the adhoc bucket (rfc, Story TF-3609); 🔴 Expedite by sprint-planning instruction with no risk analysis behind it. Owner: PM (Zhelia) — scope with the Chat squad and confirm or revise the class before any engineering time is committed.
The real blockers (not capacity)
Each blocker names its owner — that's who to escalate to; nobody's queue waits silently.
- Customer Segmentation (P1) — 07-28 commitment, 7 days inside this window. TF-3401 (reachability fields, Azani's #1) is Blocked — the cause was not in the pass-07 digest; confirm with Julio Jeffer/DRI at sprint start whether it's a DATA Team dependency (still unsized per the initiative README), a Figma gap, or a BE blocker. Owner: DRI (Zhelia) — surface cause and unblock Azani's only FE item on the 07-28 critical path within the first two days. Per F-8 (pass 7 ESCALATED, open 2 passes), also confirm the datamart BE hardening TF-3507/3508/3511 (all READY TO DEPLOY) is in-scope hardening (retro-cost into the breakdown) and that the protected commitment hasn't silently grown.
- Mention User in CDP Notes (P2) — 08-14 commitment, p50 08-10 / p85 08-19. Critical path is
pure BE→FE→QA length against a tight window — no external gate, just the chain Berlianto→Jovi
→Alfi→Hendry finishing. Web Figma frames for the mention picker + chip (OQ-14) are the
only build blocker — Design System-owned (🔴 in the roadmap external-deps table). Owner:
Design System — confirm frames before the FE composer/chip wire closes, or scope-cut
(DRI/PM call). Infosec approval of
bluemondayallow-list + lock-screen PII egress (OQ-19/REV-14) + notification category choice (mention(2)reuse vs CDP-specific, OQ-1) — Infosec / Notification Platform, 🟡. - Team Owner Field & Team Permission (P4) — GA gated on Launchpad + Mobile Squad. (a)
Launchpad must ship the teams-for-user(+descendants) API to the §2.4 contract, the
Team Onlypermission radio, and the legacy→Launchpad team-name crosswalk before flag-ON GA — in-repo BE/FE/Mobile chunks (Ghozi #3, Azani #2, Alfi #2) build now behind the OFF flag regardless. (b) Mobile Squad must confirm the contract for Mobile rendering of the field + per-note permission flags (Alfi #2). (c) Separately — not gating this sprint's queued work — the team_owner backfill onto existing/migrated contacts is blocked on CRM migrating its own Team data into USMAN (no committed date); per 2026-07-21 sprint planning this is tracked as its own engineering-bucket item, A9 (rfc), rather than inside P4's 08-31 commitment. Owner: CRM Squad / Platform-USMAN. - Legacy Migration: CRM Notes → CDP (P5) — running blocked, building OK against stub. Hard prerequisite on the Legacy CRM Squad's net-new org-scoped Person-notes extraction endpoint (OQ-7, does not exist today), on top of the P2 dependency (sprint goal is to close P2 this window so this becomes the binding blocker only). 🟡 open: per-CID coverage ≥99% (OQ-2); bulk-throughput load test (OQ-7); bluemonday/Infosec (OQ-10); CRM bucket access + PII residency (OQ-9); per-caller audit (OQ-11); CSM per-CID consent.
- Legacy Migration: CRM Activity Logs → CDP (P6) — Stage-0 go/no-go, CRM-owned. Running any migration is gated on CRM Squad + Platform/CRM DBA granting read-only Postgres DSN access (Gate A/OQ-1) and passing an EXPLAIN-ANALYZE query-plan/index check (Gate B/OQ-2) before any run. Build proceeds without it (Jeffer #3). 🟡 edge confirmations outstanding: USMAN deactivated-user behavior (OQ-9); Figma badge/status frames (OQ-10); Deal join-model class names + won/done/resolved id-sets (OQ-12). Sprint 1 F-1 STILL OPEN pass 7: add TF-3466–3472 (Tasks 3–9, 16 BE days) to the new Jira sprint before this window opens (TPM Jira board edit).
- Create Ticket & Auto-Associate (P7) — web track Tasks 2-3 gated on CRM decisions overdue since 2026-07-04. Owner: PM/TPM — confirm whether the CRM embed reuse / Qontak One auth / embed-source allow-list decisions landed. If not, this is 17+ days overdue against the sprint, not "still waiting"; either chase the answer or explicitly descope Tasks 2-3 for this quarter.
- Create Ticket & Auto-Associate (P7) — Mobile track blocked on PM/TPM over-commitment decision. Owner: PM/TPM — defer Create-Ticket Mobile to next quarter, or secure ~10–11 more raw days of CDP-allocated Mobile capacity. Until decided, Alfi's #4 stays out of his active queue. (Sprint 1 blocker 6, unresolved since 2026-07-01 — third sprint.)
- Customer Event-Based Engine — CEBE (P8) — no RFC; Data/Infra unstaffed. Sprint 1 F-4
ESCALATED open 7 passes with zero board movement. Owner: Julio Jeffer — file the lightweight
Jira Task for RFC-authoring, or record explicit not-started in this doc's Deviations.
Separately, Data (Central DB schema, retriever/metrics, backfill) and Infra (streaming/queue,
monitoring) tracks remain unstaffed (
TBD (Infra)on the roadmap) — PM to staff Infra and confirm Data Team allocation before CEBE can be planning-ready. - Export Customer Data with Layout (P3) — OQ-17, gates Should-Have only. No CDP "Customer Data" quota type / no s2s export-history register path today (OQ-17) blocks only the Should- Have EXP-S08 gate, not the core pipeline — Billing/IAG + Chat/Omnichannel-owned, non-blocking for this sprint's queued tasks. 🟡: notification ingest channel REST vs Kafka (OQ-10); OSS quota headroom (OQ-4); optional mobile tap-through routing (OQ-12).
- Multi-BSUIDs (CDP × CRM) (P9) — past-quarter target, no DRI, no timeline. Owner: PM — decide shipped / slipped to Q3 / closed, then set its health, DRI and timeline (or drop the row). Nothing proceeds on it until then.
- PII Encryption — Contact Service (P10) — ranked last pending a PM priority call. Effort is already sized (BE 10 / QA 3.25) but no CDP implementor is assigned. Owner: PM — decide sequencing and staffing before it can enter a future sprint's queues.
- CDP Contact Enrichment (P11) — not yet agreed for 26Q3 pickup. Effort still TBD; Legal (OQ-P1) and BI datamart (OQ-BI) blockers open. Owner: PM priority call.
- Customer Health Score (P12) — not yet agreed for 26Q3 pickup. Status
draft, effort not sized, no RFC yet. Owner: PM priority call.
Jira reconciliation — findings ledger (2026-07-27)
State-not-log: one current state line per finding; the full evidence-anchored narrative lives in
the dated pass files under
reconciliations/2026-07-21-sprint-02/, latest
pass-04.
Open / escalated (4 passes run, 2026-07-23 → 2026-07-27; 73 issues (72→73), WIP 22, done-since 0 — zero completions heading into tomorrow's P1 07-28 commitment):
- F-4 ·
coverage-gap· ESCALATED (9th pass) · Julio Jeffer / PM (Zhelia) · resolve the ADR — commit or deprioritize — before sprint close · pass-04 - F-5 ·
status-progress· OPEN · Ghozi / DRI · add the FE/Mobile chunk mapping · pass-04 - F-7 ·
status-progress· ESCALATED · DRI / PM · retro-cost or declare out-of-band · pass-04 - F-8 ·
scope-watch· ESCALATED (time-critical) · DRI (Zhelia) · retro-cost + recompute the burnup today, before 07-28 · pass-04 - F-14 ·
epic-wiring-drift· OPEN · DRI (Zhelia) · reparent TF-3550 to TF-3181 · pass-04 - F-24 ·
code-evidence-gap· OPEN · TPM + Azani · confirm TF-3555 code-free vs stale board · pass-04 - F-25 ·
code-evidence-gap· OPEN · TPM · confirm TF-3572 code-free vs stale board · pass-04 - F-26 ·
code-evidence-gap· OPEN · TPM · confirm TF-3584 code-free vs stale board · pass-04 - F-29 ·
plan-staleness· OPEN · sprint-planner · amend Azani's row 3 for her 3 live bucket items · pass-04
Resolved (closing pass linked; details in the pass files):
- F-1 (coverage-gap) — resolved pass-04: tasks confirmed in-sprint.
- F-3 (data-quality) — resolved pass-04: duplicate confirmed closed.
- F-10 (off-plan-load) — resolved pass-03.
- F-15 / F-16 (coverage-gap / assignment-drift) — resolved pass-04.
- F-17 / F-19 (assignment-staffing / data-quality) — resolved pass-03.
- F-20 (off-plan-load) — resolved pass-04.
- F-21 (roster-mismatch) — resolved pass-04 — see pass-04 for the TF-3521 caveat.
- F-22 (roster-mismatch) — resolved pass-04.
- F-23 / F-27 (code-evidence-gap) — resolved pass-04: both code-free by resolution.
- F-28 (epic-wiring-drift) — resolved pass-04: documented off-map exception.
Sprint review
- Shipped / done: TBD at close.
- Carried over: what remains unfinished, with remaining work restated — returned to the
backlog as sprint-3 candidates, not pre-committed rows: the next
sprint-plannerrun re-derives them from the current roadmap rank and pulls them deliberately (no default carryover). - Added mid-sprint: anything pulled in that wasn't planned (dated amendments, Expedite intakes).
- Fed into status: the
status/<date>.mdreports updated with this sprint's progress (link them). - Decisions taken: link any
delivery/decisions/ADR + roadmap Priority reorder this sprint triggered — esp. the F-4 CEBE RFC/not-started call, F-5 residual (Team Owner breakdown sizing + FE/Mobile mapping), F-7/F-8 retro-costs, F-10 roster, and the Alfi-over-capacity defer/expand decision.
Retro actions
3–5 bounded process items (drop / add / keep / improve) about how the team plans and
reconciles — distinct from the outcome bookkeeping above. Explicit inputs to the next
sprint-planner run. Durable tooling/roster learnings (an engine bug, a name collision) go to
their real homes (roster.json, an upstream issue), not just this list.
- <drop | add | keep | improve>: <the process change, and who acts on it>.