feat: StoredNodeGuard keeps S7/S26 for nodes moving between posts (E6)

Refuses, for users without unfiltered_html, non-Divi blocks, raw text parts,
unreadable opaque blocks, code modules, builder-only paths (also below the
state value), strings that are not sanitizer-stable and stored $variable
references that VariableRef::canonical() refuses or would change (P2, P3).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-27 01:42:26 +02:00
co-authored by Claude Opus 5.5
parent b7c714939d
commit f8275ad325
6 changed files with 620 additions and 1 deletions
+11 -1
View File
@@ -93,7 +93,17 @@ final class ValueCleaner
*/
public function kindOf(string $module, string $path, ?string $subKey = null): ValueKind
{
return $this->kind($module, $path, $subKey, $subKey);
return $this->kindAt($module, $path, $subKey, $subKey);
}
/**
* The kind clean() routes a string to that sits below the state value of $path: $subName is
* the first key there, $key the nearest key above the string (step 5, like cleanNode()).
* StoredNodeGuard checks stored values against exactly this routing.
*/
public function kindAt(string $module, string $path, ?string $subName, ?string $key): ValueKind
{
return $this->kind($module, $path, $subName, $key);
}
/**