Skip to content

feat(labs): one command, one page — scripts/labs, REPO.md and the labs-workflow skill - #25352

Open
ludamad wants to merge 11 commits into
ad/labs-port-prfrom
ad/labs-workflow
Open

feat(labs): one command, one page — scripts/labs, REPO.md and the labs-workflow skill#25352
ludamad wants to merge 11 commits into
ad/labs-port-prfrom
ad/labs-workflow

Conversation

@ludamad

@ludamad ludamad commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #25347#25348#25346. Makes the cross-repo workflow terse enough to fit on one page, then writes that page.

Tooling

  • scripts/labs <verb>apply, status, export, check, bump <ref> [--commit|--pr], upstream <n>.. [--push], port <pr> [--push], run <cmd>, test.
  • The labs gitlink is skip-worktree after apply: git status is quiet, git add -u/commit -a skip it, a bare git add labs is a no-op; only bump moves the pin (its update-index clears the bit; apply re-sets it). The pre-commit guard reads the index with --ignore-submodules=none, so a deliberately staged patch commit is still refused.
  • Auto-export: apply installs a post-commit hook in labs/ that re-exports the series (hook unsets git's GIT_DIR; marker and tooling commits opt out via LABS_PATCHES_NO_AUTO_EXPORT=1).
  • --push on upstream/port (needs aztec-node write access — labs employees run that step); bump --commit (one commit: gitlink + foundry locks + patches) and bump --pr (push labs-bump/<short>, open the PR, list patches absorbed upstream).
  • Lifecycle test: hidden gitlink, auto-export, bump --commit (16 checks).

Docs

  • REPO.md: build/test, change labs from the foundation, port a PR, take labs changes in, public ↔ private, "if this happens" — one page, every command real.
  • .claude/skills/labs-workflow/SKILL.md points at it with the verb table and the rules that prevent real mistakes.
  • CLAUDE.md <labs_submodule_patches> / <git_staging> and labs-patches/README.md updated to match.

…s-workflow skill

The labs workflow read as a sequence of scripts to remember; this collapses it:

- `scripts/labs <verb>`: apply, status, export, check, bump <ref> [--commit|--pr],
  upstream <n>.. [--push], port <pr> [--push], run <cmd>, test.
- `apply` marks the labs gitlink skip-worktree, so git status, `git add -u` and
  `git commit -a` leave the permanently-ahead submodule alone and a bare
  `git add labs` is a no-op; the pin moves only with bump. The pre-commit guard
  reads the index with --ignore-submodules=none so a deliberately staged patch
  commit is still refused.
- `apply` installs a post-commit hook in labs/ that re-exports the series, so
  the .patch files cannot lag the checkout (the marker commit and the tooling's
  own commits opt out).
- `--push` on upstream/port runs the printed push and gh pr create; `bump
  --commit` records gitlink, foundry locks and series in one commit, `--pr`
  pushes it as labs-bump/<short> and opens the PR, listing the patches
  upstream absorbed.
- REPO.md: the cross-repository workflow (foundation, private, labs) on one
  page; the `labs-workflow` skill points at it; CLAUDE.md and the README point
  at both. Lifecycle test covers the hidden gitlink, the auto-export hook and
  bump --commit.
Adam Domurad added 6 commits August 31, 2026 12:04
… no pushes to aztec-node

upstream loses --push and its printed push/PR commands: the labs team drains
the .patch files with git am; the branch it builds is a local preview. port
keeps --push for someone with aztec-node write access; the foundation side
itself never pushes to aztec-node.
…s/labs — no pushes to aztec-node"

This reverts commit 53a997e.
@ludamad
ludamad changed the base branch from ad/labs-port-pr to next September 1, 2026 00:36
@ludamad
ludamad requested a review from charlielye as a code owner September 1, 2026 00:36
@ludamad
ludamad changed the base branch from next to ad/labs-port-pr September 1, 2026 00:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant