Skip to content

Commit ca3c2fc

Browse files
author
lpb-docs
committed
chore: remove dead de-fork + max-tokens-ratio remnants
Follow-up to the pi de-fork (2026-08-31) and the ratio retirement (5ff6283), which missed the image/CI tail and the docs: - Dockerfile: drop LPB_MAX_TOKENS_CONTEXT_RATIO ARG/ENV (baked dead var into every image); build.sh comment -> build.py - CI: drop the MAX_TOKENS grep/output/build-arg chain from build-cli and build-web (grepped a var lpb.conf.env no longer defines) - support/validate: check pi-subagents too (CHECK_REPOS was 2 of 3) - stack/validate: docstring no longer mentions the removed pi-fork check - doc/fork-improvements: repo map now 5 repos; pi fork section reduced to a retired-fork note with a where-it-lives-now table; overflow mitigations + env quick-ref updated to the per-model catalog reality - doc/env-vars: drop the three ratio rows (var, bridge, in-container) - doc/lpb-devstack, doc/manual-tagging, repo-workflow skill: repo/tag counts (5 stack repos, 4 tagged), drop the gone _stack_lib shim and the stale support/-CLI symlink description
1 parent 5ff6283 commit ca3c2fc

10 files changed

Lines changed: 61 additions & 112 deletions

File tree

.github/workflows/build-and-publish.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,6 @@ jobs:
169169
echo "CONFIG_REF=$LPB_CONFIG_REF" >> "$GITHUB_OUTPUT"
170170
echo "NODE_VERSION=$LPB_NODE_VERSION" >> "$GITHUB_OUTPUT"
171171
echo "VSCODIUM_VERSION=$LPB_VSCODIUM_VERSION" >> "$GITHUB_OUTPUT"
172-
MAX_TOKENS=$(grep -E '^LPB_MAX_TOKENS_CONTEXT_RATIO=' lpb.conf.env | cut -d= -f2- | tr -d '"' 2>/dev/null || true)
173-
echo "MAX_TOKENS=${MAX_TOKENS:-0.06}" >> "$GITHUB_OUTPUT"
174172
sha=$(git ls-remote "https://github.com/earendil-works/pi.git" "refs/tags/v${LPB_PI_VERSION}" | awk '{print $1}')
175173
echo "sha=${sha:-unknown}" >> "$GITHUB_OUTPUT"
176174
echo "stack_version=${LPB_VERSION}" >> "$GITHUB_OUTPUT"
@@ -192,7 +190,6 @@ jobs:
192190
VSCODIUM_VERSION=${{ steps.config.outputs.VSCODIUM_VERSION }}
193191
PI_HEAD_SHA=${{ steps.config.outputs.sha }}
194192
LPB_VERSION=${{ steps.config.outputs.LPB_VERSION }}
195-
LPB_MAX_TOKENS_CONTEXT_RATIO=${{ steps.config.outputs.MAX_TOKENS }}
196193
secrets: |
197194
GIT_AUTH_TOKEN=${{ secrets.LPB_STACK_PAT }}
198195
no-cache: ${{ github.event.inputs.no_cache == 'true' }}
@@ -250,8 +247,6 @@ jobs:
250247
# VERSION file is the single source (manual tagging — CI never bumps)
251248
LPB_VERSION=$(cat VERSION)
252249
echo "LPB_VERSION=${LPB_VERSION}" >> "$GITHUB_OUTPUT"
253-
MAX_TOKENS=$(grep -E '^LPB_MAX_TOKENS_CONTEXT_RATIO=' lpb.conf.env | cut -d= -f2- | tr -d '"' 2>/dev/null || true)
254-
echo "MAX_TOKENS=${MAX_TOKENS:-0.06}" >> "$GITHUB_OUTPUT"
255250
sha=$(git ls-remote "https://github.com/earendil-works/pi.git" "refs/tags/v${LPB_PI_VERSION}" | awk '{print $1}')
256251
echo "sha=${sha:-unknown}" >> "$GITHUB_OUTPUT"
257252
echo "stack_version=${LPB_VERSION}" >> "$GITHUB_OUTPUT"
@@ -273,7 +268,6 @@ jobs:
273268
VSCODIUM_VERSION=${{ steps.config.outputs.VSCODIUM_VERSION }}
274269
PI_HEAD_SHA=${{ steps.config.outputs.sha }}
275270
LPB_VERSION=${{ steps.config.outputs.LPB_VERSION }}
276-
LPB_MAX_TOKENS_CONTEXT_RATIO=${{ steps.config.outputs.MAX_TOKENS }}
277271
secrets: |
278272
GIT_AUTH_TOKEN=${{ secrets.LPB_STACK_PAT }}
279273
no-cache: ${{ github.event.inputs.no_cache == 'true' }}

