Skip to content

[B-19] PAT auth works, but resolve_env query returns null — writer-env-fix needs hardcoded env_ids (refresh-acc47 pattern) #160

@gHashTag

Description

@gHashTag

B-19 — post-PR-#159 RCA · 2026-05-14 07:48 UTC

TL;DR: PR #159 корректно заменил `Authorization: Bearer` → `Project-Access-Token`. Однако `writer-env-fix.yml` всё ещё падает, потому что GraphQL запрос `{ project(id: $projectId) { environments { ... } } }` под PAT-токеном возвращает `{data:{project: null}}`. PAT привязан к проекту имплицитно; явный `id` поле в `project(id)` не разрешается.

Доказательство (run 25848523618)

```
2026-05-14T07:48:41.97Z ##[group]resolve IGLA env
2026-05-14T07:48:42.02Z jq: error (at :1): Cannot iterate over null (null)
2026-05-14T07:48:42.02Z ##[error]Process completed with exit code 5.
```

`jq` парсит `.data.project.environments.edges[]` ⇒ null = `project` поле было null ⇒ PAT не отдаёт project по explicit id.

Pattern фикса (доказано рабочее)

`refresh-acc47.yml` (last good run 25754312720 @ 2026-05-12 18:31Z) не делает resolve_env вообще. Он читает hardcoded `(ACC, PROJ_ID, ENV_ID, SVC_ID, SVC_NAME)` пятёрки из `.github/wave-a/acc47-services.csv` и идёт сразу в `variableUpsert`/`serviceInstanceDeployV2` mutation. Mutation принимает `(projectId, environmentId, serviceId)` от PAT даже когда query `project(id)` возвращает null.

Patch (B-19 fix)

Заменить в `.github/workflows/writer-env-fix.yml`:

  1. Удалить helpers `resolve_env`, `fetch_services`, `resolve_id`.
  2. Захардкодить env_ids:
    • `IGLA_ENV_ID = f3517e98-c11a-49d8-b5fd-4cbb82d04384` (production, из `leaderboard-snapshot v1.2` Constants block).
    • `ACC2_ENV_ID = <неизвестен из публичных артефактов>` — операторская инжекция.
  3. Заменить `SVC_ID="${ID_PREFIX%%-0000-0000-0000-000000000000}"` (восьмисимвольный prefix как полный UUID — это работает только когда mutation accepts prefix, что мы не подтверждали) на полные UUID из CSV (как `refresh-acc47` делает) либо проверить `fetch_services` через PAT-implicit query `{ projectToken { project { services { edges { node { id name } } } } } }` если она работает.

Что нужно от оператора

Один блок данных:

```
ACC2_ENV_ID = ?
```

(env_id production environment для проекта `12c508c7-1196-468d-b06d-d8de8cb77e93` = empathetic-kindness)

После этого я открою PR-159+1 с B-19 fix.

Анкер

```
phi^2 + phi^-2 = 3 · TRINITY · NEVER STOP · DOI 10.5281/zenodo.19227877
```

Refs: PR #159 (B-18 merged), #156 (B-17 misdiag), `refresh-acc47.yml` (proven-working PAT pattern).

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockerauto-created by gardener v2.7

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions