chore: close runtime-manager rollout with verification evidence
This commit is contained in:
parent
6fbd6329b4
commit
5772086c1a
3 changed files with 54 additions and 145 deletions
|
|
@ -1,159 +1,67 @@
|
|||
# Next Session: Power Through [EPIC] Global BeadBoard Installer + Runtime Launch (`beadboard-05a`)
|
||||
# Next Session: Runtime Manager Rollout Complete (beadboard-vyt)
|
||||
|
||||
## Mission
|
||||
## What Changed (2026-03-03)
|
||||
|
||||
Complete `beadboard-05a` end-to-end with strict TDD and evidence-first closeout.
|
||||
`beadboard-vyt` is completed and closed.
|
||||
|
||||
This epic implements a single cross-platform BeadBoard installer system (Windows/Linux/macOS wrappers over one shared contract), global `bb`/`beadboard` command availability, runtime launcher behavior, and driver-skill detection-only remediation messaging.
|
||||
Delivered across phases 0-8:
|
||||
1. Runtime manager ADR + contract alignment
|
||||
- `docs/adr/2026-03-03-runtime-manager-global-install.md`
|
||||
- `docs/adr/2026-03-03-global-installer-contract-and-manifest.md`
|
||||
2. Runtime manager library
|
||||
- `src/lib/runtime-manager.ts`
|
||||
3. Runtime-aware launcher metadata
|
||||
- `install/beadboard.mjs`
|
||||
4. Wrapper migration to runtime metadata + atomic shim rewrite
|
||||
- `install/install.sh`
|
||||
- `install/install.ps1`
|
||||
5. Global CLI entrypoint (`doctor`, `self-update`, `uninstall`)
|
||||
- `bin/beadboard.js`
|
||||
- `src/cli/beadboard-cli.ts`
|
||||
6. Driver remediation copy alignment (npm-global first)
|
||||
- `skills/beadboard-driver/scripts/lib/driver-lib.mjs`
|
||||
- `skills/beadboard-driver/scripts/session-preflight.mjs`
|
||||
7. CI/docs rollout updates
|
||||
- `.github/workflows/installer-smoke.yml`
|
||||
- `README.md`
|
||||
- `docs/ops/global-install-rollout.md`
|
||||
|
||||
## Non-Negotiable Context
|
||||
## Verification Evidence
|
||||
|
||||
1. BeadBoard global install is for humans/operators.
|
||||
2. Driver skill does not install BeadBoard; it only checks install/discovery and proceeds.
|
||||
3. Bead hierarchy in this epic must stay `beadboard-05a.x(.x)` style.
|
||||
4. Use `bd` as source of truth; no direct JSONL writes.
|
||||
5. Evidence before completion claims.
|
||||
Focused TDD/acceptance tests added and passing:
|
||||
1. `tests/docs/runtime-manager-adr-contract.test.ts`
|
||||
2. `tests/lib/runtime-manager.test.ts`
|
||||
3. `tests/scripts/beadboard-launcher-runtime.test.ts`
|
||||
4. `tests/scripts/install-legacy-migration.test.ts`
|
||||
5. `tests/cli/beadboard-cli.test.ts`
|
||||
6. Updated installer/driver/docs/ci contract tests all passing.
|
||||
|
||||
## First 10 Minutes (Start From Scratch)
|
||||
Full gates run in-session:
|
||||
1. `npm run typecheck` -> pass
|
||||
2. `npm run lint` -> fail outside rollout scope (known pre-existing `.beads/fix.js` and `.beads/fix2.js` errors)
|
||||
3. `npm run test` -> pass (full explicitly enumerated suite)
|
||||
|
||||
Run exactly:
|
||||
Targeted acceptance checks run and passing:
|
||||
1. `node --import tsx --test tests/lib/runtime-manager.test.ts`
|
||||
2. `node --import tsx --test tests/scripts/beadboard-launcher-runtime.test.ts`
|
||||
3. `node --import tsx --test tests/scripts/install-legacy-migration.test.ts`
|
||||
4. `node --import tsx --test tests/skills/beadboard-driver/resolve-bb.test.ts`
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/Zenchant/codex/beadboard
|
||||
## Open Risks
|
||||
|
||||
# 1) Read hard memory / contract memory
|
||||
bd show beadboard-116 beadboard-60a beadboard-zas beadboard-6fv beadboard-at4
|
||||
1. Global lint remains non-green due known unrelated `.beads/fix.js` and `.beads/fix2.js` rule violations.
|
||||
2. Repo remains broadly dirty from unrelated concurrent work; commits in this session were intentionally scoped by file selection.
|
||||
|
||||
# 2) Load recent context
|
||||
bd query "status=closed" --sort closed --reverse --limit 20
|
||||
bd ready -n 25
|
||||
## Next Bead
|
||||
|
||||
# 3) Inspect epic + task tree
|
||||
bd show beadboard-c70 beadboard-05a
|
||||
bd dep tree beadboard-05a
|
||||
Run `bd ready` and pick top priority from ready queue; likely quality/stabilization follow-up around existing global lint/test drift if requested.
|
||||
|
||||
# 4) Create your session agent bead and claim work
|
||||
bd create --title="Agent: <role-name>" --description="Own beadboard-05a execution" --type=task --priority=0 --label="gt:agent,role:orchestrator"
|
||||
bd update beadboard-05a --status in_progress --assignee <your-agent-bead-id>
|
||||
```
|
||||
## Skills Used This Session
|
||||
|
||||
## Required Skills To Use
|
||||
1. `executing-plans`
|
||||
2. `test-driven-development`
|
||||
3. `verification-before-completion`
|
||||
|
||||
Use these skills explicitly during implementation:
|
||||
|
||||
1. `using-superpowers`
|
||||
2. `beadboard-driver`
|
||||
3. `test-driven-development`
|
||||
4. `verification-before-completion`
|
||||
5. `linus-beads-discipline`
|
||||
6. `writing-plans` (if you need to re-slice tasks before coding)
|
||||
|
||||
## Latest Closed Beads (Most Relevant)
|
||||
|
||||
Recent close context that matters here:
|
||||
|
||||
- `beadboard-x1y` - Hide Closed regression fix (epic visibility bug)
|
||||
- `beadboard-om4` - [MEMORY] Stale UI parity triage order
|
||||
- `beadboard-cyk` - [MEMORY] HideClosed invariants
|
||||
- `beadboard-btt` - Driver install check contract + remediation messaging
|
||||
- `beadboard-i0q` - Global skill project-context contract
|
||||
|
||||
Current open execution epic:
|
||||
|
||||
- `beadboard-05a` - `[EPIC] Global BeadBoard Installer + Runtime Launch`
|
||||
|
||||
## Exact Task IDs For Execution
|
||||
|
||||
Work this exact tree:
|
||||
|
||||
- `beadboard-05a.1` Installer Contract: canonical manifest + shared semantics
|
||||
- `beadboard-05a.1.1` Installer Contract ADR
|
||||
- `beadboard-05a.1.2` Manifest Schema + Validation
|
||||
- `beadboard-05a.2` Windows installer wrapper
|
||||
- `beadboard-05a.2.1` Windows one-liner + PATH contract
|
||||
- `beadboard-05a.3` beadboard launcher (start/open/status)
|
||||
- `beadboard-05a.4` Linux/mac installer wrapper
|
||||
- `beadboard-05a.5` Driver detection alignment
|
||||
- `beadboard-05a.6` Installer CI + smoke tests
|
||||
- `beadboard-05a.7` Installer docs + operator quickstart
|
||||
|
||||
Execution order is dependency-driven; do not bypass.
|
||||
|
||||
## Important Files To Read First
|
||||
|
||||
Read these before coding:
|
||||
|
||||
1. `/mnt/c/Users/Zenchant/codex/beadboard/AGENTS.md`
|
||||
2. `/mnt/c/Users/Zenchant/codex/beadboard/skills/beadboard-driver/SKILL.md`
|
||||
3. `/mnt/c/Users/Zenchant/codex/beadboard/skills/beadboard-driver/scripts/session-preflight.mjs`
|
||||
4. `/mnt/c/Users/Zenchant/codex/beadboard/skills/beadboard-driver/scripts/diagnose-env.mjs`
|
||||
5. `/mnt/c/Users/Zenchant/codex/beadboard/skills/beadboard-driver/scripts/resolve-bb.mjs`
|
||||
6. `/mnt/c/Users/Zenchant/codex/beadboard/skills/beadboard-driver/scripts/lib/driver-lib.mjs`
|
||||
7. `/mnt/c/Users/Zenchant/codex/beadboard/tools/bb.ts`
|
||||
8. `/mnt/c/Users/Zenchant/codex/beadboard/scripts/bb-init.mjs`
|
||||
9. `/mnt/c/Users/Zenchant/codex/beadboard/package.json`
|
||||
10. `/mnt/c/Users/Zenchant/codex/beadboard/docs/adr/2026-02-14-beadboard-driver-skill-and-bb-resolution.md`
|
||||
|
||||
Also note current state:
|
||||
|
||||
- `install/` directory does not yet exist; this epic will introduce it.
|
||||
|
||||
## Strict TDD Execution Flow (Per Task)
|
||||
|
||||
For every `beadboard-05a.x` task:
|
||||
|
||||
1. `bd update <task-id> --status in_progress --assignee <your-agent-bead-id>`
|
||||
2. Write failing test(s) first.
|
||||
3. Run focused test and confirm red for correct reason.
|
||||
4. Implement minimum code to pass.
|
||||
5. Re-run focused tests (green).
|
||||
6. Run broader relevant suite.
|
||||
7. Record evidence in notes:
|
||||
- commands run
|
||||
- pass/fail output summary
|
||||
8. Close only after evidence is recorded.
|
||||
|
||||
Do not claim complete without fresh command output.
|
||||
|
||||
## Verification Gates
|
||||
|
||||
Before closing each code-changing bead and before epic close:
|
||||
|
||||
```bash
|
||||
npm run typecheck
|
||||
npm run lint
|
||||
npm run test
|
||||
```
|
||||
|
||||
If non-epic unrelated failures appear, cite exact failing file/test in bead notes and proceed transparently.
|
||||
|
||||
## Implementation Guardrails
|
||||
|
||||
1. Keep installer architecture unified: one canonical manifest contract + thin OS wrappers.
|
||||
2. Keep skill boundary strict: detection/remediation only, no install side effects.
|
||||
3. Preserve Windows support as mandatory while implementing Linux/mac parity.
|
||||
4. Keep user-facing install/docs copy simple and explicit.
|
||||
5. Do not resurrect deferred legacy tasks (`beadboard-ydu`, `beadboard-27u`, etc.); use `beadboard-05a.x` tree only.
|
||||
|
||||
## Expected Deliverables At Epic Close
|
||||
|
||||
1. New installer contract + manifest definition.
|
||||
2. `install.ps1` and `install.sh` wrappers aligned to the same manifest semantics.
|
||||
3. Global `bb` + `beadboard` command behavior implemented.
|
||||
4. `beadboard` launcher behavior: start/open/status contract.
|
||||
5. Driver detection messaging updated for platform install remediation.
|
||||
6. CI/smoke tests for install/reinstall/failure modes.
|
||||
7. Operator docs with one-liners and runtime command behavior.
|
||||
8. `bd` notes/close reasons with full verification evidence.
|
||||
|
||||
## Session Landing Checklist
|
||||
|
||||
Before handing off:
|
||||
|
||||
1. `bd ready` and confirm unblocked next steps are accurate.
|
||||
2. Update `NEXT_SESSION_PROMPT.md` with what changed, verified commands, risks, and exact next task.
|
||||
3. Memory review:
|
||||
- if reusable new rule: create/supersede canonical memory bead
|
||||
- else add note: "Memory review: no new reusable memory."
|
||||
4. Close your session agent bead.
|
||||
## Memory Review
|
||||
|
||||
Memory review completed: no new reusable memory created.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/env node
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
|
||||
const { spawnSync } = require('node:child_process');
|
||||
const path = require('node:path');
|
||||
|
|
|
|||
|
|
@ -18,5 +18,5 @@ test('self-update returns explicit placeholder result', async () => {
|
|||
test('uninstall requires --yes', async () => {
|
||||
const out = await runCli(['uninstall', '--json']);
|
||||
assert.equal(out.ok, false);
|
||||
assert.match(out.error, /--yes/);
|
||||
assert.match(String(out.error), /--yes/);
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue