{
  "accessed": "2026-07-22",
  "sources": [
    {
      "name": "Composer commands",
      "url": "https://getcomposer.org/doc/03-cli.md",
      "needles": ["exact versions", "--locked", "validate"]
    },
    {
      "name": "Composer basic usage",
      "url": "https://getcomposer.org/doc/01-basic-usage.md",
      "needles": ["composer.lock", "exact versions", "install"]
    },
    {
      "name": "Composer repositories",
      "url": "https://getcomposer.org/doc/05-repositories.md",
      "needles": ["Dist", "Repository", "Artifact"]
    },
    {
      "name": "Composer configuration",
      "url": "https://getcomposer.org/doc/06-config.md",
      "needles": ["allow-plugins", "Custom dependency policies", "report"]
    },
    {
      "name": "Composer plugins",
      "url": "https://getcomposer.org/doc/articles/plugins.md",
      "needles": ["PluginInterface", "allow-plugins", "non-interactive"]
    },
    {
      "name": "Composer scripts",
      "url": "https://getcomposer.org/doc/articles/scripts.md",
      "needles": ["post-install-cmd", "event", "scripts"]
    },
    {
      "name": "Composer untrusted packages",
      "url": "https://getcomposer.org/doc/faqs/how-to-install-untrusted-packages-safely.md",
      "needles": ["full access", "--no-plugins", "--no-scripts"]
    },
    {
      "name": "Composer schema",
      "url": "https://getcomposer.org/doc/04-schema.md",
      "needles": ["repositories", "root-only", "dist"]
    },
    {
      "name": "Composer lock conflict guidance",
      "url": "https://getcomposer.org/doc/articles/resolving-merge-conflicts.md",
      "needles": ["composer validate", "lock file", "update --lock"]
    },
    {
      "name": "Composer 2.10.2 changelog",
      "url": "https://getcomposer.org/changelog/2.10.2",
      "needles": ["2.10.2", "released 2026-07-01", "Security"]
    },
    {
      "name": "Packagist security API",
      "url": "https://packagist.org/apidoc",
      "needles": ["security advisories", "affectedVersions", "remoteId"]
    }
  ]
}
