Repository navigation
Hold the request line's keys to a contract, and the skill to the line - #848
Conversation
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
All reported issues were addressed across 2 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d697b4a57d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
@cubic-dev-ai review |
@jeremy I have started the AI code review. It will take a few minutes to complete. |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Review state at head afe9f62
Fixed after review:
I checked each by mutation: renaming a tag, an undocumented key, and Later fixes: the skill example is found under CRLF line endings, and an empty object counts as a key. Both were raised by Codex and cubic, with a test that fails without them. |
451dec7 to
e09a4e8
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e09a4e88c5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
@cubic-dev-ai review |
@jeremy I have started the AI code review. It will take a few minutes to complete. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e09a4e88c5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
e09a4e8 to
d6bdf05
Compare
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
afe9f62 to
a440615
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a440615d68
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
|
@cubic-dev-ai review |
@jeremy I have started the AI code review. It will take a few minutes to complete. |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
The request line is read by programs nothing in this repo runs: the basecamp-connect skill, and the session or practice driving the connector. Its keys are what those readers match on. A renamed json tag passed every test, because the tests decode the line into the same struct that wrote it, and the skill's example of the line could drift from the real one with nothing noticing. Pin the names the line must carry, and hold the skill's example to the line's keys exactly, so a renamed or dropped key fails here, and a key added to the line has to be documented where the reader learns it.
The fixture set only the two optional fields that exist today, so a key added later with omitempty stayed out of the comparison, and keys were read one level deep. Fill every field by reflection, and walk nested objects to their full dotted path.
…o values A key added to the line had to reach the skill but not the contract, and a required key that gained omitempty vanished from real lines at its zero value while the filled fixture still showed it. The line's keys now equal the contract's, and a zero-valued line keeps every key but the two documented as optional.
a440615 to
b5b21a9
Compare
|
@codex review |
|
@cubic-dev-ai review |
@jeremy I have started the AI code review. It will take a few minutes to complete. |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Rebased onto main (943dbb5). connect-role had landed as #843, so only this PR's own four commits were replayed, with Review threads: 0 open (all 10 were already resolved). Codex reported on b5b21a9 with no major issues, and cubic found no issues. Copilot can't review because the requester's quota is exhausted. |
Stacked on #843 (base
connect-role), because the contract includes #843'srolekey. It retargets tomainonce #843 merges.Why
basecamp connectsupersedes the local agent connector, so its"type":"request"line is the contract that the basecamp-connect skill, and any session or practice driving the connector, keys on. Until now nothing held it:skills/basecamp-connect/SKILL.mdthat teaches the reader the field names could drift from the real line with nothing noticing.This is the small part worth keeping from "one format for both connectors". We don't need a shared driver. We do need a written contract for the connector that stays.
What changes
requestLineContractnames every key the line must carry, with nested keys written asparent.child. A renamed or dropped key failsTestTheRequestLineKeepsItsContract. Adding a key is allowed.TestTheSkillDocumentsTheRequestLineItGetsholds the skill's example to the line's keys exactly. A key added to the line has to be documented where readers learn it.HandoffLine's doc comment says so.Tests
These tests pin current behaviour, so they pass on creation. I checked they catch drift by mutating:
requester_id's tag fails the contract test;rolefrom the skill example fails the skill test;make checkpasses on linux.Summary by cubic
Pins the keys of the
"type":"request"handoff line to a contract, and holds thebasecamp-connectskill's example to those exact keys. The contract covers every key the line can carry: optional fields are flushed by reflection so a key hidden behindomitemptycan't slip past, nested keys are compared as full dotted paths, and a zero-valued line keeps every required key. The line's keys must equal the contract in both directions, so renaming, dropping, or adding a key fails tests, and the skill has to document any change, where before a renamed tag passed tests and the skill's example could drift silently.Written for commit b5b21a9. Summary will update on new commits.