4.7 KiB
4.7 KiB
ipfs.kane-il.us — Content & Path Conventions (v1)
0. Scope
- Public-only repository for IPFS gateway publishing.
- Text formats only:
*.md
,*.txt
,*.jsonl
. - No binaries (pdf, images, video, archives) — describe them in markdown for accessibility.
- All timestamps are UTC.
1. Top-level categories (roots)
/legal
/civics
/naics
/barter
/w3pbs
/onet
/_log # public minimal publish log
- Root-level design documents (e.g. CONVENTIONS, README, checklists) may be placed directly at repo root.
- To avoid collisions, these use versioned filenames like
CONVENTIONS_v1.md
,CONVENTIONS_v2.md
.
2. Naming rules (files & dirs)
- Lowercase, ASCII, underscores for word separators.
- Filenames must start with digits-only ISO UTC timestamp:
YYYYMMDDThhmmssZ_<slug>.md
- Exception: root design documents, which follow
<NAME>_vN.md
.
3. Immutability
- No “latest” aliases, no mutable pointers.
- No per-directory index files; rely on gateway directory listing.
- Every publish is additive; removals are exceptional (court/admin error).
4. LEGAL
4.1 research (jurisdiction-first, typed entities)
Path template:
/legal/research/{scope}/{segment}/{subject}/...
scope ∈ {county|town|township|individual|organization}
- If
scope=organization
orindividual
, use typed entity layering:/legal/research/{scope}/{kind}/{name}/{subject}/... kind ∈ {governance|economic|domestic|technical|infrastructure|virtual}
- Otherwise:
/legal/research/{scope}/{jurisdiction_name}/{subject}/...
4.2 court → cases
Path template:
/legal/court/{court_id}/{case_id}/(filings|evidence|orders|docket|notes|transcripts|exhibits)/
court_id
will follow Kane County authoritative naming.case_id
sanitized to lowercase/underscores; original case identifier stored inside the markdown.
5. Other categories
- civics/: governance, policy, licenses, standards → plain markdown.
- naics/: subdirectories by NAICS code.
- barter/: web2py assets and git-oriented text/config (no binaries).
- w3pbs/: mailing lists, streaming, chat, forums; html/gemini as text or markdown summaries.
- onet/: ONET taxonomy (latest), directories from ONET categories.
6. Publish log (public, minimal)
- Location:
/_log/publish.jsonl
- One JSON object per line with fields:
ts
(UTC string),event
(e.g."publish"
),man
(manifest path),sig
(signature path),signer
(e.g. publisher@ipfs.kane-il.us),ns
(signature namespace, canonical =ipfspublish
),repo
(e.g.w3pbs/ipfs.kane-il.us
),commit
(git hash).
- Past entries retained forever.
- Fields like
manifest_cid
,paths
, andtag
may be added in future expansions.
7. Signatures
- All manifests are signed with SSH-sig using the deploy key.
- Canonical namespace:
ipfspublish
. - Verification uses
allowed_signers
file with principalpublisher@ipfs.kane-il.us
.
8. Guardrails (deny)
- Private/staging content never enters this repo.
- Deny common tool dirs:
.git/
,.github/
,.vscode/
, caches, temp files. - Deny binaries by extension (see
.gitignore
).
9. Accessibility
- For any non-text source (e.g., a PDF elsewhere), store a descriptive .md: what it is, where it exists, date, and an accessible summary.
10. Examples
/legal/research/county/kane/zoning/20250828T140000Z_buffer_requirements.md
/legal/court/il_kane_circuit/23_ch_000123/filings/20250828T142500Z_plaintiff_motion.md
/naics/541611/20250828T150000Z_procurement_policy.md
/onet/architecture_and_engineering/20250828T160000Z_job_function_overview.md
11. Operator Utilities
-
Primary interface: Operators are expected to use Midnight Commander (
mc
) as the daily driver for browsing, staging, and publishing files. -
Backup scripts: Deterministic shell scripts are maintained under
/tools/
.-
Purpose: fallback when
mc
is unavailable, misconfigured, or fails mid-operation. -
Behavior: scripts normalize filenames, run publish steps, and include
--dry-run
modes. -
Example:
publish-rename
→ normalize names to required conventions.publish-doc
(planned) → chain the full publishing flow.
-
-
mc integration: These scripts may also be bound to the mc user menu (
~/.config/mc/mc.menu
) so that the same deterministic actions can be triggered viaF2
. -
Automation: Because they are standalone, scripts can also be called in batch or from other automation tooling if desired.
Principle:
- mc = primary operator UX (interactive, user-friendly).
- scripts = deterministic backup + automation hooks.
- Both are valid, auditable, and kept in sync with these conventions.