Hackpert: harden objective identity snapshots #62

Closed
nsaspy wants to merge 2 commits from hackpert/issue-29-objective-identity-aliasing into master
Owner

Issue

Advances #29 with a bug-first regression in the objective/SPEC identity boundary.

Bug

expert-objective is immutable-by-interface, but its generated id / version accessors exposed stored mutable strings directly and the constructor retained caller-owned identity strings. A caller could rewrite objective identity after construction, poisoning plan/objective matching and extension selection without any canonical mutation path.

RED

Exact test-only head af3821c48c4f2cddd6698c56cf756927f72671a9 reached Load Hackmode and run ASDF tests with all setup/dependency steps green, then common-lisp-core failed on the new aliasing regression.

GREEN

Exact implementation head 1cdf5bd754e31319448a3fbd0838a2de39f3b8ff passed common-lisp-core, monorepo/hygiene, and agent-framework-boundary on draft PR #163. This replacement PR exists only because GitHub's ready-for-review mutation failed on the recurring fullDatabaseId schema error; code/head are identical.

Implementation

  • objective storage uses private raw accessors;
  • objective ID/version strings are snapshotted at construction;
  • public ID/version accessors return independent copies;
  • existing clause/limit/capability access remains behind the same public API.

No provider execution, database persistence internals, authority widening, scheduler changes, or StarIntel product work.

## Issue Advances #29 with a bug-first regression in the objective/SPEC identity boundary. ## Bug `expert-objective` is immutable-by-interface, but its generated `id` / `version` accessors exposed stored mutable strings directly and the constructor retained caller-owned identity strings. A caller could rewrite objective identity after construction, poisoning plan/objective matching and extension selection without any canonical mutation path. ## RED Exact test-only head `af3821c48c4f2cddd6698c56cf756927f72671a9` reached `Load Hackmode and run ASDF tests` with all setup/dependency steps green, then `common-lisp-core` failed on the new aliasing regression. ## GREEN Exact implementation head `1cdf5bd754e31319448a3fbd0838a2de39f3b8ff` passed `common-lisp-core`, monorepo/hygiene, and `agent-framework-boundary` on draft PR #163. This replacement PR exists only because GitHub's ready-for-review mutation failed on the recurring `fullDatabaseId` schema error; code/head are identical. ## Implementation - objective storage uses private raw accessors; - objective ID/version strings are snapshotted at construction; - public ID/version accessors return independent copies; - existing clause/limit/capability access remains behind the same public API. No provider execution, database persistence internals, authority widening, scheduler changes, or StarIntel product work.
fix: isolate objective identity 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 17s
core / common-lisp-core (pull_request) Failing after 1m15s
monorepo / hygiene (pull_request) Successful in 1m47s
1cdf5bd754
nsaspy closed this pull request 2026-09-04 20:57:35 +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 17s
core / common-lisp-core (pull_request) Failing after 1m15s
monorepo / hygiene (pull_request) Successful in 1m47s

Pull request closed

Sign in to join this conversation.
No description provided.