.pi/skills/localpibox-repo-workflow/SKILL.md

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ VERSION or cross-repo state.
3333
```
3434
Single source: devstack/VERSION
3535
Developer: lpb-devstack bump → commit → push (the release trigger)
36-
CI: VERSION changed in pushed commit → tests → build + publish → tag 5 repos
36+
CI: VERSION changed in pushed commit → tests → build + publish → tag 4 repos
3737
```
3838

3939
- **devstack/VERSION** — the only VERSION file in the stack (e.g. `0.0.N-lpb-dev`)
@@ -136,7 +136,7 @@ docs sync + review happens at release time via `docs-ready`.
136136
# commits DOCS_READY=<stable-version> on the docs branch + pushes)
137137
lpb-devstack release docs-ready
138138

139-
# 1. Readiness check (all 6 repos + docs verdict, non-destructive, fetches first)
139+
# 1. Readiness check (all 5 repos + docs verdict, non-destructive, fetches first)
140140
lpb-devstack release status
141141

142142
# 2. Inspect the exact plan without changing anything
@@ -163,7 +163,7 @@ What promote does per repo:
163163
After promote, CI (main pipeline) finishes the release — the VERSION change
164164
on `main` is the trigger:
165165
1. Builds `:{v}-cli/web`, `:main-cli/web`, `:latest-cli/web`, `:{sha}-cli/web`
166-
2. Tags the 5 repos on their stable branches (`lpb`/`main`)
166+
2. Tags the 4 repos on their stable branches (`lpb`/`main`)
167167

