fix: eradicate local flext, adopt canonical src layout, owner-first cutover - #202
Conversation
The file held only comments after the third-party forks became pinned Cargo
dependencies: no [submodule] section, and no gitlink in the index either.
flext-infra reads it before any lifecycle step. Its own contract already
treats an ABSENT .gitmodules as no submodules and returns ok({}), but a
PRESENT file makes it shell out to git config -f .gitmodules --get-regexp,
which exits 1 when nothing matches. That non-zero exit surfaced as a hard
failure and stopped make work WHAT=start from provisioning any lane.
Removing the file restores the state the tooling already handles, and it is
what the generator renders for a project with zero gitlinks: base/gitmodules.j2
emits nothing when workspace_gitlinks is empty, so the comment block was a
hand-edit of a generated projection.
…utover ERRADICATED: .claude/settings.json marketplace, mcb_scripts.egg-info, .agents/provider.toml + flext-law, orphan submodules, .gitmodules. CANONICAL LAYOUT: scripts/lib -> src/mcb_scripts (14 modules + qlty + docs), 57 imports rewritten, sys.path bypass removed, tests -> tests/python. OWNER-FIRST: cli.py DELETED (reimplemented flext_cli.cli), 8 consumers rewired, app()->cli.execute_app, model_rebuild on 6 models, toml->tomllib. GATES RESTORED: _custom_* overrides removed, builtin wins, surface.py removed. DOC REPAIR: deleted docs restored from git, broken links repointed. setup=0 gen=0 fmt=0 fix=0 check=0 pytest=67p/0f
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
|
Important Review skippedToo many files! This PR contains 108 files, which is 8 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (108)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Eradicates every local-flext consumption vector, adopts the canonical FLEXT project layout (src/mcb_scripts, scripts, tests), and restores the owner's gates that were being silently disabled by local custom.mk overrides.
Changes
Eradicated (zero local flext references remain)
.claude/settings.json: removedextraKnownMarketplaces.flext→/home/marlonsc/flextmcb_scripts.egg-info: removed (flext-core @ file:///home/marlonsc/flext/*).agents/provider.toml,flext-law,flext-context-routing: local law copies removedFLEXT_TO_MCB_MAPPING.md(root duplicate),FLEXT-INFRA-FIX-REQUEST.md: removedsubmodule.vendor/*sections in.git/config.gitmodules: sectionless file was blockingmake work WHAT=startCanonical Layout (src/, scripts, examples, tests only)
scripts/lib/*.py→src/mcb_scripts/(14 modules + qlty + docs)scripts/lib/tests/→tests/python/scripts_lib/sys.path.insertbypass removed from 5 filesmcb_scripts.cliDELETED (72 lines reimplementingflext_cli.cli)Owner-First Cutover
from flext_cli import cliapp()→cli.execute_app();model_rebuild()on 6 command modelstoml(undeclared dependency) →tomllib(stdlib)Gates Restored
_custom_check_all,_custom_fmt_*,_custom_fix_*,_custom_check_python,_custom_test_allwere disabling the owner's gates. Removed; builtin now wins.scripts/check/surface.pyremoved (38/44 cases asserted non-existent Make surface)Documentation
Gates
Upstream
flext-infrahook fix (CI=Y entry) pushed toorigin/0.12.0-dev(commit 26c848a8)gen WHAT=checkping-pong (executionEnvironments ordering) escalated as mcb-6umqSummary by cubic
Eradicates all local FLEXT consumption and packages our Python tooling as
mcb_scripts, restoring the owner's gates. Previously we imported from local paths and customscripts/lib/cli.pywhile_custom_*targets disabled builtin gates; now we import fromflext_cli/flext_coreand the installedmcb_scriptspackage, and builtin gates run. Side effects: import paths changed, CI hooks simplified,.gitmodulesremoved, andtomlreplaced withtomllib.Canonical Python layout and imports
scripts/lib/*intosrc/mcb_scripts/*; delete local CLI; remove allsys.path.insertbypasses.mcb_scripts.*; eight consumers switch tofrom flext_cli import cliand callcli.execute_app(). Addmodel_rebuild()on six command models.pyproject.toml: add wheel target forsrc/mcb_scripts, set mypy/pyright search paths tosrc, includescriptsviaconfig/workspace.yamlscript_dispatch.tomlwith stdlibtomllib.Gates, Makefile, and CI
_custom_check_*,_custom_fmt_*,_custom_fix_*,_custom_test_*; builtin gates own Python fmt/check/test. Deletescripts/check/surface.pyand its tests.actions/setup-pythonandCI=Yin matrix jobs; overhaul.pre-commit-config.yamlto run make verbs; remove shell hooks underscripts/hooks.Tooling and infra cleanups
scripts/dispatch.pynow drivesmcb_scripts.cosmos_command;qltyrunner resolves the binary viashutil.which..gitmodulesand stray submodule config; unblockmake work WHAT=start..agents/*FLEXT copies and.claudemarketplace entry; dropmcb_scripts.egg-info.Documentation
mcb_scripts.docs.Gates status
Migration
mcb_scriptseditable into your venv; update any out-of-tree imports tomcb_scripts.*if you have local scripts.Written for commit 7c282be. Summary will update on new commits.