Skip to content

Report activity IDs involved in a cyclic CPM network #16

Description

@jonathanmcmichael

Outcome

When CPM rejects a cycle, return a deterministic set or path of involved ActivityId values instead of only CyclicNetwork.

Truth source

Use a synthetic network A → B → C → A plus an independent activity D. The diagnostic must include A, B, and C and must not include D.

Invariants

  • acyclic CPM timings do not change
  • IDs remain strongly typed
  • diagnostic ordering is deterministic across runs
  • the algorithm does not depend on activity names or insertion-order accidents

Expected scope

Refine the schedule error/diagnostic in rustit-schedule and add a Schedule Lab case.

Non-goals

Automatically breaking cycles, calendar logic, constraints, graphical schedule display, and vendor-specific error formats.

Acceptance and evidence

  • the three-node fixture reports exactly its cycle members or a valid closed cycle path
  • an independent node is excluded
  • repeated calculation returns identical diagnostic order
  • existing CPM fixtures remain unchanged
  • cargo xtask verify passes

Dependencies: #10.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ai-readyPortable work packet ready for human-and-AI implementationarea:scheduleSchedule model, CPM, calendars, and statushelp wantedExtra attention is neededkind:implementationBounded implementation workreview: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