Skip to content

merge: docs reconciliation round 2, map slice (#3399) - #3404

Closed
Xore wants to merge 16 commits into
docs/3395-doc-reconciliationfrom
docs/3399-r2-map
Closed

Xore wants to merge 16 commits into
docs/3395-doc-reconciliationfrom
docs/3399-r2-map

Conversation

@Xore

@Xore Xore commented Sep 27, 2026

Copy link
Copy Markdown
Owner

Round 2 of the #3399 docs reconciliation, map slice — 13 files. Follows
#3398 (43 files, round 1).

Gates — all five green on this branch

mermaid            40 blocks in 154 files parse cleanly
links              414 local refs resolve
paths-exist        494 tokens, 41 allowlisted
reachability       85 reachable, 35 exempt
stale-paths        no hits
public-leaks       passed

Findings worth reviewing

docs/ip-reporting-plan.md — both mermaid diagrams were fiction. The
file-tree diagram drew a Python reporter (reporter.py/sources.py/
apis.py/dedup.py/metrics.py) and the node label said reporter (Python).
None of it exists; the real thing is 13 Go files plus writeMetricsLoop.
Redrawn. The sketch also had BLOCKLISTDE_SENDER/_API_KEY wrong (as
_EMAIL/_PASSWORD) and a :9101 Prometheus port that is not wired.
Both diagrams passed the parse gate while being entirely wrong — parse
validity is not factual accuracy.

docs/llm-worker/README.md never named the deployed entry point. The
manifest points at docker-compose.captured-data-deploy.yml.

docs/community-threat-intel-sharing.md called #153 "still open". It is
closed and implemented (greynoise.go behind GREYNOISE_ENABLED).

docs/agent-intrusion-threat-model.md claimed its method verified
"against Go/Python source" — the Go tier was deleted five days before the
doc's own status date.

docs/dionaea-bistreams-retention.md — retention prune was described as
pending; it went live 2026-09-09, now 18 days ago.

docs/security-fixes.md — dated banner; every path it names confirmed deleted.

Verified-no-drift (recorded, not silently skipped)

DECEPTION-EXTENSIONS.md (all 21 locations), ml-worker-evaluation.md,
container-writable-layer-audit-2026-09-03.md.

New issue raised

#3403 — the manual IP-block export sidecar is fetching a URL that returns an
unauthenticated 200 with zero bytes, so operator IP blocks silently never
reach portbridge. Found here, measured against the live host, and filed
separately rather than folded into a docs PR.

Two things for the maintainer

  1. branding/design-lab/design-notes.md contains a real attacker IP
    (85.14.245.1). docs/design-lab/ is a redacted copy of it (→ 203.0.113.1),
    but the redaction buys nothing while the original sits in the same public
    repository, and check-public-leaks.py does not flag it. Not touched —
    outside the assigned list, and it is a judgement call, not a doc error.
  2. ml-worker-evaluation.md orders its status entries 08-25, 09-25, 09-05,
    09-25. Content is self-labelled as superseding so I left the ordering alone
    rather than restyle.

xore and others added 16 commits September 27, 2026 14:43
…file set, stack and diagram counts

- row 'more sensors' listed honeypot-citrix / honeypot-cisco-asa /
  honeypot-rdp, but the directories are honeypot-citrix-honeypot,
  honeypot-cisco-asa-honeypot and honeypot-rdp-honeypot, so the row's own
  'arcane/home/honeypot-<name>/compose.yml' pattern did not resolve
- the three worker stacks in the next row were all retired by #1649 and run
  as Rust WORKER_LOOPS now; the row still described them as live writers
- 'the only profile is geoip-update' omitted the threat-intel maintenance
  job, the four ["legacy"] rollback definitions and ghosts' ["test"] client
- '20 split home stacks' -> 26, the roster deploy-profiles/full.txt names
- ARCHITECTURE.md '6 diagrams' -> 4, its actual mermaid block count
… exempt list

docs/archive/ has no directory and no tracked files, but the map listed it
twice (as a subdirectory, and as a dated record tree). The reachability
script does exempt docs/design-lab/ -- kept as a near-duplicate of
branding/design-lab/ -- and the map's description of that gate omitted it.
Reachability result is unchanged: 85 reachable, 35 exempt.
…ter, endlessh PROXY

- the investigation-UI table still named the deleted Go 'dashboard' container
  on :8090. The live view is dashboard-next, container :8080, published on
  home 19090/19092 and bridged from VPS 8090/8092
- Elasticsearch is limits.memory 12G with ES_JAVA_OPTS -Xms6g -Xmx6g, not
  8 GiB / 4 GiB; dashboard-next gets 2 CPUs, not 1
- the TANNER container list omitted tanner_docker and listed snare_clone as
  one of this stack's services; it is a honeypot-init one-shot (hp-snare-clone)
  writing the snare-pages volume. The seven tanner_local services are now listed
- endlessh parses PROXY_PROTOCOL=1 behind its :pp 2022 rule but was missing from
  the list of sensors that recover the real attacker IP that way
The 'Service-specific decoys' section states its purpose as backfilling
rows so every running sensor traces back to a decision, but
honeypot-sonicwall-sma (#3033, CVE-2026-83548 / CVE-2026-83549) had no row
anywhere in the file. Every other one of the 20 sensor stacks does. All
other claims verified against compose and the source: wordpot's directory is
gone, the 2026-08-27 retirement date matches, conpot's six personas, and
#233/#242 as cited in community-threat-intel-sharing.md.
… open

Both were already marked Done in the doc's own Follow-up scope section; the
section bodies and the applicability matrix were never updated to match.

- item 9: llm-analysis severity is wired into the Rust alert sink as
  llm_flagged_alerts (worker.rs:1277), not browse-only via /llm-analysis
- item 5: hp-autoheal no longer bind-mounts /var/run/docker.sock. #592 moved it
  onto hp-docker-socket-proxy, which holds the socket :ro scoped to
  CONTAINERS/IMAGES/POST on a private network. The residual is that
  CONTAINERS=1 stays daemon-wide, which is now what the text says
- the docker.sock grep aside claimed 'absent' from the dashboard compose, but
  that file does contain one mount (services-adapter's) -- made explicit so
  someone re-running the grep is not surprised

ROADMAP.md: verified, no drift. No 'next' profile survives anywhere, CAPE is
authored but absent from the manifest while GHOSTS is present, sandbox/cape
has the Packer file and spool worker it claims, reporter/ sits under
honeypot-utilities, and llm-worker's selftest exists.
…-coverage claim true

- 'The reporter container' still promised a /metrics Prometheus endpoint for
  Grafana. metrics.go explicitly rejects that shape and writeMetricsLoop
  overwrites dataDir/metrics.json instead; the status banner 100 lines down
  already said so, so the doc contradicted itself
- 'Every .go file has a matching _test.go' does not hold by filename:
  categorize.go is covered from event_test.go, and main.go/report.go from
  dryrun_test.go. Every function is still exercised, so the substance stands

Every other claim verified against the tree: /data/reported.db, the reporter
volumes, all thirteen .go files in the diagram, no .py, and the
metrics.json/AUDIT_BLOCKLISTDE/GREYNOISE_ENABLED env contracts.
…drifted line ref

- evaluate_detectors.py runs seven check_* functions (appended at lines
  404-411), not six
- the 2026-09-03 audit had no dated banner, so its live-host measurements
  (245.8 GB, 13.18 GB reclaimable, a '45+ hours up' buildkit container) read as
  current. Added one pointing at the same do-not-mirror principle
  security-fixes.md already states, and at the open issues #2915/#2904
- its install-homeserver.sh:431-500 pointer no longer lands on the builder-GC
  discussion; the reasoning is at 392-397 and the JSON block at 463-465

Everything else verified: all four quality.yml scripts now use 'docker rm -fv',
rex86-eval is tracked but absent from the manifest and is the only such
directory under arcane/home/, and the daemon.json gc values match exactly.
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@Xore

Xore commented Sep 27, 2026

Copy link
Copy Markdown
Owner Author

Closing in favour of #3398, which is already open and auto-merging. This branch came from an orphaned agent run that was killed mid-flight; nothing further should land from it.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant