Documentation
¶
Overview ¶
Package core is abcd's transport-agnostic engine. Every capability is a function taking a structured request and returning a structured result; nothing here writes to stdout or knows about a CLI, MCP, or prompt surface. The front doors under internal/surface/* marshal these results for their transport. This separation is the single constraint that lets the CLI, the markdown plugin surface, and a future MCP server share one core.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Version = "dev"
Version is abcd's version, stamped at build time via -ldflags -X (see the Makefile). It defaults to "dev" for un-stamped local builds.
Functions ¶
This section is empty.
Types ¶
type StatusInfo ¶
type StatusInfo struct {
// Dir is the inspected directory with the home redacted to "~": it travels
// into --json, and machine output never carries an absolute
// developer-identity path (iss-81, iss-2609261950066257). It is display
// only; the inspection reads the directory itself.
Dir string `json:"dir"`
IsGitRepo bool `json:"is_git_repo"`
HasRecord bool `json:"has_record"` // .abcd/development present
WorkTiers []string `json:"work_tiers"` // which .abcd/ tiers exist
}
StatusInfo is the result of Status: a read-only "where am I" snapshot of a directory, mirroring abcd's bare-invocation status convention (never mutates).
func Status ¶
func Status(dir string) (StatusInfo, error)
Status inspects dir without mutating it and reports whether it is a git repo and which abcd surfaces are present.
type VersionInfo ¶
VersionInfo is the result of NewVersion.
func NewVersion ¶
func NewVersion() VersionInfo
NewVersion reports abcd's identity and build version.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package ahoy is abcd's install/update engine for `abcd ahoy`.
|
Package ahoy is abcd's install/update engine for `abcd ahoy`. |
|
Package assistedby holds the third form of the `Assisted-by:` trailer, the label abcd declares on a commit it composes from record facts (ruling PC1, the technical facilitator, 2026-10-02): `Assisted-by: abcd:<version>`, beside a model's `<Vendor>:<model-version>` and `None`.
|
Package assistedby holds the third form of the `Assisted-by:` trailer, the label abcd declares on a commit it composes from record facts (ruling PC1, the technical facilitator, 2026-10-02): `Assisted-by: abcd:<version>`, beside a model's `<Vendor>:<model-version>` and `None`. |
|
Package banlist is abcd's two-layer banned-names store (itd-74, spc-20).
|
Package banlist is abcd's two-layer banned-names store (itd-74, spc-20). |
|
Package board is the status board's one renderer (spc-2610031844142274): two views, the product thinker's and the facilitator's, each in two forms, text for a Terminal or a pipe and a markdown list a host session pastes unchanged.
|
Package board is the status board's one renderer (spc-2610031844142274): two views, the product thinker's and the facilitator's, each in two forms, text for a Terminal or a pipe and a markdown list a host session pastes unchanged. |
|
Package capture is abcd's transport-agnostic issue-ledger engine: the write side of a per-repo issue ledger that replaces the free-form .work/issues.md.
|
Package capture is abcd's transport-agnostic issue-ledger engine: the write side of a per-repo issue ledger that replaces the free-form .work/issues.md. |
|
Package changelog is abcd's transport-agnostic release-derivation domain: the version and the changelog are facts derived from the records that shipped, not numbers and lines a human types (itd-73, spc-10).
|
Package changelog is abcd's transport-agnostic release-derivation domain: the version and the changelog are facts derived from the records that shipped, not numbers and lines a human types (itd-73, spc-10). |
|
Package cite is the live half of the citation gate: the on-demand refresh that fetches every cited URL and writes the committed baseline the zero-network docs lint then enforces offline.
|
Package cite is the live half of the citation gate: the on-demand refresh that fetches every cited URL and writes the committed baseline the zero-network docs lint then enforces offline. |
|
Package condition is the scope-condition disposition vocabulary as DATA: the four values a condition is dispositioned with, the identity marker a condition carries, the two block grammars a disposition is written under, and the one reader that folds those blocks into a condition's standing disposition.
|
Package condition is the scope-condition disposition vocabulary as DATA: the four values a condition is dispositioned with, the identity marker a condition carries, the two block grammars a disposition is written under, and the one reader that folds those blocks into a condition's standing disposition. |
|
Package credential is the credential store (itd-2609221017023290, adr-2609221017021499): the one reader every adapter resolves an external credential through, by NAME (Store, store.go), the one write (Set), and the walkthrough that chooses a credential's home (Walk, walk.go).
|
Package credential is the credential store (itd-2609221017023290, adr-2609221017021499): the one reader every adapter resolves an external credential through, by NAME (Store, store.go), the one write (Set), and the walkthrough that chooses a credential's home (Walk, walk.go). |
|
Package decide is the WRITE side of the decision record: `abcd decide "<title>"` mints an ADR id and lays the skeleton the store's existing files carry, under `.abcd/development/decisions/adrs/`.
|
Package decide is the WRITE side of the decision record: `abcd decide "<title>"` mints an ADR id and lays the skeleton the store's existing files carry, under `.abcd/development/decisions/adrs/`. |
|
Package docfidelity is the doc-fidelity gate over the brief (itd-60, spc-2609020903498198): the brief describes every surface that ships, or the intent does not reach shipped.
|
Package docfidelity is the doc-fidelity gate over the brief (itd-60, spc-2609020903498198): the brief describes every surface that ships, or the intent does not reach shipped. |
|
Package drainrule reads the drained repository's own record of which open issues an unattended drain may take alone (itd-82 decision 4; the product thinker's rulings BX2 and H11 of 2026-09-29).
|
Package drainrule reads the drained repository's own record of which open issues an unattended drain may take alone (itd-82 decision 4; the product thinker's rulings BX2 and H11 of 2026-09-29). |
|
Package frontmatter is abcd's shared markdown-frontmatter line scanner.
|
Package frontmatter is abcd's shared markdown-frontmatter line scanner. |
|
Package glossary derives the brief glossary's own index from the term files.
|
Package glossary derives the brief glossary's own index from the term files. |
|
Package grounds is the recorded-grounds vocabulary as DATA: the closed set of three values, the `<token>: <text>` grammar, the parser, the renderer, and the substance floor that refuses a degenerate text.
|
Package grounds is the recorded-grounds vocabulary as DATA: the closed set of three values, the `<token>: <text>` grammar, the parser, the renderer, and the substance floor that refuses a degenerate text. |
|
Package guard is abcd's transport-agnostic shell-hazard registry (itd-103, spc-16).
|
Package guard is abcd's transport-agnostic shell-hazard registry (itd-103, spc-16). |
|
Package history is abcd's native session-transcript store: the write/read/ redact engine that populates ~/.abcd.noindex/transcripts/<root-sha>/records/ and retires the specstory shim (adr-29).
|
Package history is abcd's native session-transcript store: the write/read/ redact engine that populates ~/.abcd.noindex/transcripts/<root-sha>/records/ and retires the specstory shim (adr-29). |
|
Package ideate is the deterministic frame around abcd's idea-admission protocol (itd-104, spc-18): the three-leg gauntlet an idea may be put through before it is allowed to become a record entry.
|
Package ideate is the deterministic frame around abcd's idea-admission protocol (itd-104, spc-18): the three-leg gauntlet an idea may be put through before it is allowed to become a record entry. |
|
Package identity checks that the git author and committer identities a commit would use in a managed repo match the identity pinned in .abcd/config/identity.json, and recognises a machine identity in either role.
|
Package identity checks that the git author and committer identities a commit would use in a managed repo match the identity pinned in .abcd/config/identity.json, and recognises a machine identity in either role. |
|
Package implement is the run machinery an autonomous implementation run calls: the run's shared state in the machine-scoped store, the sessions that join it, the claim that makes a record the unit of exclusion between them, the bounds that keep a second session from becoming a hazard, and the run log the comparison of division modes is derived from (itd-2609221656373558, spc-2609221657588816).
|
Package implement is the run machinery an autonomous implementation run calls: the run's shared state in the machine-scoped store, the sessions that join it, the claim that makes a record the unit of exclusion between them, the bounds that keep a second session from becoming a hazard, and the run log the comparison of division modes is derived from (itd-2609221656373558, spc-2609221657588816). |
|
loop
Package loop is the implement loop's engine (itd-2609201916151817, spc-2609202134338445): the state file a run lives in, the checks that decide whether a run may start, and the step interface a driving host calls.
|
Package loop is the implement loop's engine (itd-2609201916151817, spc-2609202134338445): the state file a run lives in, the checks that decide whether a run may start, and the step interface a driving host calls. |
|
Package intent is abcd's transport-agnostic native intent store (intent lifecycle, itd-80).
|
Package intent is abcd's transport-agnostic native intent store (intent lifecycle, itd-80). |
|
Package intentbundle is the bundle's record vocabulary as DATA: the words a bundle's survivor records its bundle of one in (itd-34, decision 3).
|
Package intentbundle is the bundle's record vocabulary as DATA: the words a bundle's survivor records its bundle of one in (itd-34, decision 3). |
|
Package interview holds what every abcd interview writes and reads (spc-2610030911534855, "The answers record and the answered in field"): the answers record, written through one writer whichever front door asked, and the answers file a run off a terminal is answered from.
|
Package interview holds what every abcd interview writes and reads (spc-2610030911534855, "The answers record and the answered in field"): the answers record, written through one writer whichever front door asked, and the answers file a run off a terminal is answered from. |
|
Package issuerecord is the issue ledger's record reader: the one judgement of whether a file in a status directory is a record the ledger takes, and if not, which reader stage refused it and why.
|
Package issuerecord is the issue ledger's record reader: the one judgement of whether a file in a status directory is a record the ledger takes, and if not, which reader stage refused it and why. |
|
Package issueschema is the issue record's frontmatter schema as DATA: the property allow-list, the required set, and the closed enum value sets that issue.schema.json declares, held where every gate that asks the question can read them.
|
Package issueschema is the issue record's frontmatter schema as DATA: the property allow-list, the required set, and the closed enum value sets that issue.schema.json declares, held where every gate that asks the question can read them. |
|
Package jsonstrict holds the strict-JSON checks encoding/json does not make: the one place a repeated object key is refused rather than read last-wins, shared by every reader whose input is a trust boundary (the rules overlay, the release-gate receipts, the layered configuration files, the reading presets).
|
Package jsonstrict holds the strict-JSON checks encoding/json does not make: the one place a repeated object key is refused rather than read last-wins, shared by every reader whose input is a trust boundary (the rules overlay, the release-gate receipts, the layered configuration files, the reading presets). |
|
Package lab mechanises the lab conventions three hand-run experiments proved (itd-2609212137128014): a lab is a throwaway world pinned at one commit of a repository, run to answer one question, whose evidence lives at the operator level and whose knowledge enters the record only through capture.
|
Package lab mechanises the lab conventions three hand-run experiments proved (itd-2609212137128014): a lab is a throwaway world pinned at one commit of a repository, run to answer one question, whose evidence lives at the operator level and whose knowledge enters the record only through capture. |
|
Package launch is abcd's transport-agnostic launch engine: it assembles the release bundle under a default-deny taxonomy, runs the native secret+PII scan, checks manifest lockstep, and previews newest-per-line retention — all as a dry-run that renders decisions without writing an artefact or touching the network.
|
Package launch is abcd's transport-agnostic launch engine: it assembles the release bundle under a default-deny taxonomy, runs the native secret+PII scan, checks manifest lockstep, and previews newest-per-line retention — all as a dry-run that renders decisions without writing an artefact or touching the network. |
|
scaffold
Package scaffold renders and writes the changelog-driven release machinery — release.yml, auto-release.yml, and the adr-37 runbook — into a managed repo that lacks it (itd-93, spc-14).
|
Package scaffold renders and writes the changelog-driven release machinery — release.yml, auto-release.yml, and the adr-37 runbook — into a managed repo that lacks it (itd-93, spc-14). |
|
Package layered is the one layered configuration resolver: a value is taken from the invocation's flag, else the repository's committed file, else the machine's file under ~/.abcd.noindex/, else the bundled default the caller supplies, and it comes back with the layer and the origin that supplied it.
|
Package layered is the one layered configuration resolver: a value is taken from the invocation's flag, else the repository's committed file, else the machine's file under ~/.abcd.noindex/, else the bundled default the caller supplies, and it comes back with the layer and the origin that supplied it. |
|
Package lifeboat holds the brief-to-lifeboat contract and, later, the source adapters that fill it.
|
Package lifeboat holds the brief-to-lifeboat contract and, later, the source adapters that fill it. |
|
Package lint is abcd's record-drift gate: it reads a JSON config and lints the markdown design record, returning findings.
|
Package lint is abcd's record-drift gate: it reads a JSON config and lints the markdown design record, returning findings. |
|
Package machineload reads the machine's load and process table and decides, from one snapshot, whether programs outside the running work are keeping the machine busy (itd-2609231434459890, spc-2609231542463113).
|
Package machineload reads the machine's load and process table and decides, from one snapshot, whether programs outside the running work are keeping the machine busy (itd-2609231434459890, spc-2609231542463113). |
|
Package mdrecord is the Markdown machinery a RECORD BODY is read and written through: which lines are live markdown and which are not, where a section starts and stops, what a top-level bullet is, and where a trailing run of link-reference definitions ends.
|
Package mdrecord is the Markdown machinery a RECORD BODY is read and written through: which lines are live markdown and which are not, where a section starts and stops, what a top-level bullet is, and where a trailing run of link-reference definitions ends. |
|
Package mdrender is the Markdown subset renderer the site publishes the repository's prose through, and the one answer to what that subset refuses.
|
Package mdrender is the Markdown subset renderer the site publishes the repository's prose through, and the one answer to what that subset refuses. |
|
Package memory is abcd's transport-agnostic curated-knowledge substrate at .abcd/memory/ (itd-36 / adr-13).
|
Package memory is abcd's transport-agnostic curated-knowledge substrate at .abcd/memory/ (itd-36 / adr-13). |
|
Package mode is abcd's waiting-on state: which of three states the agent loop is parked in.
|
Package mode is abcd's waiting-on state: which of three states the agent loop is parked in. |
|
Package oracle is the model-tier routing of itd-2609170822093401: which tier of model each host-delegated agent deserves, how many agents a step may run at once, and, at run time, whether a configured provider takes the step or the harness does.
|
Package oracle is the model-tier routing of itd-2609170822093401: which tier of model each host-delegated agent deserves, how many agents a step may run at once, and, at run time, whether a configured provider takes the step or the harness does. |
|
Package peers is the read-only peer reader (itd-2609091416295622, spc-2609202056480020): given one checkout, which records do the other checkouts and branches sharing its git common dir hold that this tree does not, or hold in a different state?
|
Package peers is the read-only peer reader (itd-2609091416295622, spc-2609202056480020): given one checkout, which records do the other checkouts and branches sharing its git common dir hold that this tree does not, or hold in a different state? |
|
Package positioning holds a repository's canonical self-description — its title, tagline, and elevator pitch — and the deterministic check that every rendered surface still says it.
|
Package positioning holds a repository's canonical self-description — its title, tagline, and elevator pitch — and the deterministic check that every rendered surface still says it. |
|
Package provenance is the record's disclosure vocabulary as DATA: where an item came from (`origin`) and how its text was produced (`production_mode`), plus the one parser that reads and renders them.
|
Package provenance is the record's disclosure vocabulary as DATA: where an item came from (`origin`) and how its text was produced (`production_mode`), plus the one parser that reads and renders them. |
|
Package question holds what a question abcd puts to a person may contain: the field limits, written once (Limits, Default), the field view every front door finally shows (Fields), and the limits check (CheckLimits) that refuses a badly built question naming the part, the value, and the limit (spc-2610030944505997; itd-2610030810350727, itd-201).
|
Package question holds what a question abcd puts to a person may contain: the field limits, written once (Limits, Default), the field view every front door finally shows (Fields), and the limits check (CheckLimits) that refuses a badly built question naming the part, the value, and the limit (spc-2610030944505997; itd-2610030810350727, itd-201). |
|
Package reading assembles the input a cold reading is handed.
|
Package reading assembles the input a cold reading is handed. |
|
Package readingitem locates the reading ledger's records by id and resolves an occasion — the record a later write names as what occasioned it.
|
Package readingitem locates the reading ledger's records by id and resolves an occasion — the record a later write names as what occasioned it. |
|
Package record is the read side of `abcd <id>`: dispatch on a record id — iss-N, itd-N, spc-N, adr-N, and the ledger's adm-N, srp-N and rfm-N — and report what the record is, its links, and the concrete next move for its lifecycle state (spc-26).
|
Package record is the read side of `abcd <id>`: dispatch on a record id — iss-N, itd-N, spc-N, adr-N, and the ledger's adm-N, srp-N and rfm-N — and report what the record is, its links, and the concrete next move for its lifecycle state (spc-26). |
|
match
Package match is the canonical term-overlap primitive: it scores how much of a new text another record already holds, by the words the two share, and classifies a likely double as `duplicates` (near-identical) or `refines` (narrower).
|
Package match is the canonical term-overlap primitive: it scores how much of a new text another record already holds, by the words the two share, and classifies a likely double as `duplicates` (near-identical) or `refines` (narrower). |
|
Package recordid is abcd's canonical home for the record-id space: the native timestamp-numeric mint (mint.go), the read-side resolver (resolve.go), and the one record-filename grammar both sides parse (this file).
|
Package recordid is abcd's canonical home for the record-id space: the native timestamp-numeric mint (mint.go), the read-side resolver (resolve.go), and the one record-filename grammar both sides parse (this file). |
|
Package reflect is the core of the release retrospective (itd-24, spc-2609211751376504): the seed a retrospective interview opens from, the thin-answer floor the interview holds its answers to, the writer that turns the answers into `.abcd/development/retrospectives/<release-tag>/README.md`, the lessons reader and ranking a later voyage's embark shows, and the one-line nudge a release cut prints.
|
Package reflect is the core of the release retrospective (itd-24, spc-2609211751376504): the seed a retrospective interview opens from, the thin-answer floor the interview holds its answers to, the writer that turns the answers into `.abcd/development/retrospectives/<release-tag>/README.md`, the lessons reader and ranking a later voyage's embark shows, and the one-line nudge a release cut prints. |
|
Package release is the transport-agnostic composition of a release cut: the deterministic half of `abcd launch ship` and the whole of `abcd changelog`.
|
Package release is the transport-agnostic composition of a release cut: the deterministic half of `abcd launch ship` and the whole of `abcd changelog`. |
|
Package relink is the one link-repoint primitive: after a verb MOVES a record between status folders, it rewrites every relative markdown link in the working tree that named the record's old path so that it names the new one, and reports each rewrite.
|
Package relink is the one link-repoint primitive: after a verb MOVES a record between status folders, it rewrites every relative markdown link in the working tree that named the record's old path so that it names the new one, and reports each rewrite. |
|
Package audit is abcd's read-only repo-conformance engine: it evaluates a set of declarative rules against a repository and returns findings.
|
Package audit is abcd's read-only repo-conformance engine: it evaluates a set of declarative rules against a repository and returns findings. |
|
Package report is the written account a repository abcd manages files back to abcd itself, and the inbox it waits in (itd-2609221656361680, spc-2609221657168936).
|
Package report is the written account a repository abcd manages files back to abcd itself, and the inbox it waits in (itd-2609221656361680, spc-2609221657168936). |
|
Package reviews reads the committed review folders under .abcd/work/reviews/ and says how stale each has become (itd-28, spc-2609211854150455).
|
Package reviews reads the committed review folders under .abcd/work/reviews/ and says how stale each has become (itd-28, spc-2609211854150455). |
|
Package rules is abcd's transport-agnostic modular rules loader (itd-3).
|
Package rules is abcd's transport-agnostic modular rules loader (itd-3). |
|
Package runner runs a delegated role through a command-line harness the operator named, with the same brief, inputs and output contract the host's own sub-agent gets (itd-2609201916056194, spc-2609221533057881).
|
Package runner runs a delegated role through a command-line harness the operator named, with the same brief, inputs and output contract the host's own sub-agent gets (itd-2609201916056194, spc-2609221533057881). |
|
Package scribe builds the ledger scribe's context and ingests what the scribe returns (itd-2609020625402599, spc-2609020626045177).
|
Package scribe builds the ledger scribe's context and ingests what the scribe returns (itd-2609020625402599, spc-2609020626045177). |
|
Package sessionkind is the per-run context stamp: the one token a reading bundle and a scribe context each carry, naming the kind of session the context is for, the run it belongs to and a digest of what it holds (adr-2609021016275803, spc-2609020626045177).
|
Package sessionkind is the per-run context stamp: the one token a reading bundle and a scribe context each carry, naming the kind of session the context is for, the run it belongs to and a digest of what it holds (adr-2609021016275803, spc-2609020626045177). |
|
Package site is the home of the abcd site verb family (adr-47).
|
Package site is the home of the abcd site verb family (adr-47). |
|
Package source is the personal sources corpus and its provenance ledger (itd-76, spc-31): a local-only store of documents the agent may consult, a CSL-JSON bibliography describing them, and one append-only influence ledger per consuming repository.
|
Package source is the personal sources corpus and its provenance ledger (itd-76, spc-31): a local-only store of documents the agent may consult, a CSL-JSON bibliography describing them, and one append-only influence ledger per consuming repository. |
|
Package spec is abcd's transport-agnostic native spec store (intent lifecycle, itd-64).
|
Package spec is abcd's transport-agnostic native spec store (intent lifecycle, itd-64). |
|
Package statusblock computes the Now / Next / Later block the bare `abcd` board and the site's Status page render (itd-2609212103568351, spc-2609212138241908).
|
Package statusblock computes the Now / Next / Later block the bare `abcd` board and the site's Status page render (itd-2609212103568351, spc-2609212138241908). |
|
Package surface models abcd's public compatibility surface — the commands, flags, and manifest entries a consumer can bind to — as a transport-agnostic value that is snapshotted, committed, and diffed between releases (itd-73, spc-10).
|
Package surface models abcd's public compatibility surface — the commands, flags, and manifest entries a consumer can bind to — as a transport-agnostic value that is snapshotted, committed, and diffed between releases (itd-73, spc-10). |
|
Package tools is abcd's explain-then-install mode (itd-63): the curated registry of the external tools abcd knows, the plain-language explanation a verb gives when it finds one missing, and the one place a confirmed install step is run.
|
Package tools is abcd's explain-then-install mode (itd-63): the curated registry of the external tools abcd knows, the plain-language explanation a verb gives when it finds one missing, and the one place a confirmed install step is run. |
|
Package update implements the core of `abcd update` (itd-130 / spc-32): a user-invoked fetch/verify/swap for the PATH-installed binary.
|
Package update implements the core of `abcd update` (itd-130 / spc-32): a user-invoked fetch/verify/swap for the PATH-installed binary. |
|
Package vintage is abcd's staleness comparator: it establishes whether the running binary is the one that should be running, by comparing the binary's own build vintage against a reference supplied by a provider.
|
Package vintage is abcd's staleness comparator: it establishes whether the running binary is the one that should be running, by comparing the binary's own build vintage against a reference supplied by a provider. |