Skip to content

Implement plan 2026-03-13_11-17_ci-tests-scoped-service-locator - #17

Merged
bpteam merged 1 commit into
upgradefrom
2026-03-13_11-17_ci-tests-scoped-service-locator
Mar 13, 2026
Merged

bpteam merged 1 commit into
upgradefrom
2026-03-13_11-17_ci-tests-scoped-service-locator

Conversation

@bpteam

@bpteam bpteam commented Mar 13, 2026

Copy link
Copy Markdown
Contributor

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": []
}

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": []
}
@bpteam
bpteam merged commit 61318c5 into upgrade Mar 13, 2026
6 of 18 checks passed
@bpteam
bpteam deleted the 2026-03-13_11-17_ci-tests-scoped-service-locator branch March 13, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant