Repository navigation
fix(organization): seal post-issuance export representation and snapshot consistency #279
Description
Finding
OrganizationHierarchyChangeReviewPacket has two distinct post-issuance/export integrity requirements.
frozen=Truedoes not prevent low-levelobject.__setattr__; a trust-bearing primitive can be replaced with a caller-defined subtype whose canonical value is unchanged.- The first export-time repair validated live fields and then reread them while constructing the canonical payload, so a concurrent mutation could make the checked and emitted observations differ.
Issuance semantic validation → creation sealing is #280. Same-object issuance lifecycle is #281. recorded_at authoritative clock provenance is #282/#119. Module-level registry exposure is #283.
Canonical owner and RED → repair
PR #96 remains the Organization hierarchy-change review single-writer. Do not copy mutable implementation into another branch. Durable uniqueness, authorization, same-tenant bitemporal resolution, mutation and immutable audit/outbox remain authoritative HRIS responsibilities.
- representation-preserving substitution RED
f952154921c43d323085aa34d88eae36f0846220 - first runtime-type repair
204695c7c32f5bc209fda4fb0afebde5df2c504e - ADR/TRACEABILITY/README/CHANGELOG alignment
9791f1b2f0455b75e3852e006d096338f5bfa987 - Code Quality cleanup
b91790e1f376d1daf083c91c7b8e38756be01f84 - concurrent export checked-versus-used regression
c8266fd9e98324ff54f25406567aeb1442f8333b - causal one-snapshot export repair
a98066f95ed43dbca722976619dd9603b60c6a2f - export-contract docs alignment
f0caa7fb32d722fff23180bb3bd713fca15a4dc6 - fix(organization): bind issuance validation and seal to one snapshot #280/fix(organization): prevent hierarchy review packet reissuance #281/fix(organization): attest hierarchy-review recorded_at provenance #282 repairs remain on the same ordinary-forward owner lane
- fix(organization): hide hierarchy-review issuance registry mutation capability #283 later removes ordinary module-level mutation capability over process-local issuance state without changing fix(organization): seal post-issuance export representation and snapshot consistency #279's one-snapshot export contract
The export repair captures each trust-bearing field once, validates exact built-in runtime types on that local snapshot, and serializes only those captured values. Pre-capture representation substitution fails closed; post-capture mutation cannot change the selected export; later export still detects semantic mutation against issuance evidence.
Root release-truth contract preserved
The canonical #96 descendant also carries the root CHANGELOG contract for the active Organization hierarchy-review package. That release-truth repair remains part of the valid owner delta and must not be lost by a successor; it does not grant mutation authority or convert branch-local work into a published release.
Current exact-head acceptance — 2026-09-10
#96 is exact 0262d70eaac37e2ab4096c67894a0bae71a4b1d2, directly based on protected develop@eb9757f8649aaad026a9865508d9aad50c1a7a4f, open · Draft · mechanically mergeable.
Leaf/source evidence is exact-head GREEN: Foundation 34369393258 / job 102526382630, SAST 34369393198, Required OpenCode job 102527871752, and Required Noema job 102527471651 are SUCCESS. Fresh reviews remain COMMENTED-only with no qualifying independent APPROVED; every visible inline thread is resolved.
Required central/runtime lanes remain non-passing or nonterminal and are not attributed to #279 source:
- Security
34369393189fails closed at dependency-review job102526931585before the pinned Dependency Review action; canonical owner.github#810, exact-head canary5604514013. - CodeQL
34369393184fails because Actions consumer102526616445and Python consumer102526617050terminalize before authoritative dispatch job102528422966starts and succeeds; canonical proposed repair.github#2040, exact-head canary5604510396. - Strix
34369390074/ job102527232339remains genuinely IN PROGRESS inRun Strix (quick)after successful admission/materialization/CO-sidecar/install/orchestrator/freeinput preparation. No elapsed-time, provider, or vulnerability verdict is inferred.
No predecessor verdict transfer, unchanged-head retrigger churn, leaf workflow shim, synthetic verdict, self-approval or administrator bypass is permitted.
Acceptance
Keep this issue open until #96 or a verified successor carrying the complete #279 tests/source/ADR/TRACEABILITY/README/package/root-CHANGELOG contract integrates normally into protected develop, with exact-head owned coverage and all then-live required central gates/review governance satisfied. #280/#281/#282/#283 retain separate acceptance boundaries.
Activity
[-]fix(organization): reject post-issuance scalar runtime substitution[/-][+]fix(organization): seal post-issuance export representation and snapshot consistency[/+]seonghobae commentedon Sep 9, 2026
Current-descendant authority update: canonical #96 has advanced by ordinary fast-forward to
0262d70eaac37e2ab4096c67894a0bae71a4b1d2on protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f. #279's post-issuance representation/export one-snapshot invariant is unchanged and preserved. Fresh sibling #283 repairs a distinct capability boundary: predecessor module globals exposed mutable creation/issuance/live-reference registry handles; test-only4105ff...produced hosted Foundation RED (34368435932/102523127294), causal source1e999...produced hosted Foundation GREEN (34368952870/102524889637), and current0262d70...carries ADR/TRACEABILITY/README/package CHANGELOG alignment. Final-head SAST is GREEN; Foundation/Security/OpenCode/Noema/Strix are nonterminal and CodeQL is nonterminal with one compatibility consumer already failed, so predecessor verdicts are not transferred. Keep #279 open until normal protected #96 integration or full verified successor.seonghobae commentedon Sep 9, 2026
Current exact-head authority update — 2026-09-10
Canonical owner #96 is now exact
ff16a08dc035faf05dc1b921e947b1cf82cfb36e, directly based on protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f, open · Draft · mechanically mergeable. #279's one-snapshot post-issuance representation/export invariant remains preserved on this descendant; older0262d70...workflow text above is historical, not current acceptance.Current exact-head evidence: Foundation
34396350836/102616940695SUCCESS; SAST34396351089/102617040740SUCCESS; Required OpenCode34396347572/102617074947SUCCESS; merge scheduler34396347450/102616910003SUCCESS. Security34396350675/102617027944remains fail-closed on the canonical Dependency Review HTTP-403 availability incident (.github#810, canary5607704292). CodeQL34396350863remains non-passing on the canonical producer/consumer settlement-ordering defect (.github#2040, canary5607713135). Required Noema34396347445/102617027671is SUCCESS but did not publish an independent approval. Required Strix34396347513/102617064104is mechanically SUCCESS, but artifact10122149854(sha256:91b165b34cf2ecf645cfb80bdefbaf70ad4238095494894c5f8c04ae3fe0c550) is non-authorizing: empty SARIF + a 307-byte template-only report + no machine-readable exact target/base/head/scope/finding-set receipt. Canonical Strix evidence owner is.github#891(Orgmetra canary5607965106); central implementation PR.github#1563is still open at20913979589d86ad1e2d26705ffb2c4a675409bdand has not reached protected.github/main.Fresh #96 formal reviews remain COMMENTED-only with no qualifying independent
APPROVED; every visible inline thread is resolved. Keep #279 open through normal #96 protected integration or a verified successor carrying the full regression/source/docs/evidence delta. No predecessor verdict transfer, self-approval, administrator bypass, force push, destructive rebase, or gate-name-only success is accepted.seonghobae commentedon Sep 9, 2026
Current-authority correction after ordinary-forward #287: canonical owner #96 is now exact
6e5784b77e4dc00f15fd6e072dc61babd85d5910over protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f. #279's one-snapshot post-issuance representation/export invariant remains unchanged and is preserved in ancestry. #287 adds a separate issuance-side direct-helper authority repair; it does not supersede #279. Fresh exact-head Foundation/SAST/Security/CodeQL are queued and no predecessor workflow verdict transfers. Fresh reviews remain COMMENTED-only with all visible threads resolved and no qualifying independentAPPROVED. Keep #279 open through normal #96 protected integration; do not simple-Close on branch-local source.