Skip to content

docs(beta-docs-showcase): retire «Plan→top tier» — aif runs GLM only (operator directive) - #1446

Merged
artyhoo merged 4 commits into
stagingfrom
fix/beta-docs-showcase-glm-only-tier
Aug 17, 2026
Merged

docs(beta-docs-showcase): retire «Plan→top tier» — aif runs GLM only (operator directive)#1446
artyhoo merged 4 commits into
stagingfrom
fix/beta-docs-showcase-glm-only-tier

Conversation

@artyhoo

@artyhoo artyhoo commented Aug 17, 2026

Copy link
Copy Markdown
Owner

Summary

Operator directive 2026-08-17: aif runs GLM only — the Claude runtime is not used there. This retires the beta-docs-showcase deliverable «per-mode defaults Plan→top tier» in the three places that mandated it, and records why it is retired rather than deferred.

The directive is a mechanism now, not a memo: Claude Opus (plan+review) (41315ef6-…) is enabled: false on the live instance. It was safe to disable and it changes no running work — measured, not assumed:

$ curl -s localhost:3009/projects | jq -r '.[] | "\(.name) plan=\(.defaultPlanRuntimeProfileId)"'
rules-as-tests-aif  plan=53eca24c-…      # Z.AI GLM-5.2 SDK
timeliner           plan=53eca24c-…
getff-landing       plan=53eca24c-…
$ curl -s localhost:3009/settings | jq '{defaultPlanRuntimeProfileId}'   # app-level
{ "defaultPlanRuntimeProfileId": null }

All three projects route every mode to GLM and the app-level defaults are null, so the resolution chain (task_override → project_default → system_default, packages/data/src/index.ts:3197-3204) never reached the Claude profile. Nor had it ever run: lastUsageAt: null since creation on 2026-07-20, and the container's ~/.claude/.credentials.json (dated Aug 9) carries expiresAt: 0. The BS-pre smoke task cf894220 died on exactly that — Claude Code returned an error result: Not logged in · Please run /login — which is what surfaced the question.

Changes

  • .claude/orchestrator-prompts/beta-docs-showcase/kickoff.md:18 — Tier line: all aif modes on the executor tier, with the reason and the escape (a top-tier seat is a host-side CC session, never an aif dispatch).
  • .claude/orchestrator-prompts/beta-docs-showcase/kickoff.md:51 — BS-pre deliverable: «all three modes → executor tier», «retired, not deferred».
  • .claude/orchestrator-prompts/beta-docs-showcase-meta-launch/kickoff.md:205 — same, in the Stage 1 dispatch instruction.
  • docs/superpowers/specs/2026-07-23-beta-docs-showcase-design.md:217 — B-D6, with the ownership split spelled out.

What is deliberately NOT changed

The tier criteria. tier-home.md owns them and is a shipped consumer artefact; CLAUDE.md's «Task-tier routing» already assigns which model fills which tier to the aif runtime-profile config — which is exactly the layer that changed. Editing the shipped criteria would widen an operator's machine-level directive into a consumer-facing design change.

Backward-check sweep

Class of this change: a dispatch input mandating Plan→top tier for aif dispatch. Enumerated by grep -rn "Plan→top" --include='*.md' — 4 surfaces beyond this umbrella, none corrected here, each for a stated reason:

  • beta-delivery-ux/kickoff-s4.md:49,92,244,312 and beta-delivery-ux-meta-launch/kickoff.md:234CLOSED umbrella (merged 2026-08-10, done.md written). Historical artefact, read-only for subsequent sessions per the Artifact Ownership Contract.
  • docs/superpowers/specs/2026-07-23-beta-program-design.md:252 — the parent frame, a different owner; its statement is about the beta programme's design intent, not this machine's config.
  • packages/core/templates/shared/tier-home.md:61 — shipped, generic, describes the mechanism rather than this instance. See «NOT changed» above.

One live defect surfaced, not patched here

.claude/skills/pipeline/references/mode-overrides.md:172 maps the aif mode-override preset to the marker value Claude Opus (plan+review) — now a disabled profile. This does not fail loudly: packages/runtime-bridge/src/AifHandoffBackend.ts:132 resolves a bridge-profile marker from an unfiltered GET /runtime-profiles (the API does support ?enabledOnly=true, and does not use it here), so a disabled profile still matches by name, the dispatch reports success, and the task blocks later on runtime auth — the same blocked_external shape as cf894220. Fixing it belongs to the pipeline skill's owner and carries a real design question (with Claude gone, aif and economy would collapse onto the same marker, which makes the preset meaningless — repoint vs retire). Surfaced per the CLAUDE.md PR-strategy rule against drive-by cross-umbrella PRs.

§1.7 Skipped: documentation-only correction recording an operator runtime directive — no rule, principle, template, skill or agent semantics change; the three edited files are dispatch inputs and a design spec owned by this umbrella.

Test plan

  • bash scripts/host-verify.sh beta-docs-showcase — the umbrella kickoff's opt-out is intact
  • markdownlint clean on all three files (pre-commit, 0 errors)
  • Backward sweep run and recorded above (grep -rn "Plan→top", 4 sibling surfaces adjudicated)
  • The disable is reversible: PUT /runtime-profiles/41315ef6-… {"enabled": true} restores it

Fidelity verdict

FIDELITY: skipped — non-stage documentation PR, no stage kickoff or acceptance package to audit against.

Test added 4 commits August 17, 2026 13:37
… main on 2026-07-10

BS-pre measured the target repo at stage entry and found the umbrella's binding
premise false: `redesign-terminal-gates` (154f2d2) is an ancestor of origin/main
(733197e), merged by PR #2 on 2026-07-10T17:35:49Z — thirteen days BEFORE the
design spec was authored. The original census read `main` at 13d7fd5 off a local
working copy that had never fetched, so the claim was already false when written.

Probe: `git merge-base --is-ancestor 154f2d2 origin/main` -> true;
`gh api repos/artyhoo/getff-landing/commits/main` -> 733197e.

Corrected in place, three artefacts:
- design §0.2 census bullet + §1 B-D2 clause + §2 BS1 row: the redesign assets are
  on `main` and live; BS1 ports them from `main`, not from a side branch. B-D2's
  falsifier-1 (surface the merge choice to the operator) is RETIRED as spent by
  reality, tagged with the `#destination-limit-by-inference` shape it matches.
- meta-launch §1 target-repo state, §4 Stage 3, §9 anti-scope (the anti-merge item
  is moot, struck rather than deleted so the record stays legible).
- umbrella kickoff Base line + BS1 stage line.