168168
Then align the runtime to the stable pipeline:
169169
```bash
@@ -189,7 +189,7 @@ Docs readiness verdicts (`release status`, checked by `promote`):
189189
```bash
190190
# Work happens on dev as usual — CI runs tests on every push (no build).
191191
# When ready to ship: first push/commit any pending work in the other
192-
# 5 repos — bump refuses (dev release gate) until they're all on their
192+
# 4 repos — bump refuses (dev release gate) until they're all on their
193193
# dev branch, pushed, and committed.
194194
lpb-devstack bump # current VERSION patch+1 (+ commit)
195195
git push origin dev # CI sees VERSION change → build + tag
@@ -243,8 +243,7 @@ lpb-devstack --tag main validate
243243
```
244244

245245
Both tools are thin CLIs over the shared `scripts/localpibox/stack/` library
246-
(`gitutil` / `repos` / `version` / `workspace` / `validate` / `release`;
247-
`localpibox._stack_lib` remains a compat shim).
246+
(`gitutil` / `repos` / `version` / `workspace` / `validate` / `release`).
248247

249248
## Settings.json Lifecycle
250249

@@ -313,7 +312,7 @@ Jobs:
313312
- manual with `publish_latest`: `:latest-cli/web`
314313
- cron: `:weekly-cli/web`
315314
4. **tag-repos** — after successful builds, only if VERSION changed: tags
316-
the 5 repos on the pipeline's branches (dev: `lpb-dev`/`dev`, main:
315+
the 4 repos on the pipeline's branches (dev: `lpb-dev`/`dev`, main:
317316
`lpb`/`main`) using `LPB_STACK_PAT`. Retries transient 5xx with backoff
318317
and **fails the run if any repo's tag fails** (a partially-tagged stack
319318
is a release bug — re-running the job is idempotent, 422 = already
@@ -341,9 +340,9 @@ is tag `pre-defork-0.0.71` in `lpb-stack/pi`).
341340
- `scripts/lpb` (wrapper) → `scripts/lpb.py` (engine, stdlib-only)
342341
- Shared helpers: `scripts/localpibox/` Python package
343342
(env/log/run/cli + `stack/` for stack operations)
344-
- `support/lpb-config` + `support/lpb-devstack` (thin CLIs over
345-
`localpibox.stack`; symlinks in `scripts/`, installed to
346-
`/opt/pi-support/` in the image, to `~/.local/bin` on the host)
343+
- `scripts/lpb-config` + `scripts/lpb-devstack` (thin CLIs over
344+
`localpibox.stack`; installed to `/opt/pi-support/` in the image,
345+
to `~/.local/bin` on the host)
347346
- `support/build.py` — local image builder (`build.py [cli|web] [--push]`);
348347
CI does the same inline, this is for local/fork builds
349348
- Installed via `scripts/install.sh` (fetches from the `main` branch —

Dockerfile

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
# Source fork configuration — ARG defaults come from lpb.stack.env
2626
# Instead of editing this file, edit lpb.stack.env (canonical) and either:
27-
# - run support/build.sh (reads lpb.stack.env + lpb.conf.env), or
27+
# - run support/build.py (reads lpb.stack.env + lpb.conf.env), or
2828
# - pass --build-arg per value.
2929
# NOTE: Docker ARG values can't reference source'd shell variables.
3030
ARG NODE_VERSION=24
@@ -38,7 +38,6 @@ ARG CONFIG_FORK=https://github.com/lpb-stack/config.git
3838
ARG CONFIG_REF=main
3939

4040
# Runtime defaults baked from lpb.conf.env (start.sh can still override).
41-
ARG LPB_MAX_TOKENS_CONTEXT_RATIO=0.06
4241
ARG LPB_VERSION=unknown
4342

4443
# Provenance — set via --build-arg in CI, defaults to "unknown" for local builds
@@ -56,16 +55,12 @@ ARG PI_VERSION=0.84.4
5655
ARG PI_HEAD_SHA
5756
ARG CONFIG_FORK
5857
ARG CONFIG_REF
59-
ARG LPB_MAX_TOKENS_CONTEXT_RATIO
6058
ARG LPB_VERSION
6159
ARG IMAGE_REVISION
6260
ARG IMAGE_BUILT
6361

6462
ENV DEBIAN_FRONTEND=noninteractive
6563

66-
# Context window / max tokens ratio — baked into image from lpb.conf.env.
67-
# Container-level overrides take precedence via --env or -e at runtime.
68-
ENV LPB_MAX_TOKENS_CONTEXT_RATIO=${LPB_MAX_TOKENS_CONTEXT_RATIO}
6964
# Stack/version banner value (baked from lpb.conf.env).
7065
ENV LPB_VERSION=${LPB_VERSION}
7166
# Baked from lpb.stack.env/CI — start.sh reads these for the config repo clone.

doc/env-vars.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ If a value from `.env` doesn't seem to apply, check shell env first:
4242
| `LPB_EDITOR_HOST` | `0.0.0.0` | Editor listen host (`127.0.0.1` for local-only) |
4343
| `LPB_CONNECTION_TOKEN` | *(random per start)* | OpenVSCode token — set for a stable token |
4444
| `LPB_LEMONADE_BASE_URL` | `http://127.0.0.1:13305/v1` | Local model server endpoint |
45-
| `LPB_MAX_TOKENS_CONTEXT_RATIO` | `0.06` | max_tokens as fraction of context window (Qwen thinking headroom) |
4645
| `LPB_AGENT_BROWSER_SESSION` | `$PI_WORKTREE_ID` | Browser session isolation id |
4746
| `LPB_AGENT_BROWSER_MAX_OUTPUT` | `4000` | Max chars for browser snapshot output |
4847
| `LPB_AGENT_BROWSER_ARGS` | `--no-sandbox,…` | Chrome launch args |
@@ -80,7 +79,6 @@ priority: shell env > `LPB_` > container-safe fallback):
8079
| `LPB_LEMONADE_BASE_URL` | `LEMONADE_BASE_URL` | Lemonade provider + setup wizard |
8180
| `LPB_LEMONADE_API_KEY` | `LEMONADE_API_KEY` | Lemonade provider + setup wizard |
8281
| `LPB_OPENROUTER_BASE_URL` | `OPENROUTER_BASE_URL` | Optional overflow provider |
83-
| `LPB_MAX_TOKENS_CONTEXT_RATIO` | `MAX_TOKENS_CONTEXT_RATIO` | lemonade-pi-plugin (max_tokens ratio) |
8482
| `LPB_CONNECTION_TOKEN` | `CONNECTION_TOKEN` | OpenVSCode |
8583
| `LPB_EDITOR_HOST` | `HOST` | OpenVSCode |
8684
| `LPB_ED_PORT` | `ED_PORT` | OpenVSCode |
@@ -115,7 +113,6 @@ These select **what goes into the image** (build time) and which pipeline
115113
| `LPB_AGENT_GIT` | Extension clones dir (default `$AGENT_DIR/git/github.com/lpb-stack`) |
116114
| `LEMONADE_BASE_URL` | Model API endpoint (`http://127.0.0.1:13305/v1`) |
117115
| `LEMONADE_API_KEY` | Lemonade server API key (bridged from `LPB_LEMONADE_API_KEY`) |
118-
| `MAX_TOKENS_CONTEXT_RATIO` | max_tokens ratio for the lemonade provider (bridged) |
119116
| `AGENT_BROWSER_SESSION` | Browser session isolation id |
120117
| `AGENT_BROWSER_MAX_OUTPUT` | Max chars for snapshot output |
121118

