M41: harden trust boundaries and delivery
This commit is contained in:
@@ -19,7 +19,7 @@ credential values are never embedded; nodes reference named n8n credentials inst
|
||||
| Error Workflow | `Fleet Ops — Workflow Error Handler` (wired) |
|
||||
| Timeouts / bounded retries | `Record follow-up` and heartbeat HTTP nodes: 15s timeout, retry on fail (3 tries, 1000ms wait) |
|
||||
| Execution telemetry | Successful runs POST execution ID and status to `/api/v1/integrations/n8n/heartbeat`; failed runs are registered by the Error Workflow. |
|
||||
| Checksum (sha256) | `17b8dd5b8e7ab5d0c0856a40f4199a401ad38f63895f611a096a80c9740f1e99` (heartbeat-enabled definition, 2026-08-10) |
|
||||
| Checksum (sha256) | `19f233b6de90a3474010d5495a53c75e969fb5de591e84dd3abcf9635304c1f1` (HTTPS callback definition, 2026-08-21) |
|
||||
|
||||
## 2. Fleet Ops — Scheduled Data Quality Scan
|
||||
|
||||
@@ -35,7 +35,7 @@ credential values are never embedded; nodes reference named n8n credentials inst
|
||||
| Error Workflow | `Fleet Ops — Workflow Error Handler` (wired) |
|
||||
| Timeouts / bounded retries | Scan and heartbeat HTTP nodes: 15s timeout, retry on fail (3 tries, 1000ms wait) |
|
||||
| Execution telemetry | Every successful scheduled/manual run posts an idempotent heartbeat with its n8n execution ID. |
|
||||
| Checksum (sha256) | `f0bda8b0fa99d1a2403e970e00bd1f896cd4d10eaa626147fcca577a7ad7cb46` |
|
||||
| Checksum (sha256) | `057bfe27ea7e2b497c57dec2a5967cad2960170a5c17535021f4480e63a6073d` |
|
||||
|
||||
## 3. Fleet Ops — RAGcore Procedure Sync
|
||||
|
||||
@@ -56,8 +56,9 @@ trailing `}}` (e.g. `={{ $json.execution_id }} }}` instead of `={{ $json.executi
|
||||
}}`), which would have sent malformed values on every real run. Fixed via `n8n
|
||||
import:workflow` (the safe CLI path — not the REST API, which caused a prior wipe
|
||||
incident in this environment) against the same live workflow ID, keeping it inactive;
|
||||
re-exported and verified the fix applied with no other change (still 6 real nodes,
|
||||
`active: false`). Also found and fixed a second gap: `settings.errorWorkflow` was unset
|
||||
re-exported and verified the fix applied with no other change (7 real nodes; the cleaned
|
||||
repository export intentionally remains `active: false` so importing cannot start work
|
||||
before credentials are wired). Also found and fixed a second gap: `settings.errorWorkflow` was unset
|
||||
(workflows 1-2 wire `"errorWorkflow": "Xppn2rAEqUuyiCJF"`, workflow 3 did not) — wired it
|
||||
the same way via the same CLI import path, re-verified.
|
||||
|
||||
@@ -72,7 +73,7 @@ the same way via the same CLI import path, re-verified.
|
||||
| Active status (as of 2026-08-05) | **Active / Published** |
|
||||
| Error Workflow | `Fleet Ops — Workflow Error Handler` (wired) |
|
||||
| Execution telemetry | Successful syncs report both the bounded sync result and the canonical workflow heartbeat. |
|
||||
| Checksum (sha256) | `8644d9faec4d17a43ba797e300b91fff976881c9b259e457fadd5a7cfaf39c6f` |
|
||||
| Checksum (sha256) | `4afd46b6ef57b7e0a4705611732506d7fcc2a37567266847991b85050e1d37c3` |
|
||||
|
||||
## 4. Fleet Ops — Workflow Error Handler
|
||||
|
||||
@@ -93,7 +94,7 @@ Ops, which registers an audit event idempotently keyed on `execution_id`.
|
||||
| Active status (as of 2026-08-04) | Active / Published |
|
||||
| Error Workflow (on itself) | `- No Workflow -` (deliberately unset — prevents a recursive error loop) |
|
||||
| Execution telemetry | A successfully handled failure posts its own execution heartbeat after registering the target failure. |
|
||||
| Checksum (sha256) | `1e50cf8b679b9e9f9b5cf4a1594bda459597ade40f44e8a68f540890f9c4b61d` |
|
||||
| Checksum (sha256) | `57e6c1206b1be4522d88a5983f53b2ddf94f8d6e55c1b7be8c397f75e46412da` |
|
||||
|
||||
Validated this round: mock-data run (Error Trigger pinned to a realistic payload)
|
||||
produced a real `200 {"status":"registered", ...}` from the live Fleet Ops server;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/scheduled-scan",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/scheduled-scan",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendHeaders": true,
|
||||
@@ -68,7 +68,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/heartbeat",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/heartbeat",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/workflow-error",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/workflow-error",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
@@ -58,7 +58,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/heartbeat",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/heartbeat",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/procedures",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/procedures",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"options": {
|
||||
@@ -57,7 +57,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/heartbeat",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/heartbeat",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
@@ -164,7 +164,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/procedures-sync-result",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/procedures-sync-result",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/return-callback",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/return-callback",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendHeaders": true,
|
||||
@@ -72,7 +72,7 @@
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "http://192.168.10.150:1236/api/v1/integrations/n8n/heartbeat",
|
||||
"url": "https://fleetops.itworx.tech/api/v1/integrations/n8n/heartbeat",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"sendBody": true,
|
||||
|
||||
Reference in New Issue
Block a user