Skip to content

feat(soc-optimization-unified): targets[] expansion and per-action dispatch mode in SOCCommandWrapper - #1199

Merged
scottbrumley merged 1 commit into
mainfrom
feat/uc-targets-dispatch-mode
Oct 19, 2026
Merged

scottbrumley merged 1 commit into
mainfrom
feat/uc-targets-dispatch-mode

Conversation

@scottbrumley

Copy link
Copy Markdown
Contributor

Two optional registry-row fields on SOCFrameworkActions_V3 entries — zero operator-facing settings, absent = today's behavior byte-for-byte:

  • target_arg — names the inline arg carrying the thing acted on. A context reference resolving to a list dispatches once per element (kills the multi-domain stringify bug); scalars unchanged. One approval upstream covers the whole run.
  • dispatch: all_applicable — dispatches every vendor branch the action declares, each checked/recorded on its own; one vendor failing cannot kill the rest; return_error only when every dispatch failed. Absent/unknown = routed (the original ladder, untouched).

Per-(vendor,target) execution records and dataset rows (target/action_target); a dispatch-summary war-room entry only when a run fans out. First consumers: soc-block-domain, then the partner's phishing purge.

Testing

  • Unit: 9 new cases (fan-out matrix, dedupe, failure isolation, shadow per-pair, legacy equivalence). §4.5 both-ways: 6 fail on main (they discriminate), 3 pin equivalence. Existing suites unchanged — the 9 detonate-file failures are identical on main (pre-existing).
  • Gate green; pack uploaded to deathstar, tenant content verified.
  • Live regression on deathstar through the new code: TAP replay → issues 1494850/51 → EP_AI completed → assessments promoted (malicious/high) → one soc-star-case shadow wrapper row per issue, shape identical to the pre-change rows from yesterday's identical replay (1494772/73) → war-room entry profile identical. No dispatch summary emitted on legacy paths, as designed.
  • Stated boundary: no registry row uses the new fields yet, so fan-out is proven by the unit matrix, not live traffic; the first live fan-out comes with the soc-block-domain action PR, in shadow.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X6z5STKWCdm3aN5XwxWpgz

…spatch mode in SOCCommandWrapper

Two registry-row fields, both optional, neither an operator setting:

- target_arg names the inline arg that carries the thing being acted on.
  When its context reference resolves to a list, the wrapper dispatches
  once per element instead of stringifying the list into one garbage
  value - the multi-domain bug. One approval upstream covers the run.
- dispatch: all_applicable dispatches every vendor branch the action
  declares, each checked and recorded on its own; one vendor failing
  cannot kill the rest. Absent means routed: the original ladder,
  unchanged.

The single-vendor single-target path is the original main() body moved
into _dispatch_one with terminal semantics preserved - same war-room
entries, same records, same return_error/raise - so every existing
action behaves byte-for-byte as before. Per-(vendor,target) execution
records and dataset rows carry target/action_target; a dispatch summary
war-room entry appears only when a run fans out.

Tests: 9 new cases (fan-out matrix, dedupe, failure isolation, shadow
per-pair, legacy equivalence pins); 6 fail on the pre-change code, 3 pin
equivalence. Existing suites pass unchanged; the 9 pre-existing
detonate-file failures are identical on main and here.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6z5STKWCdm3aN5XwxWpgz
@scottbrumley scottbrumley added the version:minor New content or playbook → x.N.0 label Oct 16, 2026
@scottbrumley
scottbrumley merged commit 430f329 into main Oct 19, 2026
14 of 24 checks passed
@scottbrumley
scottbrumley deleted the feat/uc-targets-dispatch-mode branch October 19, 2026 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

version:minor New content or playbook → x.N.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant