docs 2F-b-d-kn-a feat/phase-2f-b-d-kn-media-write-surfaces #3 / 3
aaronrene · 21 days ago · Jul 3, 2026 · Diff

docs(2F-b-d-kn-a): freeze canonical media write surfaces contract

Freeze MEDIA-WRITE-SURFACES-CONTRACT-2F-b-d-kn.md — the companion canonical surface for Scooling MEDIA-EXTERNAL-LINK-AND-ATTACH-CONTRACT-2F-d §6. Two SD-4 proposal facades (media_external_link, media_attach), per-vault connector allowlist, import-consent chain, credential-free external-ref store as a fourth read source, apply reconciliation, no-SSRF fence, two independent Hub gates (MEDIA_EXTERNAL_LINK_ENABLED / MEDIA_ATTACH_ENABLED, default off), seven-tier matrix, and two canonical-first enablement checklists. Contract only — no routes, no implementation, no posture flip. Update OVERSEER-HANDOVER: 2F-b-d-kn DONE; next = 2F-b-d-kn-b Auto, then Scooling 2F-b-d-e/f Tier 3 (canonical-first).

sha256:c4ab1e50cacce1da39aab6a9ef13e4b141453e5acff02fdab38740549843ccf2 sha
+66 ~5 symbols
sha256:15be3fe221c79004bb631ee667ac3238ea62234374ffd706f95cc05d75455973 snapshot
+66
symbols added
~5
symbols modified
0
dead code introduced
Semantic Changes 71 symbols
+ Media Write Surfaces — Canonical Contract (Phase 2F-b-d-kn, Step 2F-b-d-kn-a) section Media Write Surfaces — Canonical Contract (Phase 2F-b-d-kn, Step 2F-b-d-kn-a) L1–698
+ Design decisions (recorded — Tier 2) section 0. Design decisions (recorded — Tier 2) L90–130
+ Surfaces (triple-exposed, identical contract) section 1. Surfaces (triple-exposed, identical contract) L130–163
+ 1 Common request fields section 1.1 Common request fields L149–163
+ table section table L153–158
+ table section table L135–140
+ 7 / SEC-A-05) section 10. No-SSRF fence (inherits ATTACHMENT-STORE §8.7 / SEC-A-05) L465–477
+ Posture / gating (default off) section 11. Posture / gating (default off) L477–494
+ table section table L479–484
+ Scooling consumer mapping (for the later live wire) section 12. Scooling consumer mapping (for the later live wire) L494–527
+ table@L500 section table@L500 L500–504
+ table@L509 section table@L509 L509–521
+ Error taxonomy section 13. Error taxonomy L527–539
+ Seven-tier test matrix (2F-b-d-kn-b Auto) section 14. Seven-tier test matrix (2F-b-d-kn-b Auto) L539–570
+ code[bash] variable variable code[bash] L563–567
+ table section table L546–555
+ OpenAPI wire shapes (land with routes in 2F-b-d-kn-b) section 15. OpenAPI wire shapes (land with routes in 2F-b-d-kn-b) L570–600
+ code[yaml] variable variable code[yaml] L576–594
+ Hub-enablement checklists (canonical-first — one gate per session) section 16. Hub-enablement checklists (canonical-first — one gate per session) L600–652
+ 1 External link (MEDIA_EXTERNAL_LINK_ENABLED) — prerequisite for Scooling 2F-b-d-e section 16.1 External link (MEDIA_EXTERNAL_LINK_ENABLED) — prerequisite for Scooling 2F-b-d-e L606–623
+ table section table L608–622
+ 2 Attach (MEDIA_ATTACH_ENABLED) — prerequisite for Scooling 2F-b-d-f section 16.2 Attach (MEDIA_ATTACH_ENABLED) — prerequisite for Scooling 2F-b-d-f L623–652
+ code[text] variable variable code[text] L642–649
+ table section table L625–639
+ Acceptance (2F-b-d-kn-a) section 17. Acceptance (2F-b-d-kn-a) L652–667
+ Handover notes (for 2F-b-d-kn-b — Auto) section 18. Handover notes (for 2F-b-d-kn-b — Auto) L679–698
+ Write-authority model (scope × role, server-side, deny-by-default) section 2. Write-authority model (scope × role, server-side, deny-by-default) L163–185
+ table@L168 section table@L168 L168–173
+ table@L174 section table@L174 L174–182
+ Proposal kinds (server-stamped proposal_kind, source: "media") section 3. Proposal kinds (server-stamped proposal_kind, source: "media") L185–198
+ table section table L187–191
+ Request / response shapes section 4. Request / response shapes L198–277
+ 1 media_external_link — POST /api/v1/attachments/link-proposals section 4.1 media_external_link — POST /api/v1/attachments/link-proposals L200–228
+ code[jsonc] variable variable code[jsonc] L202–213
+ table section table L216–227
+ 2 media_attach — POST /api/v1/attachments/attach-proposals section 4.2 media_attach — POST /api/v1/attachments/attach-proposals L228–254
+ code[jsonc] variable variable code[jsonc] L230–240
+ table section table L243–253
+ media_proposal/v0 section 4.3 Proposal response — knowtation.media_proposal/v0 L254–277
+ code[jsonc] variable variable code[jsonc] L258–274
+ json section 5. Connector allowlist policy — hub_media_connector_policy.json L277–309
+ code[jsonc] variable variable code[jsonc] L282–294
+ table section table L295–302
+ media_import_consent/v0 import section 6. Import-consent record — knowtation.media_import_consent/v0 L309–349
+ code[jsonc] variable variable code[jsonc] L314–333
+ table section table L334–343
+ Review-before-write lifecycle section 7. Review-before-write lifecycle L349–379
+ code variable variable code L353–368
+ table section table L369–376
+ Optimistic concurrency section 8. Optimistic concurrency L379–389
+ table section table L381–386
+ Apply reconciliation (reconcileApprovedMediaProposal) section 9. Apply reconciliation (reconcileApprovedMediaProposal) L389–465
+ json section 9.1 External-reference store — hub_attachment_external_refs.json L409–432
+ code[jsonc] variable variable code[jsonc] L411–431
+ 2 Read-model join (2F-b store extension) section 9.2 Read-model join (2F-b store extension) L432–447
+ table section table L437–446
+ 3 Note-frontmatter apply (attach) section 9.3 Note-frontmatter apply (attach) L447–455
+ 4 ATTACHMENT_ID_RE widening (delivered in 2F-b-d-kn-b) section 9.4 ATTACHMENT_ID_RE widening (delivered in 2F-b-d-kn-b) L455–465
+ table section table L457–460
+ code[jsonc] variable variable code[jsonc] L398–408
+ table section table L391–395
+ Non-goals (2F-b-d-kn) section Non-goals (2F-b-d-kn) L667–679
+ Simple summary section Simple summary L52–72
+ Technical summary section Technical summary L72–90
~ docs/OVERSEER-HANDOVER.md .md 2 symbols added, 5 symbols modified
+ Media write surfaces (2F-b-d-kn — Scooling 2F-b-d unblock) section Media write surfaces (2F-b-d-kn — Scooling 2F-b-d unblock) L39–54
+ table section table L41–51
~ table
~ table

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:c4ab1e50cacce1da39aab6a9ef13e4b141453e5acff02fdab38740549843ccf2 --body "your comment"