Skip to content

Open questions

ID Question Blocks Notes / leading answer
OQ-1 ~~Project name~~ Resolved: assent (D-009); repo live (D-014). Domain: assent.dev taken (D-028). Path: Option A — register an owned domain (D-031). Exact domain string still TBD before rename. Phase 4 / before public freeze marketing naming.md; D-028/D-031
OQ-2 ~~Hosting: GitHub only, or GitLab mirror (dogfooding the GitLab adapter on our own repo)?~~ Resolved (D-105): defer mirror — GitHub canonical; optional read-only GitLab mirror is operator infra, not E9 blocker. Dual-primary rejected (drift risk). No mirror workflow in E9. E9-S11
OQ-3 ~~Two parallel frontends?~~ Resolved by ADR-0002 v2: one YAML envelope, pluggable predicate backends superseded; successor questions: OQ-11/OQ-12
OQ-4 ~~Ship gRPC (go-plugin) tier in v1?~~ Resolved (P2-E5): defer gRPC to post-v1; HTTP/exec + builtins only (Spike C, D-012, ADR-0004 Accepted) adr-acceptance-review.md
OQ-5 ~~Policy discovery: remote packs in v1?~~ Resolved (P2-E5): local .assent/ only in v1; remote packs designed-for (ADR-0010 Accepted, D-012) adr-acceptance-review.md
OQ-6 ~~E2E default in CI: kind vs testcontainer?~~ Resolved (P2-E5 / Spike B): testcontainer in CI; kind stays for local/demo (spike-b-e2e.md — boot p50 96 s vs 126 s, ~2.4 GB vs ~3.1 GB+node, 0 flakes) ADR-0006 Accepted
OQ-7 ~~GitHub mapping for challenge~~ Resolved (P2-E5): parity for the gate, not the device — required-conversation-resolution carries acknowledgement; REQUEST_CHANGES reserved for block (forge-dossier-github.md §3). Residual live checks → Phase 5 / E10 Phase 5 / E10 ADR-0005 Accepted
OQ-8 Decision replay/audit: JSON report artifact enough, or signed/attested decision record later? Phase 3 v1: artifact (Pins in report); attestations later epic
OQ-9 Version pinning for reproducibility (tool digest + policy SHA in report Pins)? Phase 3 must be in the report schema from day 1
OQ-10 Monorepo support: multiple policy scopes per repo (path-scoped .assent/ dirs)? Phase 3 likely bindings-level path scoping
OQ-11 ~~kyverno-json vs cel-go~~ Resolved (P2-E5): cel-go (ADR-0013 Accepted; Spike A) adr-acceptance-review.md
OQ-12 ~~assert authored syntax~~ Resolved (P2-E5): hybrid all/any/not trees with CEL leaves + per-leaf message (ADR-0013 Accepted) adr-acceptance-review.md
OQ-13 ~~Risk score conventions / effect escalation?~~ Resolved (P2-E5): points + per-binding thresholds only in v1; no score→effect escalation (ADR-0007 Accepted) adr-acceptance-review.md
OQ-14 ~~serve (webhook) in v1?~~ Resolved (P2-E5): v1.x / E12 post-Phase-4; architecture-ready from day 1 (ADR-0009 Accepted, D-012/D-017) adr-acceptance-review.md
OQ-15 ~~fold-to-rename opt-in?~~ Resolved (P2-E5): opt-in per class, default raw; rename never laxer than delete (ADR-0003 Accepted). Residual: similarity metric itself Phase 3 adr-acceptance-review.md
OQ-17 ~~max_age default~~ Partially resolved (P2-E5): Spike C host defaults (principal/authz 1h, registry 24h, sensitive 15m; arming precondition). Schema freeze Phase 3 / contract fixture spike-c-provider.md; adr-acceptance-review.md
OQ-23 ~~require-review forge mechanics~~ Leading answer (P1-E3-S02): Premium/Ultimate evidence chain = approval_ruleseligible_approvers[]approval_state.rules[].approved_by[]; exclude MR-author and bot; never trust rule-level approved alone. Free tier: capability gap → no auto-merge for archetypes needing require-review P3-E1 schema slice (ApprovalEvidence per D-017) forge-dossier-gitlab.md §4
OQ-24 ~~Secure-setup adoption spike (topology)~~ Topology resolved (P2-E5 / P2-E4): GitLab Premium + external CI config + project access token + all-threads-resolved + merged-results + merge trains + approval rules + .assent/** human residual. North-star <1h still PENDING — operator timed clean-room run remains an open Phase-4 backlog item (do not claim confirmed). See backlog.md Phase-4 operator row. Phase 4 / north-star wording spike-secure-setup.md § North-star; timed run → HOLDS/AMEND
OQ-25 ~~Success metric (roast P2-8)~~ Leading answer: independently defined routine denominator + blind holdout (labeler ≠ policy author) + ≤1% false-auto-merge budget; measure via scan/stats confusion matrix — see success-metric.md. Residual: operator adjudicates holdout labels (not invented in-tree). Phase 4 (adjudication) protocol frozen in P1-E2-S03; adjudication = operator task
OQ-18 ~~GitHub arm-and-wait parity~~ Resolved (P2-E5): yes on paper with three deltas (dismissal, auto-merge revoke, merge queue) — forge-dossier-github.md §1 C8′/C11/C14, §3. Implement Phase 5 / E8–E10 ADR-0005 Accepted
OQ-19 ~~Post-merge reconciliation: v1.x or out of scope?~~ In scope (D-017 B8): E12 service tier, implemented post-Phase-4 — commit↔DecisionRecord/PublicationReceipt correlation, durable safety event, optional revert MR (never direct revert) E12 (unlocked) adjudicated outcomes feed policy comparison; a human revert is evidence, not proof
OQ-20 ~~Batch/sweep apply mode — or per-MR CI + serve enough?~~ In scope (D-017 B9): E12 service tier — one serialized sweep, every write through per-MR preconditions/reconciliation/budgets, no bulk bypass E12 (unlocked) scan stays recorder-only; horizontal workers unsupported until a lease exists
OQ-21 ~~Per-rule rollout phases — or effect-editing sufficient?~~ Reversed (D-017 B2): explicit off/observe/enforce phase field — effect-editing loses policy identity and breaks before/after comparison; observed vs enforcing findings both recorded P3-E4 / ADR-0018 observe can never alter the enforcing decision or forge state
OQ-22 Envelope match on MR metadata: labels, draft status, author allowlists — which belong in match.mr for v1? Phase 3 draft-MRs likely skipped by default in CI template
OQ-26 assent test score.total faithfulness (P5-E6-S03). The S03 matcher computes score.total as Σ finding.Points over the enforcing Result.Findings, but a finding carries the AUTHORED per-firing weight r.Points, not firings*r.Points (the engine's real pointsSum, an intentional aggregate asymmetry, ADR-0007 Amendment 2). So for a rule that fires K>1 times the matcher UNDERcounts — safe (it can only mismatch/FAIL, never spuriously pass on higher real risk) but not faithful. A faithful total needs the engine to expose the summed pointsSum on Result (a decision-path change, its OWN fail-safety-reviewed lane — parallel to the findings[].path field-add, D-054(b)). Until then S03 fixtures are single-firing so total is exact. E6 fast-follow / engine lane logged by S03; leading answer: add Result.PointsTotal in the path/score engine lane, then Match reads it
OQ-16 ~~Which open-source repos join the demo/test corpus?~~ Resolved (P2-E5): kafka/org + JulieOps descriptors + octoDNS zones, pinned by SHA with vendored excerpts — see examples/repos/corpus.md adr-acceptance-review.md; D-008/D-029 extra private shapes deferred but kept in corpus plan