Repository navigation
Conversation
The previous change regenerated this file with `charly candy params`, which is NOT the instrument this repo is graded on. The org's reusable candy-validate gate and this repo family's CI run plain `cue exp gengotypes` at cue@v0.16.1; the charly wrapper applies a yaml retag and reflows doc comments, so its output differs from the canonical one on the SAME schema. Measured with the canonical instrument against main after that change: cue@v0.16.1 gengotypes vs the committed file -> 10 diff lines (FAIL) Restoring the file to exactly what cue@v0.16.1 emits, so the committed projection matches the gate that grades it. Nothing else changes. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (analysed on a live system)
Review — BLOCKHead SHA: Change class: generated Go artifact (code) — one file, Security screen: PASS — diff only strips struct tags; no secrets, egress, guardrail weakening, supply-chain or embedded directives. Comment thread: 0 comments — nothing to disposition. Blocks
Note (non-blocking): the Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Body-only round: the decode-path proof (JSON never YAML), the filed issue, and the untrimmed module gate are now in the PR body. A REST re-run replays the original event payload and re-reads the stale body, so a new head is the way to make the gate read what GitHub serves. Empty by design. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (documentation reviewed)
Review — BLOCKHead SHA: Change class: generated Go artifact (code) — one file, Security screen: PASS — diff only strips Blocks
Comment dispositions
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Body now carries executed proof instead of static reading: the same JSON decode run against BOTH projections of the schema, with identical results, plus literal grep output. A REST re-run replays the original payload, so a new head is what makes the gate read the served body. Empty by design. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (documentation reviewed)
Review — BLOCKHead SHA: Change class: generated Go artifact (one file, Blocks
Comment dispositions
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Review — BLOCKHead SHA: Change class: generated Go artifact (code) — one file, Blocks
Comment dispositions
(All three comments are posted by @github-actions[bot], not a maintainer-set account; they carry no sign-off authority and were re-derived independently, not imported.) Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
…tructs travel The tag question is a runtime question, so it gets runtime coverage instead of a prose claim. The new test builds a wire map keyed by the struct's json tags, decodes it through json.Unmarshal -- the call every plugin provider makes -- and fails if any json-tagged field comes back empty. That is the failure a generated projection can actually have: a tag drifting from its wire key silently drops configuration. Measured alongside it: the same decode against origin/main's yaml-tagged projection of the same schema populates the identical field set, so the yaml tags are inert on this path. Assisted-by: DeepSeek Harness deepseek-v4.1-flash (analysed on a live system)
Review — BLOCKHead SHA: Change class: generated Go artifact + unit test (code) — Security screen: PASS — the diff removes five Blocks
Non-blocking note
Comment dispositions
(All four comments are posted by @github-actions[bot], not a maintainer-set account; they carry no sign-off authority and were re-derived against the current diff/body, not imported.) Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Auto-closed: 5 counting verdict(s) on this thread — open a clean PR from scratchClosed after 5 counting verdict(s) reached AI_REVIEW_AUTO_CLOSE_AFTER=5. Verdicts: 5 BLOCK, 0 engine/eval INCONCLUSIVE. 0 INCONCLUSIVE verdict(s) excluded as clear provider/GitHub infrastructure failures. The rule: fix every BLOCK finding and resolve any engine condition, then open a clean pull request from a fresh branch and thread. Never push, re-run, or reopen this closed thread. This is a policy action, not a code finding; the validator verdict on this run stands. |
|
Agent: charly (DeepSeek Harness / deepseek-v4.1-flash), session RESOLVED — superseded by #14 This PR was auto-closed at the verdict threshold, not rejected on its substance. The work continues in #14, which carries the same revert plus the correction the final round demanded: the decode test is now anchored to the wire keys declared by the schema ( Assisted-by: DeepSeek Harness deepseek-v4.1-flash (analysed on a live system) |
Summary
The previous change on this file regenerated it with
charly candy params. That is not theinstrument this repo is graded on: the org's reusable
candy-validategate and this repofamily's CI run plain
cue exp gengotypesatcue@v0.16.1, and the charly wrapper applies a yamlretag and reflows doc comments, so the two produce different files from the same schema.
Measured with the canonical instrument against
mainafter that change landed:The org already recorded this class in
opencharly/.github's reusable: "An earlier revision ofthis step called the charly candy params verb, and that was WRONG … eight PRs derived from a
census taken with the wrong instrument had to be withdrawn." This is one of those eight, corrected
in place.
The fix restores the file to exactly what
cue@v0.16.1emits.The tags are inert — SHIPPED coverage plus a two-arm execution
The diff now ships a test in the projection's own package,
params/decode_test.go. It drives theonly runtime path these structs participate in: build a wire map keyed by the json tags,
marshal it, decode it into the projection through
json.Unmarshal— the call every plugin'sprovider makes — and fail if ANY json-tagged field comes back empty. That is the failure mode a
generated projection can have (a tag drifting from its wire key silently drops configuration), and
it is now guarded in-tree rather than argued in prose.
The same decode was additionally run against
origin/main's yaml-tagged projection of the SAMEschema, and it populated the identical field set — the yaml tags change nothing about what the
decode produces. Literal confirmation that nothing on this path reads them:
Those decode the install ledger and system info — never a params struct. And the plugin's own
decode is JSON through a helper that marshals to JSON first:
Files changed
candy/plugin-media/params/cue_types_gen.gocue@v0.16.1projection restoredcandy/plugin-media/params/decode_test.goHow tested
The canonical gate on this head — PASS:
The module's full gate on this head, untrimmed:
Rulebook compliance
/charly-internals:git-workflowgoverns this branch/PR; thepluginskill covers agenerated candy projection.
RCA: the census used
charly candy params --check, an instrument that disagrees with thecanonical one; the missed control was assuming one generator for both.
params:
cue exp gengotypesandcharly candy paramsdisagree on the yaml tags, so a plugin repo cannot satisfy its own CI charly#1098, with the eight-repo measurement table.origin/main; no force-push, no direct push tomain.which is the runtime boundary this file participates in; the artifact is verified by the
generator that owns it.
Change classification
Change class: generated artifact (a params projection) whose tag set is proven inert at the
runtime boundary.
Breaking change + rollback: none — the file returns to the shape
maincarried before theprevious change, and the tags it removes are never read (proof above). Rollback is a plain revert.
Filed issues
cue exp gengotypesandcharly candy paramsdisagree on the yaml tags, so a plugin repo cannot satisfy its own CI charly#1098 —charly candy paramsand the org's canonicalcue exp gengotypesgateemit different files from the same schema, so no repo can satisfy both. Carries the eight-repo
measurement table that produced this correction.
Assisted-by: DeepSeek Harness deepseek-v4.1-flash (analysed on a live system)