Skip to content

CI rehearsal only (do not merge) - #16

Closed
michael-moffett wants to merge 14 commits into
mainfrom
pay-kit-89-m1-kotlin-runner-a1-next
Closed

michael-moffett wants to merge 14 commits into
mainfrom
pay-kit-89-m1-kotlin-runner-a1-next

Conversation

@michael-moffett

Copy link
Copy Markdown
Member

Fork CI only. Do not merge.

michael-moffett and others added 10 commits October 3, 2026 06:46
…matrix

A Gradle stdin/stdout runner over the Kotlin SDK's protocol functions, plus `harness/protocol-runners/kotlin.json`, so the spawned-runner block drives Kotlin.

No protocol-layer vector reaches Kotlin today. Milestone 1 of our harness proposal puts Kotlin in the divergence matrix.
…-run steps in the kotlin harness job, and asserted Kotlin divergences in the spawned-runner matrix
…cratch (--rerun-tasks); 5/5 MainTest cases pass, the vitest suite is still unrun
…l as a must-pass case (TS reference re-parses Kotlin's header) and lists receipt.format as a known unsupported divergence
…lDist test) and Main.kt gains its 3-line header comment
@greptile-apps

greptile-apps Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[High risk] Adds Kotlin test harness to CI pipeline.

No new blocking issue was found, but this CI rehearsal is explicitly marked not to merge; two earlier conformance concerns remain open.

Findings

  1. P2 Missing request becomes valid ▶
  2. P2 Conformance skips recognized operations ▶

Summary

The PR adds a Kotlin protocol runner and CI conformance rehearsal, then updates challenge serialization and checks that allowlisted protocol runners are present.

  • No new actionable finding was established by the changes since the previous review.
  • The PR is explicitly labeled as a CI rehearsal that should not be merged.

Reviews (3) · Last reviewed commit: "greptile.json: review on request only"

private fun formatCredential(input: JsonElement): JsonObject {
val credential = input.jsonObject
val challenge = credential.getValue("challenge").jsonObject
val request = (challenge["request"] ?: JsonObject(emptyMap())).toString().encodeToByteArray()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Missing request becomes valid If a credential.format input omits the required challenge.request, the runner inserts an empty request and can return a successful Authorization header. This hides an invalid input and produces a header that does not represent the supplied challenge.

Suggested change
val request = (challenge["request"] ?: JsonObject(emptyMap())).toString().encodeToByteArray()
val request = challenge.getValue("request").toString().encodeToByteArray()

"challenge.id" to "generation_error",
)

private val sdkGaps = families.keys - setOf("challenge.parse", "credential.format")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Conformance skips recognized operations Seven recognized operations always return fixed errors, and the Kotlin divergence tests assert those responses instead of exercising protocol behavior. A green Kotlin protocol job therefore does not verify encoding, challenge generation, or those header operations. Implement them or separate these gap checks from conformance coverage.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

michael-moffett and others added 4 commits October 5, 2026 12:02
…ned-runner block, with Kotlin's SDK gaps asserted by exact response
…elds after whole-object serialization (Go omitempty), with its unit test asserting the omission
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant