Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
cc04fe6
chore(workspace): pin cli/core/tests gitlinks to origin tips
Aug 3, 2026
de4ef29
chore(workspace): land codegen projections and member gitlinks
Aug 3, 2026
fbc6599
chore(workspace): pin flext-infra after CI WHAT=apply fixed point
Aug 3, 2026
eef499c
chore(workspace): land WHAT=apply verb projections + pre-commit/pre-p…
Aug 3, 2026
3fa35cc
chore(make): regenerate Makefile to fixed point (escape comment conti…
Aug 3, 2026
84605d0
chore(workspace): advance 30 member gitlinks to pushed tips
Aug 3, 2026
049db2e
chore(workspace): pin flext-infra after TOC and CI fragment landings
Aug 3, 2026
e4f2a1a
Merge pull request #84 from flext-sh/bugfix/mro-z75t-pin-gitlinks-and…
marlon-costa-dc Aug 3, 2026
4b75f42
wip: automated snapshot before gitflow audit (2026-08-02) (#70)
marlon-costa-dc Aug 3, 2026
dcd2b4a
chore(workspace): pin flext-infra after fragment include-path fix
Aug 3, 2026
aedbe21
Merge pull request #85 from flext-sh/bugfix/mro-z75t-pin-infra-43ef0b5b
marlon-costa-dc Aug 3, 2026
77ce755
chore(workspace): repin 29 member gitlinks to origin tips
Aug 3, 2026
1ee6332
Merge pull request #86 from flext-sh/bugfix/mro-z75t-repin-member-tips
marlon-costa-dc Aug 3, 2026
2528581
chore(workspace): land CI workflow fixed-point and pin member tips
Aug 3, 2026
41dc910
Merge pull request #87 from flext-sh/bugfix/mro-z75t-regen-after-frag…
marlon-costa-dc Aug 3, 2026
b58b390
chore(workspace): land blank-line fixed-point and pin member tips
Aug 3, 2026
b784ccb
Merge pull request #89 from flext-sh/bugfix/mro-z75t-blankline-root-pin
marlon-costa-dc Aug 3, 2026
f0337ff
chore(workspace): pin flext-infra after docs TOC no-H1 fallback
Aug 3, 2026
1f886a5
Merge pull request #90 from flext-sh/bugfix/mro-z75t-pin-infra-docs-toc
marlon-costa-dc Aug 3, 2026
750c9e1
chore(workspace): pin flext-infra release.yml raw-block fix
Aug 3, 2026
1b5bc37
Merge pull request #91 from flext-sh/bugfix/mro-z75t-closeout
marlon-costa-dc Aug 3, 2026
09ffe98
chore(gen): land release.yml checkout_submodules projection
Aug 3, 2026
8ff3636
Merge pull request #92 from flext-sh/bugfix/mro-z75t-release-yml-proj…
marlon-costa-dc Aug 3, 2026
9f47336
chore(workspace): repin flext-dbt-ldif and flext-infra tips
Aug 3, 2026
1491efe
Merge pull request #93 from flext-sh/bugfix/mro-z75t-repin-dbt-ldif-i…
marlon-costa-dc Aug 3, 2026
bed5ae2
chore(workspace): pin flext-infra docs apply-serialized SSOT
Aug 3, 2026
0b4d44b
Merge pull request #94 from flext-sh/bugfix/mro-z75t-pin-docs-serialized
marlon-costa-dc Aug 3, 2026
99c093a
chore(make): land serialized docs verb projection
Aug 3, 2026
fe0fb78
chore(workspace): advance 19 member gitlinks to pushed tips
Aug 3, 2026
087a6d8
chore(workspace): land docs-apply Makefile and pin member tips
Aug 3, 2026
c9fb88c
Merge pull request #95 from flext-sh/bugfix/mro-z75t-docs-apply-root-pin
marlon-costa-dc Aug 3, 2026
7039e85
chore(workspace): advance flext-infra gitlink for staged _pending cod…
Aug 3, 2026
c0ec674
chore(workspace): advance flext-infra gitlink for disabled 0.20 rule …
Aug 3, 2026
d600dfa
chore(workspace): land docs report gitignore and pin member tips
Aug 3, 2026
1f43737
Merge pull request #96 from flext-sh/bugfix/mro-z75t-docs-gitignore-r…
marlon-costa-dc Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/ci-template/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by `flext-infra codegen conform` for flext — DO NOT EDIT.
name: CI

on:
"on":
pull_request:
push:
branches:
Expand All @@ -18,23 +18,23 @@ jobs:
timeout-minutes: 120
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: false
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.13"

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true

- name: Install declared toolchain
uses: jdx/mise-action@9e7f7633ff6f6d6048a9418a68d48f288f50eb14 # v4.2.3
uses: jdx/mise-action@9e7f7633ff6f6d6048a9418a68d48f288f50eb14 # v4.2.3

- name: Setup
run: make setup
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ jobs:
submodules: false
fetch-depth: 0


- name: Install mise toolchain
uses: jdx/mise-action@9e7f7633ff6f6d6048a9418a68d48f288f50eb14 # v4.2.3

Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by `flext-infra codegen conform` for flext — DO NOT EDIT.
name: Docs

on:
"on":
push:
branches:
- main
Expand Down Expand Up @@ -92,18 +92,18 @@ jobs:
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: false
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.13"

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true

Expand Down Expand Up @@ -149,7 +149,7 @@ jobs:
# upload-artifact v4 skips hidden paths by default (artifact silently empty).
- name: Upload docs reports on failure
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: docs-reports
path: .reports/
Expand All @@ -163,18 +163,18 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
submodules: false
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.13"

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: true

Expand All @@ -188,10 +188,10 @@ jobs:
run: make docs WHAT=build

- name: Configure Pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0

- name: Upload site artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: .reports/docs/site

Expand All @@ -207,4 +207,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
18 changes: 9 additions & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Generated by `flext-infra codegen conform` for flext — DO NOT EDIT.
name: Workspace Release

on:
"on":
push:
tags:
- "v*"
Expand Down Expand Up @@ -71,12 +71,12 @@ jobs:
RELEASE_VERSION: ${{ needs.identity.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.sha }}
submodules: {{ checkout_submodules }}
submodules: false

- name: Verify immutable release source
shell: bash
Expand All @@ -99,12 +99,12 @@ jobs:
fi

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.13"

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: false

Expand Down Expand Up @@ -216,12 +216,12 @@ jobs:
RELEASE_VERSION: ${{ needs.identity.outputs.version }}
steps:
- name: Checkout immutable canary source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.sha }}
submodules: {{ checkout_submodules }}
submodules: false

- name: Verify immutable canary source
id: source
Expand All @@ -248,12 +248,12 @@ jobs:
echo "core_oid=$CORE_OID" >> "$GITHUB_OUTPUT"

- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.13"

- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
with:
enable-cache: false

Expand Down
14 changes: 11 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ scripts/maintenance/
!.taplo.toml
!pyrefly.toml
!poetry.lock
!uv.lock
!ruff-shared.toml
!uv.lock

Expand Down Expand Up @@ -104,6 +105,8 @@ scripts/maintenance/

# BLOCK: AI/Agent Local Data (NEVER track these)
.claude/*

# WHITELIST: Agent skills owned by the workspace root
!.agents/skills/
!.agents/skills/**

Expand Down Expand Up @@ -179,6 +182,14 @@ fix-report.json
**/coverage.xml
**/*.cover

# Docs verb report artifacts inside docs trees
**/docs/generate-report.md
**/docs/generate-summary.json
**/docs/fix-report.md
**/docs/fix-summary.json
**/docs/audit-report.md
**/docs/audit-summary.json

# Virtual environments inside allowed directories (should never be committed)
**/.venv/
**/venv/
Expand Down Expand Up @@ -348,13 +359,10 @@ __pyrefly_virtual__/
.venv.*/
*.egg-info/
build/
context_test/
dist/
node_modules/
rope_ws/
site/
target/
tmp_flow_test/
.pyrefly_cache/
.tox/
.flext-sync.lock
Expand Down
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ make build WHAT=artifacts
- `flext-infra` defaults via project/workspace `config/` overlays — not forked defaults.
- Provisioning adjusts and never destroys dirty work; no `git checkout` / `git reset` in setup or member sync.
- `make gen APPLY=Y` must be idempotent (following `make gen` reports no drift).
- `flext-infra` codegen owns fleet CI and hook projections; update its config/templates, then regenerate consumers.

<!-- AIHUB-WORKSPACE-PROVIDERS-BEGIN -->
## Workspace providers
Expand Down
50 changes: 35 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ BRANCH ?=
PYTEST_ARGS ?=
PYTEST_DIAG_ARGS ?= -rA --durations=0 --tb=long --showlocals
PYTEST_REPORT_ARGS ?= -ra --durations=25 --durations-min=0.001 --tb=short
PYTEST_PROCESS_TIMEOUT_SECONDS ?= 60
PYTEST_PROCESS_TIMEOUT_SECONDS ?= 360
# mro-99ae: the pytest process inherits a hard wall-clock boundary, mirroring
# MYPY_BOUNDED, so a hung run is terminated even if the typed runner stalls.
PYTEST_BOUNDED = timeout --signal=TERM --kill-after=5s "$(PYTEST_PROCESS_TIMEOUT_SECONDS)s"
Expand Down Expand Up @@ -117,21 +117,21 @@ _ALLOWED_WHATS_deps := check lock upgrade $(shell sed -n 's/^_custom_deps_\([a-z
_ALLOWED_WHATS_build := artifacts $(shell sed -n 's/^_custom_build_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_check := all $(shell sed -n 's/^_custom_check_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_test := all $(shell sed -n 's/^_custom_test_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_fmt := check all $(shell sed -n 's/^_custom_fmt_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_fix := check all $(shell sed -n 's/^_custom_fix_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_fmt := check all apply $(shell sed -n 's/^_custom_fmt_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_fix := check all apply $(shell sed -n 's/^_custom_fix_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_run := default $(shell sed -n 's/^_custom_run_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_status := diagnostics $(shell sed -n 's/^_custom_status_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_docs := all generate fix audit build validate $(shell sed -n 's/^_custom_docs_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_clean := generated $(shell sed -n 's/^_custom_clean_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_release := status $(shell sed -n 's/^_custom_release_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_gen := check all $(shell sed -n 's/^_custom_gen_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_gen := check all apply $(shell sed -n 's/^_custom_gen_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')
_ALLOWED_WHATS_worktree := list add update remove $(shell sed -n 's/^_custom_worktree_\([a-z0-9_-]*\):.*/\1/p' "$(MAKEFILE_ROOT)/custom.mk" 2>/dev/null | sort -u | tr '\n' ' ')

CHECK_GATES_ALLOWED := lint format pyrefly mypy pyright security markdown smells
CHECK_GATES_DEFAULT := lint pyrefly mypy pyright security markdown smells
DOCS_ACTIONS := generate fix audit build validate
SERIALIZED_VERBS := check test gen fmt fix deps clean worktree
SERIALIZED_TARGETS := _serialized_check _serialized_test _serialized_gen _serialized_fmt _serialized_fix _serialized_deps _serialized_clean _serialized_worktree
SERIALIZED_VERBS := check test gen fmt fix deps clean worktree docs
SERIALIZED_TARGETS := _serialized_check _serialized_test _serialized_gen _serialized_fmt _serialized_fix _serialized_deps _serialized_clean _serialized_worktree _serialized_docs
# End SECTION: verb dispatch

# === SECTION: lint/type paths (managed) ===
Expand Down Expand Up @@ -177,11 +177,12 @@ _DEFAULT_gen := check
_DEFAULT_worktree := list

_APPLY_WHAT_deps := upgrade
_APPLY_WHAT_fmt := all
_APPLY_WHAT_fix := all
_APPLY_WHAT_fmt := apply
_APPLY_WHAT_fix := apply
_APPLY_WHAT_run := default
_APPLY_WHAT_docs := generate
_APPLY_WHAT_clean := generated
_APPLY_WHAT_gen := all
_APPLY_WHAT_gen := apply
_APPLY_WHAT_worktree := update


Expand Down Expand Up @@ -373,7 +374,7 @@ define _run_for_selected_projects
done
endef

.PHONY: $(PUBLIC_VERBS) $(SERIALIZED_TARGETS) _builtin_help_usage _builtin_setup_environment _builtin_deps_check _builtin_deps_lock _builtin_deps_upgrade _builtin_build_artifacts _builtin_check_all _builtin_test_all _builtin_fmt_check _builtin_fmt_all _builtin_fix_check _builtin_fix_all _builtin_run_default _builtin_status_diagnostics _builtin_docs_all _builtin_docs_generate _builtin_docs_fix _builtin_docs_audit _builtin_docs_build _builtin_docs_validate _builtin_clean_generated _builtin_release_status _builtin_gen_check _builtin_gen_all _builtin_worktree_list _builtin_worktree_add _builtin_worktree_update _builtin_worktree_remove
.PHONY: $(PUBLIC_VERBS) $(SERIALIZED_TARGETS) _builtin_help_usage _builtin_setup_environment _builtin_deps_check _builtin_deps_lock _builtin_deps_upgrade _builtin_build_artifacts _builtin_check_all _builtin_test_all _builtin_fmt_check _builtin_fmt_all _builtin_fmt_apply _builtin_fix_check _builtin_fix_all _builtin_fix_apply _builtin_run_default _builtin_status_diagnostics _builtin_docs_all _builtin_docs_generate _builtin_docs_fix _builtin_docs_audit _builtin_docs_build _builtin_docs_validate _builtin_clean_generated _builtin_release_status _builtin_gen_check _builtin_gen_all _builtin_gen_apply _builtin_worktree_list _builtin_worktree_add _builtin_worktree_update _builtin_worktree_remove

$(filter-out setup $(SERIALIZED_VERBS),$(PUBLIC_VERBS)):
$(call _dispatch,$@)
Expand Down Expand Up @@ -435,6 +436,13 @@ _serialized_worktree:
$(call _dispatch,worktree)


docs: _builtin_require_environment
@$(PROJECT_FLEXT_INFRA) workspace serialize-make --workspace "$(PROJECT_ROOT)" --makefile "$(SELF_MAKEFILE)" --verb "docs" --selector-value "$(WHAT)" --apply-token "$(APPLY)"

_serialized_docs:
$(call _dispatch,docs)



# `setup` keeps its own recipe (it must not require the environment it is about
# to build), but it still runs the pre-/post-setup lifecycle hooks so a project
Expand Down Expand Up @@ -494,7 +502,7 @@ _builtin_help_usage:



@printf ' %-10s WHAT=%s\n' 'docs' "$$(printf '%s' '$(_ALLOWED_WHATS_docs)' | awk '{$$1=$$1; gsub(/ /, "|"); print}')";
@printf ' %-10s WHAT=%s APPLY=Y\n' 'docs' "$$(printf '%s' '$(_ALLOWED_WHATS_docs)' | awk '{$$1=$$1; gsub(/ /, "|"); print}')";



Expand Down Expand Up @@ -639,10 +647,16 @@ _builtin_setup_submodules:
exit 1; \
fi; \
need_fetch=1; \
if git -C "$$child_root" rev-parse --verify "$$remote_ref" >/dev/null 2>&1 && \
git -C "$$child_root" merge-base --is-ancestor "$$gitlink" HEAD && \
git -C "$$child_root" merge-base --is-ancestor "$$remote_ref" HEAD; then \
need_fetch=0; \
if git -C "$$child_root" merge-base --is-ancestor "$$gitlink" HEAD; then \
if git -C "$$child_root" rev-parse --verify "$$remote_ref" >/dev/null 2>&1; then \
if git -C "$$child_root" merge-base --is-ancestor "$$remote_ref" HEAD; then \
need_fetch=0; \
fi; \
else \
# Pin is already present; origin tip may be absent on a shallow CI \
# clone. Origin lag must not fail verify (setup never destroys). \
need_fetch=0; \
fi; \
fi; \
if [ "$$need_fetch" -eq 1 ]; then \
git -C "$$child_root" fetch --quiet origin "$$branch" || { \
Expand Down Expand Up @@ -777,13 +791,17 @@ _builtin_fmt_all: _builtin_require_environment
$(call _require_apply)
@$(WORKSPACE_ORCHESTRATE) --verb fmt $(WORKSPACE_PROJECT_ARGS) --make-arg "APPLY=Y" $(if $(filter 1,$(FAIL_FAST)),--fail-fast)

_builtin_fmt_apply: _builtin_fmt_all

_builtin_fix_check:
@printf 'ERROR: make fix requires APPLY=Y\n' >&2; exit 2

_builtin_fix_all: _builtin_require_environment
$(call _require_apply)
@$(WORKSPACE_ORCHESTRATE) --verb fix $(WORKSPACE_PROJECT_ARGS) --make-arg "APPLY=Y" $(if $(filter 1,$(FAIL_FAST)),--fail-fast)

_builtin_fix_apply: _builtin_fix_all


_builtin_run_default: _builtin_require_environment
@$(UV_RUN) $(PROJECT_NAME) $(ARGS)
Expand Down Expand Up @@ -860,6 +878,8 @@ _builtin_gen_all: _builtin_require_environment
@$(PROJECT_FLEXT_INFRA) deps modernize --workspace "$(PROJECT_ROOT)" --apply
@$(PROJECT_FLEXT_INFRA) deps extra-paths --workspace "$(PROJECT_ROOT)" --apply

_builtin_gen_apply: _builtin_gen_all

_builtin_worktree_list:
@$(PROJECT_FLEXT_INFRA) workspace worktree --workspace "$(WORKSPACE)" --operation list

Expand Down
2 changes: 1 addition & 1 deletion docs/GOVERNANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ only after it passes:

```bash
make check PROJECT=<project> CHECK_GATES=<gates>
make val VALIDATE_SCOPE=workspace
make codegen WHAT=check PROJECT=<project>
```

All FLEXT validation uses the root Make dispatcher; never run bare `ruff`,
Expand Down
Loading
Loading