Skip to content

State what the fleet model achieves, before the per-type rules - #495

Merged
ptr727 merged 3 commits into
developfrom
feature/readme-objectives
Aug 1, 2026
Merged

State what the fleet model achieves, before the per-type rules#495
ptr727 merged 3 commits into
developfrom
feature/readme-objectives

Conversation

@ptr727

@ptr727 ptr727 commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Adds a ## What It Achieves section between "What This Repo Is" and "How This Repo Operates", so a reader learns what the model buys before meeting the mechanics and the per-type rules.

The gap

The README went from what the repo holds straight into how it operates, then into the per-type rules. The objectives were real and consistently applied across every file here, and nowhere written down. A reader had to infer them from the machinery.

What lands

Eight objectives, each naming the machinery that delivers it so the claim is checkable rather than a slogan:

  • Workflow consistency by contract, not by copying a YAML file: the fixed part is the orchestration seam, and what a repo builds inside it is its own, so a Hugo site and a NuGet package satisfy one contract without pretending to be one pipeline.
  • Technical consistency the three surfaces share. The editor, the CLI, and CI read the same config, so a rule that holds in review holds everywhere.
  • Best practices promoted once, in GOVERNANCE.md or CODESTYLE.md, rather than rediscovered and re-argued in the next repo.
  • Feedback loops that close on the procedure, not the instance. A repo that cannot be stood up from the docs alone is a documentation defect.
  • A new language or target is a spec change, with detection, checks, and carried files declared, then proven by a cold standup.
  • Re-deployment measured and traceable, with staleness detected by content hash against the hub's own past revisions rather than a version stamp a repo can keep while editing underneath it.
  • A fidelity table, below.
  • The human/agent split, below.

The two that carry the weight

Every carried unit declares how much freedom it grants. This is the "must be exactly this / must do something but how is yours / yours entirely" distinction, and it already exists in spec/files.json as a declared field. The table just surfaces it:

Level The obligation Who owns the content
verbatim Byte-identical to canonical, after governed normalization The hub
interface Honor a named contract, checked by name and wiring The repo owns the body entirely
intent Reach the same outcome, judged by meaning The repo owns the wording and shape
presence The unit exists The repo owns all of it

The human contributes where domain expertise is decisive, and only there. The maintainer keeps what an agent cannot know or must not decide: creating a repository, granting a write outside the owner boundary, changing a ruleset, approving every merge, and every judgment about the domain a repo serves. The agent takes the mechanical scale-out, the part that does not benefit from human attention and degrades under it. Each repo's own knowledge has a declared destination so domain expertise is never diluted into a carried file that the next re-vendor overwrites.

Every number is checked, not recalled

Claim Verified against
thirteen project types spec/project-types.json, 13 keys
guarantees D1 to D9 WORKFLOW.md, 9 ### D<n> headings
four fidelity levels spec/files.json, the set actually in use is exactly intent, interface, presence, verbatim

Also in this diff

The reference-definition block is alphabetized while three entries are added to it. The governance* keys sat out of order against the rule that each group is alphabetized by reference name.

Verification

  • prose_lint blocking set clean tree-wide, and clean on changed lines.
  • markdownlint clean, including the new table, the hand-added ToC entry, and the three new reference definitions.
  • cspell clean over README.md and HISTORY.md.
  • CRLF-only by byte scan.

🤖 Generated with Claude Code

The README went from what the repo holds straight into how it operates and
then into the per-type rules, so a reader met the mechanics without ever
being told what any of it buys. The objectives were real and consistently
applied, and nowhere written down.

What It Achieves states them as standing capabilities, each naming the
machinery that delivers it so the claim is checkable rather than a slogan:
workflow consistency by contract, technical consistency the three surfaces
share, best practices promoted once rather than re-argued per repo, feedback
loops that close on the procedure instead of the instance, a new language or
target as a spec change, and re-deployment traced by content hash rather than
by a version stamp a repo can keep while editing underneath it.

