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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ jobs:
- name: Run core.assign-ownership example smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/core_assign_ownership_example_smoke.sh

- name: Run core.validate-action-item example smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/core_validate_action_item_example_smoke.sh

- name: Run capability new E2E smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/capability_new_e2e_smoke.sh

Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ jobs:
- name: Run core.assign-ownership example smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/core_assign_ownership_example_smoke.sh

- name: Run core.validate-action-item example smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/core_validate_action_item_example_smoke.sh

- name: Run capability new E2E smoke
run: TRAVERSE_REPO_ROOT="$PWD" bash scripts/ci/capability_new_e2e_smoke.sh

Expand Down
6 changes: 6 additions & 0 deletions examples/core-validate-action-item/DEV-JOURNAL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# core.validate-action-item — dev journal

- Source contract: Loop capability package v2 `core.validate-action-item@1.0.0`, adapted for Traverse deserializer and registry persona_ref resolution.
- Guest: `#![no_std]` validator over `validation_config` + `existing_open_items`.
- Smoke: `bash scripts/ci/core_validate_action_item_example_smoke.sh`.
- Ticket: traverse-framework/traverse#1029.
22 changes: 22 additions & 0 deletions examples/core-validate-action-item/NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# core.validate-action-item

Second Loop package capability adapted for the Traverse registry publication path
([#1029](https://github.com/traverse-framework/traverse/issues/1029)).

Pure commitment gatekeeper: title/owner/due-date rules plus optional duplicate
detection against existing open items. Policy is supplied at invocation.

## Run

```bash
bash scripts/ci/core_validate_action_item_example_smoke.sh
```

## Coverage

| ID | Fixture | Expected `reason_code` |
|----|---------|------------------------|
| UC-01 | `uc01-valid-item.json` | `ok` |
| UC-02 | `uc02-past-due.json` | `validation_failed` (`past_due`) |
| UC-03 | `uc03-missing-owner.json` | `validation_failed` (`missing_owner`) |
| UC-04 | `uc04-duplicate.json` | `duplicate` |
Binary file not shown.
42 changes: 42 additions & 0 deletions examples/core-validate-action-item/build-fixture.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/usr/bin/env bash

set -euo pipefail

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
artifact_dir="$script_dir/artifacts"
artifact_path="$artifact_dir/core-validate-action-item.wasm"
manifest_path="$script_dir/manifest.json"

mkdir -p "$artifact_dir"

rustup run "$(rustup show active-toolchain | awk '{print $1}')" rustc "$script_dir/src/agent.rs" \
--target wasm32-unknown-unknown --crate-type cdylib -O -C panic=abort -C strip=symbols \
--remap-path-prefix "$script_dir=/traverse-repo/agent" -o "$artifact_path"

digest="$(python3 - "$artifact_path" <<'PY'
import sys
from pathlib import Path

data = Path(sys.argv[1]).read_bytes()
h = 0xcbf29ce484222325
for b in data:
h ^= b
h = (h * 0x100000001b3) & 0xFFFFFFFFFFFFFFFF
print(f"fnv1a64:{h:016x}")
PY
)"

python3 - "$manifest_path" "$digest" <<'PY'
import json
import sys
from pathlib import Path

manifest = Path(sys.argv[1])
digest = sys.argv[2]
data = json.loads(manifest.read_text())
data.setdefault("binary", {})["expected_digest"] = digest
manifest.write_text(json.dumps(data, indent=2) + "\n")
print(f"updated {manifest}: binary.expected_digest={digest}")
PY

printf 'built %s\n' "$artifact_path"
Loading
Loading