Skip to content

CNCF .project/ spec drift: repositories items now RepositoryEntry objects #385

Description

@mlieberman85

The nightly-canary test_upstream_spec_unchanged (feature 030) fires on the current CNCF .project/ spec. Upstream commit cncf/automation@bd7fec94 (2026-08-21) added:

feat: add RepositoryEntry type with tags and primary fields

Our mapper at packages/darnit/src/darnit/context/dot_project.py:262 still declares repositories: list[str], and the reader at line 614 does data.get(\"repositories\", []) assuming string items. That is now schema-incompatible with the new upstream list[RepositoryEntry] shape.

Drift

  • Tracked hash: 860df23e...
  • Current hash: afa3d179...
  • Diff: RepositoryEntry type added; repositories field's item type went from string to RepositoryEntry.

Impact

  • Existing .project/project.yaml files with plain-string repositories still parse (backward-compat via mapper).
  • New-shape .project/project.yaml files (using the RepositoryEntry object form) will silently degrade -- the string coercion will produce a truncated / stringified value that the mapper feeds downstream. Nothing crashes today; the tags and primary metadata are just lost.

Fix (feature-030 style)

  1. Add RepositoryEntry dataclass to dot_project.py mirroring the upstream fields.
  2. Change ProjectConfig.repositories to list[str | RepositoryEntry] (or normalize on read).
  3. Update the mapper's downstream consumers to handle the object form.
  4. Bump DOT_PROJECT_SPEC_VERSION.
  5. Update the tracked hash: uv run pytest tests/darnit/context/test_dot_project_upstream.py -v --update-hash.

Side effect noted separately
The -m integration filter in .github/workflows/ci.yml:44 is picking up this test even though it's marked @pytest.mark.upstream, because tests/darnit/parity/tier1/conftest.py:32's pytest_collection_modifyitems applies the integration marker to every collected item (not just tier1's own tests). That's why unrelated PRs (e.g., #384) are blocked by this canary. Worth constraining that hook to items under its own conftest scope; can file separately if desired.

Runbook: specs/030-dot-project-spec-sync/quickstart.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions