Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/core/src/loop/boringstack/refine-prompt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ const companyOptions = companies.map((c) => (<option key={c.id} value={c.id}>{c.

**Every visible string via \`t("features.${camel}.<key>")\`** — no hardcoded JSX text (button labels like "Edit"/"Delete" included).

**Make the feature reachable.** Add a sidebar link to \`apps/ui/src/components/core/AppSidebar/AppSidebar.tsx\` (add your feature's entry to the \`APP_SIDEBAR_NAV_ITEMS\` array, following the existing format) and register its route in \`apps/ui/src/app/router/routes.tsx\` (add a route pointing at your feature's page component). Both files are in your editable scope — ADD ONLY your feature's entries, never modify another feature's link/route (same rule as the shared schema + locale files). A feature missing from the sidebar or router is unreachable and fails browser acceptance. **After adding your NavLink, update the sidebar's co-located test \`apps/ui/src/components/core/AppSidebar/AppSidebar.test.tsx\`: it asserts the EXACT number of nav links (e.g. \`toHaveLength(6)\`), so bump that count by exactly one for your added link — otherwise the final full-project validate fails even though your feature is correct.**
**Make the feature reachable.** Add a sidebar link to \`apps/ui/src/components/core/AppSidebar/AppSidebar.tsx\` (add your feature's entry to the \`APP_SIDEBAR_NAV_ITEMS\` array, following the existing format) and register its route in \`apps/ui/src/app/router/routes.tsx\` (add a route pointing at your feature's page component). Both files are in your editable scope — ADD ONLY your feature's entries, never modify another feature's link/route (same rule as the shared schema + locale files). A feature missing from the sidebar or router is unreachable and fails browser acceptance. **After adding your NavLink, update the sidebar's co-located test \`apps/ui/src/components/core/AppSidebar/AppSidebar.test.tsx\`: it asserts the EXACT number of nav links (e.g. \`toHaveLength(6)\`), so bump that count by exactly one for your added link — otherwise the per-feature gate fails THIS cycle (it runs that test), not only the final validate, even though your feature is correct.**

---

Expand Down
7 changes: 7 additions & 0 deletions packages/core/tests/boringstack-refine-prompt.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,13 @@ describe("refinePrompt", () => {
expect(prompt).toContain("APP_SIDEBAR_NAV_ITEMS");
// Must carry the add-only boundary for those shared files.
expect(prompt).toContain("ADD ONLY");
// Post-#183 the FAST per-feature gate runs the sidebar's co-located nav-count test, so the
// guidance must tell the model a stale count fails THIS cycle — not merely the final validate
// (understating the urgency lets the model defer the count bump and spray the fast gate).
expect(prompt).toContain("per-feature gate fails THIS cycle");
expect(prompt).not.toContain(
"otherwise the final full-project validate fails"
);
});

it("teaches the scaffold's api-client hook typing: annotate the DOMAIN type, never Readable/as (kills the near-green cluster)", () => {
Expand Down