release-train: staging -> main - #122
Merged
Merged
Conversation
…backend#1606) (#117) Takes the fan-out from 10/16 repos to 16/16. The target is byte-identical to the one already in backend, client-runtime, cli, model-zoo, tracebloc-engine and client -- extracted verbatim rather than retyped, so this repo cannot start out drifted from the fleet. Honest by design: it catches FORGETTING, not defiance (`--no-verify` skips it), refuses to clobber a pre-push hook that is not ours, skips delete/no-op pushes so a red tree cannot block `git push --delete`, and degrades to a no-op when `make` is absent -- GUI git clients launch hooks with a minimal PATH and several do not expose `--no-verify`, so skipping beats hard-blocking every push. Verified by running the target in a real checkout: hook installed, executable, carries our marker, ends in `exec make check`. Mutation-tested both refusals -- a planted foreign hook is preserved, and an all-zeros local sha exits 0. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…e the hooks dir itself (backend#1995, frontend-app#809) (#119) Two defects in the shared install-hooks block, byte-identical across design-system, docs and frontend-app. Both repos' copies are updated in lockstep. 1. The hook guarded on `make`, then ran a target needing yarn/node/mint. /usr/bin/make ships with the Xcode CLT and sits on the default launchd PATH, while yarn and node (nvm/fnm/volta) and mint (npm -g) are put on PATH by shell rc files a GUI git client's hook shell never sources. So `command -v make` passed and the push then hard-failed on "command not found" — precisely the outcome the skip was written to prevent — and VS Code exposes no --no-verify on push. Rather than add `command -v yarn` to the hook, which would be a fourth copy of the tool list and would drift the next time `check` gains a dependency, `check` now DEPENDS ON a `guard-toolchain` target and the hook asks that target: make guard-toolchain >/dev/null 2>&1 || exit 0 The list then lives in exactly one place — the prerequisite `check` cannot run without satisfying. It gates on TOOLS, not on installed dependencies: "yarn is absent" means this shell cannot run the checks at all and must skip, while "node_modules is absent" means the checks can run and will say so, and must not be swallowed just because it looks similar. `node` is listed alongside the runner because runner-on-PATH-without-node is a real configuration, not a theoretical one: Homebrew puts yarn in /usr/local/bin and nvm puts node elsewhere, and mint's bin is a `#!/usr/bin/env node` script. Guarding only on the runner lets `check` start and die with "env: node: No such file or directory", exit 127. 2. The core.hooksPath guard resolved the hooks directory's PARENT. With core.hooksPath=.githooks, where .githooks is a symlink to a shared dir, `dirname` is the checkout root, which resolves in-repo — so it installed, and the write went THROUGH the symlink into the shared directory. The one path element that can point elsewhere was the only one never resolved. Conversely a linked worktree whose core.hooksPath is the main repo's .git/hooks resolved to a parent outside the worktree toplevel and was skipped, though that directory belongs to the same repository, so the worktree silently got no hook. It now resolves the hooks directory itself when it exists, else the deepest existing ancestor, and treats it as in-repo when it is under either the worktree toplevel or the repo's common git dir. An unresolvable path still skips: "cannot tell" is not evidence that the path is ours. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…#1606) (#120) `make check` (`mint broken-links`) has been red on develop since the org-standards sync landed, and the new pre-push hook that runs it would have blocked every push: erro Syntax error - Unable to parse CLAUDE.md - 43:2: Unexpected character `!` (U+0021) before name ... `mint broken-links` MDX-parses the repo-meta markdown at the repo root, and MDX cannot represent an HTML comment. Line 43 of CLAUDE.md is `<!-- org-standards:begin -->`, written there by the automated sync from tracebloc/.github — so this was never a content mistake anyone could fix in CLAUDE.md, and it will recur every sync. `.mintignore` already documented this exact failure mode for `.github/` ("the dev server still tries to MDX-parse files inside .github (e.g. pull_request_template.md, which uses HTML <!-- comments)"). The root files were simply never listed alongside it. Each candidate was probed rather than guessed — append an HTML comment, re-run `mint broken-links` (mint 4.2.802): CLAUDE.md PARSED -> now ignored (the file that broke) AGENTS.md PARSED -> now ignored TERMINOLOGY.md PARSED -> now ignored .cursor/BUGBOT.md PARSED -> now ignored (via .cursor/) README.md skipped -> auto-ignore genuinely holds CONTRIBUTING.md skipped -> auto-ignore genuinely holds .claude/** skipped -> auto-ignore genuinely holds None are pages — no root markdown file appears in docs.json navigation, so ignoring them checks nothing less. Also corrects the Makefile's "MEASURED at 1.8 s on the current tree, and green." The 1.8 s was right; "and green" was false from the day it was written (the markers landed 2026-08-10, the target 2026-08-11), and is true again only as of this commit. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
release-train: develop -> staging
Contributor
Author
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 9451823. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated promotion by the release train (RFC-0008 D14). Head is the train-managed
release-train/to-mainbranch (a mirror ofstaging), so it never collides with a human PR. Merged only when the fr-gate is green.Note
Low Risk
Docs-repo tooling and ignore-list changes only; no runtime product code, though the pre-push hook affects every push when installed.
Overview
Fixes
make check/mint broken-linksfailing on root meta markdown by extending.mintignoreto skipCLAUDE.md,AGENTS.md,TERMINOLOGY.md, and.cursor/— files Mintlify MDX-parses even though they are not docs pages. HTML comments from org-standards sync had been breaking the check since day one.Adds contributor push-time guardrails via a new
make install-hookstarget (also run frommake setup) that installs a tracebloc pre-push hook runningmake check, with guards forcore.hooksPath(symlinks, worktrees, shared hook dirs), existing third-party hooks, delete-only pushes, minimal GUI PATH, andmake guard-toolchainbefore enforcing checks.Introduces
guard-toolchain(mint+nodeon PATH) as thecheckprerequisite so the hook can skip when the toolchain is missing without treating real check failures as “can’t run.”Reviewed by Cursor Bugbot for commit 9451823. Bugbot is set up for automated code reviews on this repo. Configure here.