Two of them carry the weight. The fidelity table makes the obligation on each
carried unit explicit, from byte-identical through honor-this-contract and
reach-this-outcome to merely-exist, so a reader can see how much freedom a
given file grants instead of inferring it. And the last states the split that
makes the model worth adopting: the maintainer keeps what an agent cannot know
or must not decide, the agent takes the mechanical scale-out that does not
benefit from human attention, and each repo's own knowledge has a declared
destination so domain expertise is not diluted into a carried file that the
next re-vendor overwrites.

Every number is checked against the tree rather than recalled: thirteen
declared project types, nine D-guarantees, and the four fidelity levels that
files.json actually uses.

The reference-definition block is alphabetized while three entries are added
to it, since the governance keys sat out of order.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 1, 2026 05:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an explanatory section to the README so readers learn the fleet model’s concrete objectives (“what it achieves”) before the operational mechanics and per-type rules.

Changes:

  • Adds a new “What It Achieves” section (plus ToC entry) describing the model’s objectives and the machinery that makes each objective checkable.
  • Introduces a fidelity-levels table and adds new reference links used by the section.
  • Alphabetizes/extends the README reference-definition block to include new entries.

Comment thread README.md Outdated
Comment thread README.md Outdated
Two findings on the objectives section.

The technical-consistency heading read "an agent cannot drift off", which
parses as the agent drifting off rather than drifting from a standard. It now
says the consistency does not depend on anyone remembering it, which is the
actual claim: the three surfaces read one file rather than three copies.

The destination list named CODESTYLE.md, ARCHITECTURE.md, OPERATIONS.md and
TODO.md as though a reader would find all four here. Two of them are absent,
correctly so, because ARCHITECTURE.md describes how a code repo is built and
OPERATIONS.md how a live-service repo is run, and this hub is neither. The
sentence now says what each destination takes and that which ones a repo
carries follows from what it is, so the two present here are the two that
apply rather than an incomplete set.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings August 1, 2026 05:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (2)

README.md:79

  • This sentence says fidelity is "declared per unit" in spec/files.json, but several baseline entries omit the fidelity field (e.g., README.md, HISTORY.md, OPERATIONS.md) and rely on the default of presence instead. Consider calling out that presence is the default when fidelity is omitted so readers don’t infer every entry must specify it explicitly.
- **Every carried unit declares how much freedom it grants.** This is the distinction that makes the whole thing tolerable to work in, and it is declared per unit in [spec/files.json][files] rather than left to be inferred:

README.md:86

  • The table isn’t indented as part of the preceding list item. In GitHub-flavored Markdown, an unindented table typically breaks out of the list, which can split the “objectives” bullets into two separate lists with the table in between. Indent the table so it clearly nests under this bullet and the list remains continuous.
| Level | The obligation | Who owns the content |
| --- | --- | --- |
| `verbatim` | Byte-identical to canonical, after governed normalization | The hub. A paraphrase is a defect, not an adaptation. |
| `interface` | Honor a named contract, checked by name and wiring | The repo owns the body entirely. |
| `intent` | Reach the same outcome, judged by meaning | The repo owns the wording and shape. |

Two findings on the objectives section, both collapsed into the review body
rather than raised as threads.

The table sat unindented after the bullet that introduces it, so in
GitHub-flavored Markdown it terminated the list and the three bullets after it
started a second one. Eight bullets rendered as two lists with a table wedged
between. Indenting it to the bullet's content column keeps one list.

The prose also said fidelity is declared per unit "rather than left to be
inferred", while nine baseline entries carry no fidelity field at all and take
the default. The sentence now says an entry naming no level takes presence,
and names presence as the most permissive of the four, so silence grants
freedom rather than withholding it. That is the part a reader needs, because
the safe assumption about an unmarked entry is the opposite of the true one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ptr727

ptr727 commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Answering the two suppressed findings from round 2, both fixed in 7d2357ba3af2924e99bcca3c1c67519352dd8580.

1. The table broke the list. Correct, and it is a rendering defect rather than a style preference. Unindented, the table terminated the list in GitHub-flavored Markdown, so the eight objectives rendered as two lists with a table wedged between them. It is now indented to the bullet's content column and the list is continuous, verified as 8 top-level bullets with 0 unindented table rows between them.

2. presence is the default, and the prose implied otherwise. Also correct, and checking it made the point sharper. Nine baseline entries carry no fidelity field at all (README.md, HISTORY.md, OPERATIONS.md, .gitignore, .github/dependabot.yml among them), and spec/fidelity-model.md states the default in two places.

Rather than only noting the default, the sentence now says what it means: an entry naming no level takes presence, the most permissive of the four, so silence grants freedom rather than withholding it. A reader's safe assumption about an unmarked entry is the opposite of the true one, which is worth saying outright in a section whose whole point is how much freedom each unit grants.

Copilot AI review requested due to automatic review settings August 1, 2026 05:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit eed2e00 into develop Aug 1, 2026
7 checks passed
@ptr727
ptr727 deleted the feature/readme-objectives branch August 1, 2026 05:16
ptr727 added a commit that referenced this pull request Aug 1, 2026
…to main (#498)

Promotes eight commits from `develop`. Every one traces to a defect
found in use rather than to a planned change, and five came from
downstream agents reporting what the procedure did not cover.

## What lands

| Commit | Change |
| --- | --- |
| `a0f6f24` (#487) | `docs/content-import.md`, the three capture-pass
findings from the Blog migration: an export is not a media capture, a
sitemap is not the URL contract, and an HTTP fetch is not the original |
| `8bdfa22` (#494) | The write-guard scopes by **owner** rather than
exact origin, with `GH_WRITE_GUARD_ALLOW` for a different owner. Four
target-flag spellings that silently bypassed rule 3 are closed |
| `981d92f` (#492) | The purpose is restated as agent enablement, in
`README.md`, `HISTORY.md` and `AGENTS.md` |
| `275705b` (#493) | `TODO.md` becomes the fleet backlog destination,
and `spec/readme-structure.md` stops mandating the construction
`GOVERNANCE.md` bans |
| `b6ab6db` (#491) | `STANDUP.md` step 0A names the maintainer-only
prerequisites, and step 4 asserts the remote |
| `89e3868` (#488) | The `version.json` floor is chosen at standup
rather than inherited |
| `eed2e00` (#495) | `README.md` gains "What It Achieves", the
objectives and the fidelity ladder |
| `f6dc5e6` (#497) | `CODESTYLE.md` stops claiming CI runs the same
checks as the clean-compile |

## Provenance

Five of the eight answer issues filed by downstream agents: #456 (Blog
intake), #489 and #490 (the Blog carry), and #496 (Financial-Modeling).
That loop is the one "What It Achieves" now describes, and this
promotion is it closing.

## Divergence, checked rather than assumed

`main...develop` reports `8 ahead, 102 behind, diverged`. **The 102 are
topology, not content.** They are 79 promotion merge commits, which are
main-only by construction because a promotion is a two-parent merge,
plus 23 `Update codegen files` bot commits from this repo's pre-2.0 life
as a .NET sample template. `git diff --name-status origin/develop
origin/main` returns exactly the 12 files these 8 commits touch, so
there is **no main-only content** to reconcile.

## Verification on the merged `develop`

Every gate re-run after the last merge, not inherited from the
individual PRs:

- `prose_lint.py . --check charset --check dupword --check spelling`
clean tree-wide.
- `repo_gate.py` clean (`eol`, `sha-pin`).
- `spec/validate.py` clean, 21 cataloged repos classify.
- `gh-write-guard.py --selftest` passes, including the nine new
repository-scope cases.
- `python3 -m unittest discover -s scripts`, 180 tests pass.
- The `README.md` objectives list verified as one continuous list of 8
bullets with the fidelity table nested, since an unindented table split
it in review.

## Merge mechanics

This is a promotion, so it merges as a **merge commit** with two
parents, never a squash. Its head **is** `develop`, so `--delete-branch`
must not be used.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.

2 participants