Business Runtime Promotion Readiness Design
Goal
Add a promotion-readiness review path for business that proves default runtime precision under a simulated runtime_enabled status while keeping the checked in business manifest at activation_status: eval_ready.
This is not the activation change. The output of this slice is a stronger harness and fixture pack that can say whether business is safe to promote in a later, smaller PR.
Current Baseline
As of July 5, 2026 on dev:
- Accounting, economics, and finance are
runtime_enabled. - Business is
eval_ready. - Business eval-ready gate passes with a business-owned fixture pack.
- Business runtime-enabled gate fails closed because the manifest is still
activation_status: eval_ready. - Business default runtime does not suggest business from auto-mode task text.
The current eval-ready gate proves that business signals can be measured when evaluation_subjects={"business"} is provided. It does not prove that default runtime routing would remain precise after business becomes runtime-enabled.
Decision
Introduce a distinct promotion-ready subject gate.
The new gate evaluates the requested subject's fixture pack as if that subject were runtime-enabled, but it does not edit the runtime subject manifest. It is a pre-promotion harness:
eval-ready: current status must beeval_ready; eval-only measurement is allowed throughevaluation_subjects.promotion-ready: current status must still beeval_ready; evaluation runs default routing with a test-only activation override for the target subject.runtime-enabled: current status must beruntime_enabled; no activation override is used.
This separation keeps review semantics explicit:
- A subject can be eval-ready without being promotion-ready.
- A subject can be promotion-ready without being activated.
- Runtime activation remains a separate reviewed manifest-status change.
Scope
In scope:
- Add a
promotion-readygate totooling/scripts/evaluate_subject_router.py. - Add a test-only activation override path to subject refinement so the gate can evaluate default routing as if business were runtime-enabled.
- Keep
content/subjects/business/runtime-subject.yamlatactivation_status: eval_ready. - Fill business runtime resource metadata needed for a later promotion review, using existing checked-in business resources.
- Add promotion-ready fixture expectations for business positive, mixed, method-only, locked, confirmed, and near-miss cases.
- Expand business near-miss coverage for practitioner marketing, sales, consulting, strategy, customer, and launch vocabulary.
- Add a second non-qualitative business positive fixture so promotion readiness is not only case-study or marketing-journal driven.
- Update CLI and roadmap docs to explain the new gate.
- Verify accounting, economics, and finance runtime-enabled gates still pass.
Out of scope:
- Do not change business to
runtime_enabled. - Do not add political economy, geoeconomics, or economics-accounting subject packs.
- Do not change provider configuration, Zotero, literature retrieval, full-text search, local-agent execution, or release automation.
- Do not add network-dependent verification.
- Do not change normal install behavior or project subject lifecycle commands.
Business Promotion Boundary
Promotion-ready business may suggest business in default routing only when a request includes subject-level scholarly business evidence from at least two dimensions. Acceptable promotion-ready positives include:
- management theory plus empirical business design,
- business venue plus construct or theory contribution,
- organizational, firm, team, or platform research data plus mechanism,
- strategic management or marketing research framing plus manuscript venue.
Promotion-ready business must not suggest business from:
- practitioner product launch, sales enablement, customer journey, or channel execution work,
- consulting market analysis, competitor bullets, or client workshop requests,
- startup or small-business planning,
- teaching case assignments or case interview preparation,
- project management workflow requests,
- generic competitive advantage, customer, market, firm, or capability wording that lacks scholarly research context,
- finance, economics, or accounting tasks where business language is secondary.
Method-only business evidence may still borrow a business method lens without making business primary.
Architecture
Activation Override
Add an optional activation override mapping to the subject refinement call path:
activation_status_overrides: Mapping[str, str] | None = NoneThe override is used only by evaluation tooling. It should:
- affect
_subject_can_be_suggested()for the requested subject, - affect manifest-backed runtime subject matches so their
activation_statusreflects the override, - affect candidate filtering in the same way normal runtime status does,
- leave checked-in runtime subject manifests unchanged,
- remain absent from normal runtime callers.
The override must not use evaluation_subjects; promotion-ready is explicitly testing default runtime behavior after activation, not eval-only behavior.
Subject Gate Semantics
Extend gate choices:
GATE_CHOICES = ("runtime-enabled", "eval-ready", "promotion-ready")For promotion-ready:
- current contract status must be
eval_ready, - subject cases are evaluated with
activation_status_overrides={subject: "runtime_enabled"}, evaluation_subjectsisNone,- runtime resources required by
runtime-enabledare checked, - threshold failures block
eligible_for_runtime_promotion.
The report should expose:
{
"eligible_for_eval_ready": false,
"eligible_for_runtime_promotion": true,
"eligible_for_runtime_enabled": false
}when the promotion-ready gate passes.
Business Runtime Resource Metadata
Keep business status eval_ready, but set its subject skill to an existing business runtime resource so promotion-ready resource checks can pass:
subject_skill: content/subjects/business/skills/business-journal-positioning-auditor.mdKeep overlay: "" for this slice. The runtime resource check treats a blank overlay as optional, matching accounting.
Fixture Strategy
Add promotion-ready expectations only where default eval-ready expectations are not enough:
- clear business positives should expect primary business under
promotion-ready, - method-only business should continue to borrow a lens without suggesting business,
- finance-dominant mixed cases should keep finance primary while allowing business only as a neighbor when appropriate,
- confirmed business should stay business and should not rely on eval-only subject measurement,
- near-misses should forbid business under promotion-ready.
Add at least four new business fixtures:
- a clear non-qualitative management/organization positive,
- a clear strategic management positive,
- a practitioner customer/marketing/sales near-miss,
- a practitioner strategy/competitive-advantage/capability near-miss.
Testing Requirements
Minimum verification:
uv run python -m pytest tests/test_subject_refinement.py tests/test_subject_router_eval.py -q
uv run python -m pytest tests/test_subject_contracts.py tests/test_subject_router_eval.py tests/test_subject_refinement.py -q
uv run python tooling/scripts/evaluate_subject_router.py --json
uv run python tooling/scripts/evaluate_subject_router.py --subject business --gate eval-ready --json
uv run python tooling/scripts/evaluate_subject_router.py --subject business --gate promotion-ready --json
uv run python tooling/scripts/evaluate_subject_router.py --subject business --gate runtime-enabled --json
uv run python tooling/scripts/evaluate_subject_router.py --subject accounting --gate runtime-enabled --json
uv run python tooling/scripts/evaluate_subject_router.py --subject finance --gate runtime-enabled --json
uv run python tooling/scripts/evaluate_subject_router.py --subject economics --gate runtime-enabled --json
git diff --checkExpected results:
- default eval exits 0,
- business eval-ready exits 0,
- business promotion-ready exits 0 if the new readiness pack passes,
- business runtime-enabled exits 1 while the manifest remains
eval_ready, - accounting, finance, and economics runtime-enabled gates exit 0,
- whitespace check exits 0.
Risks
- Promotion-ready may create false confidence if the fixture pack is too narrow. Mitigation: add practitioner near-misses with business-like wording before allowing the gate to pass.
- Activation override code could leak into normal runtime behavior. Mitigation: keep the parameter optional, default to no override, and cover default business suppression tests.
- Adding a new gate can confuse CLI consumers. Mitigation: document the exact difference between eval-ready, promotion-ready, and runtime-enabled.
- Business vocabulary remains broad by nature. Mitigation: keep runtime activation as a separate PR even after promotion-ready passes.
Rollback
If the promotion-ready gate is noisy or misleading:
- remove
promotion-readyfrom gate choices, - remove activation override plumbing,
- keep business as
eval_ready, - keep added near-miss fixtures if they improve default eval coverage.
No user project state migration is required because this slice does not write project manifests or change runtime activation status.