Skip to content

id phase-8/platform-completion: freshness-window and pull-policy config are not wired into server/world settings or CLI defaults #798

Open

Description

@dezren39

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.md line 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" ...) and pkgs/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_config test 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.

Activity

  1. added
    kind/featureNew feature or capability request
    priority/lowNice to have; do when convenient
    effort/mMedium: expected under 1 day of work
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 26, 2026
  2. dezren39 commented on Oct 26, 2026

    @dezren39
    MemberAuthor

    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

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run, 2026-10-26 00:19 CDT (05:19 UTC)
    • Found via: monitor reconciliation
    • Task: Intake enrichment (§5 pass): acceptance criteria appended, labels normalized, still-live verified.
    • Expectation: effort/m — config wiring for two existing knobs, plus parse tests.
  3. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Oct 28, 2026
  4. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  5. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    Evidence (fresh GitHub reads at HEAD, not the issue text alone):

    • pkgs/id/src/pull_policy.rs module doc states verbatim: "This is a config setting, not a protocol rule. The policy belongs with the world's policy, but id serve does 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 only fresh|pull|window|policy hits are unrelated (Role::Pull, a groups role, and groups::Policy defaults).
    • Code search at HEAD: Freshness appears only in pkgs/id/src/seitan/{freshness,mod,admit}.rs; PullPolicy/PullGate only in pull_policy.rs, log_sync.rs, event_store/sync.rs — no server_config and no CLI surface. Freshness{server,world,inviter} and DEFAULT_WINDOW (5 minutes) exist in seitan/freshness.rs but nothing populates them from config.

    Route: scoped follow-up fix packet enqueued to repo-health-code-pilot — kind small_fix, dedupe_key repo-health:v1:fix:developing-today/code:issue:798: expose freshness window + PullPolicy::{Open, Members} through server_config and CLI defaults, build Freshness/PullGate from config in the id serve path, config-parse tests in the existing server_config style (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 as triaged.

  6. 117 remaining items

  7. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  8. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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

  9. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  10. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · blocked

    Fresh evidence (main 3b8d3215d808, 2026-11-03T20:15Z):

    • Config half remains landed: PR id(server_config): [policy] table for freshness window + pull policy (#798) #1801 merged; [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 for server_config:: hits only the module itself and the pull_policy.rs doc comment.
    • id serve (pkgs/id/src/commands/serve.rs) still has no server-config flag and never references server_config.
    • The only production PullGate is still event_sync::open_gate() (hard-coded PullPolicy::Open, NoWorlds stub), built at serve.rs:1256 for the node's own event store — a store event_sync.rs itself documents as belonging to no world, so a members policy has no membership to consult there. All Members gates remain test-only. pull_policy.rs:22-23 still reads: "id serve does not read it yet, and no session builds a gate from config."
    • Freshness consumption is likewise absent: seitan::admit, the only consumer of the Freshness window, 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.

  12. added
    queue/blockedQueue or user escalation state
    status/blockedQueue or user escalation state
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 3, 2026
  13. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 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 serve loads a ServerConfig and runs startup provisioning — routed as task 8839 (queue repo-health-code-pilot, already queued). After slice 1, #5119 slices 2 (pull gate from config.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 off doc/2026-10-14T_platform_completion/acceptance-brief.md line 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.

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

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedmode/onlineFully doable remotely: design, config, code, cloudpriority/lowNice to have; do when convenientqueue/blockedQueue or user escalation statesource/creatorFiled by the new-issue-creator jobstatus/blockedQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions