MemberJunction / MemberJunction/MJ

MJExplorer manifest prebuild fails open: a missing Open App's screens look like a build that worked

Open Beginner friendly
#3,856 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TSQL
Stars
29
Forks
6
Avg merge
2d 1h
Merged PRs (30d)
323

Description

Filed from **Caliber** (`MemberJunction/bizapps-caliber`), an Open App on MJ.

**Pinned against:** MJ 5.51.0 · **Severity:** small change, prevents a silent whole-feature outage

The MJExplorer template's manifest prebuild ends in a shell fallback:

```
mj codegen manifest --exclude-packages @memberjunction --output ./src/app/generated/class-registrations-manifest.ts \
|| echo 'Warning: mj codegen manifest not available, using existing manifest'
```

When the manifest step fails for any reason — CLI not installed in that environment, an unresolvable
dependency, a config it cannot read — the build continues and links the **stale committed manifest**.
For a host with installed Open Apps that is not a degraded build, it is a wrong one: the managed
`Open App client bootstrap` block is what makes an installed app's client classes register, so the
symptom is that the app's screens are simply absent, with a green build and no error anywhere. A
warning on stdout does not survive CI log volume, and nothing downstream re-checks.

This bites specifically because the block is *generated*, not authored — there is no file in the host
repo whose absence a reviewer would notice.

**The ask:** drop the `|| echo` (let a failed manifest fail the build), or keep the fallback but exit
non-zero when the existing manifest predates the current `dynamicPackages.client` list. Either makes
the failure loud at the moment it is cheap to fix.

**What Caliber ships today:** `apps/MJExplorer` runs the same command with **no** fallback, wired to
both `prebuild` and `prestart`, and `smoke/config/client-bootstrap.test.mjs` asserts the scripts
contain no `||` and that the generated manifest still carries both the bootstrap block and the two
dashboard classes MJ's class factory resolves. That protects our repo; it does nothing for a host
using the template, which is why the ask stands.

---

Contributor guide

Open the contributing guide

Research direction

Locate the MJExplorer template's manifest prebuild command and compare it with the no-fallback scripts in apps/MJExplorer. Run smoke/config/client-bootstrap.test.mjs to review the existing checks for the scripts and generated manifest. Done means a manifest-generation failure is visible to the host build, while the bootstrap block and both dashboard classes remain present when generation succeeds.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, shell, typescript
Domain
build-system, cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.