Skip to content

feat(diagnostics): add fail-closed editor decorations - #256

Draft
seonghobae wants to merge 19 commits into
feat/writing-diagnostics-projectionfrom
feat/writing-diagnostics-decorations
Draft

feat(diagnostics): add fail-closed editor decorations#256
seonghobae wants to merge 19 commits into
feat/writing-diagnostics-projectionfrom
feat/writing-diagnostics-decorations

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Scope

Stacked implementation lane for Task 3 of PR #248's writing-diagnostics plan. This Draft targets feat/writing-diagnostics-projection; the current projection/contract/design heads are explicit dependencies.

Current stack authority

  • current parent: feat/writing-diagnostics-projection@5e49f37278bbdfb2b074fcdb809f72400d96a926;
  • current exact head: 93230d80895735f4f0b02a600296c19a2c3be56a;
  • inherited architecture: ADR 0028 host-owned revision-bound diagnostics + ADR 0029 strict invalidation / semantic-neutral accessibility;
  • live protected release source remains main@e8109ec2a17de8bd6594487aa12c8c8a93cb2c03 under release: reconcile Office and npm versions before next stable registry publication #118.

The previous body still named predecessor parent/head identities and historical main@a430b1c… as current; those claims are superseded.

Product boundary and TDD lineage

This lane renders only already-validated structural ranges. Decorations contain static Inkspan classes, visual priority, and an opaque diagnostic identifier; they do not carry source text, title, explanation, replacement, category text, model output, executable markup, or semantic ARIA authority.

Earlier RED→GREEN evidence established the decoration/invalidation contract, hostile metadata containment, and the semantic-neutral accessibility correction. The forged ariaInvalid: 'spelling' regression failed before production repair; the production field/type/normalization/DOM attribute were then removed and the hostile fixture was retained as an out-of-contract runtime attack case.

The plugin:

  • installs diagnostics by monotonic generation;
  • bounds decoration count and identifier size;
  • invalidates the complete generation on every docChanged transaction rather than remapping stale host/model output;
  • focuses only an identifier in the exact active generation;
  • rejects hostile metadata/array boundaries without leaking private thrown values; and
  • performs no model/provider/network/database/host-callback/semantic inference.

Exact-current-head evidence

For unchanged exact head 93230d80895735f4f0b02a600296c19a2c3be56a, focused Writing Diagnostics Decorations TDD run 31966903293 completed successfully after inheriting current ADR 0028/0029 and projection authority.

This focused success does not transfer to descendants and is not a substitute for the final repository-wide exact-head gates. Any later parent/head movement requires fresh evidence.

Integration boundary

This PR remains Draft and stacked. PRs #248, #249, and #254 are dependency roots that must converge first. Temporary branch-specific TDD workflow material must not survive protected integration. Final readiness requires current canonical CI/security/SAST/coverage/package/browser/accessibility/review evidence, zero valid unresolved findings/contradictions, qualifying independent approval under live governance, and release-order authorization after #118.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 8b389365-9cd3-4fe7-b884-ad3b37ab4f74

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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