Skip to content

[P2-34] Generate versioned, release-scoped Graphify architecture output #39

Description

@phranck

Problem

The repository currently contains no graphify-out/graph.json, Graphify configuration, or versioned architecture graph history. Graph-based architecture queries are therefore unavailable or necessarily stale, despite the project size and multi-target dependency structure.

Generating graphs on every normal push would add churn and conflicts, so freshness needs an explicit release-scoped policy.

Proposed solution

  • Define a pinned Graphify version/configuration for Swift targets, tests, examples, and project-template content.
  • Generate a versioned graph with source paths/symbol relationships and documented exclusions.
  • Add validation that a version/release update refreshes the graph, while ordinary pushes do not rewrite it.
  • Document how agents and maintainers query and verify the graph.
  • Keep graph output deterministic and free of local absolute paths or secrets.

Acceptance criteria

  • A clean checkout can reproduce the same graph with the pinned tool/configuration.
  • All package modules and intended cross-target relationships appear; generated/build/vendor artifacts are excluded.
  • Release/version workflows detect missing or stale graph output.
  • Normal nonrelease pushes do not regenerate Graphify.
  • The graph contains no machine-specific paths, credentials, or unrelated private data.
  • Graph generation and repository quality gates are warning-free.

Dependencies

Independent of runtime implementation. Final graph should be regenerated after public module/API restructuring.

Parallelization

Configuration and deterministic-generation preparation can start early, but this issue is neither Ready nor complete until the final release snapshot is generated after #35 and the API migration.

Commit structure

  • Split this issue into small, thematic, independently revertible commits wherever the work can remain coherent.
  • Every commit must build and keep its applicable tests/gates green. Do not commit an intentionally failing regression test; use local/known-issue characterization or land the test with the smallest fix.
  • Keep characterization/fixtures, mechanical renames or moves, semantic changes, and documentation/migration updates separate when each step remains green.
  • The issue boundary is not a commit boundary; multiple commits are expected for independently reversible changes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationpriority: mediumImportant follow-up after critical and high dependencies

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions