Skip to content

scaffold: lint drift between internal/scaffold/fullsend-repo/profiles and the fullsend-ai/agents profiles #6978

Closed

Description

@waynesun09

What happened

The embedded scaffold profiles and the fleet copies in fullsend-ai/agents are maintained by hand and drift silently. The **/claude.exe gap that broke every 0.40.0-image run (#6971) was fixed in the agents copy on 2026-09-01 (fullsend-ai/agents#1118) and only reached this repo's copy on 2026-09-03 after functional-tests broke (#6962). Other drift still present after PR #6975:

  • profiles/fullsend-vertex-ai.yaml: the scaffold copy sets allow_uninspected_credentials: true on api.anthropic.com as well as *.googleapis.com; the agents copy sets it only on *.googleapis.com.
  • profiles/fullsend-package-registries.yaml: the agents copy allowlists **/uv and **/uvx; the scaffold copy does not.

PR #6975 pins only the Vertex binaries list in a unit test.

Proposed change

Add a local check (a script under internal/scaffold/fullsend-repo/scripts/ or a Go test with a pinned agents commit) that diffs each internal/scaffold/fullsend-repo/profiles/*.yaml against the same file at the agents commit pinned in .fullsend/, ignoring comments, display_name and description, and fails on any semantic difference. Wire it into make lint. Decide per profile whether the scaffold or the agents copy is canonical and document that in docs/contributing/.

Validation criteria

make lint fails on the two drifts above until they are reconciled, and passes once the copies match.

Activity

  1. fullsend-ai-triage commented on Sep 3, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 5:05 PM UTC · Completed 5:10 PM UTC

    Commit: 48eac1a · View workflow run →

    Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $0.87

  2. added
    featureFeature-category issue awaiting human prioritization
    triagedTriaged but awaiting human prioritization
    priority/mediumNormal priority, plan for next cycle
    on Sep 3, 2026
  3. fullsend-ai-triage commented on Sep 3, 2026

    @fullsend-ai-triage

    Re-checked relevance as requested. This issue is still valid, and the drift it describes has grown rather than shrunk since filing:

    • Vertex profile: the allow_uninspected_credentials scope difference from the original report is still present — the scaffold copy applies it to both api.anthropic.com and *.googleapis.com, while the current agents copy applies it only to *.googleapis.com. Note for maintainers: the agents copy's inline comment attributes that scoping to ADR 0092 / a specific PR covering OpenAI credential delivery, which appears unrelated to this Anthropic/Vertex endpoint — worth a sanity check on whether that comment is accurate.
    • Package-registries profile: the **/uv / **/uvx binaries gap is also still present. New since filing: the agents copy now also sets an encoded-slash allowance on the npmjs.org and yarnpkg.com endpoints that the scaffold copy lacks.
    • No PR currently implements the general drift-detection lint check this issue asks for. PR fix(#6971): allow claude.exe and pi on scaffold Vertex profile, warn on profile shadowing #6975 (merged) fixed the specific claude.exe binary gap and explicitly deferred this broader check to this issue. No documentation yet records which copy is canonical per profile.

    Per the accompanying request, this stays open for human prioritization rather than being routed to auto-implementation.


    Next steps:

    • /fs-code — agent creates a PR to implement this issue
    • /fs-code <your instruction> — agent implements with your specific guidance
    Previous run

    Related work: PR #6975 (open) fixes the immediate **/claude.exe breakage and adds a unit test for the Vertex profile's binaries list, but does not implement the general drift detection this issue requests. Once #6975 merges, the two specific drifts called out here (Vertex allow_uninspected_credentials scope and package-registries uv/uvx) will remain undetected.

    Implementation notes:

    • The pinned agents commit is in .fullsend/config.yaml. The test can fetch the remote file via gh api repos/fullsend-ai/agents/contents/profiles/<name>.yaml?ref=<commit> or embed a testdata snapshot at the pinned commit.
    • YAML comparison should use a structural diff (unmarshal to map[string]interface{}, delete ignored keys, then reflect.DeepEqual or a recursive diff) rather than string comparison, to avoid false positives from whitespace or comment changes.
    • The decision on which copy is canonical per profile should be documented in docs/contributing/ so future editors know where to make changes.

    Proposed test case:

    func TestScaffoldProfileDrift(t *testing.T) {
        // For each profile in internal/scaffold/fullsend-repo/profiles/:
        //   1. Parse scaffold YAML, remove display_name/description
        //   2. Fetch agents-repo copy at pinned commit, parse similarly
        //   3. Deep-compare remaining structure
        //   4. Fail with readable diff on any semantic difference
    }

    Labels: Adding priority/medium — the immediate breakage was addressed by PR #6975, but this preventive lint check guards against future silent drift.


    Next steps:

    • /fs-code — agent creates a PR to implement this issue
    • /fs-code <your instruction> — agent implements with your specific guidance
  4. ralphbean commented on Sep 24, 2026

    @ralphbean
    Member

    /fs-triage lots of things have changed between when this was originally filed and now across both the https://github.com/fullsend-ai/fullsend and https://github.com/fullsend-ai/agents repos. Is this still relevant? This is a stale-issue review, not an implementation request: even if the issue is still a valid bug and has sufficient information, do not recommend or trigger ready-to-code yet. Leave it for human prioritization after confirming whether it remains relevant. Do not close a still-relevant bug merely to avoid coding it.

  5. fullsend-ai-triage commented on Sep 24, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 9:02 PM UTC · Completed 9:07 PM UTC

    Commit: d565f76 · View workflow run →

    Runtime: claude · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $0.33

  6. added
    triagedTriaged but awaiting human prioritization
    and removed
    featureFeature-category issue awaiting human prioritization
    triagedTriaged but awaiting human prioritization
    on Sep 24, 2026
  7. added 4 commits that reference this issue on Oct 2, 2026
    2092c52
    82fe4e4
    af1a86d
    2c84c81
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

    component/sandboxOpenShell sandbox environmentpriority/mediumNormal priority, plan for next cycletriagedTriaged but awaiting human prioritizationtype/choreMaintenance and housekeeping tasks

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions