Repository navigation
fix(cli): keep reason's summary off stdout when writing the closure - #6641
Conversation
…6466) With an output path the closure is the data product and may itself be stdout (/dev/stdout), so the '<n> triples after <profile> reasoning' summary now goes to stderr. Without an output path the count is the only result and stays on stdout. Fixes #6466 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C1gMf8RJim1LzuKapZNpZR
|
The Generated by Claude Code |
There was a problem hiding this comment.
sparq engine
Details
| Benchmark suite | Current: b093d3f | Previous: 674f50b | Ratio |
|---|---|---|---|
store_bytes_per_triple |
88 bytes |
88 bytes |
1 |
dict_bytes_per_term |
53 bytes |
53 bytes |
1 |
comp_store_bytes_per_triple |
44 bytes |
44 bytes |
1 |
store_bytes_per_triple_small |
88 bytes |
88 bytes |
1 |
wasm_bundle_bytes |
1562916 bytes |
1562916 bytes |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
🔎 Codex reviewer —
|
🔎 Codex reviewer —
|
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C1gMf8RJim1LzuKapZNpZR
|
Fixed in 34a4772. Generated by Claude Code |
🔎 Codex reviewer —
|
|
Local ci-fast gate (GitHub Actions incident; Jesse approved local-gate merges at 20:19Z). Tested PR head Main was re-checked immediately before merging. Generated by Claude Code |
* docs: bring skills and crate READMEs back in line with main Audit every skills/*/SKILL.md and crates/*/README.md against the public API on main after this week's merges, and fix the drift: - publish status: the 12-crate crates.io set (#6663/#6646) — jsonld, engine-serialize and engine-service are now published; unpublished crates lose crates.io/docs.rs badges and `"0.1"` install snippets - default-members (#6649): introspect, canon, substrate claims - zk-query-proofs / mpc / usage-control-policy recipes now compile against current signatures (prover_toml_for, verify_manifest, revoke_prover_toml, AttestedStatusRef::clear, Session fields) - cli: reason summary to stderr (#6641), dump streaming (#4313), jsonld-compact, bench --json, flag list - substrate: #3825 float comparison boundary fixed by #6671 - vc: proof-option validation (#6589) and EdDSA config change (#6585) - lws: per-resource WAC on notifications (#6388), reclaim race (#6675) - stale API names, test paths, floors, see-also links; router lists trust-graph - trust-expression spec: last github.com/jeswr/sparq link Closes #6327 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * ci(notation3tests): save rust-cache only on main docs-quality quick-gates' cache-posture test fails on every PR (main too) because this step had no save-if. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: one git source for collaborating crates in EL/QL and Arrow recipes Mixing a crates.io sparq-core/engine with a git or path sparq-reason-el, sparq-reason-ql or sparq-arrow yields distinct Dict/Query/QueryResult types, so the recipes now take every collaborating crate from git. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: strict SERVICE egress in the quickstart; strip model tags - sparq-engine-service quickstart used with_service_egress_allow, which only blocks private addresses; it now uses with_service_egress_policy(true, ..) so only the listed host is dialled, as the comment says. - Remove leftover model tags and "Model:" notes from skills/ and crate READMEs (#6673 removed the convention). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: redo the model-tag strip without touching code syntax The previous strip also deleted every `()` on lines carrying a tag and every " ()" across the touched files, breaking examples such as `.text()`, `.arrayBuffer()` and `Result<(), String>`. Revert it and strip only the tags themselves (plus "Model:" notes); `()` counts and spacing punctuation are now identical to before the strip in every touched file. Keeps the strict SERVICE egress quickstart. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: restore academic-paper fence; vendored spargebra in the PROV recipe Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: fix markdownlint hits left by the model-tag strip Spaces inside bold markers in skills/mpc, a doubled blank line in two READMEs, and an orphaned provenance comment in sparq-trust. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs: PROV recipes declare sparq-core/oxrdf; router CLI and JSON-LD status match main Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs(zk): verify_manifest API line lists all ten parameters Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs(skills): router entries are each skill's own frontmatter description The router carried frozen copies of old per-skill descriptions and status notes that had drifted from the skills (a JS import subpath the package no longer exports, SHACL strict validation and features reported as missing, stale CLI/JSON-LD notes). Each entry now reproduces the skill's current frontmatter description verbatim. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud * docs(jsonld): CLI dump has --context only; framing is planned Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUY53os6oSKvmT9gCqdzud --------- Co-authored-by: Claude <noreply@anthropic.com>
Requested by Jesse · project thread
Summary
Before:
sparq-cli reason data.n3 turtle n3 /dev/stdoutprinted3 triples after n3 reasoningon stdout ahead of the closure, so the output was not valid N-Triples.After: when an output path is given, the summary goes to stderr and stdout carries only the closure. Without an output path, the count is the command's only result and stays on stdout, so
reason <file> <fmt> rdfsbehaves as before.How: one branch in
cmd_reason; the datalog and EL CLI tests andbench/deep-taxonomy/run.shnow read the summary from stderr. Newreason_to_dev_stdout_writes_only_the_closure_to_stdoutcontract test.Fixes #6466
Base gate (always required)
cargo clippy -p sparq-cli --all-targets --features el,datalog -- -D warningscleancli_contract,el_cli,datalog_clitests passRatchets and conventions
Benchmark
No hot path changes. The diff only moves
sparq reason's summary line from stdout to stderr and updates the two bench scripts to read it from there, so no before/after run was needed.🤖 Generated with Claude Code
https://claude.ai/code/session_01C1gMf8RJim1LzuKapZNpZR
Generated by Claude Code
Generated by Claude Code