Skip to content

fix(web): document JSONPath subset - #117

Merged
asto18089 merged 2 commits into
pinvou3-cleanfrom
fix/document-jsonpath-subset
Oct 23, 2026
Merged

asto18089 merged 2 commits into
pinvou3-cleanfrom
fix/document-jsonpath-subset

Conversation

@zhuowp

@zhuowp zhuowp commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Current maintenance follow-up (2026-10-23)

Current source: 3bc47717c416e9c9f15ace808a413a968945da67; public maintenance: e9a7f48da169bf89399a11592e4d22a7b721cb39 (#115/#116 landed remotely). The remote rebase is retained. Upstream-carry candidate 4bf5e08940fec17b6e86fd0c0fc741580fca3283 merges the new base without rewriting its provenance; complete tree 033a04bed866f6ff00b0cd02951eda9a12bb7f7e equals 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 reviewed 187d94c62. 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: upstream git cherry-pick -x (4164aa6fd) plus the result test. Original upstream patch/message/author/sign-off are retained. Its full tree 29f9332b3df40c72755fbbbec17a47fddc3ece9a equals 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_parser executes the real Web schema and query_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 protected pinvou3-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 for forkguard_web_fields_description_matches_parser. Formatting, workspace lint, doc tests and lockfile drift passed. Actual PR-merge checkout 5846e69c2e4115031ca0bd8b10d181ef6ecd58bb has tree 29f9332b3df40c72755fbbbec17a47fddc3ece9a, identical to both current #117 source and the upstream-carry integration candidate 3799761652ba6d201d1f25edac1d6f98b9c4444f. 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.

@JensenChen28 JensenChen28 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 JensenChen28 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审核当前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。

@zhuowp
zhuowp requested a review from JensenChen28 October 22, 2026 12:07
@zhuowp

zhuowp commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

Review follow-up pushed: parent 0173f746a47398d4dc083aef938dd1e16d67c43c, #117 source 744d9b80c4da4a66ef1316602898b7edc40938c7, clean upstream-carry integration candidate 3799761652ba6d201d1f25edac1d6f98b9c4444f. The candidate actually cherry-picks upstream b9619942905ac4b62752a579ca8937467d0486fc with -x, then adds the result test; its complete tree equals #117's latest source. Published histories and upstream credit are retained.

B3 now has forkguard_web_fields_description_matches_parser, binding actual schema claims to concrete parser results and rejection. The native function probe passes; old-schema, corrupted-result and unsupported-acceptance controls each fail. Full local locked TUI could not run because adler2 is uncached; current source CI is running and not claimed passed. Parent architecture/227 behavior names/60 policy + 1 floor/8 routing/syntax/linkage pass, with wrong-head/count/ancestor controls failing closed.

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 JensenChen28 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审核当前 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。

@zhuowp

zhuowp commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator Author

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 for forkguard_web_fields_description_matches_parser. Formatting, workspace lint, doc tests and lockfile drift passed. Actual PR-merge checkout 5846e69c2e4115031ca0bd8b10d181ef6ecd58bb has tree 29f9332b3df40c72755fbbbec17a47fddc3ece9a, identical to both current #117 source and the upstream-carry integration candidate 3799761652ba6d201d1f25edac1d6f98b9c4444f. 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 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 asto18089 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

  1. Description truth. Every claim in the new fields.description sentence 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[*].name example, and hard rejection of both .. and filters. No false advertising; (action=fetch) and "returns matches under fields" are accurate (only the fetch action consumes fields; FetchResponse.fields serializes as the top-level key).
  2. Test strength. Baseline run of forkguard_web_fields_description_matches_parser passes offline against the real WebTool::input_schema() and real query_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 the description property.
  3. Provenance. Upstream codewhale-hq#7046 merged as b9619942 with the sentence byte-identical to this PR's line; 4164aa6fd is a genuine cherry-pick -x of it with author, author date, sign-off, and -x trailer retained; candidate branch integration/jsonpath-upstream-7046 @ 3799761652 has tree 29f9332b3, equal to this head's tree; parent pinvou-agent#756 references the exact candidate. Selective upstream carry matches this branch's established convention.
  4. CI/scope. Run 39774689790 ran on exactly 744d9b80c (no old-head substitution); the job log contains PASS codewhale-tui tools::web::contract::tests::forkguard_web_fields_description_matches_parser inside 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.
  5. 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:127 documents 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 fields response 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 .field is [A-Za-z0-9_]+-only (bracket form is the escape hatch); missing backticks around fields vs. the fetch_url wording; the contains("$") 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.

@asto18089
asto18089 force-pushed the fix/document-jsonpath-subset branch from 744d9b8 to 8b98660 Compare October 23, 2026 01:41
Signed-off-by: zhuowp <9426526+zhuowp@users.noreply.github.com>
Signed-off-by: zhuowp <9426526+zhuowp@users.noreply.github.com>
@asto18089
asto18089 force-pushed the fix/document-jsonpath-subset branch from 8b98660 to 3bc4771 Compare October 23, 2026 02:12

@JensenChen28 JensenChen28 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

复审最新提交 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或发布验收。先前列出的非阻断后续建议与父仓集成边界继续保留。

@asto18089
asto18089 merged commit ea9fdc9 into pinvou3-clean Oct 23, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants