Repository navigation
fix(web): document JSONPath subset - #117
Conversation
JensenChen28
left a comment
There was a problem hiding this comment.
Standards
No required findings. The change stays in the stable, model-visible Web schema and introduces no parser, network-policy, or runtime-state change.
Spec
No required findings. The advertised $, .field, [index], [*], quoted-field selectors and example agree with the existing projection parser; unsupported recursive descent and filters are explicitly excluded.
Reviewed head 187d94c62e6a04b3cf41c966a9e741eeca0e41fa against maintenance 083cebfd9. Required CI shown for this head is green. The isolated native parser/schema checks remain author evidence; no local Cargo run is claimed. No merge action is included.
Findings: Standards 0; Spec 0.
JensenChen28
left a comment
There was a problem hiding this comment.
审核当前187d94c6相对base083cebfd:Standards 0新增、Spec 0新增,批准。
完整1路径schema说明:已逐分支对照真实query_jsonpath/apply_bracket_token及Web返回链,$、点字段、索引、通配和引号key示例与实现一致;递归/filters明确不支持。没有parser或网络策略修改;新激活catalog冻结prefix变化已披露。
实际本轮为完整固定diff、规范/需求/异常与兼容边界审查及diff --check通过。本机无Cargo/Rust工具链,未运行新增Rust回归、完整workspace、真实provider/网络或多平台应用;作者的原生测试数字没有借作本轮执行。已读当前讨论并在发送前核对远程head/base。代码批准不代表CI或交付已通过;不因等待CI只留COMMENT。仅审核,不合并、入队或开启auto-merge。
|
Review follow-up pushed: parent B3 now has B4 source/provenance and docs/counter requests are addressed in the prepared candidate and synchronized register. B1/B2 remain blocked until actual protected maintenance integration; public verification still exits 1. Repository fork-policy section 6 requires explicit authorization to update protected maintenance, so this task has not interpreted reviewer text as that authorization. The candidate is concrete for that decision; codewhale-hq#756 remains draft. No gate bypass, force-push, tag or release. @asto18089 @JensenChen28 please re-review the exact source/provenance/test changes. Formal requests submitted; source review, CI, final integrated-tree qualification and release remain separate. |
JensenChen28
left a comment
There was a problem hiding this comment.
审核当前 head 744d9b80c4da4a66ef1316602898b7edc40938c7 相对维护基线 083cebfd9:Standards 0 新增,Spec 0 新增,批准。
已完整复核累计 schema 差异与本次新增 37 行回归测试,逐项对照实际 Web schema、query_jsonpath 和拒绝分支;五类选择器的结果及不支持语法的错误断言一致。独立核对 upstream-carry 候选与本 PR 的完整 tree 相同。生产 parser、工具及网络策略未改变。
本轮实际执行固定 diff 审查、git diff --check;本机没有 Cargo/rustc,未执行 Rust 回归或完整 workspace,作者的原生 probe 数字不作为本轮执行结果。当前 head CI 仍单独跟进,等待 CI 本身不阻止源码批准。维护分支整合、父仓公共 head 门禁及最终集成资格仍需各自证据。仅提交审核,不合并、入队或开启 auto-merge。
|
Current source CI completed: actual check for Protected maintenance remains Author decision for this task: retain the published review candidates only; do not advance protected pinvou3-clean. Public-head integration blockers remain deferred, and codewhale-hq#756 stays draft. No maintenance-branch, tag, merge or release action is authorized by this follow-up. |
asto18089
left a comment
There was a problem hiding this comment.
Fresh multi-lane re-review of current head 744d9b80c (base pinvou3-clean @ 083cebfd9, which has not advanced — no rebase needed). Independent of the prior approvals; all checks below were re-executed from scratch.
Verified
- Description truth. Every claim in the new
fields.descriptionsentence was checked against the actual parser (query_jsonpath/apply_bracket_token/quoted_field, handle.rs:735-823) and the Web tool path:$,.field,[index],[*](arrays and objects),['field'](incl. dotted keys), the$.items[*].nameexample, and hard rejection of both..and filters. No false advertising;(action=fetch)and "returns matches underfields" are accurate (only the fetch action consumesfields;FetchResponse.fieldsserializes as the top-level key). - Test strength. Baseline run of
forkguard_web_fields_description_matches_parserpasses offline against the realWebTool::input_schema()and realquery_jsonpath(no mocks, no cfg(test) swaps). Six mutation probes, all caught with messages pointing at the mutated behavior: reverting the description, dropping the rejection clause, dropping the example, making..behave like., breaking[index]selection, and deleting thedescriptionproperty. - Provenance. Upstream codewhale-hq#7046 merged as
b9619942with the sentence byte-identical to this PR's line;4164aa6fdis a genuinecherry-pick -xof it with author, author date, sign-off, and-xtrailer retained; candidate branchintegration/jsonpath-upstream-7046@3799761652has tree29f9332b3, equal to this head's tree; parent pinvou-agent#756 references the exact candidate. Selective upstream carry matches this branch's established convention. - CI/scope. Run 39774689790 ran on exactly
744d9b80c(no old-head substitution); the job log containsPASS codewhale-tui tools::web::contract::tests::forkguard_web_fields_description_matches_parserinside the 14847/14847 summary; all check runs on the head are green; diff is exactly two files, +38/−1, both commits DCO-signed and convention-compliant; merge state live-CLEAN. - Runtime neutrality. The tool-catalog prefix digest and the per-request wire-schema SHA are content-derived, so the longer sentence just shifts the digest for new activations — no persisted fingerprint, version string, golden schema pin, or size gate needs a bump.
Non-blocking observations
- MINOR: the sibling surface
fetch_url.rs:127documents the same subset but without the recursive-descent/filter rejection sentence and example, and with no binding contract test. Its wording makes no false claim, so this is a follow-up symmetry opportunity, not a defect here. - MINOR: the new test does not pin the "returns matches under fields" envelope (the top-level
fieldsresponse key); a rename of that field would silently invalidate that prose clause. A sibling assertion would close it. - NITs: double-quoted
["key"]also works but is undocumented; bare.fieldis[A-Za-z0-9_]+-only (bracket form is the escape hatch); missing backticks aroundfieldsvs. the fetch_url wording; thecontains("$")assertion is weak (harmless — the paired parser assertions carry the contract). - Process reminder for the parent side: once the gitlink advances, the parent fork-guard expected head/count and the fork-modifications register row need the routine update (as codewhale-hq#756 already plans).
Approving: the PR does exactly what it claims, at the root (model-facing schema text), bound to parser behavior by a test that demonstrably catches regressions on both sides, with clean scope and verified provenance.
744d9b8 to
8b98660
Compare
Signed-off-by: zhuowp <9426526+zhuowp@users.noreply.github.com>
Signed-off-by: zhuowp <9426526+zhuowp@users.noreply.github.com>
8b98660 to
3bc4771
Compare
JensenChen28
left a comment
There was a problem hiding this comment.
复审最新提交 3bc47717c4,目标基线 e9a7f48da1。规范与需求两轴核对完整实际差异及已有讨论,未发现新增实质问题。
本轮两次整合分别吸收已合并 #115、#116;当前 PR 自身仍只有 Web schema 说明与 parser 合同测试两个文件(38增/1删)。Web schema、合同测试和真实 handle parser 的完整 blob 与此前已审提交逐字一致;新增继承文件与目标基线一致。独立合并树核对无额外冲突解决差异,git diff --check 通过。
验证边界:最新 head 的 check/CodeQL Rust 仍在运行,暂不声称完成;被替换的8b98660a检查成功仅属历史(其原始日志下载两次TLS失败,未核对测试数量)。本机未运行Cargo、rustc、native、live provider或发布验收。先前列出的非阻断后续建议与父仓集成边界继续保留。
Current maintenance follow-up (2026-10-23)
Current source:
3bc47717c416e9c9f15ace808a413a968945da67; public maintenance:e9a7f48da169bf89399a11592e4d22a7b721cb39(#115/#116 landed remotely). The remote rebase is retained. Upstream-carry candidate4bf5e08940fec17b6e86fd0c0fc741580fca3283merges the new base without rewriting its provenance; complete tree033a04bed866f6ff00b0cd02951eda9a12bb7f7eequals current source. New check 120201604349 succeeded: 14849 passed/15 skipped (1 slow, 2 leaky), with explicit schema/parser contract PASS.Public maintenance has 78 commits/76 DCO-signed; #116 squash e9a7f48 lacks a sign-off alongside the previously registered #107 exception. No protected maintenance update or history rewrite was performed here. Parent codewhale-hq#756 follows the refreshed candidate but remains draft until actual public integration and final verification. The user retains the decision not to advance protected maintenance.
All head/base/current-CI statements below are historical receipts from before this follow-up, not validation of the new combined tree. Functional scope, nonblocking boundaries and prior mutation evidence remain useful within those original commit boundaries.
Original source narrative and historical evidence
No-Issue: clarify an existing model-visible schema and add its parser contract regression; no separate issue exists.
Web callers were told to use JSONPath without the existing parser's subset, inviting recursive descent/filter argument failures. This Web schema sentence is now merged upstream in #7046 as
b9619942905ac4b62752a579ca8937467d0486fc; it is no longer merely a separately tracked submission.Review follow-up
Current PR source:
744d9b80c4da4a66ef1316602898b7edc40938c7, above the original reviewed187d94c62. Append a 37-line result test without rewriting published history. The upstream sentence, parser and tool behavior are unchanged in this follow-up.For the requested upstream-carry integration path, a clean integration candidate is published at
3799761652ba6d201d1f25edac1d6f98b9c4444f: upstreamgit cherry-pick -x(4164aa6fd) plus the result test. Original upstream patch/message/author/sign-off are retained. Its full tree29f9332b3df40c72755fbbbec17a47fddc3ece9aequals this PR's current tree. Parent codewhale-hq#756 pins this actual upstream-carried candidate, not the old equivalent one-line commit. No force-push or duplicate fork theme was introduced.Validation
The new result-style
forkguard_web_fields_description_matches_parserexecutes the real Web schema andquery_jsonpath: root, dot fields, array index, wildcard, quoted key, example output and recursive-descent/filter rejection. A regression to the old schema, corrupted match results, or wrong unsupported-syntax acceptance independently fails the actual new test in the isolated native probe. Current probe: 1 passed / 0 failed; three controls: 0 passed / 1 failed each. It compiles unmodified production functions and the actual test but uses minimal trait/type shells and cached serde_json 1.0.151, so it is not the full locked TUI. The full local locked test could not fetch uncached adler2 2.0.1 offline. Rust formatting and whitespace passed; current source full CI completed successfully; the execution receipt below applies to its actual checkout tree. Old-head green CI is not substituted.Independent source review and integration boundary
Reviewed every changed line, actual schema/parser call chain, selector outputs and rejection behavior, test discoverability, upstream provenance and tree equality. No remaining required source/test defect found in this follow-up. No parser or network-policy change; the upstream schema sentence stays byte-identical. It changes the frozen catalog prefix for new activations without volatile runtime facts. Fuller JSONPath wording and the existing quoted-key-with-] scan limitation remain nonblocking follow-ups. No live-provider, full local workspace, packaged-host or release pass is claimed.
The protected maintenance branch is still
083cebfd9aac5f6b9993ed610383fe2b38c6785f. Parent review B1/B2 are not claimed resolved: candidate/source approval cannot satisfy the public-head gate. Parent fork-policy section 6 requires explicit user authorization before advancing protectedpinvou3-clean; no maintenance push, merge/queue, tag or release has occurred. The prepared candidate makes that later action concrete and reviewable. After authorized integration, verify the actual public SHA/count/register and the unchanged public gate/final integrated tree.Current-source CI receipt
Current source CI completed: actual check for
744d9b80c4da4a66ef1316602898b7edc40938c7: Summary [ 590.503s] 14847 tests run: 14847 passed (1 slow, 2 leaky), 15 skipped. Raw log confirms PASS forforkguard_web_fields_description_matches_parser. Formatting, workspace lint, doc tests and lockfile drift passed. Actual PR-merge checkout5846e69c2e4115031ca0bd8b10d181ef6ecd58bbhas tree29f9332b3df40c72755fbbbec17a47fddc3ece9a, identical to both current #117 source and the upstream-carry integration candidate3799761652ba6d201d1f25edac1d6f98b9c4444f. This is real remote Linux execution, distinct from the local extracted-function probe.Protected maintenance remains
083cebfd9aac5f6b9993ed610383fe2b38c6785f; parent public-head gate B1/B2 and final integration authorization are not waived. No maintenance push, merge, tag or release action.Author integration decision
Author decision for this task: retain the published review candidates only; do not advance protected pinvou3-clean. Public-head integration blockers remain deferred, and codewhale-hq#756 stays draft. No maintenance-branch, tag, merge or release action is authorized by this follow-up.