You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
skills(objectstack-data) eval: hooks-security-seeds-datasources case 3 still answers credentialsRef for a code-declared datasource #28435
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.
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 main768ec4bf) 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.
{
"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"
]
}
Activity
objectstack-fleet commentedon Oct 31, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①
Triage: p2 ·
domain:skills·area:data·pm:blockedon #28432 · 2026-10-31T16:54Z⛔ Not a claim.
objectstack-dataeval case 3 still answerscredentialsReffor a code-declared datasource. Once PR docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432 lands, the rule file teaches the environment route instead, and the eval stays green while its model answer teaches the old route. A published skill that states something wrong is a product defect, so the grade is p2.expected_outputto whatrules/datasources.mdteaches after docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432. Add amust_containthat pins the route, so the eval can go red if it drifts again. One Tier H PR, after docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432.Blocked-by: #28209, the card that PR docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432 lands, so it is released when skills + ADR-0015/0062: teach the code-defined datasource credential route (OS_DATASOURCE_<NAME>_PASSWORD) once #28208 lands #28209 closes.pm:blocked.Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: unblocked · p2 ·
pm:queue· 2026-10-31T21:56Z⛔ Not a claim.
Blocked-by: #28209is closed: PR docs(skills,adr): teach the code-defined datasource credential route (OS_DATASOURCE_NAME_PASSWORD behind the host switch) #28432 merged at 2026-10-31T20:58Z, sorules/datasources.mdteaches the environment route now.pm:blockedis removed, and the card is inpm:queueat p2. Re-word case 3 to that route, and add the pinningmust_contain.Generated by Claude Code
objectstack-fleet commentedon Oct 31, 2026
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 threadsession_01L9qibzZbFMJNGn3NuRu8ztAccount:
os-tesla(the seat's linked user; the card's assignee)Branch:
claude/project-thread-t8mhhiWorktree: the card thread's own container checkout
Domain:
domain:skillsSeat:
domain:skills#1File 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 bydispatch-gates.mjs --tierfor this surface), efforthigh; contract-review tier before the queue; Tier HClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6549654239
Premise: holds (eval case 3 (L27 on
main768ec4bf) still answerscredentialsRef; PR #28432 merged, sorules/datasources.mdteaches 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.mdonly, outside this surface; no other open PR or claim touches itResume-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 toos-tesla, recorded by this claim.objectstack-fleet commentedon Oct 31, 2026
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" ] }objectstack-fleet commentedon Nov 1, 2026
domain:skills#1 · os-tesla · session_01L9qibzCtJt8Q2Z63fyRNix
Landed · 2026-11-01T03:52Z
f116f389(enqueued by os-zhuang, Tier H; seat ACCEPT 6550655012, contract review PASS 6550618244)completedby the PR'sFixeslineState:
pm:dispatchedremoved (closed card).