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
* Implement proposal 0045 (nested-lineage augmentation)
Spec proposal 0045 (observability §3.4) rewrites the per-async-context
augmentation boundary as three lineage-aware rules: the augmenter's
call-stack ancestor chain MUST update (every strict dispatch ancestor
on the augmenter's specific path); siblings at any depth MUST NOT;
shared parents (fan-out NODE, parallel-branches NODE, invocation
span when inside a dispatch boundary) MUST NOT.
Engine: tracks per-depth lineage chains parallel to namespace_prefix.
descend_into_subgraph extends both chains by None; fan-out instance
descent extends fan_out_index_chain with the instance index; pb branch
descent extends branch_name_chain with the branch name. Chain
ContextVars driven at every leaf-node execution site so
set_invocation_metadata sees the full chain.
Events: NodeEvent and MetadataAugmentationEvent grow
fan_out_index_chain and branch_name_chain fields populated from
context. Backwards-compatible — scalar fan_out_index and branch_name
fields stay as innermost values.
OTel and Langfuse observers: _collect_augmentation_targets and
_handle_metadata_augmentation rewrite against the three-step boundary
decision tree. Both observers store the chain on _OpenSpan /
_OpenObservation so the comparison is local rather than re-derived
per event. Shared-parent identification uses the parent_node_name
caches structurally — pb cache mirror added to the Langfuse observer.
Invocation span update: preserved per fixture 034 (outermost-serial
case where the augmenter has no fan-out or pb dispatch on its
call-stack path). When inside any dispatch boundary, the invocation
span MUST NOT update per §3.4's shared-parent rule.
Spec pin v0.36.0 → v0.37.0. Conformance fixture 039 stays deferred
in the Langfuse harness — needs runtime-state item-list lookup for
nested fan-outs plus a new augment_metadata_from_outer_item directive
for case 2. Behavioral contract verified at unit level via
test_nested_fan_out_augmentation_reaches_outer_instance_dispatch_span.
* Add proposal 0045 entry to conformance manifest
CI check_conformance_manifest.py flagged that proposal 0045
(accepted in spec v0.37.0) had no entry in conformance.toml. Add
the entry alongside 0044 with status=implemented and the same
v0.11.0 ``since`` as the other proposals in the batch.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,7 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). The
8
8
9
9
### Added
10
10
11
+
-**Nested-lineage augmentation containment scope** (proposal 0045, observability §3.4, spec v0.37.0). The per-async-context augmentation boundary rewrites as three lineage-aware rules: the augmenter's call-stack ancestor chain MUST update (every strict dispatch ancestor on the path — each outer fan-out instance dispatch span, each outer parallel-branches branch dispatch span, each outer serial subgraph wrapper); siblings at any depth MUST NOT; shared parents (fan-out NODE, parallel-branches NODE, invocation span) MUST NOT. Engine-side: tracks per-depth lineage chains (`fan_out_index_chain` / `branch_name_chain`) parallel to `namespace_prefix`, available on `NodeEvent` and `MetadataAugmentationEvent`. Observer-side: `OTelObserver._collect_augmentation_targets` and `LangfuseObserver._handle_metadata_augmentation` rewrite against the three-step boundary decision tree. Single-level behavior (fixtures 029 / 030 / 034) is unchanged.
11
12
-**`LangfuseObserver` Trace input/output sourcing** (proposal 0043, observability §8.4.1). New observer construction knobs populate `trace.input` and `trace.output` per the three-lever decision tree:
12
13
-**`disable_state_payload: bool = True`** — privacy knob symmetric to `disable_llm_payload`. When ON (default), Trace fields receive the minimal stub `{entry_node, correlation_id}` / `{final_node, status}`; when OFF, the raw state object is serialized.
13
14
-**`trace_input_from_state` / `trace_output_from_state`** — optional caller hooks returning the domain-shaped value to use for `trace.input` / `trace.output`. Returning `None` falls through to the next applicable lever.
Copy file name to clipboardExpand all lines: src/openarmature/AGENTS.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# OpenArmature — Agent documentation
2
2
3
-
*This is the agent guide bundled with the openarmature Python package, version 0.10.0 (spec v0.36.0). For the full docs site see [openarmature.ai](https://openarmature.ai). For the canonical spec text see [openarmature.org/capabilities](https://openarmature.org/capabilities/). For project-specific conventions for the code you're editing, see the host project's `AGENTS.md` or `CLAUDE.md`.*
3
+
*This is the agent guide bundled with the openarmature Python package, version 0.10.0 (spec v0.37.0). For the full docs site see [openarmature.ai](https://openarmature.ai). For the canonical spec text see [openarmature.org/capabilities](https://openarmature.org/capabilities/). For project-specific conventions for the code you're editing, see the host project's `AGENTS.md` or `CLAUDE.md`.*
4
4
5
5
## TL;DR
6
6
@@ -10,7 +10,7 @@ OpenArmature is a workflow framework for LLM pipelines and tool-calling agents
10
10
11
11
## Capability contracts
12
12
13
-
_Sourced from openarmature-spec v0.36.0. Each entry below reproduces §1 (Purpose) and §2 (Concepts) of the capability's `spec.md`. For the full spec text (execution model, error semantics, determinism, observer hooks, etc.) see the linked docs site._
13
+
_Sourced from openarmature-spec v0.37.0. Each entry below reproduces §1 (Purpose) and §2 (Concepts) of the capability's `spec.md`. For the full spec text (execution model, error semantics, determinism, observer hooks, etc.) see the linked docs site._
0 commit comments