Repository navigation
feat(sdk): PJ_DATA_PROCESSOR_FLAG_HISTORY_EXEMPT — persisted, but outside undo/redo (0.34.0) - #198
Merged
Merged
Conversation
…hat undo/redo has no authority over (0.34.0) A data processor created with this bit is written to the layout file like any other, but the host's undo/redo history never restores, recreates or removes it. Orthogonal to EPHEMERAL, which is never persisted at all. The bit exists for plugin-driven creations that are not part of the user's edit stream: an assistant that builds a derived series on request should not see it vanish because the user undid an unrelated plot move. Which plugins set it is an adoption decision; the host stays neutral. Additive: one flag bit, no vtable change. Older hosts reject it under the reserved-bits rule, and a flag bit is not runtime-negotiated, so a plugin that must also run there treats that rejection as unsupported and falls back on purpose. feature_floors.json lists it under 0.34.0; host_surfaces.snapshot regenerated with the repo's extractor.
… not assumed from create A flag bit is not runtime-negotiated, and a host that predates the bit may accept it silently. So a successful create proves nothing: the node's own recipe, read back through data_processor_config, carries the boolean history_exempt, and only a returned true confirms the property. A missing or false value, or a failed read, means the protection is not there and the plugin must say so. A conforming host still rejects unknown bits under the reserved-bits rule, which lets a plugin retry deliberately without the bit.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One additive flag bit for
create_data_processor.A node created with
PJ_DATA_PROCESSOR_FLAG_HISTORY_EXEMPTis persisted in the layout file like any other processor, but the host's undo/redo history never restores, recreates or removes it — history has no authority over it. Orthogonal toEPHEMERAL(never persisted at all, so the bit is irrelevant there).Why: a plugin that creates derived series or marker sets on the user's request — the assistant agent is the first — produces work that is not part of the user's edit stream. Today the host's undo restores a workspace snapshot that predates that work and wipes it: the user undoes a plot move and the assistant's series disappears. The host side (PJ4) needs a stable bit to key the exemption on without naming any plugin; this is that bit. Which plugins set it is their decision.
Contents:
plugin_data_api.h: the define next toEPHEMERAL, and theflagsparagraph of thecreate_data_processordoc extended.plugin_data_api.hpp: one sentence in thecreate()doc. ThecreateTransform/createMarkersshims already forwardflags; no signature change.feature_floors.json: listed undersince: 0.34.0;host_surfaces.snapshotregenerated withtools/feature_floors/extract_host_surfaces.py --write;check_feature_floors.pypasses (114 surfaces).VERSION0.34.0, CHANGELOG.Compatibility: no ABI/struct change. Older hosts reject the bit under the reserved-bits rule. A flag bit is not runtime-negotiated, so the CHANGELOG says what a plugin that must run on older hosts should do with that rejection.
Tests: SDK suite green except
PluginCatalogTest.DependencySearchExcludesCwdAndPath, which fails identically on an untouchedmainbuild here (dynamic-linker search-order quirk of this machine), unrelated to this change.