Skip to content

S2 Rust port gap close: project.brief, place.metrics, parity + dump (WI-1067) - #1078

Merged
thedancingdeveloper merged 10 commits into
rust-corefrom
wi-1067-s2-gap-close
Oct 17, 2026
Merged

thedancingdeveloper merged 10 commits into
rust-corefrom
wi-1067-s2-gap-close

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Contributor

WI-1067 S2 gap close, rebased on rust-core cf2d3ca (head 30f38d6).

  • project.brief and place.metrics wired; bodies match the Python reference
  • project agent policy JSON and update summary match Python
  • parity steps for project.brief, place.metrics, deployed.versions; dump step mid-script for project/label tables
  • golden 21c95f6 re-recorded from Python on the rebased tree
  • domain-error CLI test points at an operation still unported

Reviewed at 30f38d6: cargo clippy -D warnings clean; cargo test -p vogt-core 865+4+3 pass; CI parity sequence (Python record/determinism, python cli/http, rust http, rust dump, actor, selftest, gen_registry --check, validator corpus --check) all pass against tests/parity/golden/21c95f6; rust cli 114 and mcp 113 steps agree. cargo fmt --check flags only openapi.rs, which this branch does not touch (pre-existing on rust-core).

Not covered: deployed topology (vogt-dev/prod); all checks are in-process/local.

🤖 Generated with Claude Code

sprooty and others added 10 commits October 17, 2026 08:13
Both services already existed (application/projects.rs brief_op and
application/place.rs place_metrics_op) but had no arm in the registry's
service table, so the operations answered not_ported. Add the two arms,
point the not-ported registry test at forge.link, which is still unported,
and assert the two arms stay wired.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…n (WI-1067)

project.brief took its open-work, bug, declared and observed counts and its
top backlog from a gather that was not ported, so it said not_collected for
all of them, and it echoed two request fields Python does not return. It now
runs the same backlog gather `backlog` ranks, takes the counts and the top
rows from it, and drops the two echoed fields.

place.metrics left the inbox and backlog badges null. The inbox badge is now
the active count and the count under the saved filter, read the way
inbox.list reads its entries; the backlog badge is the candidate total of
`backlog` with limit 1. The reads run in Python's order, so generated_at
matches the reference clock.

The CLI test that needed an unported operation now uses decision.list,
since place.metrics is ported.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…s (WI-1067)

Adds parity steps for the three read surfaces S2 left unchecked. project.brief
uses slug, the name the CLI takes. deployed.versions maps to the
deployed-versions command word. place.metrics takes no params.

The three list steps (workflow.list, label.list, project.list) already carry
an empty params object, so the MCP driver keeps them and records them.

The golden is recorded from the Python reference against the same main
(21c95f6) and named 21c95f6-s2, as the S9 steps were named 21c95f6-s9. Rust
agrees with it on cli, http and mcp.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…ary (WI-1067)

The stored agent_policy was written with sorted keys and spaced separators,
and AgentPolicy declared its fields alphabetically. Python stores
model_dump_json(): compact, in declaration order. Reorder the fields to
Python's declaration order and write the compact form.

project.updated's audit summary also left out agent_policy, which Python
records alongside slug, exclusions and repo_url.

Found by a parity dump after the project steps, which now compares these
tables.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
A step with "dump": true makes the CLI runner record the declared and
observed tables at that point, so a later step cannot hide a change to a
table an earlier one wrote. The audit payload digest of a project's row covers
its root path, which names the run's temporary root, so the dump blanks that
one digest; the rest of the row still compares verbatim.

`--only dump` now runs the whole script, because a dump only shows what the
steps before it wrote, and it compares only the dump records.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…bel dump (WI-1067)

The S2 read steps (project.brief, place.metrics, deployed.versions) and a dump
after the project and label steps are added to script.json. The golden is
re-recorded from the Python reference under its main sha, 21c95f6, and the
21c95f6-s2 sibling is removed, so CI's check against 21c95f6 covers the
whole script.

The re-recording also adds the S9 steps, which were already in script.json
but had not been recorded into 21c95f6. The 87 steps that were recorded
there are unchanged.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…(WI-1067)

decision.* is ported now (WI-1069), so `decision list` no longer hits the
not-ported handler this test relies on. engine.status is still unported and
takes no arguments.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…e (WI-1067)

Recorded from the Python reference at main 21c95f6, on top of origin/rust-core
cf2d3ca. It now includes the WI-1067 project, label, place and deployed steps
and the WI-1069 decision, preference and inbox steps.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…WI-1067)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
…rted on rust-core (WI-1067)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
@thedancingdeveloper
thedancingdeveloper merged commit e5a3e9a into rust-core Oct 17, 2026
4 of 7 checks passed
@thedancingdeveloper
thedancingdeveloper deleted the wi-1067-s2-gap-close branch October 17, 2026 08:32
thedancingdeveloper pushed a commit that referenced this pull request Oct 17, 2026
…WI-1751)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
thedancingdeveloper pushed a commit that referenced this pull request Oct 17, 2026
…WI-1751)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: sprooty <sprooty@sprooty.com>
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.

1 participant