Skip to content

Add a fake schedule adapter contract suite #22

Description

@jonathanmcmichael

Outcome

Create a deterministic fake ScheduleAdapter that proves capability declarations, identity-preserving import, plan-before-apply behavior, and explicit unsupported operations without using a vendor SDK.

Truth source

The fake imports two activities and one finish-start relationship with fixed Rustit UUIDs plus external IDs A1000 and A1010. Its export plan reports one update, zero creates/deletes, and no warnings.

Invariants

  • external IDs remain ExternalIdentity values
  • the canonical schedule does not gain P6/OPC/SYNCHRO fields
  • capabilities accurately describe behavior
  • plan_export does not mutate external state
  • unsupported apply returns AdapterError::Unsupported

Expected scope

Add test support and a Sync Lab fixture against the existing adapter traits.

Non-goals

Network calls, credentials, vendor payload schemas, retry policy, and a production adapter.

Acceptance and evidence

  • import produces exactly the documented canonical schedule and identity mappings
  • plan is deterministic and non-mutating
  • declared unsupported apply fails explicitly
  • repeated import preserves fixture UUIDs
  • cargo xtask verify passes

Dependencies: #10 and the existing adapter contracts.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-readyPortable work packet ready for human-and-AI implementationarea:adaptersVendor-neutral integration and sync boundariesarea:scheduleSchedule model, CPM, calendars, and statushelp wantedExtra attention is neededkind:fixtureSynthetic truth fixture or minimized failure casereview:rustRust API or implementation review requestedreview:schedulingScheduling or project-controls review requestedsize:sOne narrow crate slicestate:readyReady for a contributor to claim

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions