docs(api): one copy of each rule, an implementer path, honk config in the notes - #41
Merged
Merged
Conversation
Merge the two status tables in errors.md, keep page cursors in errors.md, replay in operations.md, SSE recovery in events.md and CORS in api-config.md. logs.md now lists only where its stream differs, so events.md states that a cursor sent with changed filters returns 409 event_cursor_expired, as logs.md and honk already do. Shorten the replaceConfigSource description to a summary that links to configuration.md.
index.md now gives the reading order for a new engine (discovery and auth, the base profile, shared rules, optional resources) and a short table of the identity and configuration terms. The hypothetical listener block, the npm build steps and the Clash-compatible promise leave the page; the README covers building. The docs use "engine" for the product and "server" for the HTTP role instead of adapter/backend, and "engine-native text" instead of "dae text".
api-config.md, configuration.md, flows.md and geodata.md no longer name honk's experimental.native_api and clash_api keys, the /ui/ interface or honk's geodata file fields; the honk notes hold them. The GET /config and source examples mask a neutral api { secret } block instead of honk's listener block.
Delete the stale honk evidence page (git history keeps it), the starter post, the empty landscape config, the unused landscape theme and scaffolds. Rename node-latency.md to nodes.md and check-nodes.md to probes.md to match their titles. The sidebar follows the reading path in index.md, lists Logs, Providers, Geodata and Rules, and drops the stale Deferred label. The README initialises the theme submodule before building.
…r advice runtime-status.md limits the unchanged-generation rule to reloads that fail before publication and links activation outcomes. errors.md gives the reason an expired page cursor is 410 and an expired event cursor is 409. groups.md names the dae check options reported under x-dae. The recorder implementation advice in flows.md becomes a non-normative note.
Zakkaus
force-pushed
the
docs/contract-clean-path
branch
from
September 28, 2026 22:22
bc7d37b to
be17e7c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final acceptance, part F2: make the contract docs shorter to read and easier to start from. It changes no status codes and no wire shapes. The only
api/edits are thereplaceConfigSourcedescription and the masked config example; the schema and HTTP changes are in F1, and this branch rebases after F1 merges.Per item
stream.readybullets are merged, and logs.md lists only the ways log streams differ. For logs.md to rely on events.md, events.md now also says that a cursor sent with changed filters returns409 event_cursor_expired, which covers O7.409in configuration.md is gone.replaceConfigSourcedescription is now a short summary with a link to configuration.md#Editing.api {}block, thenpmbuild steps and the Clash-compatible promise are gone from index.md. For building, it points to the README.ebpf.backendfield name is unchanged.experimental.native_api,clash_api,/ui/, the separate listeners and honk's secret key names. It also records which geodata fields honk's configuration file can set. The normative text in api-config.md, configuration.md (the "Honk mapping" section), flows.md and geodata.md is now engine-neutral. TheGET /configand source examples now mask a neutralapi { secret }block.bytesstays 90, andline_countis now 6.design/honk-evidence-780c3f1.md,source/_posts/hello-world.md,_config.landscape.yml,scaffolds/, and thehexo-theme-landscapedependency and its lockfile entry (viayarn remove)._config.ymlnow has the right title, subtitle, description and author.git submodule update --init --recursivebefore the build.docs/node-latency.mdis nownodes.mdanddocs/check-nodes.mdis nowprobes.md. Links and the navigation are updated.generation.active_idstays unchanged only when a reload fails before publication. The page links to activation outcomes (A13).409(O7, in the first commit).410and an event cursor is409; the statuses are unchanged (O6).tcp_check_http_methodandudp_check_dnsunderconfig["x-dae"], next tocheck_addresses(O20). dae already has these three keys onGroupinconfig/config.go.Not done
_config.ymlurlis stillhttp://example.com. The repository has no GitHub Pages site and no deploy workflow, so no real URL exists yet. The maintainers (CODEOWNERS) need to choose one.api/common.yamland thestream.readywording inapi/events.yamlstill repeat rules the docs define. A follow-up can shorten them.Review fixes
Rebased onto
honkafter #42. Conflicts kept #42's rules: the405andIf-Matchstatuses in errors.md, the RFC 9110If-Matchevaluation and sourceETagin configuration.md, the content-only source example, and the non-loopback listener rule (deployment secret or password authentication, plus TLS).bytesis 60 to match the 6-line content.check-contract.mjsnow fails an example whosebytesdiffers from the UTF-8 length of itscontent.secrets_redactedand the honk sentence underverify_checksumare gone; the honk notes already hold both.409for apathin use before it validates the content. groups.md no longer names honk for nested group selection.base;full_transparencyalso needs nodes, groups, connections, recorded flows and events) and the source-hash term; api-config.md summary; thereplaceConfigSourcedescription (the reload operation commits the replacement, before or after activation); which events.md stream rules also cover logs; full honk key names in the honk notes.Checks
yarn install --frozen-lockfile && yarn check:contract: passes (87 tests; bundle regenerated and committed).yarn build(hexo clean && hexo generate): passes, includingscripts/check-links.js.#fragmentin the generated HTML: 2930 links, 0 unresolved.