Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ coverage/

# Traverse checkout symlink for Phase 2 manifest validation
manifests/traverse-starter/_traverse
manifests/doc-approval/_traverse
.traverse/
apps/traverse-starter/TraverseCore/.build/

Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ gh project item-list 2 --owner traverse-framework --format json --limit 300 \
### Blocked work summary

- **Phase 3 embedded runtime** ([#114](https://github.com/traverse-framework/reference-apps/issues/114)–[#116](https://github.com/traverse-framework/reference-apps/issues/116)) — blocked on remaining consumable embedder SDKs: Traverse [#647](https://github.com/traverse-framework/Traverse/issues/647) (Swift), [#648](https://github.com/traverse-framework/Traverse/issues/648) (Kotlin), [#649](https://github.com/traverse-framework/Traverse/issues/649) (.NET). Rust (#650) and Web/TS (#646) embedder SDKs shipped; App-Refs [#117](https://github.com/traverse-framework/reference-apps/issues/117) Linux/CLI and [#113](https://github.com/traverse-framework/reference-apps/issues/113) web-react embed shipped.
- **doc-approval multi-capability showcase** ([#111](https://github.com/traverse-framework/reference-apps/issues/111), [#112](https://github.com/traverse-framework/reference-apps/issues/112)) — Ready after Traverse [#555](https://github.com/traverse-framework/Traverse/issues/555) (`recommend`). Spec 069: pipeline is `analyze → recommend` (no extract).
- **doc-approval multi-capability showcase** ([#111](https://github.com/traverse-framework/reference-apps/issues/111)) — Ready after Traverse [#555](https://github.com/traverse-framework/Traverse/issues/555) (`recommend`) and manifests [#112](https://github.com/traverse-framework/reference-apps/issues/112). Spec 069: pipeline is `analyze → recommend` (no extract).

Ready: [#111](https://github.com/traverse-framework/reference-apps/issues/111), [#112](https://github.com/traverse-framework/reference-apps/issues/112) (after #113 merges).
Ready: [#111](https://github.com/traverse-framework/reference-apps/issues/111) (after #112 merges).

Update this section when a PR changes platform status (see PR template checklist).

Expand Down
2 changes: 1 addition & 1 deletion docs/embedded-runtime-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Until (1–2) exist, platform migration tickets stay **Blocked**.
| [110](https://github.com/traverse-framework/reference-apps/issues/110) | traverse-starter.pipeline multi-capability workflow | Blocked |
| [111](https://github.com/traverse-framework/reference-apps/issues/111) | doc-approval.pipeline multi-capability workflow | Blocked |
| [112](https://github.com/traverse-framework/reference-apps/issues/112) | doc-approval manifests | Blocked |
| [113](https://github.com/traverse-framework/reference-apps/issues/113) | Embed runtime — web-react | Done (this PR) |
| [113](https://github.com/traverse-framework/reference-apps/issues/113) | Embed runtime — web-react | Done |
| [114](https://github.com/traverse-framework/reference-apps/issues/114) | Embed runtime — Swift (iOS + macOS) | Blocked |
| [115](https://github.com/traverse-framework/reference-apps/issues/115) | Embed runtime — Android | Blocked |
| [116](https://github.com/traverse-framework/reference-apps/issues/116) | Embed runtime — Windows | Blocked |
Expand Down
93 changes: 93 additions & 0 deletions manifests/doc-approval/app.manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
{
"app_id": "doc-approval",
"version": "1.0.0",
"schema_version": "1.0.0",
"workspace_defaults": {
"workspace_id": "local-default",
"registry_scope": "private"
},
"components": [
{
"component_id": "doc-approval.analyze-component",
"version": "1.0.0",
"digest": "sha256:5647c39a1d25d8728350f9619025292a62e78a602068a2ad9b6f075751c93d99",
"manifest_path": "components/analyze/component.manifest.json"
},
{
"component_id": "doc-approval.recommend-component",
"version": "1.0.0",
"digest": "sha256:5647c39a1d25d8728350f9619025292a62e78a602068a2ad9b6f075751c93d99",
"manifest_path": "components/recommend/component.manifest.json"
}
],
"workflows": [
{
"workflow_id": "doc-approval.pipeline",
"workflow_version": "1.0.0",
"path": "_traverse/workflows/examples/doc-approval/pipeline/workflow.json"
}
],
"model_dependencies": [],
"config_schema": {
"type": "object",
"required": ["workspace_id"],
"properties": {
"workspace_id": { "type": "string" },
"analysis_mode": {
"type": "string",
"enum": ["deterministic"]
}
},
"additionalProperties": false
},
"default_config": {
"workspace_id": "local-default",
"analysis_mode": "deterministic"
},
"placement_policy": {
"preferred_targets": ["local"],
"allow_fallback": false
},
"public_surfaces": ["cli", "http_json"],
"state_machine": {
"initial_state": "idle",
"list_context_fields": [
"output.analysis.docType",
"output.analysis.parties",
"output.analysis.amounts",
"output.analysis.confidence",
"output.analysis.recommendation",
"output.recommendation.recommendation",
"output.recommendation.rationale",
"output.recommendation.confidence"
],
"states": [
{
"id": "idle",
"transitions": [{ "on": "submit", "to": "processing" }]
},
{
"id": "processing",
"invoke": {
"capability_id": "doc-approval.analyze",
"input_from": "command.payload"
},
"transitions": [
{ "on": "capability_succeeded", "to": "results" },
{ "on": "capability_failed", "to": "error" }
]
},
{
"id": "results",
"transitions": [{ "on": "reset", "to": "idle" }]
},
{
"id": "error",
"transitions": [
{ "on": "retry", "to": "processing", "with_last_payload": true },
{ "on": "reset", "to": "idle" }
]
}
]
}
}
25 changes: 25 additions & 0 deletions manifests/doc-approval/components/analyze/component.manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"component_id": "doc-approval.analyze-component",
"version": "1.0.0",
"schema_version": "1.0.0",
"capability_id": "doc-approval.analyze",
"capability_version": "1.0.0",
"contract_path": "../../_traverse/contracts/examples/doc-approval/capabilities/analyze/contract.json",
"wasm_binary_path": "../../_traverse/examples/doc-approval/analyze-agent/artifacts/analyze-agent.wasm",
"wasm_digest": "sha256:5647c39a1d25d8728350f9619025292a62e78a602068a2ad9b6f075751c93d99",
"runtime_constraints": {
"host_api_access": "none",
"network_access": "forbidden",
"filesystem_access": "none"
},
"permitted_targets": ["local", "device"],
"dependencies": [],
"connector_requirements": [],
"validation_evidence": [
{
"evidence_type": "checked_in_fixture",
"status": "passed",
"produced_by": "doc_approval_example_smoke"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"component_id": "doc-approval.recommend-component",
"version": "1.0.0",
"schema_version": "1.0.0",
"capability_id": "doc-approval.recommend",
"capability_version": "1.0.0",
"contract_path": "../../_traverse/contracts/examples/doc-approval/capabilities/recommend/contract.json",
"wasm_binary_path": "../../_traverse/examples/doc-approval/recommend-agent/artifacts/recommend-agent.wasm",
"wasm_digest": "sha256:5647c39a1d25d8728350f9619025292a62e78a602068a2ad9b6f075751c93d99",
"runtime_constraints": {
"host_api_access": "none",
"network_access": "forbidden",
"filesystem_access": "none"
},
"permitted_targets": ["local", "device"],
"dependencies": [],
"connector_requirements": [],
"validation_evidence": [
{
"evidence_type": "checked_in_fixture",
"status": "passed",
"produced_by": "doc_approval_example_smoke"
}
]
}
25 changes: 18 additions & 7 deletions scripts/ci/phase2_link_traverse.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
#!/usr/bin/env bash
# Ensures manifests/traverse-starter/_traverse symlink points at TRAVERSE_REPO.
# Ensures manifests/<app>/_traverse symlinks point at TRAVERSE_REPO.
# Required for app validate/register — WASM, contracts, and workflows live in Traverse.
set -euo pipefail

REPO_ROOT="${REPO_ROOT:-$(git rev-parse --show-toplevel)}"
LINK="$REPO_ROOT/manifests/traverse-starter/_traverse"

if [ -z "${TRAVERSE_REPO:-}" ]; then
echo "FAIL: TRAVERSE_REPO is not set."
echo ""
echo "Clone Traverse v0.6.0+ (minimum v0.5.0 for Phase 2) with traverse-starter example and export:"
echo "Clone Traverse main (with traverse-starter + doc-approval examples) and export:"
echo " export TRAVERSE_REPO=/path/to/Traverse"
exit 1
fi
Expand All @@ -21,10 +20,22 @@ fi

if [ ! -f "$TRAVERSE_REPO/examples/traverse-starter/process-agent/artifacts/process-agent.wasm" ]; then
echo "FAIL: traverse-starter WASM not found in TRAVERSE_REPO."
echo " Ensure TRAVERSE_REPO is Traverse main with issue #499 merged."
exit 1
fi

mkdir -p "$(dirname "$LINK")"
ln -sfn "$TRAVERSE_REPO" "$LINK"
echo "OK: linked $LINK -> $TRAVERSE_REPO"
if [ ! -f "$TRAVERSE_REPO/examples/doc-approval/analyze-agent/artifacts/analyze-agent.wasm" ]; then
echo "FAIL: doc-approval WASM not found in TRAVERSE_REPO."
echo " Ensure TRAVERSE_REPO includes issue #555 recommend + analyze agents."
exit 1
fi

link_app() {
local app="$1"
local link="$REPO_ROOT/manifests/$app/_traverse"
mkdir -p "$(dirname "$link")"
ln -sfn "$TRAVERSE_REPO" "$link"
echo "OK: linked $link -> $TRAVERSE_REPO"
}

link_app "traverse-starter"
link_app "doc-approval"
6 changes: 6 additions & 0 deletions scripts/ci/repository_checks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,12 @@ check "apps/doc-approval/DocApprovalCore/Package.swift" "doc-a
check "apps/doc-approval/doc-approval-core-rs/Cargo.toml" "doc-approval-core-rs Cargo crate"
check "apps/doc-approval/Cargo.toml" "doc-approval Cargo workspace"

# Application manifests
check "manifests/traverse-starter/app.manifest.json" "traverse-starter app manifest"
check "manifests/doc-approval/app.manifest.json" "doc-approval app manifest"
check "manifests/doc-approval/components/analyze/component.manifest.json" "doc-approval analyze component"
check "manifests/doc-approval/components/recommend/component.manifest.json" "doc-approval recommend component"

# meeting-notes clients
check "apps/meeting-notes/web-react/package.json" "meeting-notes web-react package"
check "apps/meeting-notes/web-react/README.md" "meeting-notes web-react README"
Expand Down
Loading