You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Define reusable participant tool profiles and verify their constraints (ACT-619) #301
Current behavior specifications bind tools to action contracts and observation boundaries. SEM-219 separates authored availability, visibility, apparatus support, eligibility, admission, and execution. This issue owns reusable profiles and role-specific constraints.
Done when
Compare existing behavior-specification reuse with a separate profile; publish the smallest justified design.
Define profile identity/version, participant or role selection, composition, and conflict handling. State whether overrides are allowed and how they are validated.
Demonstrate two roles using one profile with different availability, visibility, and invocation constraints.
Reject conflicting profiles, unresolved actions/boundaries, and attempts to infer permission from capability or visibility.
Carry the selected profile through authoring, compilation, runtime admission, and evidence; document unsupported cases.
Use the identity/role rules delivered by #1338. #298 owns general tool-authoring coverage; #304 consumes the resulting capability requirements. New syntax requires publication and migration rules. Parent: #121.
Requirements
ACT-619 — Participant Tool And Affordance Profiles
changed the title [-]Participant Tool And Affordance Profiles (ACT-619)[/-][+]Define reusable participant tool profiles and verify their constraints (ACT-619)[/+]on Sep 21, 2026
Reviewed the clean merge of origin/dev b1281ec and the Sonar cycle-1 fixes together against the completed design. Dev adds versioned participant control-context assets and does not change profile selectors, projection scope, alias authorization, or private-reference guards. The profile/history/context-authority integration seam passes 94 targeted tests; the repair-specific run passed 242 relevant tests. Generated schema parity, schema publication, file-local policy, requirement governance, and diff hygiene pass. All five Sonar findings are repaired by deriving redundant observation-detail policy arguments from the typed detail key and moving exception-test setup outside pytest.raises. Fresh merged-source formal replay passes 20 cases and seven participant obligations without changed observations; specification replay passes six artifacts and 16 concepts. New content-addressed captures are staged, with all historical captures preserved. Design, migration, reference documentation, and the merged implementation remain consistent.
Execution obligation ISSUE-301-MONITOR-REST-QUOTA — Opened
Category: workflow Observed state: The current-head CI monitor failed with GitHub REST quota errors at 2026-10-26 23:37:48 and 23:41:31 UTC. The local client can now read REST as the same account, while Ground Control previously continued to receive HTTP 403. Fresh SonarCloud verification has now returned quality gate OK, zero open issues, and zero hotspots for PR #1576; the final two compatibility jobs are still running. Impact: The failed CI monitor result cannot attest the completed current-head checks. Current obligation: Verify successful current-head CI after GitHub access recovers, then resolve this monitoring failure before readiness.
Evidence
CI monitor jobs job-mvpvqzcj-d and job-mvpwhnbm-g returned quota-related snapshot/lookup failures.
Local REST reads succeeded as user 56809295 after 23:40:46 UTC.
Sonar job job-mvpwhpec-i returned quality_gate OK, issues 0, hotspots 0 for current head 4c9325f.
Category: workflow Observed state: GitHub access recovered. Fresh current-head monitor job job-mvpwrzrg-j completed successfully for head 4c9325f, with all discovered hosted workflows successful and SonarCloud quality gate OK, zero open issues, and zero hotspots. Impact: Current-head hosted verification is available for readiness. Current obligation: Verify successful current-head CI after GitHub access recovers, then resolve this monitoring failure before readiness.
Disposition: fix Corrective action: Resumed the canonical CI and SonarCloud monitor after GitHub access recovered and awaited its successful terminal result.
Verification
All five discovered Actions workflows succeeded at the exact PR head, including the complete CI and bootstrap qualification workflows.
All 32 current-head checks passed.
SonarCloud returned quality gate OK, issues 0, and security hotspots 0.
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Proposed state in this PR — authoritative only after merge.
ACT-619 (Participant Tool And Affordance Profiles) — ACTIVE (proposed) — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.
Codex: Ship-with-fixes; both finding classes repaired and tested. User accepted publication at the one-cycle cap. Five Sonar findings repaired; current-head CI passes and Sonar reports zero issues/hotspots.
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
IMPLEMENTS / TESTS / DOCUMENTS added: 2
Links updated: 1
Stale links removed: 0
Status
CI: ✅ green
SonarCloud: ✅ passed
PR ready for user review and merge. Phase E validates the merged requirement state, posts the final report, and closes the issue automatically once this PR merges.
implementations/python/packages/raes/_behavior_authoring.py: Extend the existing source-anchored private-reference scan and generated-reference comparison.
implementations/python/packages/raes_processor/compiler/alias_index.py: Reuse the canonical authored-reference address index for visibility compilation.
implementations/python/packages/raes_processor/models/decision_surface.py: Reuse the shared binding filter for both surface versions and preserve v1 scoped refusal.
specs/sdl/participant-identity.md: Keep PI-03 participant role resolution and PI-06 authority separation.
implementations/python/tests/tool_profile_support.py: Use real compiled SDL, projection, delivery, selection, and admission in regression tests.
implementations/python/packages/raes_processor/models/behavior_ref_checks.py: Reuse existing history authorization checks with shared alias resolution before visibility and evidence decisions.
implementations/python/packages/raes/composition/_control_context.py: Keep domain-specific reference rewriting in dedicated composition modules; extract the unchanged tool-affordance rewriter to satisfy the source-size limit.
https://www.asd-ste100.org/assets/files/ASD-STE100_ISSUE9.pdf (Issue 9, 2025-01-15, Rules 1.1, 4.1, 5.1, 6.1, 9.4 and controlled dictionary): Review the added design and migration prose for short sentences, consistent technical names, and document purpose.
https://cwe.mitre.org/data/definitions/180.html (CWE-180, read 2026-10-26, Description and potential mitigations): Canonicalize producer references before authorization so authored aliases cannot bypass hidden-reference policies.
https://docs.pydantic.dev/latest/concepts/json_schema/ (Pydantic 2.x as pinned in the repository, Field-level schema customization and annotated constraints): Publish the same nonblank and uniqueness constraints enforced by ParticipantToolAffordance.
architecture: The issue-301 design retains behavior-specification profiles, the common binding filter, compiler address index, and existing authoring guard. Its shared-boundary section defines fail-closed cases and compatibility. Synchronization reuses dev's canonical declaration resolver for visibility aliases and retains dev's imported tool-reference binding and inject contracts. Participant interactive access compilation moves unchanged to participant_access.py to keep each source file within repository limits. Conflict resolution preserves dev's pinned control-context references and their private-reference checks. The existing tool-affordance composition helper moves to composition/_tool_affordance.py so the merged behavior rewriter stays within the source-size limit.
systems_security: The issue-301 security table maps module-export bypass, scope expansion, alias confusion, hidden disclosure, and evidence alteration to specific boundaries, controls, and behavioral tests. The shared boundary design now explicitly protects action results, attribution candidates, and outcome provenance against authored-alias visibility bypass.
data_flows: The issue-301 Mermaid DFD names SDL/module bytes, parameters, validated and instantiated declarations, canonical runtime records, view bytes/digests, state cuts, and admission records across authoring, processor, and runtime boundaries.
diagrams: The issue-301 DFD includes external author and parameter inputs, module/runtime/history stores, validation/compilation/projection/admission processes, and trust boundaries.
policy_as_code: Existing file-local repository policy, requirement governance, schema parity/publication, and traceability checks continue to enforce ownership. No new schema syntax or policy exceptions are needed.
architecture_as_code: Existing SDL models, typed runtime model, compiler address helpers, and projection functions remain the executable boundaries. The changes extend their checks without new services or configuration. The existing ParticipantObservationBoundaryRuntime gains an internal alias map derived from the compiler address index; common history checks resolve aliases before authorization.
adr_changes: The repairs enforce ADR-053 exports, ADR-076 canonical addresses, ADR-083 tool/permission separation, ADR-095 exact surfaces, and ADR-109 participant identity. No new authority or ADR is needed.
document_review: Reviewed new and changed design/migration text against ASD-STE100 Issue 9, keeping reference aliases, canonical addresses, visibility, and evidence terms consistent. Native Vale passes. The DFD carries aliases with compiled policy; security controls and migration guidance match the revised history checks. Tasks and cap handling remain in the issue plan.
Resolved the real merge of origin/dev f7e5f49 into the issue-301 branch. The private-reference visitor now includes both agent and behavior-specification control-context declaration refs, preserving dev's pinned-reference checks and every profile, tool, and inject guard. Regenerated the five shared schemas from the merged models and reconciled publication hashes; selector uniqueness/nonblank constraints and DSL-118 pinned references remain present. Moved the unchanged tool-affordance rewriter to composition/_tool_affordance.py to satisfy the merged file-size limit, following the existing domain-specific composition pattern; its ACT-619 traceability is recorded. All 215 targeted profile/context/private-reference/schema tests passed; all 122 composition/profile/context tests passed after extraction. Generated-schema and publication checks, changed-file Ruff, file-local policy, requirement governance, and diff hygiene pass. Fresh merged-source formal and specification replay passed 20 cases, seven participant obligations, six artifacts and 16 concepts without changed observations. New content-addressed captures are staged and historical captures remain unchanged. Design and migration claims remain true; no profile behavior or authority changes.
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Proposed state in this PR — authoritative only after merge.
ACT-619 (Participant Tool And Affordance Profiles) — ACTIVE (proposed) — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.
Codex: Ship-with-fixes; both finding classes repaired. User accepted the review cap. Sonar findings fixed. Later dev conflicts resolved with 215 profile/context tests and 122 composition tests passing.
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
IMPLEMENTS / TESTS / DOCUMENTS added: 2
Links updated: 1
Stale links removed: 0
Status
CI: ✅ green
SonarCloud: ✅ passed
PR ready for user review and merge. Phase E validates the merged requirement state, posts the final report, and closes the issue automatically once this PR merges.
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Verified at merge revision 2ace10c36163.
ACT-619 (Participant Tool And Affordance Profiles) — ACTIVE — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.
Codex: Ship-with-fixes; both finding classes repaired. User accepted the review cap. Sonar findings fixed. Later dev conflicts resolved with 215 profile/context tests and 122 composition tests passing.
Traceability reconciliation
IMPLEMENTS / TESTS / DOCUMENTS added: 2
Links updated: 1
Stale links removed: 0
Existing valid traceability is preserved; no implementation or test files are deleted or renamed. Current formal and specification captures are added without rewriting historical captures.
Activity
[-]Participant Tool And Affordance Profiles (ACT-619)[/-][+]Define reusable participant tool profiles and verify their constraints (ACT-619)[/+]test(sdl): split composite tool-profile assertions for Sonar
test: classify tool-profile bindings once by authored reference
docs(decisions): record #1572 as fixed in the #301 tool-profile record
feat(sdl): add participant-scoped tool affordances for reusable tool …
test(sdl): split composite tool-profile assertions for Sonar
28 remaining items
Brad-Edwards commentedon Oct 26, 2026
Document consistency before push
Issue #301; branch
301-participant-tool-profiles; pickup 6407235888.Design digest:
48ebc08e506d608e2a091151c3f26fcd25339d9a7af87b7153fe7b29310be0e7.docs/decisions/issue-301-participant-tool-profiles.md(58632a8f22acf0e6ee76b2e2a97268d049a61e7d9be28c9e3a2d75f455b8a865)docs/migration/participant-tool-profiles.md(9dd3c8753241d0ed663eca7c7fee158f9ff292a9c855293e380401c25bc6321d)specs/formal/participant-behavior-model/README.md(d363a287461d685eb9717aedba67fa5c861e0ff08f4f9719edecc11d5006a621)Reviewed the clean merge of origin/dev b1281ec and the Sonar cycle-1 fixes together against the completed design. Dev adds versioned participant control-context assets and does not change profile selectors, projection scope, alias authorization, or private-reference guards. The profile/history/context-authority integration seam passes 94 targeted tests; the repair-specific run passed 242 relevant tests. Generated schema parity, schema publication, file-local policy, requirement governance, and diff hygiene pass. All five Sonar findings are repaired by deriving redundant observation-detail policy arguments from the typed detail key and moving exception-test setup outside pytest.raises. Fresh merged-source formal replay passes 20 cases and seven participant obligations without changed observations; specification replay passes six artifacts and 16 concepts. New content-addressed captures are staged, with all historical captures preserved. Design, migration, reference documentation, and the merged implementation remain consistent.
Candidate tree:
5eb5f5ad8234daf0d0e7a949b9aacc07dc2d0e40.Document check: vale: server-owned baseline (Vale.Repetition)
Checker identity:
a9749df8f46a9b49cf48ed4d14b737dd480f2c3a1a933959433a535c894408b7.Brad-Edwards commentedon Oct 26, 2026
Pre-PR base synchronization
refs/remotes/origin/devatb1281ec938adba5fe2011cc77a3ce535e1409071already_current4c9325f85542f678c164e056d9d1a7b87e32b95e5eb5f5ad8234daf0d0e7a949b9aacc07dc2d0e40Brad-Edwards commentedon Oct 26, 2026
Execution obligation ISSUE-301-MONITOR-REST-QUOTA — Opened
Category: workflow
Observed state: The current-head CI monitor failed with GitHub REST quota errors at 2026-10-26 23:37:48 and 23:41:31 UTC. The local client can now read REST as the same account, while Ground Control previously continued to receive HTTP 403. Fresh SonarCloud verification has now returned quality gate OK, zero open issues, and zero hotspots for PR #1576; the final two compatibility jobs are still running.
Impact: The failed CI monitor result cannot attest the completed current-head checks.
Current obligation: Verify successful current-head CI after GitHub access recovers, then resolve this monitoring failure before readiness.
Evidence
Brad-Edwards commentedon Oct 26, 2026
Execution obligation ISSUE-301-MONITOR-REST-QUOTA — Resolved
Category: workflow
Observed state: GitHub access recovered. Fresh current-head monitor job job-mvpwrzrg-j completed successfully for head 4c9325f, with all discovered hosted workflows successful and SonarCloud quality gate OK, zero open issues, and zero hotspots.
Impact: Current-head hosted verification is available for readiness.
Current obligation: Verify successful current-head CI after GitHub access recovers, then resolve this monitoring failure before readiness.
Evidence
Disposition: fix
Corrective action: Resumed the canonical CI and SonarCloud monitor after GitHub access recovered and awaited its successful terminal result.
Verification
Brad-Edwards commentedon Oct 26, 2026
Ready for review — issue #301
PR: #1576
Plan: #301 (comment)
Outcome
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Proposed state in this PR — authoritative only after merge.
ACT-619(Participant Tool And Affordance Profiles) — ACTIVE (proposed) — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.Files changed
Added:
docs/decisions/issue-301-participant-tool-profiles.mddocs/migration/participant-tool-profiles.mddocs/research/formal-semantic-validation/capture-records/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb.jsondocs/research/formal-semantic-validation/capture-records/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636.jsondocs/research/formal-semantic-validation/capture-records/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40.jsondocs/research/formal-semantic-validation/capture-records/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3.jsondocs/research/formal-semantic-validation/capture-records/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d.jsondocs/research/formal-semantic-validation/capture-records/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/analysis.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/manifest.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/analysis.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/manifest.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/analysis.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/manifest.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/analysis.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/manifest.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/snapshot.jsondocs/research/specification-coverage/capture-records/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c.jsondocs/research/specification-coverage/capture-records/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab.jsondocs/research/specification-coverage/capture-records/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5.jsondocs/research/specification-coverage/capture-records/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9.jsondocs/research/specification-coverage/capture-records/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d.jsondocs/research/specification-coverage/capture-records/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/analysis.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/manifest.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/snapshot.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/analysis.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/manifest.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/snapshot.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/analysis.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/manifest.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/snapshot.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/analysis.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/manifest.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/snapshot.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/analysis.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/manifest.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/snapshot.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/analysis.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/manifest.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/snapshot.jsonimplementations/python/packages/raes/validator/_participant_tool_affordance_renderers.pyimplementations/python/packages/raes_processor/compiler/participant_access.pyimplementations/python/tests/fixtures/tool-profiles/imports-profile-twice.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/profile-module.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/shared-boundary.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/two-role-toolkit.sdl.yamlimplementations/python/tests/test_issue_301_history_alias_visibility.pyimplementations/python/tests/test_issue_301_participant_tool_profile_conflicts.pyimplementations/python/tests/test_issue_301_participant_tool_profiles.pyimplementations/python/tests/test_issue_301_private_references.pyimplementations/python/tests/test_issue_301_projection_boundaries.pyimplementations/python/tests/test_issue_301_selector_schema_parity.pyimplementations/python/tests/test_issue_301_visibility_references.pyimplementations/python/tests/tool_profile_support.pyModified:
contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.jsoncontracts/schema-publication/entries/instantiated-scenario-v1.jsoncontracts/schema-publication/entries/materialized-scenario-v1.jsoncontracts/schema-publication/entries/scenario-satisfiability-evidence-v1.jsoncontracts/schema-publication/entries/sdl-authoring-input-v1.jsoncontracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.jsoncontracts/schemas/sdl/instantiated-scenario-snapshot-v1.jsoncontracts/schemas/sdl/instantiated-scenario-v1.jsoncontracts/schemas/sdl/materialized-scenario-v1.jsoncontracts/schemas/sdl/sdl-authoring-input-v1.jsondocs/explain/sdl/lineage.mddocs/explain/sdl/sections.mddocs/migration/README.mddocs/requirements/ACT-619/requirement.mdimplementations/python/packages/raes/_behavior_authoring.pyimplementations/python/packages/raes/composition/_behavior.pyimplementations/python/packages/raes/participant_behavior_specification.pyimplementations/python/packages/raes/semantics/participant_behavior/_tool_affordance.pyimplementations/python/packages/raes/validator/_content_objectives.pyimplementations/python/packages/raes_processor/compiler/alias_index.pyimplementations/python/packages/raes_processor/compiler/participant_behaviors.pyimplementations/python/packages/raes_processor/compiler/participant_contracts.pyimplementations/python/packages/raes_processor/compiler/view_relations.pyimplementations/python/packages/raes_processor/models/behavior_grounding_checks.pyimplementations/python/packages/raes_processor/models/behavior_ref_checks.pyimplementations/python/packages/raes_processor/models/behavior_resources.pyimplementations/python/packages/raes_processor/models/decision_surface.pyimplementations/python/packages/raes_processor/models/decision_surface_v2.pyimplementations/python/tests/test_issue_298_tool_authoring.pyimplementations/python/tests/test_sem_208_participant_behavior.pyimplementations/python/tests/test_sem_215_participant_outcome_interpretation.pyimplementations/python/tests/test_sem_220_participant_decision_surface.pyspecs/formal/participant-behavior-model/README.mdspecs/sdl/references.mdtools/sdl_catalog_parity/_expectations_2.pyReviews
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
Status
Brad-Edwards commentedon Oct 26, 2026
Delivery readiness recorded — Phase E finalizes issue #301 automatically when PR #1576 merges.
Brad-Edwards commentedon Oct 27, 2026
Design complete
Issue #301; branch
301-participant-tool-profiles; pickup 6407235888.Design digest:
9ce6c2c7595411c6ee384deb5521e3a5fba5cac08daceae0346dcdf7065c83e6.docs/decisions/issue-301-participant-tool-profiles.md(58632a8f22acf0e6ee76b2e2a97268d049a61e7d9be28c9e3a2d75f455b8a865)docs/migration/participant-tool-profiles.md(9dd3c8753241d0ed663eca7c7fee158f9ff292a9c855293e380401c25bc6321d)specs/formal/participant-behavior-model/README.md(d363a287461d685eb9717aedba67fa5c861e0ff08f4f9719edecc11d5006a621)Research and coverage
implementations/python/packages/raes/_behavior_authoring.py: Extend the existing source-anchored private-reference scan and generated-reference comparison.implementations/python/packages/raes_processor/compiler/alias_index.py: Reuse the canonical authored-reference address index for visibility compilation.implementations/python/packages/raes_processor/models/decision_surface.py: Reuse the shared binding filter for both surface versions and preserve v1 scoped refusal.specs/sdl/participant-identity.md: Keep PI-03 participant role resolution and PI-06 authority separation.implementations/python/tests/tool_profile_support.py: Use real compiled SDL, projection, delivery, selection, and admission in regression tests.implementations/python/packages/raes_processor/models/behavior_ref_checks.py: Reuse existing history authorization checks with shared alias resolution before visibility and evidence decisions.implementations/python/packages/raes/composition/_control_context.py: Keep domain-specific reference rewriting in dedicated composition modules; extract the unchanged tool-affordance rewriter to satisfy the source-size limit.Brad-Edwards commentedon Oct 27, 2026
Document consistency before push
Issue #301; branch
301-participant-tool-profiles; pickup 6407235888.Design digest:
9ce6c2c7595411c6ee384deb5521e3a5fba5cac08daceae0346dcdf7065c83e6.docs/decisions/issue-301-participant-tool-profiles.md(58632a8f22acf0e6ee76b2e2a97268d049a61e7d9be28c9e3a2d75f455b8a865)docs/migration/participant-tool-profiles.md(9dd3c8753241d0ed663eca7c7fee158f9ff292a9c855293e380401c25bc6321d)specs/formal/participant-behavior-model/README.md(d363a287461d685eb9717aedba67fa5c861e0ff08f4f9719edecc11d5006a621)Resolved the real merge of origin/dev f7e5f49 into the issue-301 branch. The private-reference visitor now includes both agent and behavior-specification control-context declaration refs, preserving dev's pinned-reference checks and every profile, tool, and inject guard. Regenerated the five shared schemas from the merged models and reconciled publication hashes; selector uniqueness/nonblank constraints and DSL-118 pinned references remain present. Moved the unchanged tool-affordance rewriter to composition/_tool_affordance.py to satisfy the merged file-size limit, following the existing domain-specific composition pattern; its ACT-619 traceability is recorded. All 215 targeted profile/context/private-reference/schema tests passed; all 122 composition/profile/context tests passed after extraction. Generated-schema and publication checks, changed-file Ruff, file-local policy, requirement governance, and diff hygiene pass. Fresh merged-source formal and specification replay passed 20 cases, seven participant obligations, six artifacts and 16 concepts without changed observations. New content-addressed captures are staged and historical captures remain unchanged. Design and migration claims remain true; no profile behavior or authority changes.
Candidate tree:
2561c5fb8b5b66ff49bbb0e6b4b4b00c3f4971cd.Document check: vale: server-owned baseline (Vale.Repetition)
Checker identity:
a9749df8f46a9b49cf48ed4d14b737dd480f2c3a1a933959433a535c894408b7.Brad-Edwards commentedon Oct 27, 2026
Pre-PR base synchronization
refs/remotes/origin/devatf7e5f49a9b3071b2cdd3c22521fda552fb633b91merged_conflicts_resolved72df438d7234495962ea0ad08ff3bbebade6f2ed2561c5fb8b5b66ff49bbb0e6b4b4b00c3f4971cdBrad-Edwards commentedon Oct 27, 2026
Ready for review — issue #301
PR: #1576
Plan: #301 (comment)
Outcome
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Proposed state in this PR — authoritative only after merge.
ACT-619(Participant Tool And Affordance Profiles) — ACTIVE (proposed) — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.Files changed
Added:
docs/decisions/issue-301-participant-tool-profiles.mddocs/migration/participant-tool-profiles.mddocs/research/formal-semantic-validation/capture-records/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb.jsondocs/research/formal-semantic-validation/capture-records/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636.jsondocs/research/formal-semantic-validation/capture-records/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40.jsondocs/research/formal-semantic-validation/capture-records/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79.jsondocs/research/formal-semantic-validation/capture-records/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3.jsondocs/research/formal-semantic-validation/capture-records/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d.jsondocs/research/formal-semantic-validation/capture-records/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/analysis.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/manifest.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/analysis.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/manifest.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/analysis.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/manifest.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/analysis.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/manifest.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/analysis.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/manifest.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/snapshot.jsondocs/research/specification-coverage/capture-records/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c.jsondocs/research/specification-coverage/capture-records/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab.jsondocs/research/specification-coverage/capture-records/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5.jsondocs/research/specification-coverage/capture-records/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb.jsondocs/research/specification-coverage/capture-records/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9.jsondocs/research/specification-coverage/capture-records/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d.jsondocs/research/specification-coverage/capture-records/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/analysis.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/manifest.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/snapshot.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/analysis.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/manifest.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/snapshot.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/analysis.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/manifest.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/snapshot.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/analysis.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/manifest.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/snapshot.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/analysis.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/manifest.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/snapshot.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/analysis.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/manifest.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/snapshot.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/analysis.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/manifest.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/snapshot.jsonimplementations/python/packages/raes/composition/_tool_affordance.pyimplementations/python/packages/raes/validator/_participant_tool_affordance_renderers.pyimplementations/python/packages/raes_processor/compiler/participant_access.pyimplementations/python/tests/fixtures/tool-profiles/imports-profile-twice.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/profile-module.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/shared-boundary.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/two-role-toolkit.sdl.yamlimplementations/python/tests/test_issue_301_history_alias_visibility.pyimplementations/python/tests/test_issue_301_participant_tool_profile_conflicts.pyimplementations/python/tests/test_issue_301_participant_tool_profiles.pyimplementations/python/tests/test_issue_301_private_references.pyimplementations/python/tests/test_issue_301_projection_boundaries.pyimplementations/python/tests/test_issue_301_selector_schema_parity.pyimplementations/python/tests/test_issue_301_visibility_references.pyimplementations/python/tests/tool_profile_support.pyModified:
contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.jsoncontracts/schema-publication/entries/instantiated-scenario-v1.jsoncontracts/schema-publication/entries/materialized-scenario-v1.jsoncontracts/schema-publication/entries/scenario-satisfiability-evidence-v1.jsoncontracts/schema-publication/entries/sdl-authoring-input-v1.jsoncontracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.jsoncontracts/schemas/sdl/instantiated-scenario-snapshot-v1.jsoncontracts/schemas/sdl/instantiated-scenario-v1.jsoncontracts/schemas/sdl/materialized-scenario-v1.jsoncontracts/schemas/sdl/sdl-authoring-input-v1.jsondocs/explain/sdl/lineage.mddocs/explain/sdl/sections.mddocs/migration/README.mddocs/requirements/ACT-619/requirement.mdimplementations/python/packages/raes/_behavior_authoring.pyimplementations/python/packages/raes/composition/_behavior.pyimplementations/python/packages/raes/participant_behavior_specification.pyimplementations/python/packages/raes/semantics/participant_behavior/_tool_affordance.pyimplementations/python/packages/raes/validator/_content_objectives.pyimplementations/python/packages/raes_processor/compiler/alias_index.pyimplementations/python/packages/raes_processor/compiler/participant_behaviors.pyimplementations/python/packages/raes_processor/compiler/participant_contracts.pyimplementations/python/packages/raes_processor/compiler/view_relations.pyimplementations/python/packages/raes_processor/models/behavior_grounding_checks.pyimplementations/python/packages/raes_processor/models/behavior_ref_checks.pyimplementations/python/packages/raes_processor/models/behavior_resources.pyimplementations/python/packages/raes_processor/models/decision_surface.pyimplementations/python/packages/raes_processor/models/decision_surface_v2.pyimplementations/python/tests/test_issue_298_tool_authoring.pyimplementations/python/tests/test_sem_208_participant_behavior.pyimplementations/python/tests/test_sem_215_participant_outcome_interpretation.pyimplementations/python/tests/test_sem_220_participant_decision_surface.pyspecs/formal/participant-behavior-model/README.mdspecs/sdl/references.mdtools/sdl_catalog_parity/_expectations_2.pyReviews
Traceability reconciliation
Proposed in this PR — verified against the merged tree in Phase E.
Status
Brad-Edwards commentedon Oct 27, 2026
Delivery readiness recorded — Phase E finalizes issue #301 automatically when PR #1576 merges.
feat(sdl): add reusable participant tool profiles (#1576)
github-actions commentedon Oct 27, 2026
Final report — issue #301 complete
PR: #1576
Plan: #301 (comment)
Outcome
Authors can reuse one tool profile across roles while keeping each participant's available tools, visibility, and invocation constraints explicit. Projection and history checks enforce participant scope and hidden information consistently across authored names and runtime addresses.
Implement reusable participant tool profiles, repair the four approved shared-boundary defects, and fix both review finding classes.
In-scope requirements
Verified at merge revision
2ace10c36163.ACT-619(Participant Tool And Affordance Profiles) — ACTIVE — Proposed ACTIVE transition and reconciled implementation/test links are in the delivery PR; they become authoritative after merge.Files changed
Added:
docs/decisions/issue-301-participant-tool-profiles.mddocs/migration/participant-tool-profiles.mddocs/research/formal-semantic-validation/capture-records/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb.jsondocs/research/formal-semantic-validation/capture-records/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636.jsondocs/research/formal-semantic-validation/capture-records/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40.jsondocs/research/formal-semantic-validation/capture-records/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79.jsondocs/research/formal-semantic-validation/capture-records/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3.jsondocs/research/formal-semantic-validation/capture-records/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d.jsondocs/research/formal-semantic-validation/capture-records/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06a090d7cf3b3416d68def093e12111e8678ed14e2073f5fd26fbaa44b1055bb/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/analysis.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/manifest.jsondocs/research/formal-semantic-validation/captures/capture-06d383a8b29c84f687ff884e7592ba0ba3830920cc6b314335f41f9de11ed636/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/analysis.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/manifest.jsondocs/research/formal-semantic-validation/captures/capture-268b65908b90c329911fb7fff5978033b51bdc093e52be336753765e752f4b40/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/analysis.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/manifest.jsondocs/research/formal-semantic-validation/captures/capture-47db186c6bbd4057beca1e4853e628fe6bb143ea0ed54ec8d807aa06ebd2db79/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/analysis.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/manifest.jsondocs/research/formal-semantic-validation/captures/capture-497296479c50f1dc8b65cd824fa7e046b0c0f0ef9af10a6fefd7f32bfa2a0ce3/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/analysis.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/manifest.jsondocs/research/formal-semantic-validation/captures/capture-56d1a98e8d376ed4986593f8c44ea83a7c740ff367d1448af4168b6ca768fc6d/snapshot.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/analysis.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/manifest.jsondocs/research/formal-semantic-validation/captures/capture-edd722c1ae5cf20e794b96952a3911fc5083af67191eee7ff0cb4bbc67d2d946/snapshot.jsondocs/research/specification-coverage/capture-records/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c.jsondocs/research/specification-coverage/capture-records/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab.jsondocs/research/specification-coverage/capture-records/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5.jsondocs/research/specification-coverage/capture-records/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb.jsondocs/research/specification-coverage/capture-records/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9.jsondocs/research/specification-coverage/capture-records/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d.jsondocs/research/specification-coverage/capture-records/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/analysis.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/manifest.jsondocs/research/specification-coverage/captures/capture-245bdb360d6891494aa0f7c73f279506252cbbb854bfa8619b8d44a19c2afa2c/snapshot.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/analysis.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/manifest.jsondocs/research/specification-coverage/captures/capture-391d9e7621e47b8daa42685cc384d94aa394a299da31414c31eed91d3515c1ab/snapshot.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/analysis.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/manifest.jsondocs/research/specification-coverage/captures/capture-40893658556466c33349cb794bff27f95901f8496f7ab0fbae4343a333e2a6f5/snapshot.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/analysis.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/manifest.jsondocs/research/specification-coverage/captures/capture-793723e9a1d399e9ba9cb97e69a6d0984d55371a83b4514961f045167d17c2bb/snapshot.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/analysis.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/manifest.jsondocs/research/specification-coverage/captures/capture-97145a5b04120c5cb81b000f13b2231840740810e308fb2e37168f94550959e9/snapshot.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/analysis.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/manifest.jsondocs/research/specification-coverage/captures/capture-ba46a23b9a09ab109316f185c191f049aeffd24b989e325c6ce7a5bef718ea0d/snapshot.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/analysis.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/manifest.jsondocs/research/specification-coverage/captures/capture-bc4ac24c60b17657a147a9f92bca5c294c4e702458d8ab63ca43c49f8a693141/snapshot.jsonimplementations/python/packages/raes/composition/_tool_affordance.pyimplementations/python/packages/raes/validator/_participant_tool_affordance_renderers.pyimplementations/python/packages/raes_processor/compiler/participant_access.pyimplementations/python/tests/fixtures/tool-profiles/imports-profile-twice.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/profile-module.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/shared-boundary.sdl.yamlimplementations/python/tests/fixtures/tool-profiles/two-role-toolkit.sdl.yamlimplementations/python/tests/test_issue_301_history_alias_visibility.pyimplementations/python/tests/test_issue_301_participant_tool_profile_conflicts.pyimplementations/python/tests/test_issue_301_participant_tool_profiles.pyimplementations/python/tests/test_issue_301_private_references.pyimplementations/python/tests/test_issue_301_projection_boundaries.pyimplementations/python/tests/test_issue_301_selector_schema_parity.pyimplementations/python/tests/test_issue_301_visibility_references.pyimplementations/python/tests/tool_profile_support.pyModified:
contracts/schema-publication/entries/instantiated-scenario-snapshot-v1.jsoncontracts/schema-publication/entries/instantiated-scenario-v1.jsoncontracts/schema-publication/entries/materialized-scenario-v1.jsoncontracts/schema-publication/entries/scenario-satisfiability-evidence-v1.jsoncontracts/schema-publication/entries/sdl-authoring-input-v1.jsoncontracts/schemas/satisfiability/scenario-satisfiability-evidence-v1.jsoncontracts/schemas/sdl/instantiated-scenario-snapshot-v1.jsoncontracts/schemas/sdl/instantiated-scenario-v1.jsoncontracts/schemas/sdl/materialized-scenario-v1.jsoncontracts/schemas/sdl/sdl-authoring-input-v1.jsondocs/explain/sdl/lineage.mddocs/explain/sdl/sections.mddocs/migration/README.mddocs/requirements/ACT-619/requirement.mdimplementations/python/packages/raes/_behavior_authoring.pyimplementations/python/packages/raes/composition/_behavior.pyimplementations/python/packages/raes/participant_behavior_specification.pyimplementations/python/packages/raes/semantics/participant_behavior/_tool_affordance.pyimplementations/python/packages/raes/validator/_content_objectives.pyimplementations/python/packages/raes_processor/compiler/alias_index.pyimplementations/python/packages/raes_processor/compiler/participant_behaviors.pyimplementations/python/packages/raes_processor/compiler/participant_contracts.pyimplementations/python/packages/raes_processor/compiler/view_relations.pyimplementations/python/packages/raes_processor/models/behavior_grounding_checks.pyimplementations/python/packages/raes_processor/models/behavior_ref_checks.pyimplementations/python/packages/raes_processor/models/behavior_resources.pyimplementations/python/packages/raes_processor/models/decision_surface.pyimplementations/python/packages/raes_processor/models/decision_surface_v2.pyimplementations/python/tests/test_issue_298_tool_authoring.pyimplementations/python/tests/test_sem_208_participant_behavior.pyimplementations/python/tests/test_sem_215_participant_outcome_interpretation.pyimplementations/python/tests/test_sem_220_participant_decision_surface.pyspecs/formal/participant-behavior-model/README.mdspecs/sdl/references.mdtools/sdl_catalog_parity/_expectations_2.pyReviews
Traceability reconciliation
Existing valid traceability is preserved; no implementation or test files are deleted or renamed. Current formal and specification captures are added without rewriting historical captures.
Status