-
Notifications
You must be signed in to change notification settings - Fork 0
Sprint 1: WP2 plugin host + WP3 Python plugin (walking skeleton) #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
78 commits
Select commit
Hold shift + click to select a range
49aea3d
docs(adr,sprint-1): adopt ADR-023 tooling baseline before first code
tachyon-beep 50df042
feat(wp1): workspace skeleton + ADR-023 tooling baseline
tachyon-beep 04e8fdb
chore(wp1): apply Task 1 code-review fixes
tachyon-beep c7630f1
feat(wp1): L2 entity-ID assembler per ADR-003 + ADR-022
tachyon-beep 06dda78
chore(wp1): apply Task 2 code-review fixes
tachyon-beep 1623514
feat(wp1): L1 SQLite schema migration framework
tachyon-beep f7e990d
chore(wp1): apply Task 3 code-review fixes
tachyon-beep 55f6551
feat(wp1): reader pool for concurrent read connections
tachyon-beep 021ae60
chore(wp1): apply Task 4 code-review fixes
tachyon-beep 1e294b3
feat(wp1): clarion install subcommand; author ADR-005
tachyon-beep 09b54fe
chore(wp1): apply Task 5 code-review fixes
tachyon-beep ff8d233
feat(wp1): L3 writer-actor (tokio::task) with per-N transaction batch
tachyon-beep cbed355
chore(wp1): apply Task 6 code-review fixes
tachyon-beep 10005e8
feat(wp1): clarion analyze skeleton (plugin wiring deferred to WP2)
tachyon-beep 535c599
chore(wp1): apply Task 7 code-review fixes
tachyon-beep eb76459
feat(wp1): LlmProvider trait stub for WP6
tachyon-beep d8588b0
test(wp1): end-to-end smoke test
tachyon-beep 4611c99
docs(sprint-1): tick WP1 sign-off and stamp L1/L2/L3 lock-ins
tachyon-beep ad8d4ce
Merge WP1: Sprint 1 scaffold + storage
tachyon-beep 5bcd3d3
docs(wp2): apply plan-review findings before implementation
tachyon-beep c2cb07a
feat(wp2): L5 plugin manifest parser and validator (ADR-021 §Layer 1 …
tachyon-beep 4b20244
feat(wp2): L4 JSON-RPC Content-Length transport
tachyon-beep f3ca3ab
fix(wp2): L4 transport correctness and DoS hardening
tachyon-beep b27594d
feat(wp2): in-process mock plugin test harness
tachyon-beep bd56cd5
feat(wp2): pre-Task-4 hardening — plugin_id split, String paths, mock…
tachyon-beep 1002d53
feat(wp2): L6 core-enforced minimums — path jail, ceilings, prlimit (…
tachyon-beep a7b1465
fix(wp2): Task 4 review findings — CapExceeded semantics, FINDING_* r…
tachyon-beep 28f5676
feat(wp2): L9 plugin discovery convention (PATH + neighboring manifest)
tachyon-beep c4f2a85
fix(wp2): Task 5 review findings — distinguish EACCES from NotFound i…
tachyon-beep fcebf8a
feat(wp2): plugin-host supervisor with ADR-021 enforcement + ADR-022 …
tachyon-beep 26b5920
fix(wp2): Task 6 review findings — mock compliant entity, dead varian…
tachyon-beep 19e541b
feat(wp2): crash-loop breaker
tachyon-beep 68658a4
fix(wp2): Task 7 review findings — expect() format string + state() doc
tachyon-beep 95ecd33
feat(wp2): wire clarion analyze to plugin host
tachyon-beep e95219b
test(wp2): end-to-end smoke with mock plugin
tachyon-beep de13838
fix(wp1+wp2): 11 defects from post-delivery review
tachyon-beep 5c5c3ee
fix(wp2): bound RawEntity string fields to 4 KiB — close RAM DoS
tachyon-beep 0fcc57f
fix(wp2): reap child on PluginHost::spawn handshake failure
tachyon-beep 37b56d9
fix(wp2): clarion analyze exits non-zero on FailRun
tachyon-beep a1cc3be
fix(wp2): wire crash-loop breaker; one plugin crash no longer tanks run
tachyon-beep 4817f84
docs(wp2): phase-1 scrub findings triage
tachyon-beep b30638c
fix(wp2): convert spawn_blocking JoinError to crash reason, not bypass
tachyon-beep 7f8fc9a
test(wp2): E2E crash-loop breaker trip via clarion analyze
tachyon-beep 3e0ea44
test(wp2): host-level EntityCapExceeded coverage (T9)
tachyon-beep ad054bd
fix(wp2): scrub parent PATH in analyze_without_plugins skipped test
tachyon-beep 669e89e
fix(wp2): downgrade protocol::make_{request,notification} to pub(crate)
tachyon-beep d890a73
fix(wp2): log + count per-entry I/O errors in source walk
tachyon-beep 483db6e
test(wp2): tighten host test assertions — pin counts; cover all overs…
tachyon-beep 26f14aa
test(wp2): rename t9 subprocess test to match what it actually asserts
tachyon-beep 288defe
fix(wp2): gate ContentLengthCeiling::unbounded() behind #[cfg(test)]
tachyon-beep 855803e
fix(wp2): cap plugin.toml file size and [integrations.*] entry count
tachyon-beep 7d97c66
fix(wp2): bound ProtocolError.message and .data at deserialise time
tachyon-beep 7b5db34
fix(wp2): bound RawEntity.extra and RawSource.extra by serialised siz…
tachyon-beep 84b5778
docs(wp2): clarify DiscoveredPlugin.executable is raw-PATH, not canon…
tachyon-beep 6b0fa3a
fix(wp2): structural double-shutdown guard on PluginHost (T8f)
tachyon-beep 5fb5666
fix(wp2): fail loud on non-UTF-8 paths at analyze_file wire boundary …
tachyon-beep 1ac32b1
fix(wp2): validate and retain ontology_version at handshake (ADR-007 …
tachyon-beep 769a177
fix(wp2): drain stale frames while waiting for response id match
tachyon-beep eb0a41d
fix(wp2): spawn uses discovered executable; refuse manifest path trav…
tachyon-beep bd92600
fix(wp2): apply RLIMIT_NOFILE + RLIMIT_NPROC to plugin child
tachyon-beep 89b2da0
test(wp2): close 4 test-coverage gaps on host.rs
tachyon-beep b4eca5b
fix(wp2): deserialise analyze_file response via typed AnalyzeFileResult
tachyon-beep b3c91a7
fix(wp2): pipe plugin stderr into bounded ring buffer, don't inherit
tachyon-beep 7c0e396
fix(wp2): refuse world-writable $PATH directories during discovery
tachyon-beep c0999a7
docs(wp2): handoff prompt for post-scrub session
tachyon-beep 1b127df
docs(wp2): lock A.2 signoffs; close WP2 umbrella
tachyon-beep 665b685
feat(wp3): Python plugin package skeleton + ADR-023 tooling baseline
tachyon-beep 54adc5d
feat(wp3): L4-compatible JSON-RPC server + stdout guard
tachyon-beep a92bd24
feat(wp3): L7 qualname reconstruction matching __qualname__ semantics
tachyon-beep 5bc5fed
feat(wp3): function extractor with L2 EntityId production
tachyon-beep 69dcfcf
test(wp3): shared EntityId fixture — cross-language L2 byte-for-byte …
tachyon-beep b398c35
feat(wp3): L8 Wardline REGISTRY probe with version pinning
tachyon-beep d6e7e54
feat(wp3): plugin.toml manifest + analyze_file wired to extractor
tachyon-beep fa749ea
test(wp3): round-trip self-test against plugin's own source
tachyon-beep 7e7a85b
test(sprint-1): walking-skeleton end-to-end demo script + entity shap…
tachyon-beep a5444de
docs(wp3): lock A.3 + A.4 signoffs; resolve UQ-WP3-*; close WP3 umbrella
tachyon-beep 553239c
docs(sprint-1): close Tier A — A.5 cross-product + A.6.1 plan narrowing
tachyon-beep be7fa60
fix(ci): green Rust + walking-skeleton jobs on GHA ubuntu-latest
tachyon-beep File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| pull_request: | ||
|
|
||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| env: | ||
| CARGO_TERM_COLOR: always | ||
| RUSTFLAGS: "-D warnings" | ||
|
|
||
| jobs: | ||
| rust: | ||
| name: Rust | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - uses: dtolnay/rust-toolchain@stable | ||
| with: | ||
| components: clippy, rustfmt, llvm-tools-preview | ||
|
|
||
| - uses: Swatinem/rust-cache@v2 | ||
|
|
||
| - name: fmt | ||
| run: cargo fmt --all -- --check | ||
|
|
||
| - name: clippy | ||
| run: cargo clippy --workspace --all-targets --all-features -- -D warnings | ||
|
|
||
| - name: install cargo-nextest | ||
| uses: taiki-e/install-action@cargo-nextest | ||
|
|
||
| # Ensure all workspace binaries (notably clarion-plugin-fixture) are built | ||
| # before nextest runs. wp2_e2e tests need the fixture binary on disk and | ||
| # nextest's CARGO_BIN_EXE_* propagation is not reliably set for cross-package | ||
| # dev-dep binaries (deferred issue clarion-adeff0916d). | ||
| - name: build workspace bins | ||
| run: cargo build --workspace --bins | ||
|
|
||
| - name: test | ||
| run: cargo nextest run --workspace --all-features --no-tests=pass | ||
|
|
||
| - name: doc | ||
| run: cargo doc --workspace --no-deps --all-features | ||
|
|
||
| - name: install cargo-deny | ||
| uses: taiki-e/install-action@cargo-deny | ||
|
|
||
| - name: deny | ||
| run: cargo deny check | ||
|
|
||
| python-plugin: | ||
| name: Python plugin | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.11" | ||
| cache: pip | ||
| cache-dependency-path: plugins/python/pyproject.toml | ||
|
|
||
| - name: install plugin (dev extras) | ||
| run: python -m pip install -e 'plugins/python[dev]' | ||
|
|
||
| - name: ruff check | ||
| run: ruff check plugins/python | ||
|
|
||
| - name: ruff format check | ||
| run: ruff format --check plugins/python | ||
|
|
||
| - name: mypy | ||
| run: mypy --strict plugins/python | ||
|
|
||
| - name: pytest | ||
| run: pytest plugins/python | ||
|
|
||
| walking-skeleton: | ||
| name: Sprint 1 walking skeleton (end-to-end) | ||
| runs-on: ubuntu-latest | ||
| needs: [rust, python-plugin] | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
|
|
||
| - uses: dtolnay/rust-toolchain@stable | ||
|
|
||
| - uses: Swatinem/rust-cache@v2 | ||
|
|
||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.11" | ||
| cache: pip | ||
| cache-dependency-path: plugins/python/pyproject.toml | ||
|
|
||
| - name: install sqlite3 cli | ||
| run: sudo apt-get update && sudo apt-get install -y --no-install-recommends sqlite3 | ||
|
|
||
| - name: run walking skeleton | ||
| run: bash tests/e2e/sprint_1_walking_skeleton.sh | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,22 @@ | ||
| .filigree/ | ||
| .filigree/ | ||
| /target | ||
| **/*.rs.bk | ||
| Cargo.lock.bak | ||
|
|
||
| # SQLite working files (project-level .clarion/ is tracked per ADR-005) | ||
| *.db-journal | ||
| *.db-wal | ||
|
|
||
| # Rust-analyzer / IDE caches | ||
| /.idea | ||
| /.vscode | ||
|
|
||
| # Python (plugins/python/) | ||
| .venv/ | ||
| __pycache__/ | ||
| *.egg-info/ | ||
| .mypy_cache/ | ||
| .pytest_cache/ | ||
| .ruff_cache/ | ||
| .coverage | ||
| htmlcov/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| repos: | ||
| - repo: https://github.com/astral-sh/ruff-pre-commit | ||
| rev: v0.15.11 | ||
| hooks: | ||
| - id: ruff | ||
| args: [--fix] | ||
| files: ^plugins/python/.*\.py$ | ||
| - id: ruff-format | ||
| files: ^plugins/python/.*\.py$ | ||
| - repo: https://github.com/pre-commit/mirrors-mypy | ||
| rev: v1.20.2 | ||
| hooks: | ||
| - id: mypy | ||
| files: ^plugins/python/(src|tests)/.*\.py$ | ||
| # Run mypy against the whole plugin tree (not just staged files in | ||
| # isolation) so intra-package imports resolve. The files: pattern | ||
| # above triggers the hook; args: names the actual target. | ||
| pass_filenames: false | ||
| args: [--strict, --config-file=plugins/python/pyproject.toml, plugins/python] | ||
| additional_dependencies: | ||
| - pytest>=8.0 |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CI's
docstep runscargo docwithout denying warnings, but the PR description/test plan calls outcargo doc -D warnings.RUSTFLAGS=-D warningsdoes not apply to rustdoc lints; useRUSTDOCFLAGS=-D warnings(or equivalent) so doc warnings fail the build as intended.