refactor: narrow over-exposed API (L2)

Composer::autoLabel is private (tested through compose()); the
DiviComposition getters used only by tests are marked @internal;
Limits::snapshotCount is documented as reserved; the ShortformWriter test
seam is named $modulesForTests.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
2026-09-26 18:31:51 +02:00
co-authored by Claude Opus 5.5
parent dca1bd67f8
commit d2c5e82d63
5 changed files with 21 additions and 10 deletions
@@ -61,7 +61,11 @@ class DiviComposition
return $bound;
}
/** The one checker of $variable(…)$ values of this composition, with the entry's live map (S22, S31). */
/**
* The one checker of $variable(…)$ values of this composition, with the entry's live map (S22, S31).
*
* @internal Public for tests; code uses cleaner() / composer().
*/
public function references(): VariableRef
{
return $this->references ??= new VariableRef(
@@ -70,7 +74,11 @@ class DiviComposition
);
}
/** The one Placeholders instance of this composition (ruling S31). */
/**
* The one Placeholders instance of this composition (ruling S31).
*
* @internal Public for tests; code uses attrWriter() / composer().
*/
public function placeholders(): Placeholders
{
return $this->placeholders ??= new Placeholders($this->design->read());
@@ -100,6 +108,7 @@ class DiviComposition
);
}
/** @internal Public for tests; code uses composer() / editor(). */
public function rules(): StructureRules
{
return new StructureRules($this->modules->catalog());