Deliberately NOT widened: the merge added and removed no route
(`git diff --stat 13d7fd5 origin/main` touches src/pages/index.astro, src/styles/*,
public/demo/*, one blog post), and the live page still serves the eyebrow «rules as
tests» and H1 «Docs lie. Tests don't.» — so the §0.2 URL census and the hero bullet
stand unchanged. The umbrella kickoff also gains the `host-verify` opt-out the
edit-time gate requires (it authors no executable deliverable in this repo).

Prior-art: skipped — documentation correction of a measured-false premise, no new capability, no dependency, no module.
… carried the falsified premise

Round 1 cold review of #1425 (fresh seat, handed only the change's class) returned
REVISE with one MAJOR and three MINORs. All four are applied; every factual claim
in the PR was independently re-derived by that seat and CONFIRMED, including both
"do not widen" judgments.

MAJOR — the correction fixed B-D2's BODY and left its TITLE asserting the opposite
(`design.md:114`, "the unmerged redesign is the asset base"), 12 lines above the
corrected body. That title is the line other artefacts quote when citing B-D2 by
id, so the falsified premise survived in the most-copied line. Failure scenario:
a BS1 executor resolves B-D2 by title, treats `redesign-terminal-gates` as a live
side branch, and ports assets from it instead of from `main`.

MINOR — the recorded probe was not reproducible where the docs point. Run in
`~/code/getff-landing` (the working copy the umbrella names), the probe returns
`false`, because that clone's `origin/main` is still the stale `13d7fd5`. The
`git fetch origin` is now part of the recorded command in both the spec and the
meta-launch, with the false-negative stated, so a later session cannot "falsify"
this correction by reproducing the very defect it fixes.

MINOR — the umbrella Base line had traded a standing instruction ("re-verify at
stage entry") for a dated pin. Both now stand: the SHA is labelled a dated reading
and the re-verify obligation is restored, with `git fetch` named.

MINOR — falsifier-1's retirement dropped B-D2's only calendar-based stall detector
along with its spent action. The retirement stands on the merits, but what it drops
is now stated in the text and routed to the design owner rather than replaced here:
inventing a new escalation is a design decision, not a factual correction.

Also from the review's notes: BS1's row now names `@fontsource/jetbrains-mono`, the
one dependency PR #2 added that the §0.2 Stack bullet does not mention.

Prior-art: skipped — documentation correction round absorbing a cold review; no new capability, no dependency, no module.
…, no Claude runtime inside aif

Operator directive 2026-08-17: aif runs GLM only; the Claude runtime is not to be
used there. This retires — not defers — the umbrella's «per-mode defaults Plan→top
tier» deliverable, in the three places that mandated it.

The directive is now a mechanism rather than a memo: the `Claude Opus (plan+review)`
profile is `enabled: false` on the live instance. Nothing depended on it — all three
projects (`rules-as-tests-aif`, `timeliner`, `getff-landing`) route all modes to
`Z.AI GLM-5.2 SDK`, and the app-level defaults are null, so the resolution chain
(task_override → project_default → system_default) never reached it. It had also
never run: `lastUsageAt: null` since it was created 2026-07-20, and the container's
`~/.claude/.credentials.json` (dated Aug 9) carries `expiresAt: 0` — the smoke task
`cf894220` died on exactly this, `Not logged in · Please run /login`, before the
retirement made it moot.

What is NOT changed, deliberately: the tier CRITERIA. `tier-home.md` owns those and
is a shipped consumer artefact; CLAUDE.md's task-tier routing already assigns «which
model fills which tier» to the aif runtime-profile config, which is precisely the
layer that changed. A top-tier seat, when a stage needs one, is a host-side session.

Backward sweep of the same class («a dispatch input mandating Plan→top for aif»)
found three more surfaces, none corrected here and each for a stated reason:
`beta-delivery-ux/kickoff-s4.md:49,92,244,312` + its meta-launch `:234` belong to a
CLOSED umbrella (historical artefact, read-only per the Artifact Ownership Contract);
`beta-program-design.md:252` is the parent frame, a different owner;
`tier-home.md:61` is shipped and describes the mechanism generically, not this
machine. One live defect the sweep DID surface is out of this umbrella's scope and is
being surfaced to the operator rather than patched here: the `aif` mode-override
preset (`.claude/skills/pipeline/references/mode-overrides.md:172`) still names
`Claude Opus (plan+review)` as its marker value, and `AifHandoffBackend.ts:132`
resolves markers from an unfiltered `GET /runtime-profiles`, so a disabled profile
still matches by name — the dispatch succeeds and the task blocks later on runtime
auth, which is the silent shape, not a loud one.

Prior-art: skipped — documentation correction recording an operator runtime directive; no new capability, no dependency, no module.
…case-b-d2-merge-state

# Conflicts:
#	.claude/orchestrator-prompts/beta-docs-showcase/kickoff.md
@artyhoo
artyhoo enabled auto-merge (squash) August 17, 2026 18:37
@artyhoo
artyhoo merged commit ed612b9 into staging Aug 17, 2026
53 of 54 checks passed
@artyhoo
artyhoo deleted the fix/beta-docs-showcase-glm-only-tier branch August 17, 2026 18:56
artyhoo added a commit that referenced this pull request Sep 2, 2026
…+ morning-report correction (#1560)

* docs(beta-docs-showcase): retract PARK-BSPRE-4 as stale — Decision 1 entry + morning-report correction

The night advisor seat parked BS0 on «container Claude login + Opus profile
flip», contradicting kickoff.md:18-25, the meta-launch kickoff :205-208
(PR #1446: no Claude runtime in aif, retired not deferred) and the operator's
2026-09-01 20:01Z directive cancelling that fork. Records the retraction as
kickoff.decisions.md Decision 1 (entry before application), corrects the
morning report §5/§6 (BS0 is dispatchable on GLM, no operator action), and
adds the .gitignore exception for the new umbrella-level decisions file.
Owner fork surfaced, not fixed: presets/aif.json + presets/economy.json
markers are stale against the live instance.

Prior-art: skipped — documentation only, no new capability (decisions-log entry + report correction)

* docs(beta-docs-showcase): Decision 2 — BS0 two-leg shape, scratch-repo creation stays an operator floor

Prior-art: skipped — documentation only, no new capability (decisions-log entry)

---------

Co-authored-by: Test <test@example.com>
artyhoo added a commit that referenced this pull request Sep 2, 2026
… A (build + in-container gate) (#1561)

BS0 is the umbrella's STOP-gate: if a Fumadocs static export cannot serve the
route set the docs site depends on, the stack is retired to Starlight (parent D5
falsifier-1). Dispatching it needed a stage kickoff, which did not exist.

Two-leg shape (advisor Decision 2, 2026-09-02). The scratch repo the design names,
`artyhoo/getff-docs-smoke`, does not exist (`gh repo view` -> "Could not resolve to
a Repository"), the aif container has no github.com route, and creating a public
repo under the operator's account is outward-facing. So the stage splits: leg A
(this kickoff) builds the prototype in the landing container and proves it against
a local serve of the export; leg B (host + operator) creates the scratch repo,
transplants `smoke/` as its root, enables Pages and quotes the live gate. Leg A
green is explicitly NOT BS0 green -- the kickoff states that as a binding reporting
rule, so BS0 -> BS1 stays closed until the deployed-URL evidence exists.

Deliverables land only under a new `smoke/` directory, laid out as the future
scratch-repo root so leg B is a lossless copy. `main` is untouched and the branch
never opens a PR against it: the landing repo's Pages is cname-bound to `main:/`
(getff.ai), so a second deployment from that repo would displace production.

Filename is `kickoff-b0.md`, not `kickoff-bs0.md`, so it matches
`^kickoff-[a-z]\d[a-z0-9]*\.md$` (packages/core/principles/kickoff-population.ts:34)
and principle 12's citation gate actually resolves it; the `bs0` form would be read
as a sidecar and skipped silently. The .gitignore exception mirrors the existing
per-umbrella precedents and carries that reason inline.

No bridge-profile marker, deliberately: all three modes on the landing project
resolve to the executor tier per the operator's GLM-only directive (PR #1446), and
the `aif` preset's marker still names the disabled Opus profile.

Verification: principle 12 green (9/9); host-verify opt-out accepted;
check-kickoff-traps exit 0; markdownlint 0 errors; prettier clean;
run-local-ci-sweep -> no gates selected for this diff.

Prior-art: skipped -- dispatch-input documentation only. Adds one stage kickoff and
one .gitignore exception; no new dependency, no code, no new capability under
packages/.

Co-authored-by: Test <test@example.com>
artyhoo added a commit that referenced this pull request Sep 5, 2026
… economy → GLM-5.3 SDK (#1608)

## Summary

Two `/pipeline` launch presets named runtime profiles that no longer resolve on the live aif instance: `presets/aif.json` marker `Claude Opus (plan+review)` is a DISABLED profile (matches by exact name in `AifHandoffBackend._resolveProfileId`, then blocks at runtime auth — the `cf894220` shape), and `presets/economy.json` marker `Z.AI GLM-5.2 SDK` matches no profile at all (the instance runs 5.3; dispatch throws). Both were recorded as a live defect in `.claude/orchestrator-prompts/beta-docs-showcase/kickoff.decisions.md:53-54` and left for the pipeline skill owner; the operator invited the fix on 2026-09-05. Data fix, one concern.

## Changes

- `.claude/skills/pipeline/references/presets/aif.json` — `marker: null` (the preset dispatches on the project's per-mode default profiles — the ratified GLM-only posture of PR #1446 / kickoff.decisions.md Decision 1 — instead of forcing a disabled Claude profile); description says so.
- `.claude/skills/pipeline/references/presets/economy.json` — `marker: "Z.AI GLM-5.3 SDK"` (unique under the resolver's match; live list quoted below).
- `.claude/skills/pipeline/SKILL.md:56` — the Seam #3 sentence names the presets that now carry a marker (economy) and the null-marker set (aif/night/sdd).

Live profile list at authoring (`curl -s "$RUNTIME_BRIDGE_AIF_URL/runtime-profiles"`, 2026-09-05):

```text
41315ef6 | Claude Opus (plan+review)        | enabled=False
53eca24c | Z.AI GLM-5.3 SDK                 | enabled=True
b6f8d94e | Qwen3.8-Max-Preview              | enabled=True
088182b8 | Z.AI GLM-5.3 Flash (implementer) | enabled=True
```

`Z.AI GLM-5.3 SDK` is a strict prefix of nothing and a substring of exactly one row — the marker value rule (`packages/core/templates/shared/tier-home.md:63`) holds.

## Prior-art consult

- [x] Not a capability commit (two JSON values + one sentence; `packages/core/hooks/checks/prior-art.ts:142`).
- [x] No new capability area.
- [x] No SSOT entry matched.
- [x] context7 not applicable.

## Test plan

- [x] `bash .claude/skills/pipeline/helpers/list-presets.sh` — `aif` renders without a marker (null → no `marker=` suffix, same path as night/sdd, `list-presets.sh:45-47`), `economy` renders `marker=Z.AI GLM-5.3 SDK`.
- [x] `bash .claude/skills/pipeline/helpers/resolve-preset.sh aif` emits no `PRESET_MARKER` line (`resolve-preset.sh:74-75` handles null); `... economy` emits `PRESET_MARKER=Z.AI GLM-5.3 SDK`.
- [x] `grep -rn 'GLM-5.2 SDK\|plan+review' .claude/skills/pipeline` → only the two edited files before, zero stale hits after; historical kickoffs under `.claude/orchestrator-prompts/` keep their markers as records and are out of scope.

## Provenance

n/a

## Review findings

n/a

## Fidelity verdict

FIDELITY: skipped — data fix of two preset marker values plus one SKILL.md sentence; no stage kickoff applies.

## Parked questions

n/a

## §1.7 Self-discipline check (REQUIRED if PR touches discipline-bearing files)

### §1.7 Skipped: data fix of two preset marker values plus one descriptive SKILL.md sentence — no rule, principle or convention introduced; the marker value rule itself is unchanged



## Follow-ups landed in this PR

- Regenerated the 8 npm-stack + 3 python snapshot baselines (the pipeline skill payload and the re-rendered AI-USAGE-GUIDE §6a ship at every depth; cargo baselines untouched — green in CI).
- `packages/core/hooks/parse-preset.test.ts` follows the new markers (aif: no marker line; economy: GLM-5.3 SDK).
- `AI-USAGE-GUIDE.md` §6a re-rendered via `scripts/render-presets.mjs --write` (the Manifest → RULES.md drift job checks it).
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