Skip to content

Backward compatibility

indexnowkit/cli follows SemVer and the tiers of the core's docs/bc.md. Before 1.0, minor versions may contain breaking changes, listed under "Changed" in CHANGELOG.md.

The public contract of a command line is what a cron line, a CI step and a runbook depend on:

Tier Members
Commands — names, arguments, options, exit codes; an option is renamed only with a deprecation window check, config, submit, sitemap, key:generate, history, status (the definitions of indexnowkit/console, sitemap and history), key:file (Definitions::keyFile()); the global options --env-file, --no-env-file, --config, --state; the exit codes of Console\ExitCode
Variables and files INDEXNOW_* (the core's list plus INDEXNOW_<BLOCK>_<KEY> for sitemap, verify, history), INDEXNOW_CONFIG, INDEXNOW_STATE; the .env file; the JSON file in the shape of Config::fromArray(); the defaults debounce.store = state, history.store = pdo
Packagings the PHAR (indexnow.phar and indexnow.phar.sha256 in the GitHub release of php-cli), the image ghcr.io/indexnowkit/indexnow (tags <version>, <major.minor>, latest, <version>-action; the user indexnow, WORKDIR /work, ENTRYPOINT indexnow), the inputs and outputs of action.yml of indexnowkit/indexnow-action (v1 moves within the major)
Documents the JSON of check --json, config --json, history --json, status --json, submit --json, sitemap --json as the packages define them; summary.json of the action (check, results)
Call — signatures only grow by appended, defaulted parameters Application (constructor, wiring()), Wiring (the accessors), Commands, GlobalOptions, Env\Dotenv, Config\EnvBlocks, Config\EnvConfigSource, KeyFileRunner, Command\KeyFileCommand, Definitions::keyFile(), Version::current() — for an application that embeds the CLI
Internal until 1.0 everything under State\ (State, SqliteCache, SqliteSeenStore, the tables indexnow_cache, indexnow_sitemap_seen), LazyChecker, Check\*, Command\ConfigurationErrorCommand: the shape of the state file may change in a minor (a run then starts as if the file were new)

Not covered: the printed texts (they are for humans and get improved; the codes of check are), log lines, anything under tests/, docker/indexnow-action (the entrypoint is reached only through action.yml).

The package pins indexnowkit/core ^0.13.1, console ^0.5, sitemap ^0.9, verify ^0.4, history ^0.4: a minor of any of them that changes what the CLI wires ships with a cli minor.