Skip to content

Read gate settings from the pinned base in Go #980

Description

@tbhb-agent
No description provided.

Activity

  1. tbhb-dev-reviews commented on Oct 31, 2026

    @tbhb-dev-reviews

    Refinement: NOT READY — the split leaves gate configuration unwired and overlaps existing merge work

    Checked

    Reviewed #980, parent #324, the #588 shell freeze, #981, #982, #859, and the scopes/dependencies of the other native children of #324, including #864, #865, #874, #875 and #876. Read related PRs #600, #704 and #942 and the original #499 contract. Inspected origin/main at 591fd70, matching the live main ref. Accepted the supplied mechanical-gate PASS without rerunning it. No tests were run.

    AC1–AC8 all appear in the Verify plan. The additive reader/CLI looks plausibly S-sized. AC7 addresses execution safety and platforms; Risks includes a revert. Machine authority was delivered by merged #942; the remaining base-settings reader is absent from main.

    Gaps

    1. No merge consumer uses the new reader. AC1–AC5 provide an optional API/flag, but no AC makes actual gates use it. Checkout readers remain at packages/agents/source/lib/agent.sh:7 and packages/agents/source/skills/merge-pr/shared/scripts/merge-agent.sh:55, packages/agents/source/skills/merge-pr/shared/scripts/merge-agent.sh:132, packages/agents/source/skills/merge-pr/shared/scripts/merge-agent.sh:149 and packages/agents/source/skills/merge-pr/shared/scripts/merge-agent.sh:166. Run the skill-directory integrity gate in the merge entry points #982 explicitly excludes pinned configuration. Assign integration to a named child with native dependencies and tests proving a clean divergent checkout cannot replace base patterns or suppress squash lint. Include current enforcement settings such as constitutional_paths. If Read gate settings from the pinned base in Go #980 is only the library, say so and remove the claim that it completes the remaining gate-settings fix.

    2. Correct the binary-resolution baseline and contract. Merged fix(agents): honor the pinned agentrepo version #704 already prefers the repository pin via mise, then falls back to PATH (packages/agents/source/lib/lib.sh:139). The remaining change is refusing that fallback for merge. Define the authoritative pin source, affected entry paths, refusal status/message, and unavailable/unsupported-binary behavior. Put resolution/refusal behavior in tested Go with thin forwarding shims: AC8 currently permits new shell guard logic despite Replace complex shell with tested Go, starting with gates and merging #588. Document the consumer transition and compatibility treatment for removing fallback (docs/compatibility.md:3).

    3. Settle failure and drift semantics. Specify observable failure, rather than a silent default, for an invalid/unavailable base object or invalid base configuration, with status/stdout/stderr tests. Define drift behavior for an unreadable or non-regular checkout copy, and whether AC5's no-diagnostic rule wins when the base lacks the file but the checkout contains one. Move the Go method signature/result structure to Approach; ACs should describe settings, diagnostics and failures.

    4. Name cutover prerequisites and authority. Read gate settings from the pinned base in Go #980 has no native blockers. Main's merge command exposes only approval evaluation (internal/agentrepo/merge_approval.go:16); a workflow executable behind new shims cannot be assumed available. Separate the additive reader from caller rollout and link required command/distribution/protection work. Name canonical source paths. If resolution changes the shared loader, that source is owner-protected (.agents/agent-skills.conf:4, .agents/agent-skills.conf:9), so Operator authority cannot remain unconditionally None. State the applicable owner review and build(agents): protect replacement Go enforcement paths #753 prerequisite before rollout. Include generation, token/deployment updates and verification for skill-source edits.

    Split

    Definition of done

    Ticks mean the ACs and Verify plan cover the requirement in planning, not that implementation has passed it.

    • D1 The author verified each AC on the merged head, and the Verification section of the pull request cites each AC ID with its evidence: the command and its result, or a link. AC1–AC8 have planned checks; retain the mapping and record merged-head evidence in the PR.
    • D2 An independent reviewer approved the exact merged head, and the author resolved each finding or filed it as a follow-up.
    • D3 The required checks pass on that head, and any loosened gate has the owner's approval of that exact head.
    • D4 The leak scans come back clean: gitleaks, devtools' check-leaks.sh with the repository's private-strings list, and the leak review of each post.
    • D5 The author signed each commit, the squash included.
    • D6 The docs match the change (README, docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.
    • D7 The commits and the squash have Assisted-by trailers, and the pull request has the provenance:agent-assisted label.
    • D8 The pull request stays within the size limits, or the owner approved its exact head over the hard limit. Add the bounded estimate and size check; this refinement requires a PR below 800 code lines.
    • D9 The author files follow-ups and deferred findings as issues with at least a Problem and numbered AC and lists them under the Related section of the pull request. Any work left in the code links its issue.
    • D10 The merge closes the issue through a closing reference and the board shows Done. The final Status: comment names the merge commit.
    • devtools-1 mise run check is green, and so are the coverage floors mise run cover-go-check and mise run cover-py-check, which check doesn't run.
    • devtools-2 A change to skill sources under packages/agents/source/ commits what mise run generate-skills, then mise run skill-tokens, then apm install rewrite, in that order, and check-generated-skills (part of lint) passes.
    • devtools-3 A consumer-visible change has its consumer steps in docs/agent-skills-migration.md or the adoption docs, or the PR's Verification says "No consumer impact" and why.

    Round: 1 of 3

  2. tbhb-dev-reviews commented on Oct 31, 2026

    @tbhb-dev-reviews

    Refinement: NOT READY — reader scope is bounded, but handoffs and CLI verification remain incomplete

    Checked

    Accepted the supplied mechanical-gate PASS without rerunning it. Read #980 and its previous refinement, native parent #324, the #588 shell freeze, siblings #981/#982 and relevant #859/#862/#864/#865/#874/#875/#876/#753 contracts. Read #499 and related PRs #600, #704 and #942; searched open and related merged work. Inspected origin/main at 591fd70 and confirmed it matches live main. No tests or suites were run.

    The revision resolves substantial round-1 concerns: this is explicitly an unused reader/CLI, failure and drift outcomes are specified, the method signature moved to Approach, and AC10 prohibits shell/Python/skill-source edits. All AC1–AC10 IDs occur in Verify plan. About 350 code lines fits one S-sized PR. Risks includes revert. Operator authority: None fits the named Go-only paths under the current patterns (.agents/agent-skills.conf:4, .agents/agent-skills.conf:5, .agents/agent-skills.conf:9).

    Main still reads checkout configuration (internal/config/config.go:61), and the CLI has no base option (internal/agentrepo/config.go:19). Merged #942 supplies the separate machine reader; merged #704 already prefers the mise pin and then allows PATH (packages/agents/source/lib/lib.sh:141). Neither delivers this reader. Open #600 overlaps it; it is not merged delivery. constitutional_paths already reads the pinned base (packages/agents/source/skills/merge-pr/shared/scripts/merge-policy.py:418).

    Gaps

    1. The integration handoff is still proposed. Read gate settings from the pinned base in Go #980 says The unattended merge gates run in Go #864/The squash message lint runs from agentrepo merge #865 are to gain native blockers and divergent-checkout ACs, but their live bodies lack those ACs and their native blocked-by lists omit Read gate settings from the pinned base in Go #980. The unattended merge gates run in Go #864 currently has 860, 861, 862, 863, 333 and 761; The squash message lint runs from agentrepo merge #865 has 862 and 333. Update both bodies and native links, including tests that a clean divergent checkout cannot substitute policy or suppress squash lint. Keep Read gate settings from the pinned base in Go #980's own prerequisite list empty: the additive reader can land first. Explicitly assign the separate cleanup read of disposable_ignored too (packages/agents/source/skills/merge-pr/shared/scripts/squash-merge.sh:372). The unattended merge gates run in Go #864 owns gates, so assigning that setting only “through the gates” leaves its post-merge consumer unassigned.

    2. Finish recording the split and retirement. The binary-refusal issue is only proposed, Read gate settings from the pinned base in Go #980's title still claims binary selection, and Run the skill-directory integrity gate in the merge entry points #982 still assigns binary selection to Read gate settings from the pinned base in Go #980. File and link the separate issue, retitle this reader-only issue, and correct the sibling reference. New binary resolution/refusal behavior must live in tested Go with thin forwarding shims; “Resolution stays in ... lib.sh” must not authorize new shell logic in the existing resolver (packages/agents/source/lib/lib.sh:141), frozen by Replace complex shell with tested Go, starting with gates and merging #588. Preserve the stated owner review, build(agents): protect replacement Go enforcement paths #753 rollout prerequisite and compatibility treatment. Agree one fix(merge): pin gate policy and require machine authority #600 retirement point: Read gate settings from the pinned base in Go #980 says close it unmerged after the first replacement PR merges, while Verify merge skill directories against base lock hashes in Go #981/Run the skill-directory integrity gate in the merge entry points #982 say after all replacements merge. Record the same plan across the split and on fix(merge): pin gate policy and require machine authority #600. Likewise Verify merge skill directories against base lock hashes in Go #981's parser handoff to The merge policy reads the APM lockfile and base-owned deployments in Go #859 is not reflected in The merge policy reads the APM lockfile and base-owned deployments in Go #859's live body or native blockers (only Ship the Go binaries as release assets installed through mise's github backend #333); record that sibling dependency instead of treating the proposed link as established.

    3. The planned checks do not yet prove the CLI contracts. AC1–AC5 describe command output, stderr and status, but their checks are assigned only to internal/config. The proposed RepositoryAt returns value/differs/error and does not emit the command diagnostic. Keep library checks for those returns, then explicitly add command tests for the base option, defaulting, exact AC4 warning, AC3/AC5 empty stderr and status 0. Those streams/statuses belong to internal/agentrepo/config.go:47 and internal/agentrepo/config.go:57. AC6/AC7 already correctly call for command tests. Explain the cross-platform fixture strategy for unreadable/non-regular checkout files; Unix permission bits alone do not prove an unreadable-file case on Windows. Put any test seam or platform-specific plan in Approach/Verify.

    Split

    Keep #980 as the additive Go reader and CLI; no gate wiring or binary-selection implementation needs to enter its approximately 350-line budget. Complete the handoffs above. No additional split of this reader is needed. Its no-shell scope respects #588, and leaving existing callers unchanged preserves current N-2 behavior. Future binary refusal needs its own compatibility treatment.

    Definition of done

    Ticks mean coverage in planning, not completed implementation. D1 is partial until gap 3 is resolved. Unchecked lifecycle items remain obligations for the eventual PR.

    • D1 The author verified each AC on the merged head, and the Verification section of the pull request cites each AC ID with its evidence: the command and its result, or a link.
    • D2 An independent reviewer approved the exact merged head, and the author resolved each finding or filed it as a follow-up.
    • D3 The required checks pass on that head, and any loosened gate has the owner's approval of that exact head.
    • D4 The leak scans come back clean: gitleaks, devtools' check-leaks.sh with the repository's private-strings list, and the leak review of each post.
    • D5 The author signed each commit, the squash included.
    • D6 The docs match the change (README, docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.
    • D7 The commits and the squash have Assisted-by trailers, and the pull request has the provenance:agent-assisted label.
    • D8 The pull request stays within the size limits, or the owner approved its exact head over the hard limit.
    • D9 The author files follow-ups and deferred findings as issues with at least a Problem and numbered AC and lists them under the Related section of the pull request. Any work left in the code links its issue.
    • D10 The merge closes the issue through a closing reference and the board shows Done. The final Status: comment names the merge commit.
    • devtools-1 mise run check is green, and so are the coverage floors mise run cover-go-check and mise run cover-py-check, which check doesn't run.
    • devtools-2 A change to skill sources under packages/agents/source/ commits what mise run generate-skills, then mise run skill-tokens, then apm install rewrite, in that order, and check-generated-skills (part of lint) passes.
    • devtools-3 A consumer-visible change (the vendored payload, a skill, a reusable workflow, a task or a pin) has its consumer steps in docs/agent-skills-migration.md or the adoption docs, or the PR's Verification says "No consumer impact" and why.

    D8: Size estimates about 350 code lines for one PR. devtools-2: AC10 excludes skill-source edits. devtools-3: Risks plans “No consumer impact”; the PR must explain the unused-reader boundary. D6: help text is mentioned in Size; explicitly document and verify the new option.

    Round: 2 of 3

  3. tbhb-dev-reviews commented on Oct 31, 2026

    @tbhb-dev-reviews

    Refinement: NOT READY — the reader is bounded, but required handoffs remain unrecorded

    Checked

    Accepted the supplied mechanical-gate PASS without rerunning it. Read #980 and its two earlier refinement comments, native parent #324, the #588 shell freeze, siblings #981/#982 and the relevant #859/#864/#865/#870/#872/#874/#875/#876 contracts and native blockers. Read #499, #753, resolver issue #932, and related PRs #600/#704/#942; searched open and merged PRs for overlapping delivery. Inspected origin/main at 591fd70, matching the live main ref. No tests or suites were run.

    The revised command tests, cross-platform unreadable-file strategy, help coverage, cleanup-reader assignment and common retirement timing address earlier findings. Every AC1–AC12 ID appears in Verify plan. The approximately 410-code-line S estimate fits one PR below 800. Execution safety, platform coverage, unchanged no-flag behavior and revert are specified. Go-only scope respects #588 and the additive option preserves N-2 behavior. Operator authority: None matches the named Go paths under current protection patterns (.agents/agent-skills.conf:4, .agents/agent-skills.conf:5, .agents/agent-skills.conf:9).

    The reader is absent from main: internal/config/config.go:61 reads the checkout and internal/agentrepo/config.go:19 has no base option. Merged #942 provides the separate machine reader, not this feature. Merged #704 already prefers the repository pin and falls back to PATH (packages/agents/source/lib/lib.sh:141). Open #600 overlaps this work and is not merged delivery; it currently has no comment recording the proposed supersession.

    Gaps

    1. Record the promised consumer handoffs before readiness. Live The unattended merge gates run in Go #864 lacks both native blocker Read gate settings from the pinned base in Go #980 and the divergent-checkout AC; its blockers remain refactor(agents): port exact-head approval selection to Go #761/Ship the Go binaries as release assets installed through mise's github backend #333/The merge check judge gives the shell's verdicts without changing checks evaluate #863/The merge scripts read pull request snapshots, reviews and the local diff through one Go reader #862/The merge policy judges owner approval and reads required checks in Go #861/The merge policy scans a pinned change for loosened gates in Go (frozen behavior) #860. The squash message lint runs from agentrepo merge #865 still has only Ship the Go binaries as release assets installed through mise's github backend #333/The merge scripts read pull request snapshots, reviews and the local diff through one Go reader #862 and no base-settings AC. Cleanup after a verified merge runs in Go #872 still has Ship the Go binaries as release assets installed through mise's github backend #333/The merge write, readback and remote verification run in Go #871/The merge policy reads the APM lockfile and base-owned deployments in Go #859 and no pinned-base cleanup AC. Update those bodies and native links, including tests that checkout settings cannot replace gate policy, suppress squash lint, or change cleanup's disposable pattern. The cleanup read is independently present at packages/agents/source/skills/merge-pr/shared/scripts/squash-merge.sh:372. Read gate settings from the pinned base in Go #980 itself can remain without prerequisites. These are explicitly pre-ready handoffs, not implementation work to defer under D9.

    2. Complete the split's stated prerequisites. The table still says the binary-refusal issue is “to be filed” before any of Read gate settings from the pinned base in Go #980/Verify merge skill directories against base lock hashes in Go #981/Run the skill-directory integrity gate in the merge entry points #982 is ready. Name and link its actual owner and add the promised native blockers to The lint, populate-description, squash-message and review scripts become wrappers over agentrepo merge #874/The squash-merge and merge scripts become wrappers over agentrepo merge #875/The preflight scripts become wrappers over agentrepo merge #876. Reconcile it with existing The binary resolver, permanent launcher and configuration bridges are resolved in Go #932, which already owns tested Go binary resolution and a permanent launcher, but specifies status 2 where this table proposes status 1. Preserve the shell freeze, owner exact-head review and compatibility transition. The live Read gate settings from the pinned base in Go #980 title still claims binary selection despite its reader-only body; actually retitle it. The three replacement bodies now agree to retire fix(merge): pin gate policy and require machine authority #600 after all three merge, but record that plan on fix(merge): pin gate policy and require machine authority #600 too. The shared parser handoff also remains prospective: live The merge policy reads the APM lockfile and base-owned deployments in Go #859 still owns parsing and has only Ship the Go binaries as release assets installed through mise's github backend #333 as a native blocker, with no Verify merge skill directories against base lock hashes in Go #981 consumption contract. Update its scope and dependency as the shared table promises. Likewise The unattended merge gates run in Go #864/The merge gates and confirmation chain run in Go before the write #870 lack the promised Run the skill-directory integrity gate in the merge entry points #982 blockers and snapshot/integrity ACs. A repeated ownership table does not establish these native dependencies or resolve the live sibling contracts.

    3. Keep ACs behavioral. AC11 reintroduces the exact Go method signature and result structure into Acceptance criteria. Keep those in Approach. Express the library outcome as a silent base-settings lookup with drift and failure results corresponding to AC1–AC7, independently testable without prescribing its API shape. Its Verify entry can retain direct library tests.

    4. Resolve overlapping diagnostic cases. AC2 requires empty stderr whenever the base path is a symlink, submodule or directory. AC4 requires the drift warning whenever the checkout copy is unreadable or non-regular. A base directory and checkout directory satisfy both; a base symlink and checkout symlink do too. State whether ignored base entries count as absence for drift comparison and which diagnostic wins. Add command tests for those combinations with one exact stdout/stderr/status expectation. The new two-layer test plan is otherwise adequate, but cannot establish two contradictory stderr contracts.

    Split

    Keep #980 as the additive Go reader and CLI. No further code split is needed for its estimated 410 lines. Complete the recorded handoffs and settle the ACs; do not add gate wiring, binary resolution or shell edits to this PR. This is round 3: unresolved cross-issue ownership should be rethought and recorded before implementation proceeds.

    Definition of done

    Ticks mean the ACs and Verify plan cover the obligation in planning, not that implementation or merge evidence exists. D1's AC mapping is present; the conflicting expectations in gap 4 still need correction.

    • D1 Each AC is verified on the merged head, with its ID, command and result or evidence link in the PR's Verification; AC1–AC12 all have planned checks.
    • D2 Independent review approves the exact merged head; findings are resolved or filed through the planned follow-up process.
    • D3 Required checks pass on that head; the plan includes check and both coverage floors. No gate loosening is in scope; any actual loosening still requires owner approval of that head.
    • D4 Gitleaks, check-leaks.sh with the private-strings list, and leak review of every post are planned.
    • D5 Signed commits are required, including the eventual squash.
    • D6 Help documents the new option and statuses; AC12 verifies it.
    • D7 Assisted-by trailers and the provenance:agent-assisted PR label are required, including trailers on the eventual squash.
    • D8 One S-sized PR is estimated at about 410 code lines, with a check against 800.
    • D9 Follow-ups must have a Problem and numbered ACs and appear under Related. The pre-ready dependency edits above must happen before readiness, rather than becoming deferred findings.
    • D10 Closes Read gate settings from the pinned base in Go #980, board Done, and a final Status: comment naming the merge commit are planned.
    • devtools-1 mise run check, mise run cover-go-check and mise run cover-py-check are explicitly planned.
    • devtools-2 Not applicable: AC10 excludes skill-source edits and the Verify plan checks the Go-only diff.
    • devtools-3 The PR will explain No consumer impact through the unused-reader boundary; Compatibility: none is stated.

    Round: 3 of 3

  4. changed the title [-]Read gate settings from the pinned base and select the pinned agentrepo[/-] [+]Read gate settings from the pinned base in Go[/+] on Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    refinement:activeA refinement round is open; not ready for implementation

    Fields

    Priority

    None yet

    Work type

    None yet

    Projects

    • Status
      Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions