Skip to content

fix(ci): use static/img pathspec in deploy content checkouts#183

Open
luandro wants to merge 1 commit into
mainfrom
fix/deploy-pathspec-img
Open

fix(ci): use static/img pathspec in deploy content checkouts#183
luandro wants to merge 1 commit into
mainfrom
fix/deploy-pathspec-img

Conversation

@luandro

@luandro luandro commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

What

Deploy workflows checked out docs/ i18n/ static/images/ from the content branch, but image assets live at static/img/ (tracked on both main and content). static/images/ does not exist anywhere, so the checkout failed:

error: pathspec 'static/images/' did not match any file(s) known to git

This is why production and staging deploys have been failing since the last green run on 2026-03-09.

Files

  • deploy-production.yml — production died at content checkout (fatal)
  • deploy-staging.yml — staging died the same way; trigger-decision grep (:76) and paths filter also referenced the wrong dir
  • deploy-test.yml — same unguarded hard-fail
  • deploy-pr-preview.yml — guarded with if/else fallback, so previews silently built without content-sourced images

Updates checkout pathspec, trigger-decision grep, paths filter, and empty-dir guards/counters across all four. translate-docs.yml + .gitignore still reference static/images/ as part of content-branch gitignore management — left untouched to avoid disrupting the content sync mechanism.

Verify

  • grep -rn "static/images" .github/workflows/deploy-*.yml → none
  • prettier --check on all four → unchanged (already formatted)
  • python3 yaml.safe_load on all four → valid YAML

Not in this PR (separate blocker)

content-lock.sha on main points at a dead SHA (9849108…, wiped by a content-branch rebase). This is fixed by running Deploy to Production via workflow_dispatch after this merges — it repromotes origin/content HEAD into the lock and deploys. Dispatch currently dies at the pathspec fixed here; once merged, it will succeed and rewrite the lock.

Deploy steps (after merge)

  1. gh workflow run deploy-production.yml (no inputs → uses origin/content HEAD 89030f6)
  2. Confirm 89030f6 ("translations-update: auto-translations") is approved production content first
  3. Watch the run: gh run watch

Notes

  • No GitHub issue exists for this — discovered during deploy-readiness check.
  • No i18n strings, no visual changes (CI-only).
  • Branch is based off origin/main (8ab4159); local main has 3 unpushed commits (dep + Node 20 bumps) that are not included here and need separate approval to push.

Greptile Summary

This PR fixes deploy workflows so content image assets are checked out from the existing static/img path. The main changes are:

  • Production, staging, test, and PR preview content checkouts now use static/img.
  • Image validation and image-count logging now read static/img.
  • Staging deploy triggers now watch static/img for content-branch image changes.

Confidence Score: 5/5

Safe to merge with minimal risk.

Changes are narrow CI path corrections, and repository context confirms static/img exists while static/images does not. No functional or security issues were identified in the changed workflows.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • Proof logs were saved under trex-artifacts to capture the exact commands, working context in the combined proof log, captured command outputs, and exit statuses.
  • An initial shell wrapper used /bin/sh with PIPESTATUS; the commands were rerun under bash -lc to ensure reliable capture of the Verify runs.
  • Full GitHub Actions deploy execution was intentionally not attempted because it requires Actions runtime, secrets, and deployment state.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
.github/workflows/deploy-pr-preview.yml Updates PR preview content-branch checkout and image validation/counting from static/images to static/img; no issues found.
.github/workflows/deploy-production.yml Updates production locked-content checkout and image validation/counting to use static/img; no issues found.
.github/workflows/deploy-staging.yml Updates staging path filters, deploy trigger detection, content checkout, and image validation/counting to use static/img; no issues found.
.github/workflows/deploy-test.yml Updates test deploy content checkout and image validation/counting to use static/img; no issues found.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Trigger as Workflow trigger
participant Checkout as Actions checkout
participant Content as content branch / locked SHA
participant Build as Docusaurus build
participant Deploy as Pages deploy

