fix: separate runner kubeconfig gap from D601 status (#144)
Commander review: direction is correct. This PR separates runner kubeconfig/read-only observability gaps from D601 public endpoint/k3s availability and keeps M3 blocked until real operation/trace/audit/evidence are observed. It does not touch PROD or restart services.
This commit is contained in:
@@ -1271,6 +1271,13 @@ async function validateDevM3Report(report, label) {
|
||||
|
||||
assertObject(report.runtimeTarget, `${label}.runtimeTarget`);
|
||||
assert.equal(report.runtimeTarget.endpoint, "http://74.48.78.17:16667", `${label}.runtimeTarget.endpoint`);
|
||||
if (Object.hasOwn(report.runtimeTarget, "frontendEndpoint")) {
|
||||
assert.equal(
|
||||
report.runtimeTarget.frontendEndpoint,
|
||||
"http://74.48.78.17:16666",
|
||||
`${label}.runtimeTarget.frontendEndpoint`
|
||||
);
|
||||
}
|
||||
assert.equal(report.runtimeTarget.namespace, "hwlab-dev", `${label}.runtimeTarget.namespace`);
|
||||
assert.equal(report.runtimeTarget.environment, "dev", `${label}.runtimeTarget.environment`);
|
||||
assert.equal(report.runtimeTarget.requiredBoxSimulators, 2, `${label}.runtimeTarget.requiredBoxSimulators`);
|
||||
@@ -1322,6 +1329,47 @@ async function validateDevM3Report(report, label) {
|
||||
}
|
||||
}
|
||||
|
||||
if (Object.hasOwn(report, "d601Observability")) {
|
||||
assertObject(report.d601Observability, `${label}.d601Observability`);
|
||||
for (const field of [
|
||||
"runnerKubeconfigReadable",
|
||||
"runnerKubeconfigProbeExitCode",
|
||||
"runnerKubeconfigProbeStderr",
|
||||
"d601PublicEndpointsReachable",
|
||||
"d601K3sUnavailable",
|
||||
"classification",
|
||||
"sourceIssue",
|
||||
"inferenceRule"
|
||||
]) {
|
||||
assert.ok(Object.hasOwn(report.d601Observability, field), `${label}.d601Observability missing ${field}`);
|
||||
}
|
||||
assertBoolean(report.d601Observability.runnerKubeconfigReadable, `${label}.d601Observability.runnerKubeconfigReadable`);
|
||||
if (Object.hasOwn(report.d601Observability, "runnerKubeconfigProbeOk")) {
|
||||
assertBoolean(report.d601Observability.runnerKubeconfigProbeOk, `${label}.d601Observability.runnerKubeconfigProbeOk`);
|
||||
}
|
||||
assert.ok(
|
||||
Number.isInteger(report.d601Observability.runnerKubeconfigProbeExitCode) ||
|
||||
report.d601Observability.runnerKubeconfigProbeExitCode === null,
|
||||
`${label}.d601Observability.runnerKubeconfigProbeExitCode`
|
||||
);
|
||||
assertString(report.d601Observability.runnerKubeconfigProbeStderr, `${label}.d601Observability.runnerKubeconfigProbeStderr`);
|
||||
assertBoolean(report.d601Observability.d601PublicEndpointsReachable, `${label}.d601Observability.d601PublicEndpointsReachable`);
|
||||
assertBoolean(report.d601Observability.d601K3sUnavailable, `${label}.d601Observability.d601K3sUnavailable`);
|
||||
if (
|
||||
report.d601Observability.runnerKubeconfigReadable === false &&
|
||||
report.d601Observability.d601PublicEndpointsReachable === true
|
||||
) {
|
||||
assert.equal(
|
||||
report.d601Observability.d601K3sUnavailable,
|
||||
false,
|
||||
`${label}.d601Observability runner gap must not imply D601 k3s unavailable`
|
||||
);
|
||||
}
|
||||
assertString(report.d601Observability.classification, `${label}.d601Observability.classification`);
|
||||
assertString(report.d601Observability.sourceIssue, `${label}.d601Observability.sourceIssue`);
|
||||
assertString(report.d601Observability.inferenceRule, `${label}.d601Observability.inferenceRule`);
|
||||
}
|
||||
|
||||
if (Object.hasOwn(report, "readOnlySupplementalEvidence")) {
|
||||
assertArray(report.readOnlySupplementalEvidence, `${label}.readOnlySupplementalEvidence`);
|
||||
for (const [index, evidence] of report.readOnlySupplementalEvidence.entries()) {
|
||||
|
||||
Reference in New Issue
Block a user