BC5 launch reconciliation: memories regression brief + registry scope cuts#325
BC5 launch reconciliation: memories regression brief + registry scope cuts#325jeremy wants to merge 5 commits into
Conversation
…pe cuts Post-launch (2026-05-27) reconciliation of the API-gap registry to what BC5 master actually shipped vs BC4 (the four branch). - New spec/api-gaps/memories-emptied-regression.md: the confirmed live subtractive regression (BC5 master ships json.memories [] while BC4 four populates it). Not an additive gap; status partial-coverage (closest fit). The fix is written but unmerged in BC3 #10947 (json.memories @bubble_ups); status flips to addressed-in-bc3-pr-10947 on merge. bc3_pr: 10947 set. - stack-doc-and-smithy.md: flipped partial-coverage -> confirmed-not-api-resource. Stacks are web-only on both four and master (layout false, no respond_to :json, no doc section; Stacks::CollectablesController absent on master; the _stack partial only renders nested). No StacksService. Retained as the classification record per the briefs-trump-allowlist rule. - everything-aggregates.md: 22 -> 17 endpoints. The files group was dropped (master consolidated file-type routes into /files/recent?kind= and unions unrenderable attachment recordings). 8 active groups; explicit route list. Files-by-kind noted as a possible future deliverable, not modeled now. - activity-timeline.md: FYI that /activity.json + /projects/:id/timeline.json ship on master directly (not PR #10947); the removed /activity/days + /activity/dates sub-routes were never modeled. - README.md: stack row -> confirmed-not-api-resource; new memories-emptied-regression row; note distinguishing the subtractive regression from the registry's additive gaps. - COORDINATION.md: both contract-decision items reframed as open-pending-merge, not open-pending-decision. The counterfactual "commit 64acf34 aliases memories to bubble_ups" claim is purged (no such commit on four/five/master). BC3 provenance at the finding: five+api @ 716e710ee5 (reconciliation handoff). make validate-api-gaps: clean (12 entries). No spec/generated changes — the smithy doc comment is left as-is (already substantively accurate) so this stays a docs/registry-only change with no cross-language regen.
Spec Change ImpactChanges:
Regeneration:All SDKs require regeneration due to the specification changes. Breaking Change:Yes - The removal of fields constitutes a breaking API change and may require client updates. SDKs Requiring Updates:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6a6d438ebb
ℹ️ 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".
There was a problem hiding this comment.
Pull request overview
This docs/registry-only PR reconciles the BC5 API-gap registry with launch findings and pending BC3 follow-up work.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Changes:
- Adds a
memories-emptied-regressionbrief for the BC5memories: []regression. - Reclassifies Stacks as web-only / not an API resource.
- Narrows Everything aggregate scope and updates coordination notes around pending merges.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
spec/api-gaps/memories-emptied-regression.md |
Adds the regression brief and SDK/canary absorption notes. |
spec/api-gaps/stack-doc-and-smithy.md |
Reclassifies Stacks as not an API resource. |
spec/api-gaps/everything-aggregates.md |
Updates Everything aggregate endpoint scope from 22 to 17. |
spec/api-gaps/activity-timeline.md |
Adds launch note about activity/timeline routes on master. |
spec/api-gaps/README.md |
Updates registry table and explanatory notes. |
COORDINATION.md |
Reframes contract decisions as pending merges rather than decisions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
2 issues found across 6 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…tatus) - everything-aggregates.md: the leftover "all 9 groups" consistency bullet now reads "all 8 groups", matching the files-group drop above. - activity-timeline.md: reword the launch FYI so it no longer reads as a shipped, consumable JSON contract (which conflicted with status no-json-contract). The routes were rewritten on master directly (not gated behind #10947) but still lack a documented/SDK-absorbable contract, so the entry stays no-json-contract; absorption pulls from master when that lands.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 37cdb289c4
ℹ️ 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".
The GetMyNotificationsOutput.memories Smithy doc still framed the BC5 `[]` as an unresolved keep-vs-break decision and told readers to "consume both", which contradicts the reconciliation (PR #325): the decision is made and the fix is written but unmerged in BC3 #10947. Reword to state the confirmed regression, the in-flight fix, and "prefer bubble_ups; don't rely on memories being populated on BC5 until #10947 ships". Points at the regression brief. Regenerated the artifacts that inherit the @documentation trait: openapi.json + openapi-stripped.json, the TS schema.d.ts JSDoc, and the Go client.gen.go comment. Ruby/TS metadata + Ruby types.rb carry only a generated-timestamp bump (their generators don't emit this field description); Python/Kotlin/Swift generated output is unchanged. Drift checks (smithy-check, go-check-drift, behavior-model-check) clean. Addresses the Copilot/cubic doc-consistency thread on PR #325.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e12fe8f402
ℹ️ 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".
There was a problem hiding this comment.
1 issue found across 8 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
…s branch The brief's SDK-absorption runbook read as if the pairwiseDeltaAllowed waiver and conformance/tests/live-my-surface.json were present here, but those canary files are on PR #308's branch (this branch is the registry record only). Reword to state #308 introduces the waiver and that it gets removed from live-my-surface.json once #308 and BC3 #10947 both land. Also reframe the "no Smithy change" bullet to "no structural change" — this PR does realign the memories doc comment (documentation, not a shape change).
Review carefully before merging. Consider a major version bump. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 37c17655ea
ℹ️ 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".
COORDINATION.md said the pairwiseSupersetArray rule "is waived via pairwiseDeltaAllowed", which reads as if the canary surface exists on this branch — it does not (conformance/tests/live-my-surface.json is on PR #308). Reword to attribute the rule + waiver to #308's branch, matching the same fix already made in the memories-emptied-regression brief.
Post-launch (2026-05-27) reconciliation of the API-gap registry. Companion to #308, which reframes the live-canary
memoriesrule and adds thepairwiseDeltaAllowedwaiver pointing at the new brief introduced here.Stacked on
bc5-readiness-spec-foundations(#293) — it needs thespec/api-gaps/registry that #293 creates, so this PR is based on that branch. Retarget tomainonce #293 merges.It also realigns one Smithy doc comment with the reconciliation:
GetMyNotificationsOutput.memoriespreviously framed the[]as an unresolved keep-vs-break decision and told readers to "consume both", which contradicted the registry. It now states the confirmed regression + the in-flight fix (#10947) and points at the brief. The artifacts that inherit@documentationare regenerated —openapi.json/openapi-stripped.json, TSschema.d.ts, Goclient.gen.go; Ruby/TS metadata carry only agenerated:timestamp bump and Python/Kotlin/Swift output is unchanged.What changed
spec/api-gaps/memories-emptied-regression.md— the confirmed live subtractive regression: BC5mastershipsjson.memories []while BC4 (thefourbranch) still populates it. Not an additive gap (status: partial-coverageis the closest schema fit; the body frames it as a regression). The fix is written but unmerged in BC3 #10947 (json.memories @bubble_ups, head9dc63e2e);bc3_pr: 10947is set and the status flips toaddressed-in-bc3-pr-10947on merge.stack-doc-and-smithy.md→confirmed-not-api-resource. Stacks are web-only on bothfourandmaster(norespond_to :json, nodoc/apisection,Stacks::CollectablesControllerabsent onmaster; the_stackpartial renders only when nested). NoStacksService. Retained as the classification record (briefs trump the allowlist).everything-aggregates.md→ 22 → 17 endpoints. The files group was dropped (masterconsolidated file-type routes into/files/recent?kind=and unions unrenderable attachment recordings). 8 active groups; explicit route list. Files-by-kind noted as a possible future deliverable, not modeled speculatively.activity-timeline.md— FYI:/activity.json+/projects/:project_id/timeline.jsonship onmasterdirectly (not via PR #10947); the removed/activity/days/:date+/activity/datessub-routes were never modeled.README.md— stack row re-statused; newmemories-emptied-regressionrow; a note distinguishing the subtractive regression from the registry's additive gaps.COORDINATION.md— both contract-decision items reframed as open pending a merge, not pending a decision. The counterfactual "commit64acf34aliasesmemoriestobubble_ups" claim is purged (that commit does not exist onfour,five, ormaster).Verification
make validate-api-gaps— clean (12 entries; the new brief has all five required body sections + valid frontmatter; the stack flip carriesbc3_refs.bc3_plan_section; everything-aggregates still validates).spec/basecamp.smithymemoriesdoc comment realigned with the reconciliation + regenerated;smithy-check,go-check-drift, andbehavior-model-checkall clean (openapi.json is up to date/No critical drift detected/behavior-model.json is up to date).BC3 provenance at the finding:
five+api@716e710ee5(reconciliation handoff, suite green).