Skip to content

feat(editor-compatibility): implement T19-01 published-post schema compatibility (#550) - #601

Merged
edithatogo merged 4 commits into
masterfrom
feat/t19-01-editor-schema-compatibility
Sep 6, 2026
Merged

feat(editor-compatibility): implement T19-01 published-post schema compatibility (#550)#601
edithatogo merged 4 commits into
masterfrom
feat/t19-01-editor-schema-compatibility

Conversation

@edithatogo

@edithatogo edithatogo commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Implements Conductor track T19-01 (Published-post editor schema compatibility and crash containment) across all 5 phases (resolving #550, #555, #556, #557, #558, #559):

  1. Reproduction contract & frozen fixtures (Phase 1 T19-01 Phase 1: Reproduction contract and failing tests #555):
    • Freezes 8 privacy-safe ProseMirror fixtures in fixtures/prosemirror/editor-compatibility/:
      • cover-control.json: paragraph-only control (0 tables, 0 tableHeader).
      • rich-pilot-control.json: rich published pilot reproduction (0 tables, rich blocks).
      • 6 scheduled essay fixtures (me-001 through me-006) containing exactly 11 tables and 41 tableHeader nodes across the Season 1 corpus.
  2. Static capability analyzer & 5 independent facets (Phase 2 T19-01 Phase 2: Static compatibility analyzer #556):
    • PUBLIC_RENDER_PROFILE, PRIMARY_EDITOR_PROFILE (rejects tableHeader), and AUXILIARY_EDITOR_PROFILE (rejects rich blocks).
    • Generates deterministic 16-character schema fingerprints for drift detection.
    • Evaluates 5 independent facets without collapsing: public render, stored body round-trip, primary editor compatibility, auxiliary editor risk, and browser live verification.
  3. Transport, CLI & receipt integration (Phase 3 T19-01 Phase 3: Transport and receipt integration #557):
    • Prepublish and inspect reporting extended with editorCompatibility.
    • New CLI command substack-publisher schema compatibility <file> [--normalize-tables] [--upstream-repro <dir>].
  4. Disposable canary & operational contingencies (Phase 4 T19-01 Phase 4: Authenticated canary and contingencies #558):
    • normalizeTablesToAccessibleLists contingency converts tables to accessible labelled lists, resolving primary editor rejection while preserving text content.
    • runDisposableEditorCanary enforces isolated, no-email, no-publication invariants with cleanup receipts.
  5. Upstream escalation package (Phase 5 T19-01 Phase 5: Upstream escalation and release evidence #559):
    • generateMinimalUpstreamReproductionPackage produces clean minimal synthetic reproduction package for Substack engineers.

Validation

  • npm run ci -> Biome 0 errors
  • npm run typecheck -> Clean, 0 errors
  • npm run knip -> Clean, 0 issues
  • node scripts/github-programme.mjs check -> 100% valid
  • npm run verify:agent -> 125 test files / 988 passed

Governed by #550, #555, #556, #557, #558, #559.

@edithatogo
edithatogo enabled auto-merge (squash) September 6, 2026 12:58
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-06T13:03:15.970102Z b2082bb PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@amazon-q-developer amazon-q-developer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR introduces a new editor compatibility checking system for Substack's ProseMirror/Tiptap schema validation. The implementation includes analyzer logic, profile definitions, normalization utilities, canary testing infrastructure, and integration into the prepublish workflow. The code is well-structured with proper TypeScript typing and no merge-blocking defects identified. All logic appears correct, error handling is appropriate, and there are no security vulnerabilities detected.


You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.

@codecov

codecov Bot commented Sep 6, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 82.06897% with 26 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/editor-compatibility/contingencies.ts 72.50% 2 Missing and 9 partials ⚠️
src/editor-compatibility/analyzer.ts 83.63% 5 Missing and 4 partials ⚠️
src/editor-compatibility/canary.ts 82.35% 2 Missing and 4 partials ⚠️

📢 Thoughts on this report? Let us know!

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b2082bbb92

ℹ️ 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".

Comment thread src/editor-compatibility/canary.ts
Comment thread src/publish/prepublish.ts
Comment thread src/editor-compatibility/analyzer.ts
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.

1 participant