Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
43e8e2c
feat: add wip_notes to .gitignore
ahouseholder Feb 25, 2026
6367c84
feat: add diataxis-framework.md for documentation standards and workflow
ahouseholder Feb 25, 2026
052fc99
feat: add diataxis-requirements.md for organizing project documentation
ahouseholder Feb 25, 2026
f364447
feat: update PRIORITIES.md to reflect current demo implementation pha…
ahouseholder Feb 25, 2026
edd75c3
feat: enhance IDEATION.md with testing notes and documentation refact…
ahouseholder Feb 25, 2026
1b8d4c0
feat: update IDEATION_prompt.md to include current priorities and imp…
ahouseholder Feb 25, 2026
00c872f
specs: add new specs and notes from IDEATION.md gap analysis
ahouseholder Feb 25, 2026
bf6ed8d
refine specs: normalize IDs, add new requirements from notes
ahouseholder Feb 26, 2026
743a033
feat: refine implementation plan and notes based on gap analysis
ahouseholder Feb 26, 2026
aaf518b
plan: refresh gap analysis #8 — close DEMO-3, add DEMO-4 unified CLI …
ahouseholder Feb 26, 2026
3072132
refine implementation notes: suggest using a context manager for demo…
ahouseholder Feb 26, 2026
fd108be
feat(demo): extract shared utilities to vultron/demo/utils.py (DEMO-4.1)
ahouseholder Feb 26, 2026
2f2e348
plan: mark DEMO-4.1 complete; add implementation notes
ahouseholder Feb 26, 2026
03eacfa
refactor: update implementation plan with new demo test tasks and int…
ahouseholder Feb 26, 2026
2f3b26e
docs: update project documentation to include unique ID tagging for p…
ahouseholder Feb 26, 2026
5bc0786
refactor: DEMO-4.2 — import all demo utilities from vultron.demo.utils
ahouseholder Feb 26, 2026
34d62e8
plan: mark DEMO-4.2 complete
ahouseholder Feb 26, 2026
16be555
docs: add reference to DEMO-4 Isolation Complexity notes in implement…
ahouseholder Feb 26, 2026
d3afa17
demo: move all *_demo.py scripts from vultron/scripts/ to vultron/dem…
ahouseholder Feb 26, 2026
7f911b2
demo: add demo_environment context manager for per-demo teardown (DEM…
ahouseholder Feb 26, 2026
e929f33
plan: mark DEMO-4.4 complete; add implementation note
ahouseholder Feb 26, 2026
4903aa4
feat(demo): add unified vultron-demo CLI (DEMO-4.5, DEMO-4.6)
ahouseholder Feb 26, 2026
2ecfd77
docs: add note on demo commands logging output and configuration
ahouseholder Feb 26, 2026
653f199
fix: configure logging in demo CLI so demo output is visible
ahouseholder Feb 26, 2026
4e4cd2c
docs: update BUGFIX_prompt.md with guidelines for documenting additio…
ahouseholder Feb 26, 2026
74e847a
docs: update BUGS.md with details on test_check_server_availability_l…
ahouseholder Feb 26, 2026
e1f7df8
fix: resolve test_check_server_availability_logs_retry_attempts order…
ahouseholder Feb 26, 2026
e01b10a
docs: remove fixed test_check_server_availability_logs_retry_attempts…
ahouseholder Feb 26, 2026
996e8f6
feat(docker): add unified demo service (DEMO-4.7)
ahouseholder Feb 26, 2026
65ac91f
demo: remove individual per-demo Docker services (DEMO-4.8, DC-04-003)
ahouseholder Feb 26, 2026
0fbc30c
docs: update BUILD_prompt.md with guidelines for handling incidental …
ahouseholder Feb 26, 2026
801f225
test(demo): complete DEMO-4.9 — add order and failure coverage to tes…
ahouseholder Feb 26, 2026
2360a90
docs: update IMPLEMENTATION_NOTES.md to address test suite performanc…
ahouseholder Feb 26, 2026
5e338b9
demo: move demo tests from test/scripts/ to test/demo/ (DEMO-4.10)
ahouseholder Feb 26, 2026
ae34a7e
plan: mark DEMO-4.10 complete
ahouseholder Feb 26, 2026
3caff50
refactor(demo tests): eliminate sleep in tests, reduce fixture redund…
ahouseholder Feb 26, 2026
096a2da
plan: mark DEMO-4.11 complete; add resolution notes
ahouseholder Feb 26, 2026
5cbc668
docs: remove outdated performance concerns from IMPLEMENTATION_NOTES.md
ahouseholder Feb 26, 2026
58ee2c5
docs: add documentation requirements for demo suite and tutorials in …
ahouseholder Feb 26, 2026
aa5f3ca
feat: add integration test suite for unified demo CLI (DEMO-4.12–4.14)
ahouseholder Feb 26, 2026
2131856
docs: document logging errors and spurious print statements in test s…
ahouseholder Feb 26, 2026
52cb6a0
docs: add Docker build performance optimization notes to IMPLEMENTATI…
ahouseholder Feb 26, 2026
bb821b3
docs: create vultron/demo/README.md (DEMO-4.15)
ahouseholder Feb 26, 2026
ed39210
plan: mark DEMO-4.15 complete
ahouseholder Feb 26, 2026
1ce25a8
docs: add demo CLI references to activity howto pages (DEMO-4.16)
ahouseholder Feb 26, 2026
6e500da
plan: mark DEMO-4.16 complete
ahouseholder Feb 26, 2026
eebfae1
docs: document mkdocs serve error and its traceback
ahouseholder Feb 26, 2026
8c26e22
fix: remove griffe/griffecli stub packages causing mkdocs serve Impor…
ahouseholder Feb 26, 2026
abc2fb2
docs: add notes on reviewing activity sequence diagrams against demo …
ahouseholder Feb 26, 2026
0a46b6d
docs: add receive-report demo tutorial (DEMO-4.17)
ahouseholder Feb 26, 2026
2f8e317
plan: mark DEMO-4.17 complete
ahouseholder Feb 26, 2026
bfab446
docs: add TUTORIAL-2 — Running the Other Demos (DEMO-4.18)
ahouseholder Feb 26, 2026
3ea4c8d
plan: mark DEMO-4.18 complete and update documentation tasks for futu…
ahouseholder Feb 26, 2026
e19bc09
docs(demo): add docstrings and reference docs for vultron.demo (DEMO-…
ahouseholder Feb 26, 2026
056e0c8
plan: mark DEMO-4.19 complete
ahouseholder Feb 26, 2026
0dfdbfa
docs: markdownlint
ahouseholder Feb 26, 2026
3ac594c
Fix(docs): update demo doc link to resolve linkchecker error
ahouseholder Feb 27, 2026
798b137
docs: add guidelines for using relative links in documentation
ahouseholder Feb 27, 2026
33481bb
docs: sync guidance with DEMO-4 completion and promote durable notes
ahouseholder Feb 27, 2026
ed68b6c
docs(notes): distribute IMPLEMENTATION_NOTES items to durable notes f…
ahouseholder Feb 27, 2026
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 @@ -141,3 +141,4 @@ mydb.json
/package-lock.json
/ontology/*.properties
catalog-*.xml
/wip_notes/
25 changes: 20 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -564,13 +564,19 @@ behavior across backends (in-memory / tinydb) where reasonable.
- **Vocabulary Examples**: `vultron/scripts/vocab_examples.py` - Canonical
ActivityStreams activity examples; use as reference for message semantics
and as test fixtures for pattern matching
- **Demo Scripts**: `vultron/scripts/receive_report_demo.py`,
- **Demo CLI**: `vultron/demo/cli.py` - Unified `click`-based entry point
(`vultron-demo` command); sub-commands for each demo plus `all`
- **Demo Utilities**: `vultron/demo/utils.py` - Shared `demo_step`,
`demo_check`, `DataLayerClient`, and HTTP helper utilities used by all
demo scripts
- **Demo Scripts**: `vultron/demo/receive_report_demo.py`,
`initialize_case_demo.py`, `invite_actor_demo.py`,
`establish_embargo_demo.py`, `status_updates_demo.py`,
`suggest_actor_demo.py`, `transfer_ownership_demo.py`,
`acknowledge_demo.py`, `manage_case_demo.py`,
`initialize_participant_demo.py` - End-to-end workflow demonstrations;
also used by `test/scripts/` and Docker Compose configs
`initialize_participant_demo.py`, `manage_embargo_demo.py`,
`manage_participants_demo.py` - End-to-end workflow demonstrations;
also used by `test/demo/` and Docker Compose configs
- **Case States**: `vultron/case_states/` - RM/EM/CS state machine enums and
patterns; use as reference for valid state transitions and preconditions
- **State machine enums are authoritative**: When documentation and code
Expand Down Expand Up @@ -1136,10 +1142,19 @@ cd /tmp && markdownlint-cli2 \
The `strict.markdownlint-cli2.yaml` file at the repo root contains the same
rules as the default config with the `ignores` block removed.

### Docs links must be relative

Markdown links in `docs/` MUST be relative to the current file and MUST NOT
go above the `docs/` directory (the site root). Keep relative paths as short
as possible. For example, a link from `docs/a/b/c/file.md` to
`docs/a/d/other.md` should be `../../d/other.md`.
Use `mkdocs build --site-dir PATH` and `linkchecker PATH` to verify links
before committing.

### Demo script lifecycle logging

Demo scripts use `demo_step` and `demo_check` context managers (defined
locally in each demo file) to log structured lifecycle events:
in `vultron/demo/utils.py`) to log structured lifecycle events:

- `demo_step(description)` — workflow step: logs 🚥 on entry, 🟢 on success,
🔴 on exception (re-raises).
Expand All @@ -1148,7 +1163,7 @@ locally in each demo file) to log structured lifecycle events:

Wrap every numbered workflow step and every verification block in these
managers. See `notes/codebase-structure.md` "Demo Script Lifecycle Logging"
for the durable pattern and `test/scripts/test_demo_context_managers.py`.
for the durable pattern and `test/demo/test_demo_context_managers.py`.

### Archiving IMPLEMENTATION_PLAN.md

Expand Down
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,8 @@ api_dev: ## Start API server in development mode

.PHONY: docker_api_dev
docker_api_dev: docker_up ## Start API server in Docker in development mode
cd docker && docker-compose up api-dev
cd docker && docker-compose up api-dev

.PHONY: integration-test
integration-test: ## Run demo integration tests (requires Docker)
./integration_tests/demo/run_demo_integration_test.sh
51 changes: 4 additions & 47 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -39,51 +39,8 @@ FROM dependencies AS api-dev
ENV LOG_LEVEL=DEBUG
CMD ["uv","run","uvicorn","vultron.api.main:app","--host","0.0.0.0","--port","7999","--reload"]

FROM dependencies AS receive-report-demo
FROM dependencies AS demo
ENV PYTHONPATH=/app
# The BASE_URL in the script will be overridden via environment variable
CMD ["uv", "run", "python", "-m", "vultron.scripts.receive_report_demo"]

FROM dependencies AS initialize-case-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.initialize_case_demo"]

FROM dependencies AS establish-embargo-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.establish_embargo_demo"]

FROM dependencies AS invite-actor-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.invite_actor_demo"]

FROM dependencies AS status-updates-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.status_updates_demo"]

FROM dependencies AS suggest-actor-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.suggest_actor_demo"]

FROM dependencies AS transfer-ownership-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.transfer_ownership_demo"]

FROM dependencies AS acknowledge-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.acknowledge_demo"]

FROM dependencies AS manage-case-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.manage_case_demo"]

FROM dependencies AS initialize-participant-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.initialize_participant_demo"]

FROM dependencies AS manage-embargo-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.manage_embargo_demo"]

FROM dependencies AS manage-participants-demo
ENV PYTHONPATH=/app
CMD ["uv", "run", "python", "-m", "vultron.scripts.manage_participants_demo"]
COPY docker/demo-entrypoint.sh /app/demo-entrypoint.sh
RUN chmod +x /app/demo-entrypoint.sh
ENTRYPOINT ["/app/demo-entrypoint.sh"]
22 changes: 22 additions & 0 deletions docker/demo-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash
# Entrypoint for the unified Vultron demo container (DC-04-001, DC-04-002).
#
# When the DEMO environment variable is set, run that sub-command
# non-interactively and exit. Otherwise, display available demos and
# drop into an interactive shell so the user can run `vultron-demo <name>`.

set -e

if [ -n "${DEMO}" ]; then
exec vultron-demo ${DEMO}
fi

# Interactive mode: show available commands then open a shell.
echo ""
echo "Vultron Demo Container"
echo "======================"
echo "Run a demo with: vultron-demo <name>"
echo ""
vultron-demo --help
echo ""
exec bash
206 changes: 5 additions & 201 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,210 +75,12 @@ services:
retries: 15
start_period: 5s

receive-report-demo:
demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: receive-report-demo
image: ${PROJECT_NAME}-receive-report-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

initialize-case-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: initialize-case-demo
image: ${PROJECT_NAME}-initialize-case-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

establish-embargo-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: establish-embargo-demo
image: ${PROJECT_NAME}-establish-embargo-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

invite-actor-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: invite-actor-demo
image: ${PROJECT_NAME}-invite-actor-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

status-updates-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: status-updates-demo
image: ${PROJECT_NAME}-status-updates-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

suggest-actor-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: suggest-actor-demo
image: ${PROJECT_NAME}-suggest-actor-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

transfer-ownership-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: transfer-ownership-demo
image: ${PROJECT_NAME}-transfer-ownership-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

acknowledge-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: acknowledge-demo
image: ${PROJECT_NAME}-acknowledge-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

manage-case-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: manage-case-demo
image: ${PROJECT_NAME}-manage-case-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

initialize-participant-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: initialize-participant-demo
image: ${PROJECT_NAME}-initialize-participant-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

manage-embargo-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: manage-embargo-demo
image: ${PROJECT_NAME}-manage-embargo-demo:latest
depends_on:
api-dev:
condition: service_healthy
volumes:
- "../vultron:/app/vultron"
- "/app/.venv"
environment:
- PYTHONPATH=/app
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network

manage-participants-demo:
build:
context: ..
dockerfile: docker/Dockerfile
target: manage-participants-demo
image: ${PROJECT_NAME}-manage-participants-demo:latest
target: demo
image: ${PROJECT_NAME}-demo:latest
depends_on:
api-dev:
condition: service_healthy
Expand All @@ -290,6 +92,8 @@ services:
- VULTRON_API_BASE_URL=http://api-dev:7999/api/v2
networks:
- vultron-network
stdin_open: true
tty: true

networks:
vultron-network:
Expand Down
16 changes: 16 additions & 0 deletions docs/howto/activitypub/activities/acknowledge.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,19 @@ flowchart LR
about a message or object, such as `as:Like`, `as:Dislike`, and `as:Flag`.
While these may be relevant to implementations of the Vultron protocol, we
do not have specific use cases for them at this time.

## Demo

!!! example "Try it: `vultron-demo acknowledge`"

Run this workflow end-to-end with the unified demo CLI:

```bash
vultron-demo acknowledge
```

Or with Docker Compose:

```bash
DEMO=acknowledge docker compose -f docker/docker-compose.yml run --rm demo
```
Loading