Skip to content

Fix documentation inconsistencies and clarify IPFS/IPNS relay architecture#17

Merged
FSM1 merged 3 commits into
feat/spec-hardeningfrom
copilot/sub-pr-4
Jan 18, 2026
Merged

Fix documentation inconsistencies and clarify IPFS/IPNS relay architecture#17
FSM1 merged 3 commits into
feat/spec-hardeningfrom
copilot/sub-pr-4

Conversation

Copilot AI commented Jan 18, 2026

Copy link
Copy Markdown
Contributor

Addresses 10 review feedback items from PR #4 regarding version inconsistencies, missing API details, and architectural clarity around the IPFS/IPNS relay model.

Changes

Version Alignment

  • Synchronized all documentation files to version 1.8.2 (was: 1.7.1-1.8.2)
  • Fixed missing YAML frontmatter delimiter in API_SPECIFICATION.md

IPFS/IPNS Relay Clarifications

  • Added BASE64 encoding step to IPNS publishing sequence diagram
  • Fixed IpfsModule.publishIpnsRecord interface signature: Uint8Arraybase64IpnsRecord: string
  • Clarified backend stores encrypted root folder key (not IPNS key directly); IPNS keypairs stored encrypted in folder metadata

Documentation Quality

  • Enhanced PoC warning with callout format to prevent production misuse
  • Expanded database table description to list all 6 tables explicitly

Example Interface Change

// Before
publishIpnsRecord(record: Uint8Array, ipnsName: string, ...): Promise<void>;

// After
publishIpnsRecord(base64IpnsRecord: string, ipnsName: string, ...): Promise<void>;
// Matches API spec: POST /ipns/publish expects BASE64-encoded signed record

Sequence Diagram Enhancement

C->>C: Sign IPNS record (Ed25519)
C->>C: Encode signed record to BASE64          # Added
C->>B: POST /ipns/publish (BASE64-encoded signed record)
Loading

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits January 18, 2026 01:25
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>
Copilot AI changed the title [WIP] Add IPFS/IPNS relay endpoint details Fix documentation inconsistencies and clarify IPFS/IPNS relay architecture Jan 18, 2026
Copilot AI requested a review from FSM1 January 18, 2026 01:27
@FSM1 FSM1 marked this pull request as ready for review January 18, 2026 01:27
@FSM1 FSM1 merged commit a8e857d into feat/spec-hardening Jan 18, 2026
@FSM1 FSM1 deleted the copilot/sub-pr-4 branch January 18, 2026 01:29
FSM1 added a commit that referenced this pull request Jan 18, 2026
* bump version to 1.8.1 and update documentation for IPFS/IPNS relay integration