Trigger->>Checkout: Start deploy workflow
Checkout->>Content: Fetch content ref
Content-->>Checkout: docs/, i18n/, static/img/
Checkout->>Build: Validate content and image assets
Build->>Deploy: Upload/deploy built site
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant Trigger as Workflow trigger
participant Checkout as Actions checkout
participant Content as content branch / locked SHA
participant Build as Docusaurus build
participant Deploy as Pages deploy

Trigger->>Checkout: Start deploy workflow
Checkout->>Content: Fetch content ref
Content-->>Checkout: docs/, i18n/, static/img/
Checkout->>Build: Validate content and image assets
Build->>Deploy: Upload/deploy built site
Loading

Reviews (1): Last reviewed commit: "fix(ci): use static/img pathspec in depl..." | Re-trigger Greptile

Deploy workflows checked out docs/ i18n/ static/images/ from the
content branch, but image assets live at static/img/ (tracked on both
main and content). static/images/ does not exist, so the checkout
failed with 'pathspec did not match any file(s)'.

- deploy-production.yml: production deploys died at content checkout
- deploy-staging.yml: staging died the same way; trigger decision grep
  and paths filter also referenced the wrong dir
- deploy-test.yml: same unguarded hard-fail
- deploy-pr-preview.yml: guarded with fallback, so previews silently
  built without content-sourced images

Updates checkout pathspec, trigger decision grep, paths filter, and
the empty-dir guards/counters across all four deploy workflows.

Not addressed here (separate concerns):
- content-lock.sha on main points at a dead SHA (9849108) wiped by a
  content-branch rebase. Fixed by running deploy-production via
  workflow_dispatch, which repromotes origin/content HEAD into the lock.
- translate-docs.yml + .gitignore still reference static/images/ as part
  of the content-branch gitignore management; left untouched to avoid
  disrupting the content sync mechanism.
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix deploy workflows to checkout static/img from content branch

🐞 Bug fix ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Fix content-branch checkout pathspec to use static/img instead of static/images.
• Update deploy triggers/filters and validation stats to match the correct asset directory.
• Prevent deploy failures caused by missing pathspec during content checkout steps.
Diagram

graph TD
  A["GitHub Actions: Deploy workflow"] --> B["Fetch origin/content"] --> C["Checkout docs/i18n/static/img"] --> D["Validate content"] --> E["Build docs"] --> F["Deploy"]
  R[("Git repository")] --> B
  R --> C
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Centralize paths via reusable workflow/composite action
  • ➕ Eliminates repeated pathspec/validation logic across deploy workflows
  • ➕ Reduces risk of future drift (e.g., static/img vs static/images)
  • ➕ Makes changes easier to review and roll out consistently
  • ➖ Requires refactoring multiple workflows and inputs/outputs
  • ➖ Slightly harder to debug compared to inline shell steps
2. Use git sparse-checkout for content directories
  • ➕ More explicit and scalable when adding/removing directories
  • ➕ Avoids hard failures from pathspec typos during checkout
  • ➖ More complex git setup steps in workflows
  • ➖ Still needs consistent directory list management

Recommendation: The PR’s approach is the right immediate fix: it corrects the pathspec to static/img everywhere it matters (checkout, triggers, and validation) with minimal risk. Consider a follow-up to centralize the directory list in a reusable workflow/composite action to prevent future path drift across environments.

Files changed (4) +17 / -18

Bug fix (4) +17 / -18
deploy-pr-preview.ymlFix PR preview content checkout and image validation to use static/img +4/-4

Fix PR preview content checkout and image validation to use static/img

• Updates the guarded content-branch checkout to pull static/img instead of the non-existent static/images. Aligns the empty-dir warning and image counting stats to reference static/img so previews correctly include content-sourced images when available.

.github/workflows/deploy-pr-preview.yml

deploy-production.ymlFix production deploy checkout pathspec and image directory checks +4/-4

Fix production deploy checkout pathspec and image directory checks

