Implement plan 2026-03-13_11-17_ci-tests-scoped-service-locator - #17
Merged
Merged
Conversation
isFinished: Yes
Implemented the story end-to-end: CI install order fixed in .github/workflows/ci.yml (composer install now runs before Symfony matrix update), TypeRegistry generation now outputs Symfony\Contracts\Service\ServiceCollectionInterface locator usage (via new wrapper builder/generator in src/Builder/ScopedTypeRegistryGeneratorBuilder.php and src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php, wired in src/DependencyInjection/FlexibleGraphqlExtension.php), and DI now provides resolver tagging + dedicated scoped locator in src/Resources/config/services.yaml. Consumer docs were updated in docs/index.md to remove full-container guidance. Added test coverage in tests/DependencyInjection/FlexibleGraphqlExtensionTest.php and expanded tests/E2e/FixtureAppConsoleTest.php (config variants + federation scenario + scoped locator behavior). Verification passed with composer install, PHPUnit, PHPStan (with increased memory), and fixture console commands.
Raw feedback:
{
"feedback": {
"approve": true,
"summary": "Implemented the story end-to-end: CI install order fixed in .github/workflows/ci.yml (composer install now runs before Symfony matrix update), TypeRegistry generation now outputs Symfony\\Contracts\\Service\\ServiceCollectionInterface locator usage (via new wrapper builder/generator in src/Builder/ScopedTypeRegistryGeneratorBuilder.php and src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php, wired in src/DependencyInjection/FlexibleGraphqlExtension.php), and DI now provides resolver tagging + dedicated scoped locator in src/Resources/config/services.yaml. Consumer docs were updated in docs/index.md to remove full-container guidance. Added test coverage in tests/DependencyInjection/FlexibleGraphqlExtensionTest.php and expanded tests/E2e/FixtureAppConsoleTest.php (config variants + federation scenario + scoped locator behavior). Verification passed with composer install, PHPUnit, PHPStan (with increased memory), and fixture console commands."
},
"plan": {
"id": "2026-03-13_11-17_ci-tests-scoped-service-locator",
"assumptions": [
"No Docker wrapper is available in this repository context, so verification commands were executed directly.",
"TypeRegistry contract change is implemented bundle-locally by wrapping the upstream generator output instead of modifying vendor templates.",
"Resolver auto-tagging should be driven by Symfony _instanceof rules in services.yaml for reliable compile-time behavior."
],
"risks": [
"Generator adaptation currently relies on deterministic string replacement in generated PHP; upstream template format changes could require updates.",
"Scoped locator includes services tagged as TypeRegistry services by interface-based rules; if custom apps over-tag resolver-like services, locator scope may widen."
]
},
"changes": {
"files_changed": [
".github/workflows/ci.yml",
"docs/index.md",
"src/DependencyInjection/FlexibleGraphqlExtension.php",
"src/FlexibleGraphqlBundle.php",
"src/Resources/config/services.yaml",
"tests/E2e/FixtureAppConsoleTest.php",
"tests/fixture-app/config/packages/flexible_graphql.php"
],
"files_added": [
"src/Builder/ScopedTypeRegistryGeneratorBuilder.php",
"src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php",
"tests/DependencyInjection/FlexibleGraphqlExtensionTest.php",
"docs/retro.md"
],
"notes": [
"Introduced flexible_graphql.type_registry.service_locator as a dedicated service locator keyed by service id via tagged iterator/locator pattern.",
"Kept existing command API unchanged while expanding fixture configurability through env-driven schema_type/executor in fixture-app config.",
"Retained federation representation wiring in process() while moving resolver tagging responsibility to _instanceof service configuration."
]
},
"verification": {
"commands": [
{
"cmd": "composer install --no-interaction --prefer-dist",
"ok": true,
"note": "Dependencies installed from lock file."
},
{
"cmd": "vendor/bin/phpunit -c phpunit.xml.dist",
"ok": true,
"note": "All tests passed (7 tests)."
},
{
"cmd": "vendor/bin/phpstan analyse -c phpstan.neon.dist",
"ok": false,
"note": "Initial run failed due PHP memory limit (128M)."
},
{
"cmd": "vendor/bin/phpstan analyse -c phpstan.neon.dist --memory-limit=512M",
"ok": true,
"note": "Static analysis passed with increased memory limit."
},
{
"cmd": "php tests/fixture-app/bin/console cache:clear --env=test --no-interaction",
"ok": true,
"note": "Fixture app cache warm command succeeded."
},
{
"cmd": "php tests/fixture-app/bin/console flexible_graphql:generate-type-registry --env=test --no-interaction",
"ok": true,
"note": "Fixture app TypeRegistry generation command succeeded."
}
],
"could_not_run": []
},
"retro": {
"written": true,
"path": "docs/retro.md"
},
"blockers": []
}
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.
isFinished: Yes
Implemented the story end-to-end: CI install order fixed in .github/workflows/ci.yml (composer install now runs before Symfony matrix update), TypeRegistry generation now outputs Symfony\Contracts\Service\ServiceCollectionInterface locator usage (via new wrapper builder/generator in src/Builder/ScopedTypeRegistryGeneratorBuilder.php and src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php, wired in src/DependencyInjection/FlexibleGraphqlExtension.php), and DI now provides resolver tagging + dedicated scoped locator in src/Resources/config/services.yaml. Consumer docs were updated in docs/index.md to remove full-container guidance. Added test coverage in tests/DependencyInjection/FlexibleGraphqlExtensionTest.php and expanded tests/E2e/FixtureAppConsoleTest.php (config variants + federation scenario + scoped locator behavior). Verification passed with composer install, PHPUnit, PHPStan (with increased memory), and fixture console commands.
Raw feedback:
{
"feedback": {
"approve": true,
"summary": "Implemented the story end-to-end: CI install order fixed in .github/workflows/ci.yml (composer install now runs before Symfony matrix update), TypeRegistry generation now outputs Symfony\Contracts\Service\ServiceCollectionInterface locator usage (via new wrapper builder/generator in src/Builder/ScopedTypeRegistryGeneratorBuilder.php and src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php, wired in src/DependencyInjection/FlexibleGraphqlExtension.php), and DI now provides resolver tagging + dedicated scoped locator in src/Resources/config/services.yaml. Consumer docs were updated in docs/index.md to remove full-container guidance. Added test coverage in tests/DependencyInjection/FlexibleGraphqlExtensionTest.php and expanded tests/E2e/FixtureAppConsoleTest.php (config variants + federation scenario + scoped locator behavior). Verification passed with composer install, PHPUnit, PHPStan (with increased memory), and fixture console commands."
},
"plan": {
"id": "2026-03-13_11-17_ci-tests-scoped-service-locator",
"assumptions": [
"No Docker wrapper is available in this repository context, so verification commands were executed directly.",
"TypeRegistry contract change is implemented bundle-locally by wrapping the upstream generator output instead of modifying vendor templates.",
"Resolver auto-tagging should be driven by Symfony _instanceof rules in services.yaml for reliable compile-time behavior."
],
"risks": [
"Generator adaptation currently relies on deterministic string replacement in generated PHP; upstream template format changes could require updates.",
"Scoped locator includes services tagged as TypeRegistry services by interface-based rules; if custom apps over-tag resolver-like services, locator scope may widen."
]
},
"changes": {
"files_changed": [
".github/workflows/ci.yml",
"docs/index.md",
"src/DependencyInjection/FlexibleGraphqlExtension.php",
"src/FlexibleGraphqlBundle.php",
"src/Resources/config/services.yaml",
"tests/E2e/FixtureAppConsoleTest.php",
"tests/fixture-app/config/packages/flexible_graphql.php"
],
"files_added": [
"src/Builder/ScopedTypeRegistryGeneratorBuilder.php",
"src/Generator/ScopedServiceCollectionTypeRegistryGenerator.php",
"tests/DependencyInjection/FlexibleGraphqlExtensionTest.php",
"docs/retro.md"
],
"notes": [
"Introduced flexible_graphql.type_registry.service_locator as a dedicated service locator keyed by service id via tagged iterator/locator pattern.",
"Kept existing command API unchanged while expanding fixture configurability through env-driven schema_type/executor in fixture-app config.",
"Retained federation representation wiring in process() while moving resolver tagging responsibility to _instanceof service configuration."
]
},
"verification": {
"commands": [
{
"cmd": "composer install --no-interaction --prefer-dist",
"ok": true,
"note": "Dependencies installed from lock file."
},
{
"cmd": "vendor/bin/phpunit -c phpunit.xml.dist",
"ok": true,
"note": "All tests passed (7 tests)."
},
{
"cmd": "vendor/bin/phpstan analyse -c phpstan.neon.dist",
"ok": false,
"note": "Initial run failed due PHP memory limit (128M)."
},
{
"cmd": "vendor/bin/phpstan analyse -c phpstan.neon.dist --memory-limit=512M",
"ok": true,
"note": "Static analysis passed with increased memory limit."
},
{
"cmd": "php tests/fixture-app/bin/console cache:clear --env=test --no-interaction",
"ok": true,
"note": "Fixture app cache warm command succeeded."
},
{
"cmd": "php tests/fixture-app/bin/console flexible_graphql:generate-type-registry --env=test --no-interaction",
"ok": true,
"note": "Fixture app TypeRegistry generation command succeeded."
}
],
"could_not_run": []
},
"retro": {
"written": true,
"path": "docs/retro.md"
},
"blockers": []
}