You are reviewing a diff to answer exactly one question: does this change
break or drift the contract between the desktop app and den (the cloud API)?
Deployment model — this asymmetry is the whole point of the review:
- Den (
ee/apps/den-api) deploys continuously; the latest code is live for
everyone almost immediately.
- The desktop app is published on a release cadence and users update slowly,
so ALREADY-PUBLISHED desktop builds keep calling whatever den surface they
were built against.
Contract surfaces:
- Desktop/client side:
apps/app/src/app/lib/den.ts (hand-written den API
client), apps/app/src/app/lib/den-types.ts and the other
apps/app/src/app/lib/den-*.ts helpers, apps/app/src/react-app/domains/cloud/,
and apps/desktop/.
- Den side:
ee/apps/den-api/src/routes/.
- Shared schemas:
packages/types/src/den/ (zod schemas imported by both
sides).
Severity is the gating contract. Use exactly this mapping:
high — blocking; withholds Warden clearance until resolved.
medium — advisory; posted as a comment but never blocks clearance.
- Never report
low findings from this skill.
Report a HIGH (blocking) finding only in these two cases:
- Breaking den change that can brick published desktop builds. The diff
removes or renames a den-api route, removes or renames a response field,
makes a previously optional request field required, removes an enum value,
tightens validation, or changes auth/semantics on a surface the desktop
client references. Grep the desktop/client surfaces for usage of the
changed route or field before reporting. This blocks EVEN IF the same diff
also updates or removes the desktop-side usage: published binaries still
run the old client code. The fix is a phased rollout, in this order:
first ship a desktop release that tolerates both old and new den behavior,
wait for it to be published, and only then land the den-side removal or
change.
- Desktop-ahead dependency. The diff adds desktop/client code that calls a
den route or reads a den response field that is introduced in this same
diff or does not exist in
ee/apps/den-api/src/routes/ at all. The fix is
a phased rollout: land and deploy the den API first, then ship the desktop
consumption separately once the API is live.
Report a MEDIUM (advisory) finding only in this case:
- Additive den-ahead drift. The diff adds a den-api feature that requires
desktop-side handling to actually work for users (a new desktop-policy
field the app must enforce or render, a new required field in a
packages/types/src/den/ schema the desktop consumes, a new enum/action
value the desktop must handle), and the diff contains no corresponding
desktop/client change. Word the finding as a notification: name the den
feature, name the missing desktop support, and state that this does not
block clearance but a desktop follow-up should be scheduled.
Do NOT report:
- Backward-compatible additive den changes nothing on desktop needs: new
routes, new optional fields with defaults, new enum values the desktop can
safely ignore.
- One-sided changes that are self-contained (den internals, desktop-only UI,
refactors that keep the wire contract identical).
- Style, performance, correctness, or security issues (a separate skill owns
security).
- Pre-existing drift in unchanged code.
- Tests, mocks, fixtures, seed data, or docs.
For each finding, report:
- The exact file and changed lines that introduce the drift.
- Which published-vs-deployed pair breaks: what the published desktop calls
or expects, and what den now serves (or vice versa).
- Severity per the mapping above.
- The concrete rollout fix: what ships first, what waits, and what change in
this diff should be split out.
If the diff introduces no desktop<->den drift, report nothing. Silence is the
correct output for a clean diff; do not manufacture findings.
1---2name: desktop-den-sync-review3description: Flag desktop<->den contract drift introduced by this diff. High findings gate Warden clearance; medium findings are advisory only.4---5
6You are reviewing a diff to answer exactly one question: does this change
7break or drift the contract between the desktop app and den (the cloud API)?
8
9Deployment model — this asymmetry is the whole point of the review:
10
11- Den (`ee/apps/den-api`) deploys continuously; the latest code is live for
12 everyone almost immediately.
13- The desktop app is published on a release cadence and users update slowly,
14 so ALREADY-PUBLISHED desktop builds keep calling whatever den surface they
15 were built against.
16
17Contract surfaces:
18
19- Desktop/client side: `apps/app/src/app/lib/den.ts` (hand-written den API
20 client), `apps/app/src/app/lib/den-types.ts` and the other
21 `apps/app/src/app/lib/den-*.ts` helpers, `apps/app/src/react-app/domains/cloud/`,
22 and `apps/desktop/`.
23- Den side: `ee/apps/den-api/src/routes/`.
24- Shared schemas: `packages/types/src/den/` (zod schemas imported by both
25 sides).
26
27Severity is the gating contract. Use exactly this mapping:
28
29- `high` — blocking; withholds Warden clearance until resolved.
30- `medium` — advisory; posted as a comment but never blocks clearance.
31- Never report `low` findings from this skill.
32
33Report a HIGH (blocking) finding only in these two cases:
34
351. Breaking den change that can brick published desktop builds. The diff
36 removes or renames a den-api route, removes or renames a response field,
37 makes a previously optional request field required, removes an enum value,
38 tightens validation, or changes auth/semantics on a surface the desktop
39 client references. Grep the desktop/client surfaces for usage of the
40 changed route or field before reporting. This blocks EVEN IF the same diff
41 also updates or removes the desktop-side usage: published binaries still
42 run the old client code. The fix is a phased rollout, in this order:
43 first ship a desktop release that tolerates both old and new den behavior,
44 wait for it to be published, and only then land the den-side removal or
45 change.
462. Desktop-ahead dependency. The diff adds desktop/client code that calls a
47 den route or reads a den response field that is introduced in this same
48 diff or does not exist in `ee/apps/den-api/src/routes/` at all. The fix is
49 a phased rollout: land and deploy the den API first, then ship the desktop
50 consumption separately once the API is live.
51
52Report a MEDIUM (advisory) finding only in this case:
53
543. Additive den-ahead drift. The diff adds a den-api feature that requires
55 desktop-side handling to actually work for users (a new desktop-policy
56 field the app must enforce or render, a new required field in a
57 `packages/types/src/den/` schema the desktop consumes, a new enum/action
58 value the desktop must handle), and the diff contains no corresponding
59 desktop/client change. Word the finding as a notification: name the den
60 feature, name the missing desktop support, and state that this does not
61 block clearance but a desktop follow-up should be scheduled.
62
63Do NOT report:
64
65- Backward-compatible additive den changes nothing on desktop needs: new
66 routes, new optional fields with defaults, new enum values the desktop can
67 safely ignore.
68- One-sided changes that are self-contained (den internals, desktop-only UI,
69 refactors that keep the wire contract identical).
70- Style, performance, correctness, or security issues (a separate skill owns
71 security).
72- Pre-existing drift in unchanged code.
73- Tests, mocks, fixtures, seed data, or docs.
74
75For each finding, report:
76
77- The exact file and changed lines that introduce the drift.
78- Which published-vs-deployed pair breaks: what the published desktop calls
79 or expects, and what den now serves (or vice versa).
80- Severity per the mapping above.
81- The concrete rollout fix: what ships first, what waits, and what change in
82 this diff should be split out.
83
84If the diff introduces no desktop<->den drift, report nothing. Silence is the
85correct output for a clean diff; do not manufacture findings.