Core Filament neutrality on the 1.x line
Core owns CMS contracts and neutral configuration. Admin owns the translation from that configuration to Filament fields, enum presentation, and Admin-only diagnostics.
The 1.x line keeps the historical Core Filament-facing enums, media field
factory, and diagnostics action as documented compatibility adapters. They are
not a new extension surface: first-party code must use the Admin contributor
or adapter contracts, and packages should migrate at their next compatible
release. filament/support remains a 1.x dependency so existing consumers do
not lose resolution or rendering behaviour.
The compatibility inventory is intentionally finite and ratcheted by
FilamentNeutralBoundaryTest: AssetEnum, CacheTime,
ExtensionAutoUpdatePolicyEnum, ExtensionReleaseKindEnum,
HeaderPositionEnum, ImageSourceType, InteractionTargetType, LayoutEnum,
MediaAlignment, MenuAlignmentEnum, PublishStatusEnum,
PublishVisibilityStateEnum, RedirectStatusCodeEnum, UrlTypeEnum,
PageTypeData, PatchStatus, MediaFieldFactory,
SpatieMediaFieldFactory, and CheckAdminPanelAccessAction. New Core paths
must not add to this list.
For media fields, consume Capell\\Core\\Contracts\\Media\\MediaUploadConfigurationFactory
and translate MediaUploadConfigurationData in the package’s UI boundary. For
Admin enum labels/options, register an
Capell\\Admin\\Contracts\\EnumPresentationContributor and resolve the
EnumPresentationRegistry. Admin diagnostics implement the Core
DoctorCheck::TAG contract and are tagged by the Admin provider.
Rollback is configuration-only: keep the generated 1.x manifests and adapter bindings in place, then disable the new provider/contributor registration or restore the previous package configuration. Do not remove the stable adapter classes until the next-major decision and consumer fixtures are accepted.
Next-major preparation
Section titled “Next-major preparation”The draft decision and dependency baseline live in
core-next-major-compatibility-decision.json
and core-next-major-compatibility-baseline.json.
They are preparation artefacts only: no 2.x package line exists yet, and the
1.x composer constraint and adapters remain unchanged. The old-package failure
wording is pinned in
fixtures/core-2x-old-package-failure.txt
so the eventual solver/discovery error, upgrade guide, and changelog can land
together once package adoption of the neutral seams is proven.