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. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Oct 31, 2026
  2. 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

  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Oct 31, 2026
  4. 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

  5. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Oct 31, 2026
  6. 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.

  7. 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"
      ]
    }
  8. 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

area:dataarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillsDomain lane — seat card indexed by label:pm:seatfindingRecorded observation — held, not dispatchable until the findings triage round grades itpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions