Foundation 3.0 post-release hardening: native caches and auth topology - #17
Merged
Merged
Conversation
abmmhasan
marked this pull request as ready for review
September 24, 2026 17:43
abmmhasan
deleted the
foundation-3.0/notification-static-compile-fix
branch
September 25, 2026 17:15
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.
Summary
Post-release hardening discovered while certifying InfByte against Foundation 3.0.
Auth notification topology
When
auth.drivers.notifications=talkingbytes, auth consumes both the optionalcommunicationcapability and Foundation's nativenotificationscapability. The module/catalog topology now declares that dependency explicitly so generated production graphs do not rely on development autowiring.Native Webrick matcher caches
Foundation keeps ownership of the outer immutable release generation, but Webrick now owns the route-cache mechanics for every matcher strategy:
fusedpublishes and boots Webrick's native fused matcher cache;generatedpublishes and boots Webrick's native generated matcher cache;shardedpublishes and boots Webrick's native__current+ immutablegeneration-*shard layout.Foundation passes the selected generation-owned cache path to Webrick and requires
canBootFromCache()when a cache was published. It does not wrap matcher caches with a Foundation whole-tree digest, pre-scan the shard tree on process boot, or restore the old mutablebootstrap/cache/routeslayout.Webrick remains responsible for cache format, activation, loading, lazy shard selection, and native integrity validation.
Native ArrayKit configuration caches
Development/build configuration caching now delegates both supported layouts to
ArrayKit's native mechanisms:
shardedkeepsLazyFileConfig::warmNamespaceCache()namespace files plusArrayKit's
__flat.phpexact-leaf index;singlewrites and loadsbootstrap/cache/config/config.phpthroughConfig::exportCache()/loadCache().Foundation's
__manifest.phpnow contains policy/identity metadata rather thana second whole-config payload. Switching layouts removes stale artifacts from the
other native format. ArrayKit materializes
Environment::ref()values andclosures during cache generation; Foundation validates both the permitted input
types and the resulting concrete generated data. Immutable release config keeps
the stricter production export contract.
There is no separate routing-style
fusedconfig mode: ArrayKit's shardedstrategy already provides fused scalar/null leaf acceleration through
__flat.php.Native InterMix compiled-container ownership
Generated InterMix PHP
ProductionContainerartifacts remain the native DI production cache for web, CLI, worker and scheduler. CacheLayer is core Foundation infrastructure, but Foundation does not automatically attach CacheLayer/PSR-6 definition caching to generated production containers.The trusted non-web boot path now avoids duplicate InterMix sidecar I/O:
.meta.jsonand generated container exactly once;Regression coverage verifies that selecting the Foundation cache capability does not silently enable InterMix definition caching and that tampered native InterMix metadata still fails closed at the InterMix boundary.
Release behavior
All artifacts remain inside one immutable Foundation generation with atomic activation, rollback, leasing and pruning. Source config/providers/routes are not rediscovered on trusted production boot.
Qualification
4560e91265be49ca815d8b113523c04efe1ff60136033750802) — success107750535716— successThis PR remains draft. Do not merge or release automatically.