Skip to content

chore: migrate GHCR/repo refs to constructorfabric; attest published images; republish connector images - #1280

Merged
mitasovr merged 2 commits into
constructorfabric:mainfrom
mitasovr:claude/xenodochial-kepler-87e9f7
Jun 10, 2026
Merged

chore: migrate GHCR/repo refs to constructorfabric; attest published images; republish connector images#1280
mitasovr merged 2 commits into
constructorfabric:mainfrom
mitasovr:claude/xenodochial-kepler-87e9f7

Conversation

@mitasovr

@mitasovr mitasovr commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Three related changes, one merge:

1. Org-rename reference migration

The GitHub org/repo was renamed cyberfabric/cyber-insightconstructorfabric/insight.

  • GitHub repo URLs and #NNN shorthand: github.com/cyberfabric/{cyber-insight,insight}constructorfabric/insight; frontend refs → constructorfabric/insight-front.
  • Container images & charts: ghcr.io/cyberfabric/... and oci://ghcr.io/cyberfabric/charts/...ghcr.io/constructorfabric/... — 6 connector descriptors, charts/insight/values.yaml toolboxImage, insight-jira-enrich, .env.*.example, docs. Image tags preserved 1:1.

Deliberately left unchanged (not repo/image references): the live K8s annotation namespace insight.cyberfabric.com/* (cluster contract), the cyberfabric/cyberfabric-core framework name and other repos (DNA, cyber-pilot*), cypilot traceability IDs, docs.cyberfabric.com / cyberfabric.{io,local,internal} domains, kubeconfig/cluster names (cyber-insight-k8s).

2. Keyless build-provenance attestations (SLSA)

Every image-publishing job in build-images.yml (api-gateway, analytics-api, identity, toolbox, connector matrix) now runs actions/attest-build-provenance@v2 after push: signed via the workflow's short-lived OIDC identity (no stored keys), attested by digest, and stored both in the repo attestation store and next to the image in GHCR (push-to-registry: true) so cluster admission can verify without GitHub API access:

gh attestation verify oci://<image> --repo constructorfabric/insight

3. Republish all connector images under the new namespace

GHCR packages did not follow the org rename — the descriptor-pinned tags don't resolve under ghcr.io/constructorfabric. Rebuild markers in all six connector build contexts (5 CDK Dockerfiles + jira enrich) make the merge of this PR fire the full SOP flow: CI rebuilds + attests all six images, bump-descriptors patches images.<key>.image with fresh tags and minor-bumps descriptor.version, the follow-up run rebakes the toolbox and publishes the umbrella chart; reconcile then re-registers connectors with the new images.

CI / reconcile impact

  • build-images.yml was already on IMAGE_PREFIX: ghcr.io/constructorfabric; descriptors now match it.
  • reconcile-connectors is registry-agnostic (reads full image refs from descriptors) — no changes needed.

Known-red checks (pre-existing, not from this PR)

  • Run E2E suite fails on every recent PR across branches: migration src/ingestion/scripts/migrations/20260601000000_ai-claude-team-metrics.sql references c.cost_cents missing from silver.class_ai_dev_usage on the e2e rig (UNKNOWN_IDENTIFIER). Tracked separately.
  • toolbox failed once on a GitHub Actions cache-service 504 (error writing layer blob) — transient; this push re-runs it.

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Chores
    • Updated container image registry/repository references across deployment configs, examples, and connector manifests.
    • Aligned documentation and links to the new repository/registry namespace.
    • Added CI attestation steps to record SLSA provenance for built images.
    • Documented frontend image platform limitation (amd64-only) causing pull/load failures on Apple Silicon in developer notes.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

This PR renames repository and GHCR references from cyberfabric/* to constructorfabric/* across environment examples, connector descriptors, Dockerfiles, deployment/docs, ADRs/PRDs, and updates the image-build CI workflow to emit SLSA provenance attestations.

Changes

Organizational Reference Migration

Layer / File(s) Summary
Environment and build configuration defaults
.env.local.example, .env.virtuozzo.example, charts/insight/templates/NOTES.txt, charts/insight/README.md
FE_IMAGE_REPOSITORY and IMAGE_REGISTRY defaults now use ghcr.io/constructorfabric; chart next-steps link updated.
Chart publishing and deployment documentation
docs/deploy/README.md, docs/components/deployment/specs/sop/connector-image-rebuild.md, docs/components/deployment/specs/ADR/0001-chart-publishing-on-merge.md, docs/components/deployment/gitops/README.md
OCI chart and image publish/pull examples, Makefile defaults, and poller/publishing workflow text updated to oci://ghcr.io/constructorfabric/charts/insight and ghcr.io/constructorfabric/*.
Connector image references in descriptors & Dockerfiles
src/ingestion/connectors/*/descriptor.yaml, src/ingestion/connectors/*/Dockerfile, src/ingestion/README.md
Connector images.*.image fields updated to ghcr.io/constructorfabric/*; several Dockerfiles gained rebuild-marker comments (no runtime changes).
CI: image build workflow provenance
.github/workflows/build-images.yml
Adds id-token: write and attestations: write permissions, assigns build/push step ids, and appends actions/attest-build-provenance@v2 attest steps per image (gated to non-PR main pushes).
Deployment architecture and design documentation
docs/components/deployment/specs/DESIGN.md, docs/components/deployment/specs/PRD.md
Mermaid diagrams, sequence steps, API/contract text, and CI actor references updated to constructorfabric GHCR/CI identifiers.
Airbyte toolkit and connector workflow documentation
docs/components/airbyte-toolkit/*, cypilot/.core/skills/connector/workflows/*
Example YAMLs, debug images, and CDK/workflow commands updated to constructorfabric image namespaces.
Identity, metric catalog, and backend comment alignment
docs/components/backend/..., docs/domain/metric-catalog/*, src/backend/services/*
Issue/PR links and doc comments changed from cyberfabric/* to constructorfabric/*; a small response-body clarification in metric catalog design was also made (documentation-only).
Dev log and README notes
DEVLOG.md, README.md
DEVLOG notes and README installation/IMAGE_REGISTRY examples updated to constructorfabric references and frontend image amd64 note adjusted.

Sequence Diagram (build + attest flow)

sequenceDiagram
  participant ActionsRunner as GitHub Actions
  participant BuildStep as docker/build-push-action
  participant GHCR as ghcr.io (Registry)
  participant Attestor as actions/attest-build-provenance

  ActionsRunner->>BuildStep: run build/push (id: build / id: push)
  BuildStep->>GHCR: push image -> returns digest
  ActionsRunner->>Attestor: invoke attest step (subject-name + digest)
  Attestor->>GHCR: publish provenance attestation (referrers)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

"🐰 I hopped through links and tags today,
From cyber to construct I changed the way,
Images rebloom under GHCR's light,
Attestations whisper provenance at night,
A tiny rebuild hop — now all aligned and gay."

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: migrating references from cyberfabric to constructorfabric across GHCR, repositories, and adding image attestations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/domain/metric-catalog/specs/PRD.md`:
- Line 461: The PRD currently gives conflicting guidance about whether consumers
should key off id (UUIDv7) or metric_key; unify the document to make id the
single canonical lookup key everywhere: update all sections that say "lookup by
metric_key" to instead instruct consumers to use id (UUIDv7) as the stable wire
identifier, keep metric_key only as the additional FE-bridge identifier per
ADR-002 (mentioning it is surfaced but not primary), and ensure examples,
response-shape definitions, and any references in links/metric_query_catalog
guidance reflect id-as-primary; also add a short note where metric_key appears
explaining its transitional purpose and that consumers must map metric_key→id if
they currently rely on metric_key.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 78ec5859-725f-40b6-9eed-3f2effc8c9a8

📥 Commits

Reviewing files that changed from the base of the PR and between cf3685e and 9bda5914323db22983adb953e80adaa1841873ad.

📒 Files selected for processing (51)
  • .env.local.example
  • .env.virtuozzo.example
  • DEVLOG.md
  • README.md
  • charts/insight/README.md
  • charts/insight/templates/NOTES.txt
  • cypilot/.core/skills/connector/workflows/deploy.md
  • cypilot/.core/skills/connector/workflows/workflow.md
  • deploy/airbyte/README.md
  • docs/components/airbyte-toolkit/specs/ADR/0011-cdk-prebuilt-images.md
  • docs/components/airbyte-toolkit/specs/AIRBYTE-DEPLOY-NOTES.md
  • docs/components/airbyte-toolkit/specs/DESIGN.md
  • docs/components/airbyte-toolkit/specs/PRD.md
  • docs/components/airbyte-toolkit/specs/feature-reconcile/FEATURE.md
  • docs/components/backend/identity-resolution/identity/specs/ADR/0009-post-profile-with-uniqueness-invariant.md
  • docs/components/backend/identity-resolution/identity/specs/ADR/0010-org-chart-cache.md
  • docs/components/backend/identity-resolution/identity/specs/ADR/0011-persons-relax-uniqueness-and-collation.md
  • docs/components/backend/identity-resolution/identity/specs/PRD.md
  • docs/components/connectors/ai/github-copilot/specs/DESIGN.md
  • docs/components/connectors/task-tracking/silver/jira/specs/DESIGN.md
  • docs/components/connectors/task-tracking/youtrack/specs/README.md
  • docs/components/deployment/gitops/README.md
  • docs/components/deployment/specs/ADR/0001-chart-publishing-on-merge.md
  • docs/components/deployment/specs/DESIGN.md
  • docs/components/deployment/specs/PRD.md
  • docs/components/deployment/specs/sop/connector-image-rebuild.md
  • docs/deploy/README.md
  • docs/domain/ingestion/specs/DESIGN.md
  • docs/domain/metric-catalog/specs/ADR/ADR-002-metric-key-on-wire-for-fe-bridge.md
  • docs/domain/metric-catalog/specs/ADR/ADR-003-link-map-on-catalog-read-response.md
  • docs/domain/metric-catalog/specs/DESIGN.md
  • docs/domain/metric-catalog/specs/PRD.md
  • docs/domain/metric-catalog/specs/PRD_human_readable.md
  • src/backend/services/analytics-api/src/domain/catalog/response.rs
  • src/backend/services/analytics-api/src/migration/m20260527_000001_seed_metric_catalog.rs
  • src/backend/services/analytics-api/src/migration/m20260601_000001_ai_claude_team_metrics.rs
  • src/backend/services/analytics-api/src/migration/m20260601_000002_seed_claude_team_metrics_catalog.rs
  • src/backend/services/analytics-api/src/migration/m20260603_000001_seed_crm_metric_catalog.rs
  • src/backend/services/identity/src/Insight.Identity.Infrastructure/MariaDb/Sql.OrgChart.cs
  • src/backend/services/identity/src/Insight.Identity.Infrastructure/MariaDb/Sql.Profiles.cs
  • src/backend/services/identity/tests/Insight.Identity.Tests.Integration/ActiveIntervalsTests.cs
  • src/backend/services/identity/tests/Insight.Identity.Tests.Integration/OrgChartTests.cs
  • src/ingestion/README.md
  • src/ingestion/connectors/ai/claude-enterprise/README.md
  • src/ingestion/connectors/ai/github-copilot/dbt/copilot__ai_org_usage.sql
  • src/ingestion/connectors/ai/github-copilot/descriptor.yaml
  • src/ingestion/connectors/crm/hubspot/descriptor.yaml
  • src/ingestion/connectors/crm/salesforce/descriptor.yaml
  • src/ingestion/connectors/git/bitbucket-cloud/descriptor.yaml
  • src/ingestion/connectors/git/github-v2/descriptor.yaml
  • src/ingestion/connectors/task-tracking/jira/descriptor.yaml

Comment thread docs/domain/metric-catalog/specs/DESIGN.md
Comment thread docs/domain/metric-catalog/specs/PRD.md
Roman Mitasov and others added 2 commits June 10, 2026 14:42
…fabric

The GitHub org/repo was renamed cyberfabric/cyber-insight -> constructorfabric/insight.
This rewrites all in-scope references to the new org and registry namespace:

- GitHub repo URLs and #NNN shorthand: github.com/cyberfabric/{cyber-insight,insight}
  -> constructorfabric/insight; frontend refs -> constructorfabric/insight-front.
- Container images and charts: ghcr.io/cyberfabric/... and
  oci://ghcr.io/cyberfabric/charts/... -> ghcr.io/constructorfabric/...
  (6 connector descriptors, charts values toolboxImage, jira-enrich, .env examples, docs).

Deliberately left unchanged (not repo/image references):
- the live K8s annotation namespace insight.cyberfabric.com/* (cluster contract),
- the cyberfabric / cyberfabric-core framework name and other repos (DNA, cyber-pilot),
- cypilot traceability IDs, docs.cyberfabric.com / cyberfabric.{io,local,internal} domains,
- kubeconfig / cluster names such as cyber-insight-k8s.

CI (.github/workflows/build-images.yml) was already on IMAGE_PREFIX ghcr.io/constructorfabric;
reconcile-connectors is registry-agnostic (reads the full image ref from the descriptor),
so no workflow or reconcile changes are required.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Roman Mitasov <Roman.Mitasov@constructor.tech>
…rebuilds

Add keyless SLSA provenance (actions/attest-build-provenance@v2) to every
image-publishing job in build-images.yml: backend-api-gateway,
backend-analytics-api, backend-identity, toolbox, and the descriptor-driven
build-image matrix. Attestations are signed via the workflow's short-lived
OIDC identity (no stored keys; permissions: id-token + attestations) and
pushed to GHCR as OCI referrers (push-to-registry: true) so registry-only
consumers (cluster admission) can verify without GitHub API access:

  gh attestation verify oci://<image> --repo constructorfabric/insight

Steps are gated to non-PR runs on main, mirroring the image push condition.

Also add a rebuild marker comment to all six connector image build contexts
(5 CDK Dockerfiles + jira enrich). GHCR packages did not follow the
cyberfabric -> constructorfabric org rename, so the descriptor-pinned tags
do not resolve under the new namespace. descriptor.yaml is excluded from CI
image triggers by design (bump-commit loop break), so a context change is
the canonical way (per the connector-image-rebuild SOP) to make the merge of
this PR rebuild and republish every connector image: CI builds + attests all
six, bump-descriptors patches images.<key>.image with the fresh tag and
minor-bumps descriptor.version, and the follow-up run rebakes the toolbox
and publishes the umbrella chart.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Roman Mitasov <Roman.Mitasov@constructor.tech>
@mitasovr
mitasovr force-pushed the claude/xenodochial-kepler-87e9f7 branch from 9bda591 to 803b957 Compare June 10, 2026 11:43
@mitasovr mitasovr changed the title chore: migrate repo + GHCR image refs from cyberfabric to constructorfabric chore: migrate GHCR/repo refs to constructorfabric; attest published images; republish connector images Jun 10, 2026
@mitasovr
mitasovr merged commit 376321d into constructorfabric:main Jun 10, 2026
30 of 33 checks passed
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.

2 participants