Skip to content

release-train: staging -> main - #122

Merged
tracebloc-release-train[bot] merged 4 commits into
mainfrom
release-train/to-main
Aug 15, 2026
Merged

release-train: staging -> main#122
tracebloc-release-train[bot] merged 4 commits into
mainfrom
release-train/to-main

Conversation

@LukasWodka

@LukasWodka LukasWodka commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Automated promotion by the release train (RFC-0008 D14). Head is the train-managed release-train/to-main branch (a mirror of staging), 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-links failing on root meta markdown by extending .mintignore to skip CLAUDE.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-hooks target (also run from make setup) that installs a tracebloc pre-push hook running make check, with guards for core.hooksPath (symlinks, worktrees, shared hook dirs), existing third-party hooks, delete-only pushes, minimal GUI PATH, and make guard-toolchain before enforcing checks.

Introduces guard-toolchain (mint + node on PATH) as the check prerequisite 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.

LukasWodka and others added 4 commits August 14, 2026 14:10
…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>
@LukasWodka

Copy link
Copy Markdown
Contributor Author

bugbot run

@cursor cursor 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.

✅ 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.

@tracebloc-release-train tracebloc-release-train Bot added gate-nudge Toggled by the release train to (re-)fire the fr-gate and removed gate-nudge Toggled by the release train to (re-)fire the fr-gate labels Aug 14, 2026
@tracebloc-release-train
tracebloc-release-train Bot merged commit 0248973 into main Aug 15, 2026
16 checks passed
@tracebloc-release-train
tracebloc-release-train Bot deleted the release-train/to-main branch August 15, 2026 04:50
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