Repository navigation
Conversation
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
| google.protobuf.Timestamp expires_at = 5; | ||
| // Values for the selected descriptor's request_schema. The SDK validates | ||
| // these before invoking the connector implementation. | ||
| google.protobuf.Struct request_data = 6; |
There was a problem hiding this comment.
🟡 Suggestion (medium confidence): A connector on an older SDK drops field 6 as an unknown field and still calls Issue. Only the new SDK fails closed (an unknown key against a nil schema is rejected). So this feature is safe only if hosts send request_data when the selected descriptor advertises a request_schema. Please state that host contract in this comment, and consider a test that pins how a nil schema plus non-empty data is handled.
Superseded — see the current review report for commit
|
There was a problem hiding this comment.
No blocking issues found — see the full review report
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
There was a problem hiding this comment.
No blocking issues found — see the full review report
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
Superseded — see the current review report for commit
|
There was a problem hiding this comment.
No blocking issues found — see the full review report
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
Superseded — see the current review report for commit
|
There was a problem hiding this comment.
No blocking issues found — see the full review report
Resolve the action metadata conflict using the accepted shared-field implementation. Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
| optional string secret_content_type = 12 [deprecated = true, (validate.rules).string = { | ||
| min_len: 1 | ||
| max_len: 128 | ||
| pattern: "^[a-z0-9]+([._-][a-z0-9]+)*$" | ||
| }]; | ||
| repeated c1.config.v1.Field arguments = 13; | ||
| repeated c1.config.v1.Constraint constraints = 14; | ||
| repeated c1.config.v1.Field return_types = 15; |
There was a problem hiding this comment.
🟡 Suggestion (confidence: high): This head marks request_schema (11) and secret_content_type (12) as deprecated and adds undocumented arguments/constraints/return_types (13-15). The SDK enforces a contract on them: return_types must be exactly one named, required, secret string field, and the logical type comes from a multipass-type-* tag (credential_issue_fields.go:41-75, crypto/field_metadata.go:49-55). The PR description still presents fields 11/12 as the contract and never mentions 13-15 or the tag convention. Add proto comments for fields 13-15 and update the PR body so host/C1 implementers know which fields to send and read.
Superseded — see the current review report for commit
|
There was a problem hiding this comment.
No blocking issues found — see the full review report
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Superseded — see the current review report for commit
|
| CredentialIssueRequestSchema request_schema = 11 [deprecated = true]; | ||
| // Declared payload type; absent means legacy generic. | ||
| optional string secret_content_type = 12 [ | ||
| deprecated = true, | ||
| (validate.rules).string = { | ||
| min_len: 1 | ||
| max_len: 128 | ||
| pattern: "^[a-z0-9]+([._-][a-z0-9]+)*$" | ||
| } | ||
| ]; | ||
| repeated c1.config.v1.Field arguments = 13; | ||
| repeated c1.config.v1.Constraint constraints = 14; | ||
| repeated c1.config.v1.Field return_types = 15; |
There was a problem hiding this comment.
🟡 Suggestion: The PR body and the field comments here don't match the head. The body presents request_schema (11) and secret_content_type (12) as the contract, but both are now deprecated = true. The fields that actually replace them, arguments/constraints/return_types (13-15), are public but have no comments. They also carry an SDK-enforced contract (credential_issue_fields.go:41-75): return_types must be exactly one named, required, secret string field; its type comes from a multipass-type-* tag, and it must not conflict with field 12. Please document 13-15 and update the PR description so hosts and connectors know which fields to use. (Confidence: high)
General PR Review: IGA-4093: Bind native credential inputs and typed outputsBlocking Issues: 0 | Suggestions: 1 | Threads Resolved: 0 Review SummaryWhat the change does:
Coverage:
Security IssuesNone found. Correctness IssuesNone found. Suggestions
Resolved prior findings
Prompt for AI agentsReviewed commit: |
There was a problem hiding this comment.
No blocking issues found — see the full review report
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
|
Squire (claude-opus-5-5): Closing as superseded by #1218 (IGA-5308). The output contract is now one proto field on |
Squire (openai/gpt-6.1-sol):
Add connector-defined nonsecret request inputs and declared output binding to native credential issuance. This PR is stacked above the simple JSON builders in #1194, which includes output declarations from #1192. Its tip is the combined SDK revision C1 can pin.
Selected option and output resource identity choose the descriptor.
request_schemareusesconfig.Field/Constraint; structured values flow through the native request, issuer input and task bridge. Request schema, bounds, defaults, presence and redaction checks remain. Hosts send request data after the selected descriptor advertises that schema; older connectors may ignore the additive request field.Optional
secret_content_typefield 12 declares the payload type independently of output resource identity andPlaintextData.schema. Absence preserves legacy generic behavior; invalid declarations reject. Non-generic delivery retains the matching JWE recipient purpose/version/type context before Issue. These delivery checks do not validate the internal payload schema.Producer helpers are now plain JSON/text builders. The native test demonstrates that an empty password value still serializes and encrypts. No copied payload catalog, semantic validation or Multipass contract-export PR is required. Existing type/version metadata is used without a new JSON wrapper or crypto format. Multipass handles its own display/error behavior.
Validation: six affected packages pass tests/build/vet and CI-pinned affected lint; protobuf build/lint/format and breaking checks against the exact current upstream commit pass. Root independently ran uncached builder and connector-builder tests. Existing request, declaration, selected-output, recipient/context, encryption and legacy controls are preserved. Historical race/full-build/proof receipts retain their original revisions and do not establish a new live provider or C1 storage/retrieval run. The prior unrelated uhttp lint baseline is not waived.
C1 adoption, source review and hosted checks are tracked separately. No merge, SDK release, deployment, live-provider or permission expansion is authorized by this PR.