doc/fork-improvements.md

Lines changed: 40 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,50 @@
11
# LocalPibox Fork Improvements
22

3-
> Last updated: 2026-08-26
4-
> Status: Qwen3.6 reasoning + vision fully operational
3+
> Last updated: 2026-09-03
4+
> Status: de-forked (2026-08-31) — mainstream pi from npm; Qwen thinking via
5+
> lemonade-pi-plugin with per-model `maxTokens` ceilings
56
67
---
78

89
## Repository Map
910

10-
This stack uses 6 repositories under `github.com/lpb-stack`. The two forked
11-
repos and their upstream origins:
11+
This stack uses 5 repositories under `github.com/lpb-stack`. Two are forks
12+
of upstream repos; pi itself is no longer a stack repo (de-forked
13+
2026-08-31, see the retired-fork note below):
1214

1315
| Repo | Type | Upstream | Purpose |
1416
|---|---|---|---|
15-
| **`lpb-stack/pi`** | Fork | `earendil-works/pi` | Pi monorepo — Qwen reasoning + overflow detection |
16-
| **`lpb-stack/lemonade-pi-plugin`** | Fork | `lemonade-sdk/lemonade-pi-plugin` | Lemonade provider — Qwen model detection, vision |
17+
| **`lpb-stack/lemonade-pi-plugin`** | Fork | `lemonade-sdk/lemonade-pi-plugin` | Lemonade provider — Qwen thinking protocol, vision, model catalog |
1718
| **`lpb-stack/pi-subagents`** | Fork | `tintinweb/pi-subagents` | Subagent model registry (local-first) |
1819
| **`lpb-stack/config`** | Original || User settings, skills, agents |
1920
| **`lpb-stack/devstack`** | Original || Docker dev environment + lpb launcher |
2021
| **`lpb-stack/lpb-memory`** | Original || Persistent memory extension |
2122

