Repository navigation
Open
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/blockedQueue or user escalation stateQueue or user escalation statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Description
Finding
The acceptance brief records a handoff gap: the existing freshness-window and pull-policy machinery is not wired into server/world settings or CLI defaults. It has no dedicated tracking issue.
Evidence
doc/2026-10-14T_platform_completion/acceptance-brief.mdline 76 (unchecked): "Wire the existing freshness-window and pull-policy configuration into server/world settings and CLI defaults (handoff gap)."- The machinery exists:
pkgs/id/src/seitan/freshness.rs(the N23 freshness window, default 5 minutes, "can be set per" ...) andpkgs/id/src/pull_policy.rs(PullPolicy::{Open, Members},PullGate). pkgs/id/src/server_config/holds config parsing; the brief's gap is that these knobs are not surfaced there or as CLI defaults.
Why it matters
Per the plan (P6.2 freshness window per server/world/inviter default 5 minutes; P6.5 open pull with an authorized option), these are policy knobs the operator is meant to set. Until wired, only the code default applies and the operator cannot tune them per server/world.
Suggested scope
Expose freshness window and pull policy through server config and CLI defaults, with config-parse tests (unknown-key/unknown-value fail startup) matching the existing server_config test style.
Acceptance criteria
- The freshness window is configurable through server/world settings and CLI defaults; the code default (5 minutes) is unchanged when nothing is set.
- The pull policy (
PullPolicy::{Open, Members}) is configurable through the same settings surface. - Config-parse tests cover the new knobs in the existing
server_configtest style, including unknown-key / unknown-value failing startup. - The platform-completion acceptance brief's handoff item (line 76) can be checked off against this change.
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workMedium: expected under 1 day of workkind/featureNew feature or capability requestNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientNice to have; do when convenientqueue/blockedQueue or user escalation stateQueue or user escalation statesource/creatorFiled by the new-issue-creator jobFiled by the new-issue-creator jobstatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle stateQueue worker lifecycle state
Activity
dezren39 commentedon Oct 26, 2026
Intake review
Related: Platform-completion acceptance brief line 76 (the handoff gap this issue tracks); plan P6.2 (freshness window per server/world/inviter) and P6.5 (open pull with an authorized option). Machinery:
pkgs/id/src/seitan/freshness.rs,pkgs/id/src/pull_policy.rs; config surface:pkgs/id/src/server_config/. Sibling handoff-gap issues from the same brief: #797 (group join CLI path), #794 (P7.5/P3.7 live matrix).Still live (verified 2026-10-26): no merged PR references or resolves this issue; the knobs exist in code but are not surfaced in server/world settings or CLI defaults. Not solved; do not close.
Notes / risks: Small, well-bounded wiring job — the policy machinery and its tests already exist. Main care point is config strictness: the existing server_config style fails startup on unknown keys/values, and the new knobs should behave the same.
Suggested approach: Add the two knobs to server_config + CLI defaults, thread them to the freshness/pull-policy call sites, and add parse tests matching the existing style.
🤖 Agent note · intake enrichment
dezren39 commentedon Oct 28, 2026
🤖 Agent note · picked up
dezren39 commentedon Oct 28, 2026
🤖 Agent note · done
e561ab58ff76ea8e84f2b9a1f108770ebe44a734(2026-10-28T19:25Z)Evidence (fresh GitHub reads at HEAD, not the issue text alone):
pkgs/id/src/pull_policy.rsmodule doc states verbatim: "This is a config setting, not a protocol rule. The policy belongs with the world's policy, butid servedoes not read it yet, and no session builds a gate from config."pkgs/id/src/server_config/{mod.rs,parse.rs,provision.rs}contain no freshness-window or pull-policy keys — the onlyfresh|pull|window|policyhits are unrelated (Role::Pull, a groups role, andgroups::Policydefaults).Freshnessappears only inpkgs/id/src/seitan/{freshness,mod,admit}.rs;PullPolicy/PullGateonly inpull_policy.rs,log_sync.rs,event_store/sync.rs— noserver_configand no CLI surface.Freshness{server,world,inviter}andDEFAULT_WINDOW(5 minutes) exist inseitan/freshness.rsbut nothing populates them from config.Route: scoped follow-up fix packet enqueued to
repo-health-code-pilot— kindsmall_fix, dedupe_keyrepo-health:v1:fix:developing-today/code:issue:798: expose freshness window +PullPolicy::{Open, Members}throughserver_configand CLI defaults, buildFreshness/PullGatefrom config in theid servepath, config-parse tests in the existingserver_configstyle (unknown-key/unknown-value fail startup), and check off acceptance-brief line 76. The issue stays open for that fix task; this triage task completes astriaged.117 remaining items
developing-today commentedon Nov 3, 2026
agent-note:v1
state: reviewed (coverage loop-back)
Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 2657 (small_fix, blocked, priority 20) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
Found via: coverage loop-back 2026-11-03
dezren39 commentedon Nov 3, 2026
🤖 Agent note · picked up
ServerConfig::freshness()/pull_policy()now exists at current main, and wire it if it does.dezren39 commentedon Nov 3, 2026
🤖 Agent note · blocked
id serveloads a server config and builds its pull gate fromconfig.pull_policy(). Then this task's remainder (verify consumption + acceptance-brief line 76 check-off) can finish.Fresh evidence (main
3b8d3215d808, 2026-11-03T20:15Z):[policy]parse +ServerConfig::freshness()/pull_policy()accessors unchanged in substance.ServerConfig::load(pkgs/id/src/server_config/mod.rs:178) still has no production caller — code search forserver_config::hits only the module itself and thepull_policy.rsdoc comment.id serve(pkgs/id/src/commands/serve.rs) still has no server-config flag and never referencesserver_config.PullGateis stillevent_sync::open_gate()(hard-codedPullPolicy::Open,NoWorldsstub), built atserve.rs:1256for the node's own event store — a storeevent_sync.rsitself documents as belonging to no world, so amemberspolicy has no membership to consult there. AllMembersgates remain test-only.pull_policy.rs:22-23still reads: "id servedoes not read it yet, and no session builds a gate from config."seitan::admit, the only consumer of theFreshnesswindow, has no production caller (seitan tests + a design spike only).So the earlier lanes' verdict stands, with one improvement: the blocker is no longer a note — it is issue #5119, scoped with acceptance criteria, in the queue as task 8786.
dezren39 commentedon Nov 3, 2026
🤖 Agent note · unblock condition updated
Unblock condition, updated: this issue's remainder (pull policy + freshness consumed from config) is blocked on issue #5119, now scoped into ordered slices by task 8786's triage (verified at main
5b0aeb593). The named first slice is #5119 slice 1 —id serveloads a ServerConfig and runs startup provisioning — routed as task 8839 (queuerepo-health-code-pilot, already queued). After slice 1, #5119 slices 2 (pull gate fromconfig.pull_policy()) and 3 (freshness consumer wired into seitan admission) can proceed in parallel; #5119 slice 4 is this issue's close-out: verify the remaining acceptance items here, check offdoc/2026-10-14T_platform_completion/acceptance-brief.mdline 76, and close or re-scope.Full scoping, evidence, and the slice-2 design recommendation (fail startup, never silently serve open, when
pull_policy = "members"has no membership source for the node's own store) are recorded on issue #5119.