con / con/mechababs

`drop-dataset`: there is no way to undo `add-dataset`

Open
#143 0 comments 0 reactions 0 assignees View on GitHub
automation decision
Dominant language
Python
Stars
1
Forks
4
Avg merge
15h 39m
Merged PRs (30d)
24

Description

## What

`add-dataset` registers a source dataset × app bundle into a campaign (a statefile row per cell at a study; a catalog row + member footprint + gitlink at a superstudy).
Nothing reverses it.
The only way to remove a dataset from a campaign today is to hand-edit the statefile, which the design forbids, or to remove the member and re-add it, which takes the member's *sibling* cells down with it.

Live pressure: remove-and-re-add is currently also the only way to propagate a changed config to a member (see the config-propagation issue), so the missing verb is hit from two directions.

## What it has to decide, not design here

- A cell with derivatives already produced: drop the row and leave the derivative? Retire it (`retire-derivative --remove` / `--path`)? Refuse?
- A merged cell: same question, sharper — the derivative is registered in the study and may be published.
- At a superstudy: the catalog row, the member's footprint (`.mechababs/campaigns//`), the gitlink the super records, and a member that has since been pushed and uninstalled (not present locally, so nothing to edit in it).
- Whether `drop-dataset` is one verb with modes or several (drop-from-campaign vs retire-derivative already covering the data half).

## Constraints already in force

- `add-dataset` is a labeled plain save, not a `datalad run` record, because it resolves against the live world; the inverse is the same kind of act.
- The single-writer flock at the operated level covers it like every other mutating verb.
- No data removal without an explicit flag, per the `retire-derivative --remove` carve-out on the never-removes-data non-goal in `docs/spec.md`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the existing add-dataset and retire-derivative entry points, then read docs/spec.md for the data-removal constraint. Trace the study and superstudy state described in the issue, including derivatives, merged cells, catalog rows, footprints, and gitlinks. Done means the inverse operation and its handling of each listed case are defined without relying on hand-editing or remove-and-re-add.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.