Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,11 @@ src/morphobricks_preprocessing/
description.py the model (Description, Condition, Channel, Repeat, Member, Unit, Mask)
built from a reader-accepted document; description_from_bytes -> DescriptionError
description_write.py the canonical writer (Spec experiment-v1 9.1) and section digests (9.3)
description_reconcile.py reconcile(published, observed): units unchanged/new/removed by exact folder
labels, N35 reopening (confirmed_on kept), stated renames (FolderRename),
confirm_repeat; description_removal.py candidate (the draft), removal_questions
(one grouped question per condition) and reconfirmations; reconcile_observe.py
observe_folders (image counts of a folder walk)
description_transition.py the R_* comparison of a candidate with the published file (4.4a, 4.6, 4.9),
Reconfirmation (the user's recorded acceptance of a changed ID)
description_file.py read_description(path): symlink refusal (R_FILE_SYMLINK), bytes -> Description
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,26 @@ are in [docs/plan.md](docs/plan.md) §12. Upgrading from v0.3: see the

## Unreleased

- **Reconciliation of the published description with the folder (Stage 1, PR 9; conformance
P07, P08, P15, P33).** New modules `description_reconcile`, `description_removal` and
`reconcile_observe`. Each unit is `unchanged`, `new` or `removed`, matched only by its exact
source folder labels. A unit that is new beside a confirmed member, a removed unit, channel
evidence that no longer fits the declared list and a folder the user stated was renamed
(`FolderRename`) reopen the N35 confirmation of that repeat only (`confirmed = false` in the
draft, `confirmed_on` copied from the published file, a new date only from the user's
`confirm_repeat`). A change of `image_count` alone reopens nothing (it is reported as
`CountChange` and the member's count follows the folder). A renamed folder is a removed unit
plus a new pending one, never paired by name; a new folder is proposed only for an existing
repeat ID equal to its label. A removal needs the user's confirmation, asked once per
condition (`removal_questions`: every lost repeat, technical repeat and channel in one
question); a removed ID stays in `used_ids`, and a `reference` to a removed condition is never
cleared silently. Fix in the merged transition check: `confirmed_on` may now move with the
user's new confirmation when a condition ID holds another folder (conformance P33 b); the
layout it compares (`repeat_layout`) includes the condition's source folder. Not used by any
run, notebook or CLI command yet. Not done here: the pending new units are not in the draft
(they need channels and IDs, which are the draft model's), and image-count changes are
reported but not appended to `morphobricks.records.jsonl` (the file defines only
re-confirmation records).
- **Discovery and header additions for the experiment description (Stage 1, PR 6).**
Additive; a run without a description behaves as before. (1) `preflight` and `remasked`
take `with_description=False`; with it, a condition, repeat or technical-repeat folder that
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,9 @@ baseline = "tools/code_rules_baseline.json"
"morphobricks_preprocessing.description" = "pure"
"morphobricks_preprocessing.description_write" = "pure"
"morphobricks_preprocessing.description_transition" = "pure"
"morphobricks_preprocessing.description_reconcile" = "pure"
"morphobricks_preprocessing.description_removal" = "pure"
"morphobricks_preprocessing.reconcile_observe" = "io"
"morphobricks_preprocessing.description_file" = "io"
"morphobricks_preprocessing.description_read" = "pure"
"morphobricks_preprocessing.description_semantics" = "pure"
Expand Down
Loading
Loading