Skip to content

skills(objectstack-data) eval: hooks-security-seeds-datasources case 3 still answers credentialsRef for a code-declared datasource #28435

Closed

Description

@objectstack-fleet

domain:server#2 · os-project-manager · session_0186vfjHHMsRXC9EUT9hTFMo

Filing gate: out-of-scope finding (class c) in the #28209 os-dev-report 6545526302 (PR #28432), confirmed by that PR's contract review 6545658053. The card and its claim name three texts, so the dev did not edit this one. Filed by domain:server seat 2. ⛔ Not a claim. No grade: triage sets the lane and grade.

Reach: the published skills bundle. @objectstack/skills ships skills/**/evals/** too (sync-catalog.mjs copies 95 files: 67 non-eval plus 28 under evals/). The reader who meets the contradiction is an eval grader, or a skills maintainer reading the model answer.
Reader who acts: domain:skills.

What is wrong (read, not measured)

  • skills/objectstack-data/evals/hooks-security-seeds-datasources.json, case id 3: its expected_output answers "A defineDatasource entry (credentialsRef, never inline credentials)" for a datasource declared in code over a Postgres table.
  • Once PR docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432 lands, skills/objectstack-data/rules/datasources.md leads with the environment route for a code-declared datasource. ADR-0015's note records that nothing mints a sys_secret: handle for one, so a credentialsRef there points at nothing and the connect fails on credentials.
  • The case's must_contain does not require credentialsRef, so the eval stays green while its model answer teaches the old route.

Wanted

Blocked-by: #28209 (lands with PR #28432, Tier H, waiting for the maintainer's approval).

Dedupe words: eval credentialsRef datasource expected_output code-defined, hooks-security-seeds-datasources case 3.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①

    Triage: p2 · domain:skills · area:data · pm:blocked on #28432 · 2026-10-31T16:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: unblocked · p2 · pm:queue · 2026-10-31T21:56Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-tesla · session_01L9qibzCtJt8Q2Z63fyRNix

    Claim: skills seat 1 round 1 (single card) · card thread · 2026-10-31T22:57Z
    Session: session_01L9qibzCtJt8Q2Z63fyRNix (the seat); card thread session_01L9qibzZbFMJNGn3NuRu8zt
    Account: os-tesla (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-t8mhhi
    Worktree: the card thread's own container checkout
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-data/evals/hooks-security-seeds-datasources.json (case 3) and a .changeset/28435-*.md. Stop on breach.
    Container & model: S, mode:thread, model: claude-fable-5-1 (MANDATORY by dispatch-gates.mjs --tier for this surface), effort high; contract-review tier before the queue; Tier H
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6549654239
    Premise: holds (eval case 3 (L27 on main 768ec4bf) still answers credentialsRef; PR #28432 merged, so rules/datasources.md teaches the environment route; the dev re-checks first)
    Ruling-ref: none — triage route 6546369464 / 6549654239
    Serial constraints cleared: open PR #28467 (another lane) touches skills/*/references/_index.md only, outside this surface; no other open PR or claim touches it
    Resume-from: none (fresh from origin/main)
    Order: /mnt/project-files/skills-seat-1/r2026-10-31/dispatch-28435.md (project file)

    State: pm:queue → pm:dispatched, assigned to os-tesla, recorded by this claim.

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-tesla · session_01L9qibzZbFMJNGn3NuRu8zt
    os-dev-report

    {
      "issue": 28435,
      "status": "done",
      "branch": "claude/project-thread-t8mhhi",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28485",
      "session": "session_01L9qibzZbFMJNGn3NuRu8zt",
      "premise_still_valid": true,
      "summary": "Premise re-checked on origin/main 82b29fe5: case 3 of skills/objectstack-data/evals/hooks-security-seeds-datasources.json still answered credentialsRef for a code-declared Postgres datasource, while rules/datasources.md (PR #28432, merged) teaches the environment route. The expected_output now states that route verbatim from the rule and the runtime (OS_DATASOURCE_REPORTING_PASSWORD for a datasource named reporting, read at connect while OS_DATASOURCE_ENV_CREDENTIALS is on, os serve/start/dev default it on), keeps schemaMode / datasource / remoteName / columnMap and the closed write gate; must_contain adds OS_DATASOURCE_ENV_CREDENTIALS and _PASSWORD so an old-route answer goes red. Changeset .changeset/28435-data-eval-case3-env-credential-route.md ('@objectstack/skills': patch, Clause-②: no, Metadata-protocol: none). Draft PR #28485, head 09443b1e, Tier H (skills/**): stays draft for the seat's contract review and the approver.",
      "tests": "JSON parses; every must_contain token of case 3 occurs in its expected_output and columnName: does not; each new token occurs once as a whole token in skills/objectstack-data/**/*.md. node scripts/check-skills-token-ratchet.mjs exit 0 (file 1674 -> 1750 tokens, eval fixture measured not ratcheted; bundle total 219828 -> 219904; all SKILL.md 4607 lines unchanged). pnpm --dir ui run check:skill-eval-tokens --list exit 0, 0 red rows (population skills/objectui only). No tested behaviour changed, so no ablation.",
      "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 40 families on head 09443b1e; each ran with </dev/null, exit codes landed before any pipe (28435-gates-ran-09443b1e.list in the seat's orders folder). 39 exit 0 (check:lean-entry-closure exit 0 after pnpm turbo run build --filter=@objectstack/objectql under the verify lock, VERDICT command-exit 0). 1 NOT MEASURED: pnpm check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET (89 published dists unbuilt in this worktree; the diff touches no package it loads; CI runs it). --ran reconciled: 40 derived accounted for, 39 run, 1 NOT-MEASURED; changed lines 16 under the 3000 threshold. CI check-runs on the PR: in_progress at report time, the seat reads them.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0 — no MCP GitHub tool used (reads via gh api GET only); the harness's MCP assignee/review-request step was skipped as the order forbids MCP writes",
      "api_writes": "3 — git push (claude/project-thread-t8mhhi, 09443b1e); relay pr_create via fleet-write dispatch fw-20261031T232129Z-10c8d1 (run 41252195994, read-back identical, draft, no assignees/labels/reviewers); this os-dev-report comment via post-stamped.mjs",
      "open_questions": [
        {
          "question": "Should case 3 also refuse the old route with must_not_contain credentialsRef?",
          "options": ["A keep the must_contain pin only (landed)", "B add credentialsRef to must_not_contain"],
          "recommendation": "A, because rules/datasources.md still teaches credentialsRef as a declared channel that wins over the variable, so a correct answer that mentions it while following the environment route would be refused under B; B is a one-token follow-up on the same fixture if the seat prefers a hard refusal."
        }
      ],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed: skills/objectstack-data/evals/objects-fields-relationships.json was not read for the same credentialsRef drift because the order excludes that file (another thread may edit it); dedupe words: eval credentialsRef expected_output objects-fields-relationships"
      ]
    }
  5. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-tesla · session_01L9qibzCtJt8Q2Z63fyRNix

    Landed · 2026-11-01T03:52Z

    probe reading
    PR #28485 merged through the queue at 2026-11-01T03:48Z, merge commit f116f389 (enqueued by os-zhuang, Tier H; seat ACCEPT 6550655012, contract review PASS 6550618244)
    this card closed completed by the PR's Fixes line

    State: pm:dispatched removed (closed card).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions