Hackpert: defend direct candidate accessors #76

Closed
nsaspy wants to merge 2 commits from rage-hackpert/direct-candidate-defensive-access-11 into master
Owner

Bug-first Hackpert slice for #29/#27.

RED proved that the typed direct-candidate boundary copied constructor inputs but leaked its stored mutable operation/run strings and payload/provenance trees through generated defstruct accessors. The fix gives the struct private raw accessors and preserves the public API as defensive snapshot accessors; internal scope validation reads the private immutable snapshot directly.

No provider execution, canonical mutation, persistence/database authority, second scheduler, or StarIntel product work is added.

This PR replaces draft #125 on the identical implementation head because GitHub's ready-for-review mutation failed on the recurring fullDatabaseId connector bug.

Bug-first Hackpert slice for #29/#27. RED proved that the typed direct-candidate boundary copied constructor inputs but leaked its stored mutable operation/run strings and payload/provenance trees through generated defstruct accessors. The fix gives the struct private raw accessors and preserves the public API as defensive snapshot accessors; internal scope validation reads the private immutable snapshot directly. No provider execution, canonical mutation, persistence/database authority, second scheduler, or StarIntel product work is added. This PR replaces draft #125 on the identical implementation head because GitHub's ready-for-review mutation failed on the recurring `fullDatabaseId` connector bug.
fix: return defensive direct candidate snapshots
Some checks failed
agent-pr-serialization / one-open-pr-per-agent-lane (pull_request_target) Failing after 1s
agent-framework-boundary / keep-agent-framework-out-of-product-tree (pull_request) Successful in 18s
core / common-lisp-core (pull_request) Failing after 51s
monorepo / hygiene (pull_request) Successful in 2m33s
37dbcb78da
nsaspy closed this pull request 2026-09-04 20:55:59 +00:00
Some checks failed
agent-pr-serialization / one-open-pr-per-agent-lane (pull_request_target) Failing after 1s
agent-framework-boundary / keep-agent-framework-out-of-product-tree (pull_request) Successful in 18s
core / common-lisp-core (pull_request) Failing after 51s
monorepo / hygiene (pull_request) Successful in 2m33s

Pull request closed

Sign in to join this conversation.
No description provided.