Backward compatibility¶
indexnowkit/yii3 follows SemVer. Before 1.0, minor versions may contain breaking changes; every one is listed
under "Changed" in CHANGELOG.md with the migration. After 1.0 the rules below become the promise.
The core's tiers ("call", "implement", "may grow") apply to every core class you touch through this package:
core bc.md.
What the package keeps stable¶
| Surface | Promise |
|---|---|
The params block indexnowkit/yii3 (configuration.md) |
Keys and their meaning stay; new keys are only added with a default. A rename ships the old key as deprecated for one minor and is listed in the changelog. |
Container definitions of config/di.php: every core interface, Services, Config, IndexNowKit, IndexNow, Wiring, VerifyingStaging, IndexNowObserver, SubjectLoaderInterface, Vocabulary, ResultFormatterInterface, SubmitterFactoryInterface, SampleOptions, IndexNow::VERIFY_TRANSPORT; of config/di-console.php: the Console\*Runner of indexnowkit/console, ConfigSourceInterface, SitemapRunner, HistoryRunner, StatusRunner (with the package), the command classes; of config/di-web.php: Key\KeyFileRequestHandler, Http\KeyFileHandler |
Ids stay; replacing one in the application's di/ keeps working; new ids are only added. |
IndexNow methods config(), services(), kit(), rules(), keys(), staging(), observer(), submit(), submitRecord(), submitRecords(), urlsFor(), urlsForAll(), explain(), collect(), flush(), flushIfCollected(), observe(), the *Package() / *Installed() / *Config() accessors |
Names and types stay; new methods are only added. |
Console commands and options (indexnow:check, indexnow:config, indexnow:submit, indexnow:submit-record, indexnow:explain, indexnow:key:generate, indexnow:sitemap, indexnow:history, indexnow:status) |
Names, arguments and options come from the Definitions of indexnowkit/console and the optional packages; new options are only added. Output is not a contract except the exit codes and the --json shapes. The classes are the packages' (IndexNowKit\Console\Command\*, Sitemap\Console\SitemapCommand, History\Console\HistoryCommand / StatusCommand), mapped in params-console.php; this package ships no command class of its own, only Console\ConfigSource. |
The config groups the package ships (params, params-console, di, di-web, di-console, events-web, events-console, routes, bootstrap), the route name indexnow/key-file and the default pattern |
Stay. |
ActiveRecord\IndexNowEvents, ActiveRecord\ObserverProvider (set($observer, ?LoggerInterface $logger = null), get(), isSet()), ActiveRecord\IndexNowObserver public hooks |
The attribute stays a drop-in; the observer's public hooks keep their names; set() grows by appended, defaulted parameters only. |
Check codes dispatch.mode, debounce.store, router.key_file, router.route, router.base_url, active_record.enabled, key_file.status and the checks option |
Stay (core check-codes.md). |
ObserverProvider::reset() is test support, marked @internal: it undoes the package's bootstrap in a process
that builds a second container. An application never calls it, and it may change or disappear in a minor version.
The codes of the optional packages follow those packages, not this one: verify.installed, history.store,
history.records, sitemap.spool and the rest come from indexnowkit/verify, indexnowkit/history and
indexnowkit/sitemap (and, without the package, from the core's Adapter\OptionalPackage, whose code is
<feature>.installed). This package prints them; it does not own them.
Not a contract: log message texts (their context keys are), the exact wording the commands print (exit codes and
levels are), the Wiring helper's private graph construction, Env.
Wiring::NODES maps every node of the core's Adapter\Services to the container id it is read from, and the
package's own test keeps that map complete: the one node with no definition of its own is failureCache, which is
derived from debounce.store rather than replaced on its own.
Pinning¶
composer require indexnowkit/yii3:^0.1 gets every 0.1.x patch. Read the changelog before a minor.