Skip to content

v0.13.2 — Gateway audience: re-flip default pm → biz

Choose a tag to compare

@hanfour hanfour released this 20 May 07:18
· 91 commits to main since this release

v0.13.2 — Gateway audience: re-flip default pmbiz

Why

v0.13.1 (~30 minutes ago) flipped defaultAudience() from techpm, betting pm was the right middle ground for unknown / non-IT users. Live re-verification on a real slack-webhook workspace, driven via chrome-devtools, showed the gap between tech and pm was too narrow for the actual product intent.

A side-by-side comparison on identical questions:

Tier Reply shape
tech (hanfour, per-user override) app/models/ability.rb, Rolify, Doorkeeper, Devise, Masa::Users::Valid, CanCan::AccessDenied — full method/file/library refs, no code block
pm (H4, default after v0.13.1) ability.rb, partner_admin, Api::V1::Superdsp::BaseController, 4-line Ruby code block — same code references, slightly fewer cross-component refs

The PM tier is intentionally designed to cite file paths and model names — the prompt says "PMs use these to brief engineers later". For a true non-IT user (sales / ops / exec-adjacent), that's still too technical. And the one Ruby block in the PM reply was itself a violation of PM tier's own "no code blocks unless quoting an exact API name or table column" rule, suggesting the LLM was leaning on existing channel session history (yesterday's tech-tier replies were in the same thread).

Fixed

  • defaultAudience() returns { default: "biz" } (packages/cli/src/gateway/config.ts). The BIZ prompt enforces:

    • Mandatory jargon translation: AdFormat → 「廣告版型」, scope → 「篩選條件」, AASM → 「狀態機」
    • No code blocks unless quoting operational SQL the user must run
    • Implementation collapsed: "想看實作可以再問 IT" or「程式碼層面可以問工程師」
    • Lead with one-line plain-Chinese summary of what the question is really asking

    PMs who want file refs can still opt into pm tier; engineers stay on tech. Both via explicit per-user override:

    pmk gateway audience set <PM-USER-ID> pm
    pmk gateway audience set <IT-USER-ID> tech
  • Test assertion in gateway.test.ts flipped from default === "pm" to default === "biz". Same intent ("legacy configs back-fill with the default"); value follows the factory.

Tests

@pmk/cli 362 → 362 (unchanged). All 412 workspace tests still pass.

Operator note

This is factory-only. Existing gateway.json files keep whatever audience.default they already have. To apply the new default to an existing host:

pmk gateway audience default biz
# Optionally promote known PMs / engineers:
pmk gateway audience set <PM-USER-ID> pm
pmk gateway audience set <IT-USER-ID> tech
# Restart the gateway (audience config is loaded into memory at adapter construction):
kill -TERM $(cat ~/.pmk/gateway/gateway.pid) && pmk gateway start

If you only just upgraded from v0.13.0 directly (skipping v0.13.1), there's no need to do anything special — your existing config is untouched either way.

What's next

The pm/tech tiers stay first-class — this v0.13.2 only changes which one is default. v0.13.3+ might revisit the PM prompt's "no code blocks" rule (currently violated when channel session history bleeds in) and BIZ prompt's translation coverage (currently lists 3 examples — could be expanded as more workspace-specific jargon is observed).