src/main/resources/help/qbit-marketing.yaml: a QBIT-layer help bundle in the qqq#1198 format (docs/HELP-CONTENT.md section 5). 346 entries: the app, all 18 tables, 239 non-trivial fields, 23 processes and record actions, 26 widgets (6 dashboard/section widgets, 20 child lists) and 39 possible-value sources. One-line plain summaries (<=120 chars) and 1-4 sentence content, checked against the code (ApprovalService, ExecutionService, ReadinessChecker, CrmResultsService, widgets, actions). Enum labels and lengths use live {{values:}} / {{maxLength:}} / {{label:}} references instead of copies.
HelpBundleCoverageTest: STAND-IN(core=QRun-IO/qqq#1198, removeBy=4.1.0-RC.8) for core's HelpBundleAssertions. It fails on any owned object without an entry, keys that don't resolve, over-long or marked-up summaries, and unresolvable references. New metadata can't merge without help.
Not registered in Java yet: HelpBundles.register doesn't exist until qqq#1198 merges; the producer registers it then (README "Help").
Note: the stacked #4 PRs add marketing_agent_run.heartbeatAt and a rollup table; their entries are added when those merge (the gate enforces it).
Tests
./mvnw verify green locally (all gates).
Written by a Sonnet subagent, reviewed by Claude Opus.
## Summary
- `src/main/resources/help/qbit-marketing.yaml`: a QBIT-layer help bundle in the qqq#1198 format (docs/HELP-CONTENT.md section 5). 346 entries: the app, all 18 tables, 239 non-trivial fields, 23 processes and record actions, 26 widgets (6 dashboard/section widgets, 20 child lists) and 39 possible-value sources. One-line plain summaries (<=120 chars) and 1-4 sentence content, checked against the code (ApprovalService, ExecutionService, ReadinessChecker, CrmResultsService, widgets, actions). Enum labels and lengths use live `{{values:}}` / `{{maxLength:}}` / `{{label:}}` references instead of copies.
- `HelpBundleCoverageTest`: `STAND-IN(core=QRun-IO/qqq#1198, removeBy=4.1.0-RC.8)` for core's `HelpBundleAssertions`. It fails on any owned object without an entry, keys that don't resolve, over-long or marked-up summaries, and unresolvable references. New metadata can't merge without help.
- Not registered in Java yet: `HelpBundles.register` doesn't exist until qqq#1198 merges; the producer registers it then (README "Help").
Note: the stacked #4 PRs add `marketing_agent_run.heartbeatAt` and a rollup table; their entries are added when those merge (the gate enforces it).
## Tests
`./mvnw verify` green locally (all gates).
Written by a Sonnet subagent, reviewed by Claude Opus.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
src/main/resources/help/qbit-marketing.yaml: a QBIT-layer help bundle in the qqq#1198 format (docs/HELP-CONTENT.md section 5). 346 entries: the app, all 18 tables, 239 non-trivial fields, 23 processes and record actions, 26 widgets (6 dashboard/section widgets, 20 child lists) and 39 possible-value sources. One-line plain summaries (<=120 chars) and 1-4 sentence content, checked against the code (ApprovalService, ExecutionService, ReadinessChecker, CrmResultsService, widgets, actions). Enum labels and lengths use live{{values:}}/{{maxLength:}}/{{label:}}references instead of copies.HelpBundleCoverageTest:STAND-IN(core=QRun-IO/qqq#1198, removeBy=4.1.0-RC.8)for core'sHelpBundleAssertions. It fails on any owned object without an entry, keys that don't resolve, over-long or marked-up summaries, and unresolvable references. New metadata can't merge without help.HelpBundles.registerdoesn't exist until qqq#1198 merges; the producer registers it then (README "Help").Note: the stacked #4 PRs add
marketing_agent_run.heartbeatAtand a rollup table; their entries are added when those merge (the gate enforces it).Tests
./mvnw verifygreen locally (all gates).Written by a Sonnet subagent, reviewed by Claude Opus.
🤖 Generated with Claude Code