@bongos/core 1.19.493 → 1.19.495
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +419 -14
- package/.claude/skills/builder-redteam/SKILL.md +2 -2
- package/docs/adr/0234-idea-routing-capture-time-promotion-landing-matrix-homeless-inbox.md +183 -0
- package/docs/adr/README.md +1 -0
- package/docs/design/reviews/hall-v2/README.md +124 -0
- package/docs/design/reviews/hall-v2/atlas--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/atlas--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/atlas--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/collab--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/collab--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/collab--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/copy-desk--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/copy-desk--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/copy-desk--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/diagrams--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/diagrams--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/diagrams--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/drachmae--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/drachmae--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/drachmae--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/gate--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/gate--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/gate--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/goals--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/goals--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/goals--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/government--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/government--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/government--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/harbor--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/harbor--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/harbor--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/idea--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/idea--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/idea--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/ideas--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/ideas--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/ideas--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/index--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/index--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/index--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/modules--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/modules--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/modules--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/not-ready--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/not-ready--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/not-ready--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/pair--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/pair--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/pair--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/people--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/people--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/people--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/primer--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/primer--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/primer--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/profile--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/profile--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/profile--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/ranks--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/ranks--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/ranks--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/roadmap--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/roadmap--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/roadmap--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/roster--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/roster--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/roster--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/sessions--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/sessions--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/sessions--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/settings--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/settings--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/settings--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/task--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/task--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/task--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/watch--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/watch--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/watch--xenos.webp +0 -0
- package/docs/design/reviews/hall-v2/work--archon.webp +0 -0
- package/docs/design/reviews/hall-v2/work--metic.webp +0 -0
- package/docs/design/reviews/hall-v2/work--xenos.webp +0 -0
- package/docs/module-api-changelog.md +4 -0
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/src/module-api.js +1 -1
- package/tests/redteam_followup_kind.mjs +44 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// tests/redteam_followup_kind.mjs — task 1003452.
|
|
2
|
+
//
|
|
3
|
+
// /builder-redteam's optional follow-up idea_inbox POST filed kind:'security-finding',
|
|
4
|
+
// which is not in idea_inbox's CHECK constraint (migrations/042_criterion_proposal_workflow.sql
|
|
5
|
+
// mirrored at modules/ideas/inbox.js VALID_KINDS) — the POST 400s every time, and because
|
|
6
|
+
// the primary vulnerability_reports write already succeeded, the failure is silent (the
|
|
7
|
+
// report lands, the fix idea never files). Fixed by filing kind:'bug' instead — a red-team
|
|
8
|
+
// finding is a bug in the platform's own walls.
|
|
9
|
+
//
|
|
10
|
+
// Static: reads the skill's own committed idea.json shape (CRLF-normalised) and asserts the
|
|
11
|
+
// kind it files is a real member of the enum, imported (not duplicated) from the module that
|
|
12
|
+
// owns it — so a future enum change or a re-broken skill both fail this test honestly.
|
|
13
|
+
//
|
|
14
|
+
// Run: node --test --test-reporter=tap tests/redteam_followup_kind.mjs
|
|
15
|
+
|
|
16
|
+
import { test } from 'node:test';
|
|
17
|
+
import assert from 'node:assert/strict';
|
|
18
|
+
import fs from 'node:fs';
|
|
19
|
+
import path from 'node:path';
|
|
20
|
+
import { fileURLToPath } from 'node:url';
|
|
21
|
+
import { VALID_KINDS } from '../modules/ideas/inbox.js';
|
|
22
|
+
|
|
23
|
+
const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
24
|
+
const SKILL_MD = path.join(ROOT, '.claude', 'skills', 'builder-redteam', 'SKILL.md');
|
|
25
|
+
|
|
26
|
+
function readNormalized(p) {
|
|
27
|
+
return fs.readFileSync(p, 'utf8').replace(/\r\n/g, '\n');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
test('the follow-up idea.json files a kind that is a real member of VALID_KINDS', () => {
|
|
31
|
+
const md = readNormalized(SKILL_MD);
|
|
32
|
+
const m = md.match(/"kind":\s*"([^"]+)"/);
|
|
33
|
+
assert.ok(m, 'SKILL.md must show the literal idea.json shape with a "kind" field');
|
|
34
|
+
const filedKind = m[1];
|
|
35
|
+
assert.ok(
|
|
36
|
+
VALID_KINDS.includes(filedKind),
|
|
37
|
+
`SKILL.md files kind:'${filedKind}', which is not in VALID_KINDS (${VALID_KINDS.join(', ')})`
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('SKILL.md does not still describe the dead kind=\'security-finding\' value anywhere', () => {
|
|
42
|
+
const md = readNormalized(SKILL_MD);
|
|
43
|
+
assert.doesNotMatch(md, /security-finding/, 'the invalid kind must not linger in prose either');
|
|
44
|
+
});
|