Skip to content

docs: make exception list summary canonical - #103

Merged
ioannisj merged 2 commits into
mainfrom
docs/canonical-exception-list
Oct 8, 2026
Merged

ioannisj merged 2 commits into
mainfrom
docs/canonical-exception-list

Conversation

@ioannisj

@ioannisj ioannisj commented Oct 7, 2026

Copy link
Copy Markdown
Contributor

Problem

capture-exception still required $exception_type / $exception_message as top-level event properties, but the standard posthog-js captureException() path uses $exception_list[0].type / $exception_list[0].value as the canonical source.

That made compliance work ask SDKs to add deprecated duplicate fields instead of matching the structured exception envelope. The immediate case is PostHog/posthog-php#253.

Changes

  • Updates the public capture-exception acceptance scenario to assert the primary type/message through $exception_list.
  • Clarifies in openspec/specs/capture-exception/spec.md that flat $exception_type / $exception_message fields are legacy compatibility data, not required producer metadata.
  • Adds $exception_type / $exception_message to the exception-event-metadata ownership table as legacy, non-authoritative fields derived from the primary exception when needed.
  • Archives the OpenSpec change in openspec/changes/archive/2026-10-07-remove-flat-exception-summary-fields/.
  • Updates the posthog-php compliance note so Capture Exception is no longer marked partial for missing flat fields.

Testing

  • openspec validate --specs --strict
  • git diff --check

@ioannisj
ioannisj marked this pull request as ready for review October 7, 2026 08:05
@ioannisj
ioannisj requested a review from a team as a code owner October 7, 2026 08:05
Comment thread compliance/posthog-php.md Outdated
@ioannisj
ioannisj merged commit 8ee7d7a into main Oct 8, 2026
10 checks passed
@ioannisj
ioannisj deleted the docs/canonical-exception-list branch October 8, 2026 16:36
ioannisj added a commit that referenced this pull request Oct 8, 2026
ioannisj added a commit that referenced this pull request Oct 8, 2026
ioannisj added a commit that referenced this pull request Oct 8, 2026
* docs(compliance): re-audit posthog-php and posthog-ruby against the expanded flag specs

Weekly bounded SDK compliance audit for 2026-09-28.

sdk-specs advanced 27 commits across 23 capability specs since the last run,
dominated by server-side feature-flag semantics (local-feature-flag-evaluator
+929 lines, evaluate-flags +209, the three get-feature-flag-* payload contracts,
flag-definition-loader +73), plus a new client-only Session Replay Debug
Properties capability. Selection followed priority rule 1 (affected by spec
changes): posthog-php and posthog-ruby are the server SDKs with local-evaluation
engines that this delta lands on most directly, and both were confirmed
code-drifted and past the ~4-week window.

Both files grow from 59 to 63 rows (Capture AI, Evaluate Flags, Exception Event
Metadata, Session Replay Debug Properties audited for the first time).

Two cross-cutting findings:
- Experiment holdouts are unimplemented in both evaluators, a silent correctness
  divergence from the backend for any flag configured with a holdout.
- The new malformed-payload rule is a real gap: php returns the correct sentinel
  but logs nothing; ruby returns the raw serialized string on three public paths.

One row improved on a real code change (ruby's before-send hook now drops the
event when a hook raises). Six rows were downgraded on new spec requirements
rather than regressions.

Scope: compliance/ documentation only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: e5d845ad-60cf-4b6d-a294-f997f51b0845

* docs(compliance): audit posthog-go, posthog-dotnet, and posthog-js against the MCP analytics spec

Weekly bounded re-audit, 2026-10-05. sdk-specs main advanced 1d5fe42 -> 75c8f5d:
a new MCP Analytics capability (#87), the Evaluate Flags runtime filter reshape
(#77), the browser replay network body-scrubber replacement (#79), and the 1us
log timestamp floor (#91). Contract count is now 64 per SDK.

Selected posthog-go, posthog-dotnet, and posthog-js on priority rule 1 (all
three are named or directly implicated by this cycle's spec changes) plus the
oldest staleness cohort, using the full three-SDK cap for the first time.
All five previously-missing contract rows were audited from scratch on each.

Notable: experiment holdouts and Evaluate Flags negative-knowledge retention are
now unimplemented in four for four of the server SDKs checked since those
requirements landed; posthog-js has the most complete exception-metadata producer
envelope in the matrix but misreports unknown MCP tools as failed tool calls; and
one unguarded JsonDocument.Parse explains four posthog-dotnet rows at once.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Generated-By: PostHog Desktop
Task-Id: a3ec4da7-040c-499d-9222-23e683e09387

* docs(compliance): re-score posthog-js replay debug properties against the merged #96 spec

* docs(compliance): note that the root README table now lists bootstrap

* docs(compliance): align the posthog-go flag definition loader gap row with note n8

* docs(compliance): score posthog-ruby reload feature flags as not applicable

* docs(compliance): mark the posthog-js roll-up row as a targeted re-audit

* docs(compliance): re-score posthog-php capture exception against the canonical exception list (#103)

* docs(compliance): drop the legacy top-level exception property gap from posthog-ruby and posthog-go (#103)

---------

Co-authored-by: posthog[bot] <206114724+posthog[bot]@users.noreply.github.com>
Co-authored-by: Ioannis J <yiannis@posthog.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