Technical Publication

0002 Responsibility Boundaries

Desktop Agent Responsibility Boundaries

Context

The existing desktop agent is implemented as a single monolithic module of approximately 1,300 lines of code. Within that one file, without internal package or module boundaries, 11 distinct responsibilities are combined into a single executable unit.

Independent Reasons to Change

Each of the responsibilities below has an independent reason to change:
ResponsibilityIndependent Reason to Change
Synchronization planningAdopting change-token-based sync (Note 0001)
Upload destinationMigrating from an intermediate document repository to direct object storage (Note 0003)
Credential modelMigrating from a static shared secret to asymmetric signing (Note 0005)
Execution triggerMigrating from scheduled to user-triggered execution (Note 0004)
Extraction targetsAdding any of the dozens of additional collection types in scope
Credential and Destination Coupling

The agent embeds an encrypted client secret and performs authentication against a vendor storage API directly. This produces two critical architectural liabilities:

Uncontained Credential Blast Radius: A credential resident on client-owned hardware cannot be revoked or scoped per-installation without redistributing a binary.
Hardcoded API Surface: Any change to the storage destination requires modifying and redistributing the desktop binary to every installed client machine.

Decision

Responsibility Redistribution
ResponsibilityCurrent LocationProposed Location
Synchronization window / watermark logicClientServer (per Note 0001)
Collection/report definitionsClient (hand-written per function)Server-side catalog
Upload destination & credentialsClient (embedded secrets)Server (presigned URLs, per Note 0003)
Retry & backoff tuningClient (hardcoded constants)Server-configurable, client-executed
Scheduling / trigger policyClient (OS task scheduler)Execution model decision (per Note 0004)
Consequences

• Adding a new collection type is a server-side catalog entry, not a client binary release.
• Changing storage destinations or credentials requires zero client updates.
• The client's attack surface shrinks to executing signed server instructions and streaming output.

Alternatives Considered

Internal modularization without changing network architecture: Splitting the monolithic file into internal packages while keeping job planning and storage credentials on the client was evaluated and rejected. Internal file organization does not fix client/server responsibility coupling.