Repository navigation
Open
Description
Summary
Following maintainer feedback (comment), this issue is simplified to track one concrete task: reconciling overlapping open PRs so we can merge them in the right order without conflicts or duplicate implementations.
Rule for overlapping PRs
- When two PRs overlap, keep the better implementation and close the other as superseded.
- When one PR builds on another, mark it with
Depends on #Nand merge in dependency order.
Active Workstreams & Status
1. Verification Tooling: #9 and #13
- Status: Reconciled.
- Finding: PR Add adoption reporting and macOS lifecycle harness to xtask (refs #2, #3, #5, #7) #13 builds directly on PR Add cross-application compatibility runner in xtask (fixes #7, refs #2) #9's branch.
- Action: PR Add adoption reporting and macOS lifecycle harness to xtask (refs #2, #3, #5, #7) #13 has been updated with
Depends on #9. - Merge order: Merge Add cross-application compatibility runner in xtask (fixes #7, refs #2) #9 first (
cargo xtask compat), then merge Add adoption reporting and macOS lifecycle harness to xtask (refs #2, #3, #5, #7) #13 (cargo xtask adoptionandlifecycle).
2. Contributor Standards: #24 and #38
- Status: Ready for maintainer decision.
- Finding: PR Add repository contributor guidelines and harmonize ecosystem standards (closes #37) #38 already incorporates all files and commits from PR Establish shared crate contracts, consumer dependency map, and platform test inventory #24 (
docs/shared-crate-contract.md, etc.), addingCONTRIBUTING.md. Both merge cleanly againstmain. - Options:
- Option A (stack): Merge Establish shared crate contracts, consumer dependency map, and platform test inventory #24 first, then merge Add repository contributor guidelines and harmonize ecosystem standards (closes #37) #38 with
Depends on #24. - Option B (consolidate): Merge Add repository contributor guidelines and harmonize ecosystem standards (closes #37) #38 directly and close Establish shared crate contracts, consumer dependency map, and platform test inventory #24 as superseded.
- Option A (stack): Merge Establish shared crate contracts, consumer dependency map, and platform test inventory #24 first, then merge Add repository contributor guidelines and harmonize ecosystem standards (closes #37) #38 with
3. Architecture & UI Inventories: #78 and #96
- Status: Reconciled.
- Finding: PR docs: suite-wide UI elements map and deduplication inventory (closes #77, refs #2, #67) #78 owns the presentation UI widget audit and mapping (
docs/ui-elements-map.md), while PR docs: add comprehensive ecosystem architecture, methodology, specifications, and adoption blueprints #96 covers macro-level architecture and adoption playbooks. They do not collide. - Action: Merge independently. PR docs: add comprehensive ecosystem architecture, methodology, specifications, and adoption blueprints #96 references PR docs: suite-wide UI elements map and deduplication inventory (closes #77, refs #2, #67) #78 for UI widgets.
Subsystem Stacks Under Review
- AI Stack (Add craft-ai-model: the data model and contract for AI in the Craft Apps #69–Add craft-ai-egui (stacked on #75) #76): Under review to separate shared contracts (
craft-ai-modelin Add craft-ai-model: the data model and contract for AI in the Craft Apps #69) from hosted provider adapters (Add craft-ai-native and craft-ai-media (stacked on #69) #70–Add craft-ai-features, craft-ai-declarative and craft-ai-comfyui (stacked on #72) #73) and launcher/environment tooling (Add craft-ai-comfy-env (stacked on #73) #74). - Collaboration (Add craft-collab: the shared collaboration core (the CraftHub specification, §2.15) #128): Under review to separate shared indexing primitives (
frac,ids) from CraftHub server/session state.
Completion
This issue can close once the overlapping PRs above have their merge order or supersession confirmed by maintainers.
Metadata
Metadata
Assignees
Labels
No labels
Activity
[-]Governance: Decide on shared infrastructure extraction and contributor protocols[/-][+]Decision needed: Shared infrastructure standards and overlapping PRs[/+]aiongg commentedon Oct 15, 2026
IMO:
D1, D2, D3 already de facto yes.
D4, D5 are already separately raised in their own PRs for independent discussion.
D6 would be good to clarify before adding more people with merge perms. My very simple rule would be:
zachshallbetter commentedon Oct 15, 2026
Agreed. That simplifies this quite a bit.
I will treat D1–D3 as existing conventions and leave D4–D5 with their respective PRs.
For D6, I will start identifying actual overlap and dependencies, then recommend which implementation to retain or supersede, regardless of author. Where work is genuinely dependent, I will make sure the relationship is explicit.
I will keep the findings on the relevant PRs rather than introducing another layer of process.
aiongg commentedon Oct 15, 2026
Check #115?
[-]Decision needed: Shared infrastructure standards and overlapping PRs[/-][+]Coordination: Reconcile overlapping PRs and dependencies[/+]zachshallbetter commentedon Oct 15, 2026
Cleaned up and simplified the issue description to drop the D1–D5 framework entirely and focus strictly on tracking D6 (reconciling open PR overlaps and merge order):
Depends on #9. Merge order is Add cross-application compatibility runner in xtask (fixes #7, refs #2) #9 then Add adoption reporting and macOS lifecycle harness to xtask (refs #2, #3, #5, #7) #13.wdunn001 commentedon Oct 15, 2026
Cloud / CollabCraft workstream that needs to be included here
There is another active dependency stack with both file overlap and an important runtime boundary:
craft-cloudcontracts plus account/share controls. It has no transport, provider, credential, or socket implementation.craft_ui::cloudflow to compose or adapt the genericPlacesPanel, rather than leave two competing Open-page systems.wdunn001/craft-libshas one additional commit,289d562, oninvite-landingabove Presence, the overflow and split menus, more than one account, and a conversation contract #52's current head. The deployed app branches pin that revision because guest recipients need identity/read-only state without being shown an account menu. That commit needs to be appended to Presence, the overflow and split menus, more than one account, and a conversation contract #52 or proposed as an explicit follow-up; it must not disappear when the stack is rebased.craft.quasarke.netuse a same-origin CollabCraft host with session-cookie auth; provider credentials and policy remain server-side.Recommended order: merge #48; merge #50 independently; rebase #52 onto both and reconcile
cloud::pageswithPlacesPanel; carry289d562as the guest-recipient follow-up. #48 and #52 are currently 13 commits behind the fork'smain, so the rebase should happen before treating their current lockfile/workspace diffs as final.Direct collision with #128
#128 introduces a package named
craft-collab. CollabCraft already has a package with the exact same name, used by the deployed app branches for native and WASM relay transports. These are different layers:craft-collab: Socket.IO transport, ordered app-command delivery, reconnection, and scope locks over a caller-supplied hub.They should not supersede one another without a migration plan. The existing apps currently emit application commands, not #128's CRDT change algebra. A safe boundary is to give the pure core an unambiguous package name such as
craft-collab-core, while CollabCraft remains the host/transport layer. Alternatively rename the transport client, but every current consumer must then migrate explicitly. The service can later carry core changes over the CollabCraft relay without moving sockets, auth, provider policy, or service credentials intocraft-libs.The invariant we need to preserve across all of these PRs is:
craft-libsowns provider-neutral contracts and reusable UI/core primitives; the host suppliesCloudBackend/ShareBackend; CollabCraft owns wire transport, same-origin web sessions, provider credentials, service policy, and relay deployment. Direct-provider adapters remain optional implementations, not the required architecture.webdevtodayjason commentedon Oct 16, 2026
Went back through these after last night's updates. The runner rewrite in #9 and the handshake check in #13 cover what I was going to raise: baseline resolution and tests now run only in the isolated worktrees, a failed worktree skips that consumer instead of falling back to the normal checkout, FAIL/FAIL reports
BASELINE_FAILURE, and a lifecycle fixture now needs the adapter's ACK (plus a non-empty state file for UnsavedSave), so a bare/usr/bin/trueno longer passes. #9 then #13 looks right to me.With the policy parts of #24, #38, #78 and #96 moving to craft-contrib RFCs, a few factual fixes in the reference material are still worth making before they merge:
craft-menuas merged in Add craft-menu: one menu definition, native on macOS and an egui bar on Windows, Linux and web #66, but Add craft-menu: one menu definition, native on macOS and an egui bar on Windows, Linux and web #66 is still open.config.toml.bak. On main, a damaged config is moved aside and the backup is only written, never read back.wdunn001 commentedon Oct 16, 2026
Update: cloud / collab / runtime stack consolidated on #160
Per the D6 rule (keep the better implementation, close the rest as superseded):
Closes #132on merge)Merge target: #160
Still open and not folded in: #50 (PlacesPanel vs cloud pages), #54 (optional Nextcloud), #128 (package-name collision with CollabCraft transport), #123 (CollabCraft transfer). Issue body workstream 4 updated to match.
aiongg commentedon Oct 19, 2026
Update: #69 merged and #70–#76 are closed; #24 closes as superseded by #38. Once craft-contrib RFC-0004 merges, this can close pointing to it.
wdunn001 commentedon Oct 19, 2026
Replying to #134 (comment)
The cloud and CollabCraft stack that this issue was tracking did not move to craft-contrib RFC-0004. It was relocated to #123 (transfer
wdunn001/collab-craftintostorytold/collab-craft, and retarget app pins after that). The shared crates for that track are #160, which supersedes #48, #52, and #143 and closes #132 on merge.#69 and #24/#38 can follow the note above. Closing this issue should point at #123 for the relocated collab work, not only at RFC-0004.
el-j commentedon Nov 2, 2026
Workstream Coordination: Media Containers, Codecs & Audio (#439–#448 vs #504 / #503)
Following the project coordination rule ("When two PRs overlap, keep the better implementation... When one PR builds on another, mark it with Depends on #N and merge in dependency order"), here is the reconciliation roadmap between the
craft-media/craft-audiosplit stack (#439–#448, originating from #395) and the centralized pure-Rust codecs stack (#504, closing #503):1. Architectural Division of Responsibilities
craft-media): PR craft-media: shared codec identifiers, one ByteSource, the testkit (1/10) #439 and PR craft-media: Ogg demuxer (2/10) #440 (Ogg demuxer) own container-level track extraction, the unifiedByteSource, and standardized stream descriptors (CodecId,CodecParams).craft-testkit): Consolidatecrates/media-testkit(from craft-media: shared codec identifiers, one ByteSource, the testkit (1/10) #439) intocraft-testkit(crates/testkit, introduced in feat(codecs): centralize pure-Rust video codecs into craft-libs #504 and aligned with craft-testkit: source guards for platform rules that broke before (from FilmCraft's web-clock test and PhotoCraft's shader test) #139) to provide one canonical oracle/fixture testkit across the workspace.craft-*): PR feat(codecs): centralize pure-Rust video codecs into craft-libs #504 introduces standalone, zero-panic (#![deny(clippy::unwrap_used)]) L0 crates:craft-aac,craft-opus,craft-vp8,craft-dnx,craft-h264enc,craft-hevcenc,craft-av1enc,craft-vp9enc, andcraft-prores.craft-audio): PR craft-audio: core types, WAV/AIFF read and write, peaks, symphonia (3/10) #441 (craft-audio) provides high-level audio workflows: WAV/AIFF read/write, waveform peaks, Symphonia fallback, FLAC, AC-3, and MP1/MP2. Crucially, it delegates AAC and Opus tocraft-aacandcraft-opus, avoiding duplicated codec implementations in PR craft-audio: AAC decoder (5/10) #443 and PR craft-audio: Opus decoder (7/10) #445.2. Recommended Merge Order & Supersession
craft-media: shared codec identifiers, one ByteSource, the testkit): Provides foundationalByteSourceandCodecParams.ByteSource.craft-media: Ogg demuxer): Extendscraft-mediawith Ogg container demuxing.feat(codecs): centralize pure-Rust video and audio codecs into craft-libs): Provides standalone codec crates and workspacecraft-testkit.craft-audio):craft-audioconsumescraft-aacandcraft-opusfrom feat(codecs): centralize pure-Rust video codecs into craft-libs #504, closing craft-audio: AAC decoder (5/10) #443 (AAC decoder) and craft-audio: Opus decoder (7/10) #445 (Opus decoder) as superseded to eliminate double effort.alehel commentedon Nov 2, 2026
@el-j Have I understood correct that your proposed order here means that PRs #443 and #445 are the only of my stacked PRs that will be replaced by #504 ? So #442, #444, #446, #447 and #448 would still go in as features not covered by #504 ?
el-j commentedon Nov 3, 2026
Hi @alehel! Great question, and I have good news with a fresh update following maintainer feedback on #504:
None of your PRs (#441–#448) are replaced or superseded by #504 anymore! 🎉
Here is what was updated based on review from @benandez:
craft-aac,craft-opus, andcraft-audio-io) and thesymphoniaworkspace dependency from PR feat(codecs): centralize pure-Rust video codecs into craft-libs #504 entirely.craft-h264enc,craft-prores,craft-hevcenc,craft-av1enc,craft-vp9enc,craft-vp8,craft-dnx) along withcraft-testkitand the videocraft-codecsumbrella.craft-audiostack — from core types and file I/O (WAV, AIFF, peaks) through FLAC (craft-audio: FLAC encoder (4/10) #442), AAC decode/encode (craft-audio: AAC decoder (5/10) #443, craft-audio: AAC encoder (6/10) #444), Opus decode/encode (craft-audio: Opus decoder (7/10) #445, craft-audio: Opus encoder (8/10) #446), AC-3 (craft-audio: AC-3 and E-AC-3 decoder (9/10) #447), and MP1/MP2 (craft-audio: MP1/MP2 decoder (10/10) #448).There is now zero collision or overlap between #504 and #441–#448, and both stacks can proceed and land cleanly in parallel. Thanks a lot for coordinating with us!