22-
## The Pi Fork (`lpb-stack/pi`)
23+
Pi (the coding agent itself) is installed from the npm registry at
24+
`LPB_PI_VERSION` (`@earendil-works/pi-coding-agent`) — no repo, no fork.
2325

24-
### Upstream Baseline
26+
## The Pi Fork (`lpb-stack/pi`) — retired 2026-08-31
2527

26-
**Based on:** `earendil-works/pi` v0.84.3 (merged into `lpb-dev` branch)
28+
The `lpb-stack/pi` fork (based on `earendil-works/pi`, last state: tag
29+
`pre-defork-0.0.71`) is **retired**. It was based on v0.84.3 with 8 lbp
30+
commits adding Qwen/Lemonade support: the `reasoning_effort`
31+
`chat_template_kwargs` mapping, a `reasoning_budget_tokens` soft cap, Case 4
32+
reasoning overflow detection, `allowScripts` declarations for native addons,
33+
and fork versioning. Upstream pi has since picked up `reasoning_effort`
34+
natively, which made the fork unnecessary.
2735

28-
The original upstream repo is a **TypeScript monorepo** with 11 packages:
29-
30-
| Package | Description |
36+
| Fork change | Where it lives now |
3137
|---|---|
32-
| `@earendil-works/pi-ai` | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
33-
| `@earendil-works/pi-agent-core` | Agent runtime with tool calling and state management |
34-
| `@earendil-works/pi-coding-agent` | Interactive coding agent CLI |
35-
| `@earendil-works/pi-tui` | Terminal UI library with differential rendering |
36-
| `@earendil-works/pi-client` | Client library |
37-
| `@earendil-works/pi-protocol` | Protocol definitions |
38-
| `@earendil-works/pi-server` | Server component |
39-
| `@earendil-works/pi-session-backends` | Session storage backends |
40-
| `@earendil-works/pi-telemetry` | Vendor-neutral telemetry contracts |
41-
| `@earendil-works/pi-evals` | Evaluation harness |
42-
43-
For chat/workflows, see the companion project: [earendil-works/pi-chat](https://github.com/earendil-works/pi-chat).
44-
45-
### Fork Patches (original set, introduced on v0.84.1/v0.84.2)
46-
47-
The fork adds **6 lbp-specific commits** on top of the upstream merge:
48-
49-
| Commit | What changed | Purpose |
50-
|---|---|---|
51-
| `53c1dc2` | **Critical**: Qwen/Lemonade-compatible patches on v0.84.1 | See details below |
52-
| `3340960` | `docs(lbp)`: document what v0.84.1 provides vs lbp additions | Docs |
53-
| `2a3e9bc` | `feat(coding-agent)`: declare `allowScripts` for native addons | Allow native addons |
54-
| `346947d` | `hooks`: sync to latest (validation-only, skip when not in devstack) | Hook management |
55-
| `8449290` | `chore`: install husky pre-commit hook, remove stale githooks wrapper | Dev tooling |
56-
| `3fc4978` | `Merge tag 'v0.84.2' into lbp-dev` | Upstream merge |
57-
58-
Since the v0.84.3 merge (`13c6d72`): **2 additional commits**
59-
`3c307d0` (fix: cloudflare gateway type, include workers) and
60-
`6db652e` (style: numeric literal normalization in overflow.ts, biome).
38+
| `reasoning_effort` support for Qwen | Mainstream pi ≥0.84.4 sends it natively; the plugin handles the `enable_thinking` protocol |
39+
| `reasoning_budget_tokens` soft cap | Replaced by per-model `maxTokens` ceilings in the plugin's model-params catalog |
40+
| Case 4 overflow detection | Replaced by raised `reserveTokens` (early compaction) + per-model ceilings |
41+
| `allowScripts` for native addons | Re-implemented by devstack: `npm config set allow-scripts …` (start.sh) + `.npmrc` (Dockerfile) |
42+
| `LOCALPIB_VERSION` env read | Replaced by the `LPB_VERSION` banner baked by the Dockerfile |
43+
| Last patch (Case 4 overflow) | Kept as `patches/pi-case4-overflow.patch` for reference |
6144

62-
The **critical commit** (`53c1dc2`) adds these surgical changes:
63-
64-
| File | Change | Purpose |
65-
|---|---|---|
66-
| `packages/ai/src/api/openai-completions.ts` | Maps `reasoning_effort` to `chat_template_kwargs` | Sends `reasoning_effort: "high"\|"medium"\|"low"` to Qwen models |
67-
| `packages/ai/src/api/openai-completions.ts` | Adds `reasoning_budget_tokens` param | Sends soft-cap (0) to prevent runaway thinking blocks |
68-
| `packages/ai/src/types.ts` | Adds `reasoningBudgetTokens` compat field | New compat flag for Qwen reasoning budget |
69-
| `packages/ai/src/utils/overflow.ts` | Adds **Case 4** reasoning overflow detection | Detects when thinking blocks consume output token budget |
70-
| `packages/coding-agent/src/config.ts` | Adds `LOCALPIB_VERSION` env | Reads `LPB_VERSION` for fork identification |
71-
| `VERSION` | New file: `0.0.1-lbp` | Fork version marker |
72-
| `package.json` | Version → `0.0.1-lbp` | Fork version |
73-
74-
### Branch Strategy
75-
76-
| Branch | Source | Content |
77-
|---|---|---|
78-
| `lpb-dev` (default) | Upstream + patches | Active development, contains lbp patches |
79-
| `lpb` (stable) | Derived from `lpb-dev` | Stable branch, receives clean merges |
80-
81-
To update:
82-
```bash
83-
git fetch https://github.com/earendil-works/pi.git
84-
git checkout lbp-dev
85-
git rebase <upstream-tag> # e.g. v0.84.2
86-
# apply lbp patches
87-
git push --force-with-lease origin lbp-dev
88-
```
45+
Re-introducing a forked pi is only needed for changes upstream hasn't
46+
picked up — see `doc/forking.md` for the procedure. A local `workspace/pi`
47+
reference clone may remain at the retired tag.
8948

9049
---
9150

@@ -101,7 +60,7 @@ to support Qwen reasoning models on the Lemonade local provider.
10160
| **Qwen detection** | `isQwenReasoningModel()` — detects Qwen3.x, QwQ, Qwen2.5-thinking via regex |
10261
| **MTP detection** | `isMtpModel()` — detects Multi-Token Prediction models |
10362
| **FLM detection** | `flmTemplateRejectsDeveloperRole()` — disables reasoning for FLM backends |
104-
| **Dynamic maxTokens** | Reasoning: `0.06 × contextWindow`. Non-reasoning: `0.125` — prevents context overflow |
63+
| **Dynamic maxTokens** | Per-model `maxTokens` in the model-params catalog — prevents context overflow (see Configuration below) |
10564
| **Thinking protocol** | Adds `enable_thinking`, `reasoning_budget_tokens`, `thinkingFormat: "qwen-chat-template"` |
10665
| **Heuristic detection** | `isReasoningByHeuristic()` — catches models without `recipe` field |
10766

@@ -190,16 +149,20 @@ The delta is always visible as the diff between upstream and `lpb-dev`.
190149

191150
## Known Issues & Mitigations
192151

193-
### Qwen3 Thinking Overflow (2026-08-02)
152+
### Qwen Thinking Overflow (2026-08-02)
194153

195-
Qwen3.6 with thinking enabled throws "context size exceeded" when
196-
`prompt + max_tokens` exceeds the 262k window.
154+
Qwen with thinking enabled throws "context size exceeded" when
155+
`prompt + max_tokens` exceeds the window.
197156

198-
**Mitigations:**
199-
- `maxTokens` reduced to ~15k (`ratio 0.06`) — leaves room for 10-20k thinking blocks
200-
- `reserveTokens` doubled to 32k — compaction fires at ~88% (230k) instead of ~94% (246k)
157+
**Mitigations (current):**
158+
- Per-model `maxTokens` ceilings in the lemonade-pi-plugin model-params
159+
catalog (16384 for Qwen thinking models — exact values, no formula)
160+
- `reserveTokens` raised — compaction fires before the window overflows
201161
- Thinking disabled during compaction — prevents meta-thinking waste
202-
- `LPB_MAX_TOKENS_CONTEXT_RATIO=0.06` set in `start.sh` and `.env.example`
162+
163+
The original ratio-based mitigation (`LPB_MAX_TOKENS_CONTEXT_RATIO=0.06`
164+
in `start.sh` / `.env.example`) was retired 2026-09-02 — see Configuration
165+
above.
203166

204167
### agent-browser-chat
205168

@@ -215,8 +178,7 @@ per-call. Cannot point at local Lemonade server. Not usable with this stack.
215178
| Variable | Value | Purpose |
216179
|---|---|---|
217180
| `LEMONADE_BASE_URL` | `http://127.0.0.1:13305/v1` | Model API endpoint |
218-
| `VISION_MODEL` | `Qwen3.6-35B-A3B-MTP-GGUF` | Vision model ID |
219-
| `LPB_MAX_TOKENS_CONTEXT_RATIO` | `0.06` | Max tokens ratio for Qwen reasoning |
181+
| `VISION_MODEL` | *(configured)* | Vision model ID — see `lpb-config show` |
220182
| `AGENT_BROWSER_MAX_OUTPUT` | `4000` | Max chars for snapshot output |
221183

222184
### Admin Commands

doc/lpb-devstack.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ commit** — the bump commit is the release trigger.
3434

3535
| Command | Description |
3636
|---|---|
37-
| `lpb-devstack tag-repos` | Tag the 5 stack repos (excl. devstack) at the committed VERSION |
37+
| `lpb-devstack tag-repos` | Tag the 4 stack repos (excl. devstack) at the committed VERSION |
3838
| `lpb-devstack tag-repos --branch dev` | Tag on dev branches (`lpb-dev`/`dev`) |
3939
| `lpb-devstack tag-repos --branch main` | Tag on stable branches (`lpb`/`main`) |
4040
| `lpb-devstack tag-repos --version V` | Explicit version (default: devstack VERSION file) |
@@ -64,7 +64,7 @@ partially-tagged stack is a release bug.
6464

6565
| Command | Description |
6666
|---|---|
67-
| `lpb-devstack release status` | Pre-flight check: all 6 repos + docs flag, non-destructive |
67+
| `lpb-devstack release status` | Pre-flight check: all 5 repos + docs flag, non-destructive |
6868
| `lpb-devstack release docs-ready [--yes]` | Flag the docs branch as reviewed for the next stable release |
6969
| `lpb-devstack release promote --dry-run` | Inspect plan without making changes |
7070
| `lpb-devstack release promote` | Promote dev → main (interactive confirmation, blocked until docs are ready) |
@@ -134,7 +134,7 @@ lpb-devstack release docs-ready # merge dev→docs, review site,
134134
lpb-devstack release status # readiness check (repos + docs)
135135
lpb-devstack release promote --dry-run # inspect plan
136136
lpb-devstack release promote # dev → stable + push (blocked until docs ready)
137-
lpb-devstack tag-repos --branch main # tag the 5 repos on stable branches
137+
lpb-devstack tag-repos --branch main # tag the 4 repos on stable branches
138138
lpb-config --tag main sync-pins # pins → stable tag
139139
pi update --extensions
140140
# CI (main pipeline) then builds images, tags repos, and publishes the

0 commit comments

Comments
 (0)