• Changes the content checkout pathspec at the locked SHA to use static/img, preventing fatal checkout failures. Updates the validation warning and image file counting to reference static/img.

.github/workflows/deploy-production.yml

deploy-staging.ymlFix staging deploy triggers and content checkout to use static/img +5/-6

Fix staging deploy triggers and content checkout to use static/img

• Removes the incorrect static/images path filter and updates the content-change detection grep to match static/img. Adjusts the content checkout and validation/stat steps to use static/img so staging deploys no longer fail during checkout.

.github/workflows/deploy-staging.yml

deploy-test.ymlFix test deploy content checkout and image validation to use static/img +4/-4

Fix test deploy content checkout and image validation to use static/img

• Updates the content checkout pathspec to static/img and aligns the validation warning and image counting stats accordingly. Prevents the workflow from hard-failing due to a missing static/images directory.

.github/workflows/deploy-test.yml

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Your documentation preview is ready!

Preview URL: https://pr-183.comapeo-docs.pages.dev

📦 Content: From content branch (no script changes)

💡 Tip: Add a label to force regeneration if you want to test with fresh Notion data.

This preview will update automatically when you push new commits to this PR.


Built with commit 8ba2aa8

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8ba2aa8214

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

SHA="${{ steps.content-lock.outputs.sha }}"
echo "📂 Checking out content at SHA ${SHA:0:8}..."
git checkout "$SHA" -- docs/ i18n/ static/images/
git checkout "$SHA" -- docs/ i18n/ static/img/

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore generated image checkout path

For content-sourced production/test/staging deploys, this line means git checkout "$SHA" -- ... restores only static/img; git checkout -h documents this form as git checkout ... -- <file>..., so static/images is not copied. The Notion generator still writes downloaded assets to static/images (scripts/notion-fetch/imageProcessing.ts:175-176) and the publisher stages static/images (api-server/content-repo.ts:882-884), while static/img is preserved core Docusaurus assets (scripts/cleanup-generated-content.ts:16-17). Any docs containing generated /images/... references deploy without those files, causing broken images.

Useful? React with 👍 / 👎.

fi
elif [ "$BRANCH_NAME" = "content" ]; then
if printf '%s\n' "$CHANGED_FILES" | grep -Eq '^(docs/|i18n/|static/images/)'; then
if printf '%s\n' "$CHANGED_FILES" | grep -Eq '^(docs/|i18n/|static/img/)'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep staging deploys triggered by generated images

