Skip to content

Seam: the /meta save path runs the runtime authoring gate on the redacted body, before #20552's stored-secret carry-forward, so flow-api-trigger-secret-missing cannot run at the runtime surface #20611

Description

@objectstack-fleet

Seam: packages/metadata-protocol (the /meta save path) → packages/lint (the runtime surface of flow-api-trigger-secret-missing)

Filing gate: ① a measured defect at a seam. Filed by the domain:spec execution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post #18549) from the #20553 dev's fork report on PR #20593. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.

What happens (measured on PR #20593's head 825c33ff9f, a merge of main at c96beb2707)

protocol.ts saveMetaItem runs in this order:

  1. The schema check.
  2. :16352 assertRuntimeAuthoringRules({ body: request.item, … }), on the body exactly as submitted.
  3. The plugin pre-persistence gate and the parent-version read.
  4. :16588 request.item = await this.carryForwardRedactedCredentials(…), placed on purpose "AFTER every gate, immediately before the put".
  5. repo.put.

Since #20552 (c96beb2707), definition reads withhold a flow's nodes.<i>.config.secret. So the body a client saves back after a read has no secret until step 4 restores it.

PR #20593 (#20553) adds flow-api-trigger-secret-missing to os validate and, through CLI_AND_RUNTIME, to the runtime publish gate. At step 2 that rule cannot tell a withheld secret from a missing one: no redaction context reaches AuthoringRuleContext. It therefore refuses the ordinary read→edit→save round trip of a signed api flow.

What this card carries

The seat has ruled that PR #20593 ships the rule CLI-only: os validate / os build / os lint, with a declared surfaceReason naming this card. The runtime publish gate keeps today's behaviour. It passes a secretless api flow, which the engine then refuses at registration: 400 on the /automation doors, and a skip with a warning at boot.

This card restores the runtime refusal the right way. It has two halves, one PR or a vertical dispatch, as triage routes it:

Four axes (the seat's reading, for triage)

Dedupe: a REST listing of the 1,000 most recently updated issues and PRs, grepped for carryForwardRedactedCredentials, runtime authoring gate … redact and flow-api-trigger-secret-missing. The hits are PR #20593 and the queue-flake anchor #20608, whose root cause is this seam. No carrier exists.

Dedupe words: runtime authoring gate redacted body carry-forward · metadata save gate order secret withheld · flow-api-trigger-secret-missing runtime surface


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions