User workflow
A PHP or Composer maintainer wants to shrink a valid composer.json around a dependency or autoload-related failure, then verify the exported reproduction before sharing it. The repository already has a deterministic, network-free fixture at benchmarks/composer-package, but the main examples guide does not currently show the end-to-end Composer manifest workflow.
Scope
Add one concise, copy-pasteable Composer manifest section to docs/EXAMPLES.md. Reuse the existing fixture, --adapter composer, and its Python oracle. Keep this documentation-only: do not add dependencies, invoke PHP or Composer, install packages, or change reducer semantics.
The section should show, from the repository root:
- creating a temporary output parent outside the fixture;
- running the existing reduction with the stable
ORIGINAL_FAILURE marker;
- the two retained files (
composer.json and reproduce.py);
- the retained
repomin/required == 1.0.0 requirement and autoload.psr-4 entry, plus representative removed manifest entries;
- that top-level
extra is outside the current adapter categories and remains unchanged;
report validate --payload --json, including the expected valid/exact fingerprint evidence; and
- an independent oracle rerun from the exported payload, with expected exit code
1 and ORIGINAL_FAILURE on stderr.
Explain that this fixture deliberately uses a Python oracle, so it exercises structural composer.json reduction without PHP, Composer, dependency installation, repository access, lifecycle scripts, or external network. It is adapter evidence for the configured oracle, not proof that an arbitrary minimized Composer project installs, autoloads, or behaves correctly. Link the fixture README and the host-backend boundary in SECURITY.md.
Do not pin attempt counts, byte counts, cache hits, or JSON whitespace; those are not the user contract and may change as the reducer evolves.
Acceptance criteria
Before starting, comment here so the scope stays coordinated. In the PR, include Closes #<issue-number> and paste the two check results. If a command cannot be run locally, say exactly what was skipped and why.
User workflow
A PHP or Composer maintainer wants to shrink a valid
composer.jsonaround a dependency or autoload-related failure, then verify the exported reproduction before sharing it. The repository already has a deterministic, network-free fixture atbenchmarks/composer-package, but the main examples guide does not currently show the end-to-end Composer manifest workflow.Scope
Add one concise, copy-pasteable Composer manifest section to
docs/EXAMPLES.md. Reuse the existing fixture,--adapter composer, and its Python oracle. Keep this documentation-only: do not add dependencies, invoke PHP or Composer, install packages, or change reducer semantics.The section should show, from the repository root:
ORIGINAL_FAILUREmarker;composer.jsonandreproduce.py);repomin/required == 1.0.0requirement andautoload.psr-4entry, plus representative removed manifest entries;extrais outside the current adapter categories and remains unchanged;report validate --payload --json, including the expected valid/exact fingerprint evidence; and1andORIGINAL_FAILUREon stderr.Explain that this fixture deliberately uses a Python oracle, so it exercises structural
composer.jsonreduction without PHP, Composer, dependency installation, repository access, lifecycle scripts, or external network. It is adapter evidence for the configured oracle, not proof that an arbitrary minimized Composer project installs, autoloads, or behaves correctly. Link the fixture README and the host-backend boundary inSECURITY.md.Do not pin attempt counts, byte counts, cache hits, or JSON whitespace; those are not the user contract and may change as the reducer evolves.
Acceptance criteria
docs/EXAMPLES.mdcontains one complete Composer manifest workflow runnable from the repository root.benchmarks/composer-packageand documents the exact retained files and required/removed manifest semantics.python3 scripts/check_docs.pypasses.python3 benchmarks/run_offline.py --only composer-packagepasses.Before starting, comment here so the scope stays coordinated. In the PR, include
Closes #<issue-number>and paste the two check results. If a command cannot be run locally, say exactly what was skipped and why.