@ornexus/neocortex 4.60.60 → 4.60.62
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/dist/release-source.json +1 -0
- package/dist/sbom.cdx.json +150 -47
- package/install.ps1 +1 -1
- package/install.sh +1 -1
- package/package.json +9 -4
- package/packages/client/dist/cli.js +52 -2
- package/packages/client/dist/commands/invoke.d.ts +1 -0
- package/packages/client/dist/commands/invoke.js +80 -73
- package/packages/client/dist/commands/legacy-epic-terminal.d.ts +9 -0
- package/packages/client/dist/commands/legacy-epic-terminal.js +1 -0
- package/packages/client/dist/commands/legacy-story-pr.d.ts +2 -1
- package/packages/client/dist/commands/legacy-story-pr.js +1 -1
- package/packages/client/dist/commands/mutation-qa-checkpoint.d.ts +39 -0
- package/packages/client/dist/commands/mutation-qa-checkpoint.js +5 -0
- package/packages/client/dist/commands/mutation-qa-gate.d.ts +35 -0
- package/packages/client/dist/commands/mutation-qa-gate.js +1 -0
- package/packages/client/dist/commands/mutation-qa-git.d.ts +2 -0
- package/packages/client/dist/commands/mutation-qa-git.js +1 -0
- package/packages/client/dist/commands/mutation-qa-policy.d.ts +15 -0
- package/packages/client/dist/commands/mutation-qa-policy.js +1 -0
- package/packages/client/dist/commands/mutation-qa-run.d.ts +14 -0
- package/packages/client/dist/commands/mutation-qa-run.js +3 -0
- package/packages/client/dist/commands/mutation-qa-verdict.d.ts +21 -0
- package/packages/client/dist/commands/mutation-qa-verdict.js +1 -0
- package/packages/client/dist/commands/mutation-qa.d.ts +22 -0
- package/packages/client/dist/commands/mutation-qa.js +1 -0
- package/packages/client/dist/commands/property-qa.d.ts +1 -0
- package/packages/client/dist/commands/property-qa.js +1 -0
- package/packages/client/dist/commands/qa-scan-capture.d.ts +52 -0
- package/packages/client/dist/commands/qa-scan-capture.js +11 -0
- package/packages/client/dist/commands/qa-scan-discovery.d.ts +36 -0
- package/packages/client/dist/commands/qa-scan-discovery.js +3 -0
- package/packages/client/dist/commands/qa-scan-review.d.ts +119 -0
- package/packages/client/dist/commands/qa-scan-review.js +5 -0
- package/packages/client/dist/commands/refactor-characterization.d.ts +47 -0
- package/packages/client/dist/commands/refactor-characterization.js +12 -0
- package/packages/client/dist/commands/refactor-commit.d.ts +45 -0
- package/packages/client/dist/commands/refactor-commit.js +13 -0
- package/packages/client/dist/commands/refactor-review.d.ts +37 -0
- package/packages/client/dist/commands/refactor-review.js +5 -0
- package/packages/client/dist/commands/refactor-root.d.ts +85 -0
- package/packages/client/dist/commands/refactor-root.js +7 -0
- package/packages/client/dist/generated/command-registry.generated.d.ts +9 -9
- package/packages/client/dist/generated/command-registry.generated.js +1 -1
- package/packages/client/dist/generated/public-projections.generated.d.ts +20 -20
- package/packages/client/dist/generated/public-projections.generated.js +1 -1
- package/packages/client/dist/git/legacy-story-pr.d.ts +137 -6
- package/packages/client/dist/git/legacy-story-pr.js +51 -43
- package/packages/client/dist/license/license-client.js +1 -1
- package/packages/client/dist/private-execution/delivery.d.ts +49 -4
- package/packages/client/dist/private-execution/delivery.js +4 -2
- package/packages/client/dist/private-execution/isolated-admission.d.ts +7 -0
- package/packages/client/dist/private-execution/isolated-admission.js +10 -10
- package/packages/client/dist/private-execution/private-report-store.d.ts +17 -0
- package/packages/client/dist/private-execution/private-report-store.js +1 -0
- package/packages/client/dist/private-execution/property-test-candidate.d.ts +14 -0
- package/packages/client/dist/private-execution/property-test-candidate.js +1 -0
- package/packages/client/dist/private-execution/property-test-choices.d.ts +15 -0
- package/packages/client/dist/private-execution/property-test-choices.js +3 -0
- package/packages/client/dist/private-execution/property-test-plan.d.ts +65 -0
- package/packages/client/dist/private-execution/property-test-plan.js +7 -0
- package/packages/client/dist/private-execution/property-test-review.d.ts +58 -0
- package/packages/client/dist/private-execution/property-test-review.js +4 -0
- package/packages/client/dist/private-execution/property-test-runtime.d.ts +18 -0
- package/packages/client/dist/private-execution/property-test-runtime.js +9 -0
- package/packages/client/dist/private-execution/property-test-source.d.ts +8 -0
- package/packages/client/dist/private-execution/property-test-source.js +1 -0
- package/packages/client/dist/state/project-state-snapshot.js +1 -1
- package/packages/shared/dist/generated/command-registry.generated.js +9 -9
- package/packages/shared/dist/generated/invocation-schema.generated.js +2 -2
- package/packages/shared/dist/generated/public-projections.generated.js +18 -18
- package/packages/shared/dist/invocation/index.d.ts +1 -1
- package/packages/shared/dist/invocation/index.js +13 -0
- package/packages/shared/dist/merge-readiness/c12-registry-projection.js +111 -0
- package/packages/shared/dist/merge-readiness/c12-remote-observation.js +60 -0
- package/targets-stubs/antigravity/gemini.md +1 -1
- package/targets-stubs/antigravity/skill/SKILL.md +1 -1
- package/targets-stubs/claude-code/neocortex-root.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex-root.md +2 -2
- package/targets-stubs/claude-code/neocortex.agent.yaml +1 -1
- package/targets-stubs/claude-code/neocortex.md +2 -2
- package/targets-stubs/codex/AGENTS.md +1 -1
- package/targets-stubs/cursor/agent.md +2 -2
- package/targets-stubs/gemini-cli/agent.md +2 -2
- package/targets-stubs/opencode/neocortex-root.md +1 -1
- package/targets-stubs/vscode/neocortex.agent.md +2 -2
|
@@ -1,56 +1,56 @@
|
|
|
1
1
|
/** Generated by scripts/generate-public-catalog-projections.mjs. Do not edit. */
|
|
2
2
|
export const PUBLIC_PROJECTION_BUNDLE = {
|
|
3
3
|
"schemaVersion": "PublicProjectionBundle/1.0",
|
|
4
|
-
"generationId": "sha256:
|
|
5
|
-
"sourceHash": "
|
|
6
|
-
"catalogHash": "
|
|
7
|
-
"publicProjectionHash": "
|
|
8
|
-
"stageProjectionHash": "
|
|
9
|
-
"compilationHash": "
|
|
4
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9",
|
|
5
|
+
"sourceHash": "12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9",
|
|
6
|
+
"catalogHash": "78c0271523e9a7dab978370cf6fc9c4abb3692b7fd21b9e8118bff1886b8fa19",
|
|
7
|
+
"publicProjectionHash": "e5022ae52f9241a51faab0e1d6f64c953e402fecaabac2d384298376dc14002d",
|
|
8
|
+
"stageProjectionHash": "f9875354257eb62be4509cd5cbf0b8e5e214a7414e82b8a8e45bc2baea6f0477",
|
|
9
|
+
"compilationHash": "82aeb4d0dceff6954222b15e35f9baf1d0eab7b14b6a994daaa7e7d793d65626",
|
|
10
10
|
"registry": {
|
|
11
11
|
"version": "1.0.0",
|
|
12
|
-
"checksum": "
|
|
12
|
+
"checksum": "184a2d616e0734fd3173d60889d74bae031280513831ec1f0a3a8c36959d2994"
|
|
13
13
|
},
|
|
14
14
|
"artifacts": [
|
|
15
15
|
{
|
|
16
16
|
"kind": "catalog",
|
|
17
17
|
"schemaVersion": "ExecutableGraphCatalogPublicProjection/1.0",
|
|
18
18
|
"relativePath": "catalog.json",
|
|
19
|
-
"sha256": "
|
|
19
|
+
"sha256": "47bfe074c0e3094296bae58393c801a745b102d548099596ccb3d8e419a3e738",
|
|
20
20
|
"entryCount": 97,
|
|
21
|
-
"generationId": "sha256:
|
|
21
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"kind": "commands",
|
|
25
25
|
"schemaVersion": "CommandRegistryPublicProjection/1.0",
|
|
26
26
|
"relativePath": "commands.json",
|
|
27
|
-
"sha256": "
|
|
27
|
+
"sha256": "907c009c7b10ad01eadb7a7f603af8759f348fe444af98a24c4558117bd09146",
|
|
28
28
|
"entryCount": 62,
|
|
29
|
-
"generationId": "sha256:
|
|
29
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9"
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"kind": "progress-view",
|
|
33
33
|
"schemaVersion": "ProgressViewContractProjection/1.0",
|
|
34
34
|
"relativePath": "progress-view.json",
|
|
35
|
-
"sha256": "
|
|
35
|
+
"sha256": "96f6ca2d3948891efe31fceb031001428190d31cbbbf1bf53446fcaf3be31fbb",
|
|
36
36
|
"entryCount": 1,
|
|
37
|
-
"generationId": "sha256:
|
|
37
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"kind": "stages",
|
|
41
41
|
"schemaVersion": "ExecutableGraphStageProjection/1.0",
|
|
42
42
|
"relativePath": "stages.json",
|
|
43
|
-
"sha256": "
|
|
43
|
+
"sha256": "5444c07f918f6b6760d8ba1161a66a7635841dac0da3a52ddb95c600e33e9700",
|
|
44
44
|
"entryCount": 85,
|
|
45
|
-
"generationId": "sha256:
|
|
45
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"kind": "surfaces",
|
|
49
49
|
"schemaVersion": "PublicProjectionSurfaces/1.0",
|
|
50
50
|
"relativePath": "surfaces.json",
|
|
51
|
-
"sha256": "
|
|
51
|
+
"sha256": "38b6f572e04f77d0fd8f22bdd43ffd67d7c763e28301160342cd228321f631e6",
|
|
52
52
|
"entryCount": 6,
|
|
53
|
-
"generationId": "sha256:
|
|
53
|
+
"generationId": "sha256:12838b51552e283fadffcea062246c8a0ca3b89353ccc01ce42b91361de6e0e9"
|
|
54
54
|
}
|
|
55
55
|
],
|
|
56
56
|
"compatibility": {
|
|
@@ -143,7 +143,7 @@ export const PUBLIC_PROJECTION_BUNDLE = {
|
|
|
143
143
|
}
|
|
144
144
|
],
|
|
145
145
|
"publicSafe": true,
|
|
146
|
-
"bundleHash": "
|
|
146
|
+
"bundleHash": "9a6fd0a7a924a3a1f0406dc607e1c2a1c8a05f5efd55af24de6cb0f3bac25ab5"
|
|
147
147
|
};
|
|
148
148
|
export const PUBLIC_PROJECTION_GENERATION_ID = PUBLIC_PROJECTION_BUNDLE.generationId;
|
|
149
149
|
export const PUBLIC_PROJECTION_BUNDLE_HASH = PUBLIC_PROJECTION_BUNDLE.bundleHash;
|
|
@@ -122,7 +122,7 @@ export interface InvocationCommandSchemaV1 {
|
|
|
122
122
|
readonly positionals: readonly InvocationPositionalSchemaV1[];
|
|
123
123
|
readonly terminator: true;
|
|
124
124
|
}
|
|
125
|
-
export declare const INVOCATION_SCHEMA_CHECKSUM: "
|
|
125
|
+
export declare const INVOCATION_SCHEMA_CHECKSUM: "96a90d1d7dc2694bb7614e1913c5895cdace83c7436d2033a4d116c0cf99bf40";
|
|
126
126
|
export interface InvocationSchemaManifestV1 {
|
|
127
127
|
readonly schemaVersion: typeof INVOCATION_SCHEMA_VERSION;
|
|
128
128
|
readonly registryVersion: string;
|
|
@@ -564,6 +564,19 @@ export function admitInvocation(input, options = {}) {
|
|
|
564
564
|
return reject('unknown_command', 'identity_unknown', 0, bytes);
|
|
565
565
|
return resolved(menu, undefined, { options: {}, positionals: [] }, undefined, 0, bytes);
|
|
566
566
|
}
|
|
567
|
+
// The published epic selector predates star-prefixed command spelling.
|
|
568
|
+
// Preserve only its exact P-ID form; do not make arbitrary @-references or
|
|
569
|
+
// a second token into implicit command identities.
|
|
570
|
+
if (lexed.tokens.length === 1 && /^@epic-P[0-9]{1,12}$/.test(input.trim())) {
|
|
571
|
+
const epic = byId.get('epic');
|
|
572
|
+
const schema = epic && schemaByCommand.get(epic.id);
|
|
573
|
+
if (!epic || !schema)
|
|
574
|
+
return reject('malformed_input', 'schema_mismatch', 1, bytes);
|
|
575
|
+
const parsed = admitArguments(schema, lexed.tokens);
|
|
576
|
+
if (typeof parsed === 'string')
|
|
577
|
+
return reject('invalid_arguments', parsed, 1, bytes);
|
|
578
|
+
return resolved(epic, undefined, parsed, undefined, 1, bytes);
|
|
579
|
+
}
|
|
567
580
|
const command = resolveIdentity(lexed.tokens[0]);
|
|
568
581
|
if (!command) {
|
|
569
582
|
const candidates = suggestionsFor(lexed.tokens[0].value);
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { projectC12ScopedCiFollowUpDebt } from './c12-remote-observation.js';
|
|
3
|
+
const MAX_REGISTRY_BYTES = 2 * 1024 * 1024;
|
|
4
|
+
function record(value) {
|
|
5
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
6
|
+
? value : null;
|
|
7
|
+
}
|
|
8
|
+
function sha256(value) {
|
|
9
|
+
return createHash('sha256').update(value).digest('hex');
|
|
10
|
+
}
|
|
11
|
+
function slug(value) {
|
|
12
|
+
return value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'unknown';
|
|
13
|
+
}
|
|
14
|
+
/** Strict, idempotent projection for the nine closed C12 remote categories.
|
|
15
|
+
* It never writes the tracked registry or grants merge authority. Existing
|
|
16
|
+
* top-level fields and foreign items remain unchanged; ambiguous identities
|
|
17
|
+
* refuse instead of silently normalizing or dropping project-owned data. */
|
|
18
|
+
export function projectC12ScopedCiRegistryUpdate(input) {
|
|
19
|
+
const { registryRaw, storyId, prNumber, nowIso } = input;
|
|
20
|
+
if (Buffer.byteLength(registryRaw, 'utf8') > MAX_REGISTRY_BYTES
|
|
21
|
+
|| !Number.isFinite(Date.parse(nowIso))
|
|
22
|
+
|| new Date(nowIso).toISOString() !== nowIso)
|
|
23
|
+
return null;
|
|
24
|
+
const followUps = projectC12ScopedCiFollowUpDebt(input.observation, storyId, prNumber);
|
|
25
|
+
if (!followUps || followUps.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
let parsed;
|
|
28
|
+
try {
|
|
29
|
+
parsed = JSON.parse(registryRaw);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const registry = record(parsed);
|
|
35
|
+
if (!registry || registry.schema_version !== 2 || !Array.isArray(registry.items)
|
|
36
|
+
|| registry.items.length > 5000)
|
|
37
|
+
return null;
|
|
38
|
+
const byId = new Map();
|
|
39
|
+
const byDedup = new Map();
|
|
40
|
+
for (const raw of registry.items) {
|
|
41
|
+
const item = record(raw);
|
|
42
|
+
const metadata = item?.metadata === undefined ? null : record(item.metadata);
|
|
43
|
+
const key = metadata?.dedup_key;
|
|
44
|
+
if (!item || typeof item.id !== 'string' || item.id.length < 1 || item.id.length > 256
|
|
45
|
+
|| byId.has(item.id) || item.metadata !== undefined && !metadata
|
|
46
|
+
|| key !== undefined && (typeof key !== 'string' || key.length < 1 || key.length > 1000
|
|
47
|
+
|| byDedup.has(key)))
|
|
48
|
+
return null;
|
|
49
|
+
byId.set(item.id, item);
|
|
50
|
+
if (typeof key === 'string')
|
|
51
|
+
byDedup.set(key, item);
|
|
52
|
+
}
|
|
53
|
+
const addedItems = [];
|
|
54
|
+
let existing = 0;
|
|
55
|
+
const itemIds = [];
|
|
56
|
+
for (const debt of followUps) {
|
|
57
|
+
const reasonCode = debt.checkName;
|
|
58
|
+
const checkSlug = slug(reasonCode);
|
|
59
|
+
const dedupKey = [
|
|
60
|
+
'scoped-ci-remote-downgrade', reasonCode, 'remote_ci_cd', 'merge/policy',
|
|
61
|
+
storyId, `pr-${prNumber}`, checkSlug,
|
|
62
|
+
].join('::');
|
|
63
|
+
const id = `scoped-ci-${slug(reasonCode)}-remote-ci-cd-merge-policy-${slug(storyId)}-pr-${prNumber}-${checkSlug}`;
|
|
64
|
+
const reasonForLegacyId = reasonCode === 'remote_status_check_rollup_absent_observed'
|
|
65
|
+
? reasonCode : debt.reason;
|
|
66
|
+
const legacyId = `scoped-ci-merge-policy-${slug(reasonForLegacyId)}-${checkSlug}`;
|
|
67
|
+
const item = {
|
|
68
|
+
id, severity: 2, area: 'merge/policy',
|
|
69
|
+
description: `Scoped CI remote downgrade recorded for merge/policy. checks=${reasonCode} stories=${storyId} prs=#${prNumber} category=merge/policy reason=${reasonCode} origin=remote_ci_cd repair=${debt.recommendedAction} safeToContinueYoloop=true`,
|
|
70
|
+
roi: 6, status: 'open', source: 'scoped-ci-merge-policy-P136.05',
|
|
71
|
+
created_at: nowIso, last_seen_at: nowIso, schema_version: 2,
|
|
72
|
+
depends_on: [], blast_radius: 2, occurrences: 1,
|
|
73
|
+
metadata: {
|
|
74
|
+
check_names: [reasonCode], domain: 'merge/policy', category: 'merge/policy',
|
|
75
|
+
story_ids: [storyId], pr_numbers: [`#${prNumber}`],
|
|
76
|
+
classification_reason: debt.reason, public_reason_code: reasonCode,
|
|
77
|
+
downgrade_reason_code: reasonCode, origin: ['remote_ci_cd'],
|
|
78
|
+
resolvability: 'external', safe_to_continue_yoloop: true,
|
|
79
|
+
recommended_repair_area: 'merge/policy', dedup_key: dedupKey,
|
|
80
|
+
create_epic_hint: `*create-epic repair recurring merge/policy CI debt referenced by ${legacyId}`,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
const foundById = byId.get(id);
|
|
84
|
+
const foundByDedup = byDedup.get(dedupKey);
|
|
85
|
+
if (foundById || foundByDedup) {
|
|
86
|
+
if (!foundById || foundById !== foundByDedup
|
|
87
|
+
|| Object.keys(foundById).some((key) => !Object.hasOwn(item, key))
|
|
88
|
+
|| Object.entries(item).some(([key, expected]) => key !== 'created_at' && key !== 'last_seen_at' && key !== 'occurrences'
|
|
89
|
+
&& JSON.stringify(foundById[key]) !== JSON.stringify(expected))
|
|
90
|
+
|| typeof foundById.created_at !== 'string'
|
|
91
|
+
|| typeof foundById.last_seen_at !== 'string'
|
|
92
|
+
|| !Number.isSafeInteger(foundById.occurrences)
|
|
93
|
+
|| foundById.occurrences < 1)
|
|
94
|
+
return null;
|
|
95
|
+
existing++;
|
|
96
|
+
itemIds.push(id);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
addedItems.push(item);
|
|
100
|
+
byId.set(id, item);
|
|
101
|
+
byDedup.set(dedupKey, item);
|
|
102
|
+
itemIds.push(id);
|
|
103
|
+
}
|
|
104
|
+
const afterRaw = addedItems.length === 0 ? registryRaw
|
|
105
|
+
: `${JSON.stringify({ ...registry, items: [...registry.items, ...addedItems] }, null, 2)}\n`;
|
|
106
|
+
if (Buffer.byteLength(afterRaw, 'utf8') > MAX_REGISTRY_BYTES)
|
|
107
|
+
return null;
|
|
108
|
+
return Object.freeze({ registryBeforeSha256: sha256(registryRaw),
|
|
109
|
+
registryAfterSha256: sha256(afterRaw), registryAfterRaw: afterRaw,
|
|
110
|
+
added: addedItems.length, existing, itemIds: Object.freeze(itemIds) });
|
|
111
|
+
}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
+
const C12_REMOTE_REASON_CODES = Object.freeze([
|
|
3
|
+
'remote_status_check_rollup_absent_observed', 'remote_status_check_rollup_empty_observed',
|
|
4
|
+
'remote_ci_failed_observed', 'remote_ci_missing_observed', 'remote_ci_queued_observed',
|
|
5
|
+
'remote_ci_in_progress_observed', 'remote_ci_cancelled_observed',
|
|
6
|
+
'remote_ci_stale_observed', 'remote_ci_timeout_observed',
|
|
7
|
+
]);
|
|
2
8
|
function record(value) {
|
|
3
9
|
return value && typeof value === 'object' && !Array.isArray(value)
|
|
4
10
|
? value : null;
|
|
@@ -78,3 +84,57 @@ export function summarizeC12RemoteRollup(value) {
|
|
|
78
84
|
reasonCodes: Object.freeze(reasonCodes), reasonCounts: Object.freeze(reasonCounts),
|
|
79
85
|
digest, publicSafe: true }) };
|
|
80
86
|
}
|
|
87
|
+
/** Convert a previously bound categorical observation into canonical scoped-CI
|
|
88
|
+
* debt input. This is a pure projection, not a registry write or merge grant.
|
|
89
|
+
* Provider check identities, URLs and raw descriptions never enter the result. */
|
|
90
|
+
export function projectC12ScopedCiFollowUpDebt(observation, storyId, prNumber) {
|
|
91
|
+
const value = record(observation);
|
|
92
|
+
if (!/^P[1-9][0-9]{0,11}(?:\.[0-9]{1,6}){1,2}$/.test(storyId)
|
|
93
|
+
|| !Number.isSafeInteger(prNumber) || prNumber <= 0 || prNumber > 1_000_000_000
|
|
94
|
+
|| !value || Object.keys(value).sort().join(',') !== [
|
|
95
|
+
'checkCount', 'digest', 'kind', 'publicSafe', 'reasonCodes', 'reasonCounts',
|
|
96
|
+
'schemaVersion', 'source',
|
|
97
|
+
].sort().join(',')
|
|
98
|
+
|| value.schemaVersion !== 1 || value.kind !== 'legacy-c12-remote-observation'
|
|
99
|
+
|| value.source !== 'github-pr-status-rollup' || value.publicSafe !== true
|
|
100
|
+
|| !Number.isInteger(value.checkCount) || value.checkCount < 0
|
|
101
|
+
|| value.checkCount > 100
|
|
102
|
+
|| typeof value.digest !== 'string' || !/^[a-f0-9]{64}$/.test(value.digest)
|
|
103
|
+
|| !Array.isArray(value.reasonCodes) || !Array.isArray(value.reasonCounts)
|
|
104
|
+
|| value.reasonCodes.length !== value.reasonCounts.length
|
|
105
|
+
|| value.reasonCodes.length > C12_REMOTE_REASON_CODES.length)
|
|
106
|
+
return null;
|
|
107
|
+
const codes = value.reasonCodes;
|
|
108
|
+
if (codes.some((code) => typeof code !== 'string'
|
|
109
|
+
|| !C12_REMOTE_REASON_CODES.includes(code))
|
|
110
|
+
|| JSON.stringify(codes) !== JSON.stringify([...codes].sort())
|
|
111
|
+
|| new Set(codes).size !== codes.length)
|
|
112
|
+
return null;
|
|
113
|
+
const counts = value.reasonCounts;
|
|
114
|
+
for (let index = 0; index < counts.length; index++) {
|
|
115
|
+
const count = record(counts[index]);
|
|
116
|
+
if (!count || Object.keys(count).sort().join(',') !== 'count,reasonCode'
|
|
117
|
+
|| count.reasonCode !== codes[index]
|
|
118
|
+
|| !Number.isInteger(count.count) || count.count < 1
|
|
119
|
+
|| count.count > 100)
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
const hasAbsentOrEmpty = codes.some((code) => code === 'remote_status_check_rollup_absent_observed'
|
|
123
|
+
|| code === 'remote_status_check_rollup_empty_observed');
|
|
124
|
+
const reasonTotal = counts.reduce((sum, raw) => sum + record(raw)?.count, 0);
|
|
125
|
+
if (value.checkCount === 0
|
|
126
|
+
? !hasAbsentOrEmpty || codes.length !== 1 || reasonTotal !== 1
|
|
127
|
+
: hasAbsentOrEmpty || reasonTotal > value.checkCount)
|
|
128
|
+
return null;
|
|
129
|
+
return Object.freeze(codes.map((code) => {
|
|
130
|
+
const reasonCode = code;
|
|
131
|
+
const reason = /absent|empty|missing|queued/.test(reasonCode)
|
|
132
|
+
? 'queued-or-no-check-policy'
|
|
133
|
+
: /stale|timeout/.test(reasonCode) ? 'flaky-or-infra-failure' : 'remote_ci_cd_observed';
|
|
134
|
+
return Object.freeze({ checkName: reasonCode, domain: 'merge/policy', reason,
|
|
135
|
+
storyId, prNumber, origin: 'remote_ci_cd', resolvability: 'external',
|
|
136
|
+
safeToContinueYoloop: true,
|
|
137
|
+
recommendedAction: `Reobserve ${reasonCode} and record its scoped-CI follow-up in the reviewed PR candidate.`,
|
|
138
|
+
});
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neocortex-root
|
|
3
|
-
description: "🧠 Neocortex Root Agent v4.60.
|
|
3
|
+
description: "🧠 Neocortex Root Agent v4.60.62 | OrNexus Team"
|
|
4
4
|
model: opus
|
|
5
5
|
color: blue
|
|
6
6
|
tools:
|
|
@@ -108,7 +108,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
|
|
|
108
108
|
┌────────────────────────────────────────────────────────────┐
|
|
109
109
|
│ │
|
|
110
110
|
│ ####### N E O C O R T E X │
|
|
111
|
-
│ ### ######## v4.60.
|
|
111
|
+
│ ### ######## v4.60.62 │
|
|
112
112
|
│ ######### ##### │
|
|
113
113
|
│ ## ############## Development Orchestrator │
|
|
114
114
|
│ ## ### ###### ## OrNexus Team │
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neocortex
|
|
3
|
-
description: "🧠 Neocortex v4.60.
|
|
3
|
+
description: "🧠 Neocortex v4.60.62 | OrNexus Team"
|
|
4
4
|
model: opus
|
|
5
5
|
color: blue
|
|
6
6
|
permissionMode: bypassPermissions
|
|
@@ -104,7 +104,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
|
|
|
104
104
|
┌────────────────────────────────────────────────────────────┐
|
|
105
105
|
│ │
|
|
106
106
|
│ ####### N E O C O R T E X │
|
|
107
|
-
│ ### ######## v4.60.
|
|
107
|
+
│ ### ######## v4.60.62 │
|
|
108
108
|
│ ######### ##### │
|
|
109
109
|
│ ## ############## Development Orchestrator │
|
|
110
110
|
│ ## ### ###### ## OrNexus Team │
|
|
@@ -28,7 +28,7 @@ Codex built-in commands or actions.
|
|
|
28
28
|
|
|
29
29
|
<!-- END: Plugin Conflict Prevention -->
|
|
30
30
|
|
|
31
|
-
# Neocortex v4.60.
|
|
31
|
+
# Neocortex v4.60.62 | OrNexus Team
|
|
32
32
|
|
|
33
33
|
You are a Development Orchestrator. All orchestration logic is delivered by the remote Neocortex server.
|
|
34
34
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neocortex
|
|
3
|
-
description: "🧠 Neocortex v4.60.
|
|
3
|
+
description: "🧠 Neocortex v4.60.62 | OrNexus Team"
|
|
4
4
|
model: inherit
|
|
5
5
|
readonly: false
|
|
6
6
|
is_background: false
|
|
@@ -64,7 +64,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
|
|
|
64
64
|
┌────────────────────────────────────────────────────────────┐
|
|
65
65
|
│ │
|
|
66
66
|
│ ####### N E O C O R T E X │
|
|
67
|
-
│ ### ######## v4.60.
|
|
67
|
+
│ ### ######## v4.60.62 │
|
|
68
68
|
│ ######### ##### │
|
|
69
69
|
│ ## ############## Development Orchestrator │
|
|
70
70
|
│ ## ### ###### ## OrNexus Team │
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: neocortex-root
|
|
3
|
-
description: "🧠 Neocortex v4.60.
|
|
3
|
+
description: "🧠 Neocortex v4.60.62 | OrNexus Team"
|
|
4
4
|
kind: local
|
|
5
5
|
tools:
|
|
6
6
|
# File operations (Gemini CLI built-ins)
|
|
@@ -62,7 +62,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
|
|
|
62
62
|
┌────────────────────────────────────────────────────────────┐
|
|
63
63
|
│ │
|
|
64
64
|
│ ####### N E O C O R T E X │
|
|
65
|
-
│ ### ######## v4.60.
|
|
65
|
+
│ ### ######## v4.60.62 │
|
|
66
66
|
│ ######### ##### │
|
|
67
67
|
│ ## ############## Development Orchestrator │
|
|
68
68
|
│ ## ### ###### ## OrNexus Team │
|
|
@@ -58,7 +58,7 @@ explicit server opt-in rather than a local assumption.
|
|
|
58
58
|
┌────────────────────────────────────────────────────────────┐
|
|
59
59
|
│ │
|
|
60
60
|
│ ####### N E O C O R T E X │
|
|
61
|
-
│ ### ######## v4.60.
|
|
61
|
+
│ ### ######## v4.60.62 │
|
|
62
62
|
│ ######### ##### │
|
|
63
63
|
│ ## ############## Development Orchestrator │
|
|
64
64
|
│ ## ### ###### ## OrNexus Team │
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "neocortex"
|
|
3
|
-
description: "Neocortex v4.60.
|
|
3
|
+
description: "Neocortex v4.60.62 | OrNexus Team"
|
|
4
4
|
tools:
|
|
5
5
|
# Read / Edit (built-in tool sets)
|
|
6
6
|
- read
|
|
@@ -68,7 +68,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
|
|
|
68
68
|
┌────────────────────────────────────────────────────────────┐
|
|
69
69
|
│ │
|
|
70
70
|
│ ####### N E O C O R T E X │
|
|
71
|
-
│ ### ######## v4.60.
|
|
71
|
+
│ ### ######## v4.60.62 │
|
|
72
72
|
│ ######### ##### │
|
|
73
73
|
│ ## ############## Development Orchestrator │
|
|
74
74
|
│ ## ### ###### ## OrNexus Team │
|