* Fix date inconsistency in TECHNICAL_ARCHITECTURE.md (#7)

* Initial plan

* Fix date inconsistency in TECHNICAL_ARCHITECTURE.md

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix date inconsistency in DATA_FLOWS.md frontmatter (#8)

* Initial plan

* Fix date inconsistency in DATA_FLOWS.md frontmatter

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add missing CID return arrows in IPFS/IPNS sequence diagrams (#6)

* Initial plan

* Add missing return arrows in IPFS/IPNS sequence diagrams

Added `B->>C: Return CID` after all `B->>IPFS: Add metadata, return CID` operations to show that the Backend returns the CID to the Client before the Client signs the IPNS record. The Client needs this CID to create the IPNS record that points to it.

Updated 8 sequence diagrams:
- File Upload Flow (IPNS publish)
- Create Folder (empty folder + update parent)
- Rename File/Folder
- Move File/Folder (destination + source)
- Delete File
- Update File Content

Bumped version to 1.8.2

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add missing Backend→Client CID return flows in IPFS/IPNS sequence diagrams (#5)

* Initial plan

* Add return arrows from Backend to Client in IPFS/IPNS sequence diagrams

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add missing Backend→Client CID return arrows in IPFS sequence diagrams (#10)

* Initial plan

* Add missing Backend->Client CID return arrows in sequence diagrams

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add missing CID return step in IPNS publish sequence diagrams (#16)

* Initial plan

* Add missing return CID step in IPNS publish sequences

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix date inconsistency in API_SPECIFICATION.md (#14)

* Initial plan

* Fix date inconsistency in API_SPECIFICATION.md

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix missing YAML frontmatter delimiter in API_SPECIFICATION.md (#15)

* Initial plan

* Fix YAML frontmatter: add missing opening delimiter to API_SPECIFICATION.md

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix missing Backend→Client CID return in IPFS/IPNS sequence diagrams (#11)

* Initial plan

* Fix sequence diagrams: add missing Backend->Client CID return arrows

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix missing return arrow in IPNS publishing sequence diagram (#13)

* Initial plan

* Add missing return arrow in IPNS publishing sequence diagram

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix date inconsistency in CLIENT_SPECIFICATION.md (#9)

* Initial plan

* Fix date inconsistency in CLIENT_SPECIFICATION.md

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add missing Backend→Client CID return flows in IPFS metadata upload sequences (#12)

* Initial plan

* Add missing return arrows showing CID returned from backend to client after IPFS metadata upload

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix documentation inconsistencies and clarify IPFS/IPNS relay architecture (#17)

* Initial plan

* Fix all PR review feedback items

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Improve documentation clarity per code review feedback

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Add BASE64 encoding steps in IPNS publish sequences and bump to v1.9.0 (#18)

* Initial plan

* Add BASE64 encoding steps in IPNS sequences and bump version to 1.9.0

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

* Fix inconsistent indentation in mermaid sequence diagrams (#19)

* Initial plan

* Fix mermaid diagram indentation to use consistent 4-space formatting

Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: FSM1 <12774278+FSM1@users.noreply.github.com>

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
FSM1 added a commit that referenced this pull request Mar 29, 2026
Phase 9 items #13-19 all resolved across later phases:
- #13 ThrottlerGuard applied to auth controller
- #14 IPNS URL encoding added in Rust SDK extraction
- #15 Debug eprintln! removed before Phase 9 merge
- #16 Private key console.log removed in Phase 28
- #17 Ed25519 key_bytes zeroized in Rust SDK extraction
- #18 Already marked resolved (PublishCoordinator)
- #19 Sync errors sanitized via sanitize_error()

12 Phase 5 items (#1-12) remain open — all low severity
input validation and defense-in-depth improvements.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: d2581dc98652
FSM1 added a commit that referenced this pull request Mar 29, 2026
* docs: move structured logging to implemented in DEFERRED.md

Phase 28 implemented the structured logging wrapper (lib/logger.ts),
replacing 127 direct console.* calls. All 12 pending todos verified
still pending — no other changes needed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 9faf72d8548e

* docs: mark 7 resolved items in security low-severity backlog

Phase 9 items #13-19 all resolved across later phases:
- #13 ThrottlerGuard applied to auth controller
- #14 IPNS URL encoding added in Rust SDK extraction
- #15 Debug eprintln! removed before Phase 9 merge
- #16 Private key console.log removed in Phase 28
- #17 Ed25519 key_bytes zeroized in Rust SDK extraction
- #18 Already marked resolved (PublishCoordinator)
- #19 Sync errors sanitized via sanitize_error()

12 Phase 5 items (#1-12) remain open — all low severity
input validation and defense-in-depth improvements.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: d2581dc98652

* docs: add Phase 34 E2E Test Expansion & Staging Baselines

Consolidates 6 pending testing todos into a single phase:
- AES-CTR streaming playback E2E tests
- Batch download zip E2E tests
- Media preview E2E test suite
- Shared deleteAccount teardown across all specs
- BYO-IPFS load test baselines on staging
- Staging metrics baselines with Faro instrumentation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: d8dd0c8c05c8

* docs: align DEFERRED.md footer date with header

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: b6a6c2383250

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FSM1 added a commit that referenced this pull request Jun 15, 2026
* docs: add phases 46 (desktop FUSE) and 47 (SDK), close mock-ipns todo

Group the outstanding pending todos into two planned phases:

- Phase 46 — Desktop FUSE data-loss bugs + replay hardening: the #7/#8/#17
  data-loss bugs Phase 45 deferred, the two PR #491 replay follow-ups
  (empty file_meta_ipns_name parking, strict IPNS resolve), and the deferred
  read_ops/write_ops + journal_helpers test coverage (6 desktop todos).
- Phase 47 — SDK folder-state and publish-path consolidation: unify
  folderTree/Zustand ownership, one publishWithCas CAS-retry, encapsulate
  baseChildren bookkeeping, fix updateSharedFile prunedCids pin leak (4 SDK todos).

Also close the mock-ipns-routing-layer investigation todo (won't do — moved
pending -> done with a closed_reason). Update ROADMAP + STATE (phase counts
30 -> 32, status, current position, pending count 18).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Entire-Checkpoint: 86c4d8e330df

* docs: correct Phase 47 folder-state requirement to single-source-of-truth

Requirement (1) described the reconcileFolderState band-aid ("reconcile folderTree
before sdk-core publishes"). Correct it to the todo's actual cure: route the two
leaking web file hooks through new SDK client methods, make useFolderStore a
projection fed only by folder:updated events, and delete reconcileFolderState.
Clarify scope is folder-state-mutating paths only — non-mutating sdk-core usage in
the web app stays.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Entire-Checkpoint: 099be3f795be

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.

2 participants