For content-branch commits that only update an image under static/images/, staging will not run: the on.push.paths list above now has static/img/** but no static/images/**, and this changed-file gate also only matches static/img/. The content publisher stages generated images under static/images (api-server/content-repo.ts:882-884), so image-only content updates stay stale on staging.

Useful? React with 👍 / 👎.

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (2) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 13 rules

Grey Divider


Action required

1. Docs mention static/images/ 📘 Rule violation ✧ Quality
Description
Workflow documentation still instructs operators to check out/remove static/images/, but the
workflows now use static/img/. This violates the requirement to update workflow docs when
workflows change and may mislead deploy/rollback operations.
Code

.github/workflows/deploy-production.yml[133]

+          git checkout "$SHA" -- docs/ i18n/ static/img/
Evidence
Compliance ID 342738 requires updating workflow docs when workflow behavior changes. The PR changes
the workflow checkout path to static/img/, while existing workflow documentation still states
static/images/, demonstrating the docs are now out of sync with the workflow.

Rule 342738: Update workflow docs and task trackers when workflows change
.github/workflows/deploy-production.yml[127-180]
context/workflows/PRODUCTION_DEPLOYMENT.md[55-71]
context/workflows/ROLLBACK.md[85-107]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Workflow docs and runbooks reference `static/images/`, but deploy workflows now use `static/img/`.

## Issue Context
After this PR, operational docs become inaccurate (e.g., describing `git checkout ... static/images/`), which can cause confusion during deployments/rollbacks.

## Fix Focus Areas
- context/workflows/PRODUCTION_DEPLOYMENT.md[55-71]
- context/workflows/ROLLBACK.md[85-107]
- .github/workflows/deploy-production.yml[127-180]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. git checkout uses static/img/ 📘 Rule violation ⌂ Architecture
Description
The deploy workflows now check out and validate static/img/, but Compliance ID 342739 (and the
content generation pipeline) expects images under static/images/ referenced via /images,
creating a policy and pipeline mismatch that can ship deployments without generated images (broken
links) and produce misleading image counters.
Code

.github/workflows/deploy-production.yml[133]

+          git checkout "$SHA" -- docs/ i18n/ static/img/
Evidence
Compliance ID 342739 mandates that static images live in static/images/ and be referenced via
/images, yet the updated deploy workflows explicitly check out and count files from static/img/
instead, demonstrating the implemented workflow behavior diverges from the required layout. At the
same time, the Notion/content generation pipeline still writes images into static/images/ and
emits /images/... URLs, so if deployments only fetch static/img/ those generated assets will be
absent and validation/counters will only reflect static/img. Additional repo references such as
/img/... in Docusaurus config and the manifest further show competing conventions are present,
reinforcing the mismatch.

Rule 342739: Store static images under static/images and reference them via /images path prefix
.github/workflows/deploy-production.yml[133-133]
docusaurus.config.ts[257-257]
static/manifest.json[15-74]
.github/workflows/deploy-production.yml[127-134]
scripts/notion-fetch/generateBlocks.ts[106-110]
scripts/notion-fetch/imageProcessing.ts[175-177]
scripts/notion-fetch/imageProcessing.ts[681-686]
api-server/fetch-job-runner.ts[229-236]
api-server/job-executor.ts[652-666]
api-server/content-repo.ts[16-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Deploy workflows were changed to check out/validate `static/img/`, but compliance requires images under `static/images/` referenced via `/images`, and the content generation pipeline still outputs to `static/images/` and rewrites Markdown to `/images/...`. This inconsistency can cause deployments to omit generated image assets (broken image links) and makes image validation/counters misleading.

## Issue Context
- Compliance ID 342739 mandates images be stored under `static/images/` and referenced via `/images`.
- Deploy workflows currently check out and count only `static/img/`.
- The Notion/content generator defaults to writing images into `static/images/` (unless `IMAGES_PATH` is overridden) and emits `/images/...` URLs.
- The repository also appears to have Docusaurus-style `/img/...` references (e.g., in config/manifest), indicating mixed conventions.
- Decide the canonical convention (either `static/images` + `/images` per compliance, or a deliberate migration to `static/img` + `/img`) and then make workflows, generator/env (`IMAGES_PATH`), and any references consistent.

## Fix Focus Areas
- .github/workflows/deploy-production.yml[127-180]
- .github/workflows/deploy-staging.yml[115-171]
- .github/workflows/deploy-test.yml[21-76]
- .github/workflows/deploy-pr-preview.yml[87-340]
- docusaurus.config.ts[257-257]
- static/manifest.json[15-74]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Preview checks wrong image dir 🐞 Bug ◔ Observability
Description
deploy-pr-preview.yml now warns/counts images under static/img, but when it regenerates content
via bun run notion:fetch-all the generator writes images under static/images. This makes PR
preview validation output report missing/0 images even when images were successfully generated.
Code

.github/workflows/deploy-pr-preview.yml[R330-339]

+          if [ ! -d "static/img" ] || [ -z "$(ls -A static/img 2>/dev/null)" ]; then
+            echo "⚠️  Warning: static/img/ directory is empty or missing"
          fi

          echo "✅ Content validated successfully"
          echo "📊 Content statistics:"
          echo "  - English docs: $DOCS_COUNT"
          echo "  - Localized docs: $I18N_COUNT"
          echo "  - Total docs: $TOTAL_CONTENT"
-          find static/images -type f 2>/dev/null | wc -l | xargs echo "  - Images:"
+          find static/img -type f 2>/dev/null | wc -l | xargs echo "  - Images:"
Evidence
The preview workflow regenerates via notion-fetch without overriding IMAGES_PATH, and the
generator defaults to static/images/, so checking static/img will be inaccurate for regenerated
runs.

.github/workflows/deploy-pr-preview.yml[87-138]
scripts/notion-fetch/generateBlocks.ts[106-110]
scripts/notion-fetch/imageProcessing.ts[175-177]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
PR preview content validation now checks `static/img/`, but the Notion regeneration path writes images into `static/images/` by default. This causes misleading warnings and image counts in preview runs.

## Issue Context
The PR preview workflow has two modes:
- checkout from content branch
- regenerate from Notion (`bun run notion:fetch-all`)
The regeneration mode does not set `IMAGES_PATH`, so the generator uses `static/images/`.

## Fix Focus Areas
- .github/workflows/deploy-pr-preview.yml[87-110]
- .github/workflows/deploy-pr-preview.yml[320-340]

## Implementation notes
- Easiest: change the warning and image count to consider both `static/img` and `static/images`.
- Alternative: if `static/img` is the new canonical directory, export `IMAGES_PATH=static/img` for the regeneration path and update generator logic accordingly (including `/images/...` vs `/img/...`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

SHA="${{ steps.content-lock.outputs.sha }}"
echo "📂 Checking out content at SHA ${SHA:0:8}..."
git checkout "$SHA" -- docs/ i18n/ static/images/
git checkout "$SHA" -- docs/ i18n/ static/img/

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

1. git checkout uses static/img/ 📘 Rule violation ⌂ Architecture

The deploy workflows now check out and validate static/img/, but Compliance ID 342739 (and the
content generation pipeline) expects images under static/images/ referenced via /images,
creating a policy and pipeline mismatch that can ship deployments without generated images (broken
links) and produce misleading image counters.
Agent Prompt
## Issue description
Deploy workflows were changed to check out/validate `static/img/`, but compliance requires images under `static/images/` referenced via `/images`, and the content generation pipeline still outputs to `static/images/` and rewrites Markdown to `/images/...`. This inconsistency can cause deployments to omit generated image assets (broken image links) and makes image validation/counters misleading.

## Issue Context
- Compliance ID 342739 mandates images be stored under `static/images/` and referenced via `/images`.
- Deploy workflows currently check out and count only `static/img/`.
- The Notion/content generator defaults to writing images into `static/images/` (unless `IMAGES_PATH` is overridden) and emits `/images/...` URLs.
- The repository also appears to have Docusaurus-style `/img/...` references (e.g., in config/manifest), indicating mixed conventions.
- Decide the canonical convention (either `static/images` + `/images` per compliance, or a deliberate migration to `static/img` + `/img`) and then make workflows, generator/env (`IMAGES_PATH`), and any references consistent.

## Fix Focus Areas
- .github/workflows/deploy-production.yml[127-180]
- .github/workflows/deploy-staging.yml[115-171]
- .github/workflows/deploy-test.yml[21-76]
- .github/workflows/deploy-pr-preview.yml[87-340]
- docusaurus.config.ts[257-257]
- static/manifest.json[15-74]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

SHA="${{ steps.content-lock.outputs.sha }}"
echo "📂 Checking out content at SHA ${SHA:0:8}..."
git checkout "$SHA" -- docs/ i18n/ static/images/
git checkout "$SHA" -- docs/ i18n/ static/img/

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

2. Docs mention static/images/ 📘 Rule violation ✧ Quality

Workflow documentation still instructs operators to check out/remove static/images/, but the
workflows now use static/img/. This violates the requirement to update workflow docs when
workflows change and may mislead deploy/rollback operations.
Agent Prompt
## Issue description
Workflow docs and runbooks reference `static/images/`, but deploy workflows now use `static/img/`.

## Issue Context
After this PR, operational docs become inaccurate (e.g., describing `git checkout ... static/images/`), which can cause confusion during deployments/rollbacks.

## Fix Focus Areas
- context/workflows/PRODUCTION_DEPLOYMENT.md[55-71]
- context/workflows/ROLLBACK.md[85-107]
- .github/workflows/deploy-production.yml[127-180]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment on lines +330 to +339
if [ ! -d "static/img" ] || [ -z "$(ls -A static/img 2>/dev/null)" ]; then
echo "⚠️ Warning: static/img/ directory is empty or missing"
fi

echo "✅ Content validated successfully"
echo "📊 Content statistics:"
echo " - English docs: $DOCS_COUNT"
echo " - Localized docs: $I18N_COUNT"
echo " - Total docs: $TOTAL_CONTENT"
find static/images -type f 2>/dev/null | wc -l | xargs echo " - Images:"
find static/img -type f 2>/dev/null | wc -l | xargs echo " - Images:"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

3. Preview checks wrong image dir 🐞 Bug ◔ Observability

deploy-pr-preview.yml now warns/counts images under static/img, but when it regenerates content
via bun run notion:fetch-all the generator writes images under static/images. This makes PR
preview validation output report missing/0 images even when images were successfully generated.
Agent Prompt
## Issue description
PR preview content validation now checks `static/img/`, but the Notion regeneration path writes images into `static/images/` by default. This causes misleading warnings and image counts in preview runs.

## Issue Context
The PR preview workflow has two modes:
- checkout from content branch
- regenerate from Notion (`bun run notion:fetch-all`)
The regeneration mode does not set `IMAGES_PATH`, so the generator uses `static/images/`.

## Fix Focus Areas
- .github/workflows/deploy-pr-preview.yml[87-110]
- .github/workflows/deploy-pr-preview.yml[320-340]

## Implementation notes
- Easiest: change the warning and image count to consider both `static/img` and `static/images`.
- Alternative: if `static/img` is the new canonical directory, export `IMAGES_PATH=static/img` for the regeneration path and update generator logic accordingly (including `/images/...` vs `/img/...`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@luandro

luandro commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Do not merge as-is — evidence in #186, re-verified independently against the current content branch (not just main's own tracked files):

$ git fetch origin main content
$ git show origin/main:content-lock.sha
070dc8ddbf40c95f9ad21789b03b7a3691302f37
$ git rev-parse origin/content
070dc8ddbf40c95f9ad21789b03b7a3691302f37   # matches — this is the live SHA
$ git ls-tree -r origin/content --name-only | grep -c '^static/img/notion/'
0
$ git ls-tree -r origin/content --name-only | grep -c '^static/images/notion/'
61

main's own tracked files genuinely don't have static/images/ (confirmed, this PR's description is right about that) — but the content branch, which is what actually gets checked out at deploy time, has 61 real files at static/images/notion/ and zero at static/img/notion/. That's because comapeo-content-pipeline — which now generates and pushes this repo's production content — writes to static/images/notion/, not static/img/.

Merging this as-is would make the next production deploy's content checkout (git checkout $SHA -- docs/ i18n/ static/img/) pull zero images from the content branch, since nothing currently writes to static/img/notion/.

Corroborating: the content branch's own .gitignore has explicit static/images/emojis/* rules, and translate-docs.yml (untouched by this PR) has comments explicitly describing /static/images/ as one of the three generated dirs it manages — both assume static/images/, not static/img/. This PR's own description already flagged this inconsistency and scoped around it, which was the right call.

Decision (per #186, resolved with the repo owner): keep static/images/ as the canonical path going forward — it already matches the pipeline's output, the content branch's .gitignore, and translate-docs.yml. Next step: amend the checkout pathspec (and any other static/img references this PR added) back to static/images/, keeping the rest of the PR's real fixes (trigger-decision grep, paths filter, empty-dir guards/counters). Happy to help verify against a real deploy dry-run once updated.

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.

1 participant