Repository navigation
Description
coordinator#1 · hotlong · session_6f02c340437c42c6ba85dec8d1a7c65b
Filing gate: ③ a task the maintainer assigned directly. The maintainer said in session, verbatim: 「不用开新的云会话,如果有安全问题走专用上报通道,普通问题提交issue」.
Reader: domain:spec, the seat taking this from pm:queue. Start after #29573 lands, because this card reads its tree.
Dedupe (open AND closed), by GET search/issues:
repo:objectstack-ai/objectstack "retryConfig" withheld clear: 9 hits. feat(spec)!: an authored connector URL holds no credential part; its retryConfig and actions refuse an undeclared key #29573 discloses this behaviour and leaves it open; fix(spec): a connector read serves only the declared nested keys, and a save of the served form keeps the rest #28997, feat(spec)!: an authored connector entry refuses a top-level key it does not declare; the connector read withholds URL credential parts and a non-object auth #28688 and feat(spec): a save of a connector's served form drops a leftover undeclared auth key and names it #29456 landed the neighbouring read and save rules, and none decides this.repo:objectstack-ai/objectstack deleted-baseline 17356 depth: 3 hits. [finding] the authorable-key deletion gate's reachability BFS reportsintegration/DataSyncConfigunreachable from the metadata-type roots — it is two hops from theconnectorroot, so #4650 proof 2 waives a tombstone for a key a stack manifest really authors #17356 is the closed origin of the pin in item 2, and none asks for the depth specimen.
1. An empty retryConfig
A save that leaves retryConfig out removes it, withheld keys included, and that is pinned. A save of retryConfig: {} over a stored row that holds a withheld key keeps that key at rest, through the protocol's per-path carry-forward. The original acceptance for this work read 「明确清除({})才删除」, so the behaviour differs from its letter. Both contract reviews on #29573 escalated this rather than ruling it (comment 6590686226, ③(b)).
Decide one of these, and pin the answer at the HTTP door:
- A (recommended): omission is the explicit clear. Keep the code and add a pin for
retryConfig: {}. A served-form save loses nothing and an author already has a clear. - B: an empty container clears. This changes
@objectstack/metadata-protocol's carry-forward for every type, so it needs its own declaration and pins.
2. A depth specimen for the #17356 pin
#29573 moves that pin's specimen in packages/spec/scripts/build-schemas-check-mode.deleted-baseline.test.ts from integration/RetryConfig to the root's own def. The named claim still holds, but the walk's descent beneath an unregistered root is no longer measured. Keep a specimen beneath that root too: an instance-auth kind reached through connector.auth stays root-graph in the closed entry (S4 in the same review comment).
Acceptance
- The ruling on item 1 is recorded here, and a dogfood pin holds that reading at
PUT /api/v1/meta/connector/:name. - The deleted-baseline test measures a def beneath an unregistered root again.
Generated by Claude Code
Activity
objectstack-fleet commentedon Nov 3, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p3 ·
pm:queuekept · 2026-11-03T00:54Z⛔ Not a claim.
retryConfig: {}keeps a withheld key at rest. The withheld value is kept, not exposed. Whether an empty container clears it is the spec seat's call, ruled against the fix(spec): a connector read serves only the declared nested keys, and a save of the served form keeps the rest #28997 / feat(spec): a save of a connector's served form drops a leftover undeclared auth key and names it #29456 save rules. Only a genuine divergence on contract shape goes to the maintainer. p3.Generated by Claude Code
os-support-ai commentedon Nov 3, 2026
decision thread · os-support-ai · session_01WGufzepGFmf3XtoZaZuheq
Cross-reference · item 1 is already ruled · 2026-11-03T04:55Z
⛔ Not a claim. Item 1 of this card (does a connector save of
retryConfig: {}clear a withheld undeclared key) was answered by the maintainer on PR #29573, comment 6593804783 (2026-11-03T02:23Z), verbatim: 「显式 {} 就清掉,带前提 (Recommended)」. That is this card's B: an explicitretryConfig(the served form,{}, any object) replaces the stored container whole and the withheld undeclared keys are not carried forward; omittingretryConfigkeeps today's behaviour. The dev implemented and pinned it on #29573 (head7d079947: the connector redactor names an objectretryConfig's undeclared keys innotCarriedForwardKeys, pinned at the spec redactor, the metadata-protocol carry-forward and the HTTP door in dogfood), so no protocol-wide carry-forward change was needed and the ruling's premise (the runtime reads no undeclaredretryConfigkey at materialization) was verified before the edit.For the seat that takes this card: item 1's acceptance is met by #29573 once it lands; what remains here is item 2 (a depth specimen beneath an unregistered root for the #17356 deleted-baseline pin). No new maintainer decision is owed on this card.
Generated by Claude Code
objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz
Claim: PM loop round 3
Session:
session_01WGufzhJG3tKnksHVa1krBzAccount:
os-support-aiBranch:
claude/project-thread-v820ow(card thread, executorsession_01WGufzeePBUouzbRj7MtDva; the thread can push only its own branch, the measured platform exception toclaude/issue-29668-…)Worktree:
objectstack-issue-29668Domain:
domain:specSeat:
domain:spec#2File surface:
packages/spec/scripts/build-schemas-check-mode.deleted-baseline.test.ts(one added specimen beneath the unregisteredconnectorroot, beside the existing #17356 pin); at most one dogfood pin atPUT /api/v1/meta/connector/:nameifmainhas noneContainer & model:
S,mode:thread,model: TIER_DEFAULT,effort: highClause-②: no
Metadata-protocol: none
Ruling-ref: 6593804783 (item 1, maintainer on PR #29573, built and merged there; cross-reference 6595809763)
Thread-read: 6595809763
Premise: holds — PR #29573 is merged, so item 1's behaviour is on
main; item 2 asks for a test specimen only. The executor measures which def beneathconnectoris reached by root-graph descent and stops if none is.Serial constraints cleared: no open PR of this seat edits the deleted-baseline test.
objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzeePBUouzbRj7MtDva
os-dev-report
{ "issue": 29668, "status": "done", "branch": "claude/project-thread-v820ow", "pr": "https://github.com/objectstack-ai/objectstack/pull/29831", "head": "9b62a75a14b9de332b27148c78dea0258854e335", "session": "session_01WGufzeePBUouzbRj7MtDva", "premise_still_valid": true, "summary": "Item 2: the #17356 case in packages/spec/scripts/build-schemas-check-mode.deleted-baseline.test.ts keeps integration/DeclarativeConnectorEntry and adds integration/ConnectorInstanceBearerAuth (connector.auth -> ConnectorInstanceAuthSchema discriminated union -> bearer arm) as a depth specimen, in the same spawned run (no new spawn, test-budget unchanged): eager reads 'def reachable from the metadata-type roots; ... was LIVE', lazy 'def ... was LIVE (never tombstoned)', never 'def not reachable from the'. beforeAll guard holds the def beneath connector and beneath no other root by both gate routes (identity in the zodChildSchemas closure, shape-entry bridge via zodShapeOf). Measured on main 0e4b0fa4: 10 instance-auth arms with surface keys read root-graph from connector and null from the other 32 roots, both regimes; bearer chosen. Finding fixed in-PR: with the roots narrowed to listMetadataTypeSchemaTypes() (the #17356 defect) the root's own def reads derived-clone via the shared _lock bookkeeping instances and is still refused, so the existing specimen no longer discriminates the proof-2 waiver; second commit 9b62a75a corrects the case comment that claimed narrowing makes the run exit 0 for it. Item 1: ruled and merged via #29573; HTTP-door pin on main is packages/qa/dogfood/test/connector-meta-door-url-and-nested-keys.dogfood.test.ts, '`retryConfig: {}` replaces the stored one whole: the next read of the stored row no longer has the undeclared key' (CARRY-FORWARD describe); no dogfood pin added. skip-changeset: packages/spec files[] excludes scripts/, so nothing publishes (AGENTS.md Post-Task Checklist 3). Clause-② no, Metadata-protocol none. PR body written once at d1cdcbe1; the second commit is comment-only in the same case and is not in the body's Verification list.", "tests": "head d1cdcbe1 under os-verify-lock: spec build exit 0; spec test exit 0 (23961 passed, 1 todo); spec test:repo exit 0 (89 files, 1522 tests); check:test-typecheck and check:scripts-typecheck exit 0. head 9b62a75a: deleted-baseline file 15/15, VERDICT command-exit 0. Ablation 1 (BFS stops at unregistered roots, root still visited): exit 1, red at the new eager assertion :617, gate printed 'ConnectorInstanceBearerAuth:zzBeneathAnUnregisteredRoot29668 — def not reachable from the 33 metadata-type roots' while DeclarativeConnectorEntry stayed 'reachable ... was LIVE'. Ablation 2 (roots narrowed to the registered set): exit 1, red at the existing wording assertion :606, BearerAuth waived ('not reachable from the 30'), DeclarativeConnectorEntry 'authorable through a derived clone ... was LIVE'. Both restored by git checkout.", "gates": "dispatch-gates --commands derived 58 on d1cdcbe1 (1 path vs merge base 0e4b0fa4). 55 exit 0 first pass; check-plugin-teardown-shape --self-test exit 3 then exit 0 after git fetch origin 621a4876; check:dual-build-cjs-loads and check:lean-entry-closure exit 3 (need every package dist; only spec built). --ran: 58 derived, 56 run, 2 NOT-MEASURED, 0 unrun, exit 0. On 9b62a75a: check:closed-ceremony-text, check:issue-citations, check:keyed-text-bounds, check:doc-authoring exit 0; check-commit-card-trailers --range exit 0. NOT MEASURED: dual-build-cjs-loads, lean-entry-closure, reason: dist prerequisite, CI Build Core runs them.", "dogfood_battery": "n/a — test-only, no ! in the PR title and no (narrowing) arm; no dogfood file touched", "mcp_calls": "0", "api_writes": "2 — relay pr_create (objectstack-ai/objectstack#29831, draft, label skip-changeset, read back identical, no assignees, no reviewers); relay comment on #29668 (this report). Plus 2 git pushes.", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [] }objectstack-fleet commentedon Nov 3, 2026
domain:spec#2 · os-support-ai · session_01WGufzhJG3tKnksHVa1krBz
Landed. PR #29831 merged through the queue (merge commit
06513bc4); this card closed as completed by itsFixesline.MERGEDat 2026-11-03T07:31Z, head9b62a75a, test only, seat ACCEPT 6597580261closed(completed)Both acceptance items are met: item 1 by #29573 (the maintainer's ruling 6593804783 and its HTTP-door pin on
main), item 2 by the depth specimenintegration/ConnectorInstanceBearerAuthbeneath the unregisteredconnectorroot. State change:pm:dispatchedremoved.