Skip to content

feat!: distribute DevTools through CPX and portable skills - #376

Open
coisa wants to merge 5 commits into
mainfrom
codex/dev-tools-2-cpx
Open

coisa wants to merge 5 commits into
mainfrom
codex/dev-tools-2-cpx

Conversation

@coisa

@coisa coisa commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Related Issue

User-requested DevTools 2.0 distribution redesign. The migration guide proposes follow-up triage for #195 and #197; this PR does not close those issues automatically.

Motivation / Context

Libraries used by DevTools need to consume its tooling without requiring DevTools in their own Composer graph. Running the CLI externally and installing skills independently removes that cycle and allows responsibilities to move gradually to their owning packages.

Changes

  • Replace the Composer plugin with a standalone CLI and machine-readable runtime discovery. Remove plugin command registration, automatic Composer-event sync, and skill/agent symlink commands.
  • Export eight fast-forward-* skills under resources/skills, declare their source, and document LLM Skills installation through installed Composer donors or pinned GitHub sources.
  • Run consumer tooling through isolated, versioned CPX execution. Preserve explicit sync for metadata, workflows, defaults, and durable Git-hook configuration.
  • Keep consumer and tooling paths/autoloaders distinct, including PHP-CS-Fixer bootstrap when the consumer has its own fixer. Preserve strict JSON, failure propagation, and consumer Composer integrity assertions.
  • Run Git hooks through project-local GrumPHP or CPX phpro/grumphp-shim:2.26.0 grumphp. Select the binary explicitly and allow 600 seconds for the complete coverage/report pipeline.
  • Isolate temporary Git-test environments from inherited repository/index variables. Preserve the index, hook stdin, exact arguments, local-runner preference, and original exit codes.
  • Rebase on main at 84e154046e07cafa6ac09a9e12434b1ff5dcb5e0, preserving its autoload.files, Pages, preview, and exit-status fixes.

Verification

Current skill-source increment (4f3cf00517fb64adbaa26689b64431d27b40266d)

  • Standardize skills.json with fast-forward/* Composer trust, trusted-replace, automatic sync, the canonical local directory without a package override, and the Changelog GitHub source at ^0.4.0 without a redundant skill allowlist.
  • Add development-only llm/skills:^1.15 and its specific plugin permission so ordinary contributor installs can restore the configured sources. Keep generated .agents/skills ignored; the former tracked external Changelog payload is preserved locally and reconstructed by the manager.
  • Update the existing distribution assertion and contributor guide. Canonical exported skills and local repository role prompts retain their owners.
  • Full composer dev-tools: 713 tests, 2,578 assertions, zero failures/errors/warnings/skips; 90.77% line coverage. Rector, PHPDoc, ECS, metrics and rendered API/user documentation passed.
  • Strict Composer validation and normalization; native synchronization of 10 skills; focused distribution tests (2 tests, 57 assertions); whitespace check.
  • Changelog 0.4.0 validates all 13 pending fragments, including the committed --since=origin/main comparison. Normal commit completed without bypassing hooks.

These local results apply to the current head. Hosted PHP 8.3/8.4/8.5 tests, Dependency Health, CodeQL, Wiki generation, rendered reports/PR preview and exact-head Changelog checks also passed on this head. Final inline-thread inspection found no unresolved feedback; the single earlier PHP-CS-Fixer bootstrap thread is resolved. The earlier migration review does not approve this new commit; maintainer review remains separate.

Earlier migration verification

  • Earlier migration commit 55341a86a10564c4c9ed32ac3de92542b8a63f25, independently reviewed; clean worktree and reviewed tree f4eb9969b2944a1549ae613aa60f3477d82e9e4d.
  • Normal git commit passed both installed hooks through real CPX/GrumPHP, with no hook bypass. The mandatory Composer script ran the full DevTools gate: 713 tests, 2,578 assertions, zero errors/failures/skips; Rector, PHPDoc, ECS, reports, metrics, and API docs passed.
  • Strict Composer validation and Dependency Health passed; installed-hook readback matches the packaged hooks.
  • Focused hook suite passed with synthetic foreign Git environment/index values; the foreign index remained unchanged. PHP 8.3 lint previously covered all 259 PHP files.
  • PHP 8.3/8.4/8.5 and Dependency Health passed on the final SHA.
  • Reports, Wiki, and Changelog workflows passed on the final SHA.
  • Original consumer fixtures verify isolated runtime paths, success/failure exit codes, unchanged Composer files, complete skill payloads, idempotent LLM Skills copying, and no symlinks.

Documentation / Generated Output

  • README and command/usage documentation updated.
  • Migration/extraction strategy and packaged agent references aligned with the distribution contract.
  • Generated reports and Wiki output validated by the workflows.

Changelog

  • .changelog/dev-tools-2-external-runtime.md declares the major change.

Reviewer Notes

Consumer 2.0.0 examples require release availability verification before adoption. No real consumer migration or package release is included. CPX separates dependency resolution/processes; it does not namespace-scope classes loaded into the same PHP process, so integration compatibility fixtures remain necessary.

The runtime still bundles most development tools as package requirements. Optional profiles and on-demand tool installation remain follow-up behavior changes, proposed as separate PRs. LLM Skills setup in this increment is development-only; consumer execution still does not install the manager or activate a host. No merge or auto-merge has been requested.

@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 268 files, which is 168 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 5a06d096-f59e-4745-831f-9b830a31678a
Commits

Reviewing files that changed from the base of the PR and between 84e1540 and 4f3cf00.

Files selected for processing: 268
  • .agents/agents/README.md
  • .agents/agents/agents-maintainer.md
  • .agents/agents/changelog-maintainer.md
  • .agents/agents/consumer-sync-auditor.md
  • .agents/agents/docs-writer.md
  • .agents/agents/issue-editor.md
  • .agents/agents/issue-implementer.md
  • .agents/agents/php-style-curator.md
  • .agents/agents/quality-pipeline-auditor.md
  • .agents/agents/readme-maintainer.md
  • .agents/agents/review-guardian.md
  • .agents/agents/test-guardian.md
  • .agents/skills/create-agentsmd/agents/openai.yaml
  • .agents/skills/fast-forward-changelog/SKILL.md
  • .agents/skills/fast-forward-changelog/examples/contribution.php
  • .agents/skills/fast-forward-changelog/references/automation.md
  • .agents/skills/fast-forward-changelog/references/cli.md
  • .agents/skills/fast-forward-changelog/references/php-api.md
  • .agents/skills/github-issues/agents/openai.yaml
  • .agents/skills/github-pull-request/agents/openai.yaml
  • .agents/skills/phpdoc-code-style/agents/openai.yaml
  • .agents/skills/phpunit-tests/agents/openai.yaml
  • .agents/skills/sphinx-docs/agents/openai.yaml
  • .changelog/consistent-skill-sources.md
  • .changelog/dev-tools-2-external-runtime.md
  • .gitattributes
  • .github/actions/php/setup-composer/action.yml
  • .github/actions/php/setup-composer/detect-dev-tools-runtime.sh
  • .github/actions/php/setup-composer/dev-tools-runtime-lib.sh
  • .github/actions/php/setup-composer/expose-dev-tools-runtime.sh
  • .github/actions/php/setup-composer/resolve-report-template.php
  • .github/actions/php/setup-phpdoc/action.yml
  • .github/workflows/auto-assign.yml
  • .github/workflows/label-sync.yml
  • .github/workflows/reports-native.yml
  • .github/workflows/reports.yml
  • .github/workflows/review.yml
  • .github/workflows/tests.yml
  • .github/workflows/wiki-direct.yml
  • .github/workflows/wiki-preview.yml
  • .gitignore
  • .php-cs-fixer.dist.php
  • AGENTS.md
  • README.md
  • composer.json
  • docs/advanced/consumer-automation.rst
  • docs/api/commands.rst
  • docs/api/composer-integration.rst
  • docs/commands/agents.rst
  • docs/commands/code-style.rst
  • docs/commands/codeowners.rst
  • docs/commands/copy-resource.rst
  • docs/commands/dependencies.rst
  • docs/commands/docs.rst
  • docs/commands/funding.rst
  • docs/commands/git-hooks.rst
  • docs/commands/gitattributes.rst
  • docs/commands/gitignore.rst
  • docs/commands/index.rst
  • docs/commands/license.rst
  • docs/commands/metrics.rst
  • docs/commands/phpdoc.rst
  • docs/commands/refactor.rst
  • docs/commands/reports.rst
  • docs/commands/self-update.rst
  • docs/commands/skills.rst
  • docs/commands/standards.rst
  • docs/commands/sync.rst
  • docs/commands/tests.rst
  • docs/commands/update-composer-json.rst
  • docs/commands/wiki.rst
  • docs/configuration/overriding-defaults.rst
  • docs/configuration/tooling-defaults.rst
  • docs/faq.rst
  • docs/getting-started/index.rst
  • docs/getting-started/installation.rst
  • docs/getting-started/quickstart.rst
  • docs/index.rst
  • docs/internals/architecture.rst
  • docs/internals/release-publishing.rst
  • docs/links/dependencies.rst
  • docs/links/live-reports.rst
  • docs/running/specialized-commands.rst
  • docs/running/unified-command.rst
  • docs/troubleshooting.rst
  • docs/usage/common-workflows.rst
  • docs/usage/dev-tools-2-migration.rst
  • docs/usage/documentation-workflows.rst
  • docs/usage/github-actions.rst
  • docs/usage/index.rst
  • docs/usage/migrating-consumer-repositories.rst
  • docs/usage/syncing-consumer-projects.rst
  • docs/usage/syncing-packaged-agents.rst
  • docs/usage/syncing-packaged-skills.rst
  • docs/usage/testing-and-coverage.rst
  • grumphp.yml
  • rector.php
  • resources/docblock/.docheader
  • resources/git-hooks/commit-msg
  • resources/git-hooks/pre-commit
  • resources/github-actions/auto-assign.yml
  • resources/github-actions/label-sync.yml
  • resources/github-actions/reports.yml
  • resources/github-actions/review.yml
  • resources/github-actions/tests.yml
  • resources/github-actions/wiki.yml
  • resources/skills/fast-forward-create-agentsmd/LICENSE
  • resources/skills/fast-forward-create-agentsmd/SKILL.md
  • resources/skills/fast-forward-create-agentsmd/agents/openai.yaml
  • resources/skills/fast-forward-create-agentsmd/references/content-outline.md
  • resources/skills/fast-forward-github-issues/LICENSE
  • resources/skills/fast-forward-github-issues/SKILL.md
  • resources/skills/fast-forward-github-issues/agents/openai.yaml
  • resources/skills/fast-forward-github-issues/references/architectural-criteria.md
  • resources/skills/fast-forward-github-issues/references/context.md
  • resources/skills/fast-forward-github-issues/references/metadata.md
  • resources/skills/fast-forward-github-issues/references/operations.md
  • resources/skills/fast-forward-github-issues/references/review-checklist.md
  • resources/skills/fast-forward-github-issues/references/templates.md
  • resources/skills/fast-forward-github-issues/references/triage.md
  • resources/skills/fast-forward-github-pull-request/LICENSE
  • resources/skills/fast-forward-github-pull-request/SKILL.md
  • resources/skills/fast-forward-github-pull-request/agents/openai.yaml
  • resources/skills/fast-forward-github-pull-request/references/context-routing.md
  • resources/skills/fast-forward-github-pull-request/references/implementation-loop.md
  • resources/skills/fast-forward-github-pull-request/references/issue-selection.md
  • resources/skills/fast-forward-github-pull-request/references/pr-drafting.md
  • resources/skills/fast-forward-github-pull-request/references/review-checklist.md
  • resources/skills/fast-forward-package-readme/LICENSE
  • resources/skills/fast-forward-package-readme/SKILL.md
  • resources/skills/fast-forward-package-readme/agents/openai.yaml
  • resources/skills/fast-forward-package-readme/references/badges.md
  • resources/skills/fast-forward-package-readme/references/examples.md
  • resources/skills/fast-forward-package-readme/references/update-triggers.md
  • resources/skills/fast-forward-phpdoc-code-style/LICENSE
  • resources/skills/fast-forward-phpdoc-code-style/SKILL.md
  • resources/skills/fast-forward-phpdoc-code-style/agents/openai.yaml
  • resources/skills/fast-forward-phpdoc-code-style/references/anti-patterns.md
  • resources/skills/fast-forward-phpdoc-code-style/references/checklist.md
  • resources/skills/fast-forward-phpdoc-code-style/references/examples.md
  • resources/skills/fast-forward-phpdoc-code-style/references/fast-forward-conventions.md
  • resources/skills/fast-forward-phpdoc-code-style/references/interface-contract-example.md
  • resources/skills/fast-forward-phpunit-tests/LICENSE
  • resources/skills/fast-forward-phpunit-tests/SKILL.md
  • resources/skills/fast-forward-phpunit-tests/agents/openai.yaml
  • resources/skills/fast-forward-phpunit-tests/references/generation-checklist.md
  • resources/skills/fast-forward-phpunit-tests/references/project-discovery.md
  • resources/skills/fast-forward-pull-request-review/LICENSE
  • resources/skills/fast-forward-pull-request-review/SKILL.md
  • resources/skills/fast-forward-pull-request-review/agents/openai.yaml
  • resources/skills/fast-forward-pull-request-review/references/review-contract.md
  • resources/skills/fast-forward-pull-request-review/references/surface-priorities.md
  • resources/skills/fast-forward-pull-request-review/references/workflow-action-validation.md
  • resources/skills/fast-forward-sphinx-docs/LICENSE
  • resources/skills/fast-forward-sphinx-docs/SKILL.md
  • resources/skills/fast-forward-sphinx-docs/agents/openai.yaml
  • resources/skills/fast-forward-sphinx-docs/references/rst-examples.md
  • resources/skills/fast-forward-sphinx-docs/references/structure.md
  • resources/skills/fast-forward-sphinx-docs/references/update-triggers.md
  • skills.json
  • src/CodeOwners/CodeOwnersGenerator.php
  • src/Composer/Capability/DevToolsCommandProvider.php
  • src/Composer/Command/ProxyCommand.php
  • src/Composer/DevToolsPluginInterface.php
  • src/Composer/Json/ComposerJson.php
  • src/Composer/Plugin.php
  • src/Config/ComposerDependencyAnalyserConfig.php
  • src/Config/ECSConfig.php
  • src/Config/RectorConfig.php
  • src/Console/Command/AgentsCommand.php
  • src/Console/Command/CodeStyleCommand.php
  • src/Console/Command/DependenciesCommand.php
  • src/Console/Command/DocsCommand.php
  • src/Console/Command/FundingCommand.php
  • src/Console/Command/GitAttributesCommand.php
  • src/Console/Command/GitHooksCommand.php
  • src/Console/Command/MetricsCommand.php
  • src/Console/Command/PhpDocCommand.php
  • src/Console/Command/RuntimeCommand.php
  • src/Console/Command/SkillsCommand.php
  • src/Console/Command/SyncCommand.php
  • src/Console/Command/TestsCommand.php
  • src/Console/Command/UpdateComposerJsonCommand.php
  • src/Console/Command/WikiCommand.php
  • src/Console/DevTools.php
  • src/Console/Logger/OutputFormatLogger.php
  • src/Console/Logger/Processor/CommandOutputProcessor.php
  • src/Console/Output/OutputCapabilityDetector.php
  • src/Container/ServiceProvider/DevToolsServiceProvider.php
  • src/Filesystem/Filesystem.php
  • src/Funding/FundingYamlCodec.php
  • src/Git/GitClient.php
  • src/GitAttributes/Writer.php
  • src/GitHooks/HookContentRenderer.php
  • src/GitIgnore/Merger.php
  • src/Path/WorkingProjectPathResolver.php
  • src/PhpUnit/Coverage/CoverageSummaryLoader.php
  • src/Process/XdebugDisablingProcessEnvironmentConfigurator.php
  • src/Project/ProjectCapabilitiesResolver.php
  • src/Rector/RemoveEmptyDocBlockRector.php
  • src/Resource/FileDiffer.php
  • src/Resource/UnifiedDiffer.php
  • src/SelfUpdate/ComposerSelfUpdateRunner.php
  • src/SelfUpdate/ComposerSelfUpdateScopeResolver.php
  • src/SelfUpdate/ComposerVersionChecker.php
  • src/SelfUpdate/WorkingDirectorySwitcher.php
  • src/Sync/PackagedDirectorySynchronizer.php
  • src/Sync/SynchronizeResult.php
  • tests/Composer/Capability/DevToolsCommandProviderTest.php
  • tests/Composer/Json/ComposerJsonTest.php
  • tests/Composer/PluginTest.php
  • tests/Config/ComposerDependencyAnalyserConfigTest.php
  • tests/Config/ECSConfigTest.php
  • tests/Config/RectorConfigTest.php
  • tests/Console/Command/AgentsCommandTest.php
  • tests/Console/Command/CodeStyleCommandTest.php
  • tests/Console/Command/CommandAttributeCompatibilityTest.php
  • tests/Console/Command/CopyResourceCommandTest.php
  • tests/Console/Command/FundingCommandTest.php
  • tests/Console/Command/GitAttributesCommandTest.php
  • tests/Console/Command/GitHooksCommandTest.php
  • tests/Console/Command/LicenseCommandTest.php
  • tests/Console/Command/MetricsCommandTest.php
  • tests/Console/Command/PhpDocCommandTest.php
  • tests/Console/Command/RefactorCommandTest.php
  • tests/Console/Command/ReportsCommandTest.php
  • tests/Console/Command/RuntimeCommandTest.php
  • tests/Console/Command/SkillsCommandTest.php
  • tests/Console/Command/StandardsCommandTest.php
  • tests/Console/Command/SyncCommandTest.php
  • tests/Console/Command/TestsCommandTest.php
  • tests/Console/Command/UpdateComposerJsonCommandTest.php
  • tests/Console/Command/WikiCommandTest.php
  • tests/Console/CommandLoader/DevToolsCommandLoaderTest.php
  • tests/Console/Logger/OutputFormatLoggerTest.php
  • tests/Console/Output/OutputCapabilityDetectorTest.php
  • tests/Distribution/ExternalExecutionTest.php
  • tests/Distribution/PhpCsFixerConfigTest.php
  • tests/Distribution/SkillsDistributionTest.php
  • tests/Environment/EnvironmentTest.php
  • tests/Filesystem/FilesystemTest.php
  • tests/Fixtures/Console/Command/FixtureDuplicateCommandName.php
  • tests/Funding/ComposerFundingCodecTest.php
  • tests/GitAttributes/MergerTest.php
  • tests/GitAttributes/ReaderTest.php
  • tests/GitHooks/HookContentRendererTest.php
  • tests/GitHooks/PackagedHooksTest.php
  • tests/GitHubActions/ChangelogWorkflowTest.php
  • tests/GitHubActions/PagesDeploymentActionTest.php
  • tests/GitHubActions/PendingTestStatusWorkflowTest.php
  • tests/GitHubActions/RefreshPreviewPointerActionTest.php
  • tests/GitHubActions/ReportTemplateRuntimeTest.php
  • tests/GitHubActions/ReportsWorkflowTest.php
  • tests/GitHubActions/RetryTransientFailuresActionTest.php
  • tests/GitHubActions/SetupComposerActionTest.php
  • tests/GitHubActions/WikiWorkflowsTest.php
  • tests/GitIgnore/GitIgnoreTest.php
  • tests/GitIgnore/MergerTest.php
  • tests/GitIgnore/ReaderTest.php
  • tests/Path/DevToolsPathResolverTest.php
  • tests/Path/WorkingProjectPathResolverTest.php
  • tests/PhpUnit/Coverage/CoverageSummaryLoaderTest.php
  • tests/Process/ProcessQueueTest.php
  • tests/Project/ProjectCapabilitiesResolverTest.php
  • tests/SelfUpdate/ComposerSelfUpdateRunnerTest.php
  • tests/ServiceProvider/DevToolsServiceProviderTest.php
  • tests/Sync/PackagedDirectorySynchronizerTest.php
  • tests/Sync/SynchronizeResultTest.php

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Changelog

✅ Contribution check passed.

Head: 4f3cf00517fb64adbaa26689b64431d27b40266d

Base: 84e154046e07cafa6ac09a9e12434b1ff5dcb5e0

Contribution: 2 new valid fragment(s). Policy: ordinary.

  • consistent-skill-sources.md — changed, patch

    Synchronize the bundled local skills automatically through development-only LLM Skills and trust Fast Forward Composer skill donors through `fast-forward/*`. Resolve Changelog contributor skills from stable `0.4.x` releases without a redundant skill allowlist or a package override for the local directory source. Restore ignored generated copies instead of tracking the external skill payload.

  • dev-tools-2-external-runtime.md — changed, major

    Runs DevTools as a standalone CLI through an isolated CPX installation, without requiring consumers to add DevTools to their Composer development dependencies. Removes Composer plugin command registration, automatic install/update sync and the skills/agents symlink commands. Exports namespaced fast-forward-* skills in resources/skills for independent LLM Skills installation; repository metadata, workflow defaults and Git hooks retain explicit dev-tools:sync. Documents the version 2 migration and gradual transfer of responsibilities to released owners.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T11:53:14.597883Z 4f3cf00 New commits
🔒 Security Review 🔄 Running since 2026-10-24T11:51:28.235325Z 4f3cf00 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

Rigorous review requested

This pull request is ready for the dedicated review-guardian pass powered by $pull-request-review.

Review focus

  • Source behavior or orchestration changed; verify regressions, contracts, and dependency boundaries.
  • Tests changed; confirm assertions still cover the touched behavior and edge cases.
  • Docs or README changed; verify commands, examples, and generated outputs stayed aligned.
  • Workflow or local GitHub Action logic changed; require executable validation of permissions, triggers, bot-authored commits, and CI side effects.
  • Consumer workflow wrappers changed; verify permissions, inputs, and reusable workflow refs remain aligned with the packaged contract.
  • Packaged agent surfaces changed; verify prompts, sync behavior, and inherited guidance.
  • Packaged resources changed; verify consumer repositories inherit the right defaults and generated artifacts.

Sample changed files

  • .agents/agents/README.md
  • .agents/agents/agents-maintainer.md
  • .agents/agents/changelog-maintainer.md
  • .agents/agents/consumer-sync-auditor.md
  • .agents/agents/docs-writer.md
  • .agents/agents/issue-editor.md
  • .agents/agents/issue-implementer.md
  • .agents/agents/php-style-curator.md
  • .agents/agents/quality-pipeline-auditor.md
  • .agents/agents/readme-maintainer.md
  • .agents/agents/review-guardian.md
  • .agents/agents/test-guardian.md
  • ...and 237 more files.

Suggested prompt

Use $pull-request-review with the review-guardian agent to review PR #376 (https://github.com/php-fast-forward/dev-tools/pull/376).
Lead with findings ordered by severity. Include repository file references whenever possible.
Prioritize bugs, regressions, missing tests, missing docs, generated-output drift, and workflow or CI impacts.
For workflow/action changes, record validation evidence or residual risk; pay special attention to GITHUB_TOKEN pushes and required-check dispatch/mirroring.
Base: main
Head: codex/dev-tools-2-cpx @ cde0cc6

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 71cd59eafb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .php-cs-fixer.dist.php
@coisa
coisa force-pushed the codex/dev-tools-2-cpx branch from 351b861 to 55341a8 Compare October 24, 2026 11:08
@github-actions

Copy link
Copy Markdown
Contributor

@coisa

coisa commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor Author

Consumer alignment reconciliation and Code Standards migration inventory — 2026-10-25

Scope acceptance: this queue owns consumer skill-source alignment and framework follow-up only. DevTools #376, Testing #380 and the dedicated Code Standards implementation remain with their existing owners. No duplicate implementation, worktree competition, new card or merged-PR reopening was started.

The detailed, public framework legacy-skill audit is recorded on framework #21, including installed/published provenance, per-skill disposition, role dependencies, test scenarios and exact blockers.

Current 14-consumer PR/head reconciliation

These are freshly queried PR states, not assumptions from the previous rollout report. Seven are merged and seven remain open.

Consumer PR Observed head State Profile class
clock #13 c98d2cd70c046c38d5c4a0ca7f1c26f4ff08253b Open C
config #46 a1ef846dbe93f87fe335d8de3589c7728330bebb Open C
container #53 95817c66047efa5f378d5d354c65e4f86d5fbe7c Merged C
defer #11 3ca0766c794da63d02fe64d3ffadd0fcac7e91d1 Merged C
enum #16 d9b1072da96b6a58a1fa7581bbb6ae94cbf8750c Merged C
event-dispatcher #11 ef9f23d8348a618483c9bda4650b053762e0bd03 Open C
fork #11 2e7fe7bcddb23582799fdbe5527fc0f409ab0632 Merged C
framework #21 25a509485f0b9611d843399af5a076ce15c4aba9 Merged F
http #9 a98947ecf85ee366ea7fbec2ad8ad42fdd274750 Merged C
http-client #9 0a51ae1c805371cf26d3f5e6dcb489adab35e6b3 Merged C
http-factory #12 9847b9f96f9e46f979d7695f9f9d9bb69912d785 Open C
http-message #19 59e1dfc8203a1a599a9428827a83802203d5e57b Open C
iterators #10 95897fdd1b14290eb06802e4d8228cca0342e31a Open C
phpdoc-bootstrap-template #16 d075c3ac5413c2a61bdb08403a7fd243efde8e3f Open N

The nine repaired consumers are clock, config, container, defer, enum, fork, http-factory, http-message and iterators. Their observed PR heads still equal their published corrective commits. Those corrections passed complete composer dev-tools, strict Composer validation, ordinary GrumPHP commit hooks and committed Changelog checks; their PR descriptions carry that evidence. The reconciliation did not redo or bypass those commits, and made no additional code publication.

Actual configuration inventory

C — twelve component profiles. Each has a project .php-cs-fixer.dist.php; after removing only its descriptive file header, the executable profile body is identical across all twelve (SHA-256 8974a6875155c3905135ae4e5a1d66374df857ccc011f7b002a56e32e8a7f77a).

Preserve all of these when substituting the tool:

  • project vendor/autoload.php, consumer-root source discovery and the existing tooling exclusions;
  • setRiskyAllowed(false);
  • PHPDoc indent, param/return/throws ordering, separation, trim and consecutive-blank-line normalization, scalar/type normalization and missing-parameter annotations;
  • phpdoc_to_comment: false;
  • preservation of existing library/license headers: these twelve profiles do not impose header_comment.

F — framework. It has the same PHPDoc intent plus the deliberate header_comment override sourced from .docheader, CRLF normalization, current year substitution, PHPDoc placement after strict-types declaration and separation on both sides. A new default must not silently erase or replace this contract.

N — phpdoc-bootstrap-template. Its alignment PR adds no project PHP-CS-Fixer/ECS/Rector profile. Do not manufacture a configuration-removal change there.

No project-local ecs.php or rector.php was introduced for these fourteen consumers. The installed DevTools package provides those entrypoints via FastForward\\DevTools\\Config\\ECSConfig::configure() and RectorConfig::configure(). The consumer profile files are PHP-CS-Fixer/PHPDoc overrides; ECS, PHP-CS-Fixer and Rector are not interchangeable files to delete in bulk. Existing custom rules, skip policies, source discovery and diagnostic behavior need parity verification with the external product.

The twelve inspected component installations use DevTools dev-main at 84e154046e07cafa6ac09a9e12434b1ff5dcb5e0; the framework installation uses v1.26.0 at 1e2be55575b533b9dc5739d8517dcb2bb4d72a98. The phpdoc-bootstrap-template checkout does not have a DevTools runtime installed. That is a verification gap, not evidence that a future command works there.

Next concrete steps and gates

  1. The Code Standards owner supplies a usable published 0.x version with exact release/commit, supported runtime, CLI/configuration discovery and custom override contract. No consumer will point to an invented or unavailable version.
  2. On the same candidate, run an isolated C-profile consumer and the F-profile framework scenario: compare dry-run diagnostics before/after, preserve all overrides and source exclusions, exercise a deliberately failing fixture, then run complete existing gates. Verify Composer archive exclusions and both minimum/current supported runtimes.
  3. Validate install/update/sync lifecycle and skill discovery. The framework audit proves only the installed Changelog replacement payload; it does not prove the eight namespaced maintenance candidates are installed. DevTools role references and old sync regeneration must be reconciled before removing any legacy link.
  4. Reuse open consumer PRs only for the same implementation cut; reconcile merged consumers from current main instead of reopening them. Any future distinct cleanup must pass the existing final-SHA review flow. No generic .agents removal.
  5. Publication in this queue is held. Local implementation/test work can proceed once its concrete dependency contract exists; no NoM retry, alternate route, relaxed hook, merge or release was performed or authorized here.

Executed in this audit: remote PR/head queries; installed Composer/source inspection; comparison of twelve executable profile bodies; framework tracked/generated/role inventory; complete six-file Changelog payload comparison against the published tag; review of existing comments before posting these findings.

Not executed: Code Standards consumer installation, replacement patch, new lifecycle test, full suite rerun for a new candidate, repository deletions, new commit/push/PR or publication. The blockers are an owner-supplied release contract and concrete role/sync/equivalence dependencies, not an additional human decision request.

Changelog-only local follow-up

The canonical framework audit now contains executed lifecycle scenarios. The candidate supplier role at this PR's 4f3cf005 head already declares primary-skill: fast-forward-changelog; no duplicate reference-migration patch is needed.

A disposable LLM Skills 1.15.0 consumer passed normal install, strict validation, explicit sync, reinstall and repeated sync without creating changelog-generator, while preserving its roles and consumer-owned content; all six Changelog files match the verified published v0.4.0 donor. A separate invocation of the actual DevTools 1.26 legacy skills synchronizer recreated that legacy link.

Custodian dependency: reconcile the supported role/sync distribution for the consumer's selected version, including the candidate role's fast-forward-github-issues supporting dependency. The synthetic Changelog-only fixture proves its primary route, not the full candidate role closure or framework install. No legacy link is removed until the real supplier lifecycle is proven. This narrow cut is independent of the Code Standards release.

Only local synthetic fixture/test files and these coordination comments changed; no repository code patch, commit/push, new PR, hook bypass, merge, pipeline release or global installation occurred.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant