Skip to content

[OSS POLISH] Bring workspacejson/standard to the public repository polish standard - #2

Merged
qmarcelle merged 2 commits into
mainfrom
feature/meta-246-oss-polish-bring-workspacejsonstandard-to-the-public
Jul 26, 2026
Merged

[OSS POLISH] Bring workspacejson/standard to the public repository polish standard#2
qmarcelle merged 2 commits into
mainfrom
feature/meta-246-oss-polish-bring-workspacejsonstandard-to-the-public

Conversation

@qmarcelle

Copy link
Copy Markdown
Contributor

Layers public-readiness work on top of the extraction migration. No normative change: schema bytes are identical at 6220 bytes, sha256 7f1635bbeff47b103566866d1b66c47a604f91bb3948ad2b59a3ba9369a41e36.

Before / after

Area Before After
SUPPORT.md, GOVERNANCE.md, MAINTAINERS.md absent added, each naming a real process and owner
.github/CODEOWNERS, ISSUE_TEMPLATE/config.yml absent added
Issue templates described agents-audit rewritten; out-of-scope reports routed to the owning repository
.editorconfig, .gitattributes, dependabot.yml absent added
ci.yml permissions none declared, inherited defaults contents: read at workflow and job level
Markdown/link validation none pnpm run check:docs, wired into CI
docs/adr/ absent; ADR-002 lived only in a private tracker index + ADR-001 + ADR-002 committed
versioning / conformance / glossary / troubleshooting / settings absent added
Package READMEs logos loaded from the frozen historical repo; "published from the agents-audit workspace" assets vendored to assets/; framing corrected
Package keywords included aaif removed — implied standards-body status
Changelog 0.4.4 Unreleased 2026-07-23, matching npm
GitHub description / homepage / topics empty set
Merge policy squash + merge + rebase squash only, auto-delete branch

Verification receipts

tracked files audited                    140/140
README commands executed                 6/6      cold, in a clean temp dir against published 0.4.4
links checked                            115/115  95 relative resolved on disk; 20 external, 11 unique fetched
package manifests audited                3/3      root + both packages
schemas/examples validated               4/4      via the package's own validator
community files present and substantive  9/9
GitHub metadata fields verified          8/8
workflows audited                        1/1
security/architecture deliberate failures 23/23   guard red tests, including the baseline-acceptance case
unsupported claims removed               2        `aaif` keyword; `0.4.4 - Unreleased`
stale/private references removed         39       37 tracker identifiers + 2 cross-repo asset URLs

Full local run, all green: check:architecture, check:architecture:test, check:docs, build, typecheck, test (173 passed), check:schema, check:examples, release:verify-packs, export validation, binary behavior.

The 11 unique external links resolve. Five return 404 unauthenticated purely because this repository is private; each was confirmed authenticated. npmjs.com returns 403 to non-browser clients — package existence was confirmed against registry.npmjs.org instead (both 200).

Three judgment calls

  1. Internal tracker identifiers. The polish standard bans them in permanent public prose. 37 occurrences existed. Every explanation was kept and only the unresolvable identifier replaced. migration/ and docs/adr/ remain exempt as provenance records, and check-docs.mjs now enforces this so it cannot silently regress.

  2. ADR-001 status. No ADR-001 existed anywhere, though ADR-002 declared a dependency on it. The decision turned out to be real, dated and shipped — @workspacejson/spec@0.4.1, 2026-06-02, recorded in the package changelog. It is committed as Accepted with that provenance, plus an Open Questions section for what is genuinely still unresolved. It also surfaced a compatibility fact worth not losing: .agents/agents.workspace.json remains a valid read fallback.

  3. Package README logos. Vendored into assets/ and referenced repo-relative. Known limitation: npm resolves relative images via the repository field, which needs the repository to be public, so they will not render on npm until visibility changes.

Found, reported, deliberately not fixed here

  • VrekoContext is a public export of @workspacejson/rules (src/index.ts). A proprietary vendor name in the public API surface of an Apache-2.0 standard package. Renaming it is a breaking API change, so it belongs with the clean-room boundary work, not with polish.
  • Private vulnerability reporting cannot be enabled while this repository is private on the free plan — PUT /private-vulnerability-reporting returns 404. Three committed files direct reporters to the advisory form. Harmless today because nobody outside the org can read them; it stops being harmless the moment visibility flips. SECURITY.md carries a maintainer note and docs/repository-settings.md makes enabling it step 1 of going public.
  • Branch protection is unavailable on a private repo under a free-plan org. Recorded as a hard gate: it must exist before this repository receives npm publish authority.
  • @workspacejson/spec carries a stale next: 0.2.1 dist-tag. Correcting it is a registry action requiring publish authority this repository does not hold.
  • CodeQL and dependency review are evaluated and deferred with reasons — both need public visibility or Advanced Security. Adding them now ships a permanently red check, which is worse than a missing one.

Held out of scope, as directed

Schema $id host · v1.json naming · version bumps · version/specVersion dual-emit · any publish step, credential or release workflow · the four ambient CJS/ESM interop shims · v0.5 or new-signal design · repository visibility.

…sh standard

Layers public-readiness work on top of the extraction migration without
touching the normative surface. Schema bytes are unchanged: 6220 bytes,
sha256 7f1635bbeff47b103566866d1b66c47a604f91bb3948ad2b59a3ba9369a41e36.

Added — community and governance
  SUPPORT.md, GOVERNANCE.md, MAINTAINERS.md, .github/CODEOWNERS and
  .github/ISSUE_TEMPLATE/config.yml. Each names a real process and a real
  owner; none is ceremony.

Added — documentation the repository claims to own
  docs/adr/ now holds the architecture decision records, which previously
  existed only in a private tracker. ADR-001 records the canonical artifact
  path decision that shipped in 0.4.1 and had never been written down
  anywhere; its provenance is the package changelog, not a new decision.
  ADR-002 is transcribed from its internal draft with issue identifiers,
  private product names and a stale registry snapshot removed — no decision,
  boundary, metric or stop condition altered.

  docs/versioning.md, docs/conformance.md, docs/glossary.md,
  docs/troubleshooting.md and docs/repository-settings.md.

Added — automation that keeps the polish true
  scripts/check-docs.mjs, wired into CI as `pnpm run check:docs`. Every
  relative link must resolve, every documented `pnpm run` command must exist,
  and no internal tracker identifier may reach public prose. It found 37
  identifier leaks on its first run.

  .editorconfig, .gitattributes, .github/dependabot.yml.

Changed — public surface
  Internal tracker identifiers removed from prose across the README,
  OWNERSHIP, AGENTS, CONTRIBUTING, RELEASE-AUTHORITY, the guard scripts, CI
  comments and two package test descriptions. Every explanation was kept;
  only the unresolvable identifiers changed. migration/ and docs/adr/ stay
  exempt as provenance records.

  README gained a status statement, a cold-verified quickstart, a
  documentation map and a known-limitations section. Both issue templates
  were rewritten — they still described agents-audit — and now route
  out-of-scope reports to the owning repository. Package READMEs no longer
  claim to be published from the agents-audit workspace, and their brand
  assets are vendored into assets/ rather than loaded from the frozen
  historical repository.

  ci.yml declares least-privilege `permissions: contents: read` at workflow
  and job level, and cancels superseded non-main runs.

  Removed the `aaif` keyword from both packages: it implied a standards-body
  status the project does not hold.

Fixed
  Both package changelogs recorded 0.4.4 as Unreleased while npm published it
  on 2026-07-23. The registry is the arbiter.

Deliberately unchanged
  Schema $id host, the v1.json filename, package versions, version/specVersion
  dual-emit, the four ambient interop shims, publication capability and
  repository visibility. Each changes a contract or needs an authority this
  pass does not hold.
actions/checkout, actions/setup-node and pnpm/action-setup all targeted
Node 20, which GitHub now force-runs on Node 24 and annotates as deprecated
on every run. A polish pass should not leave a standing warning on CI.

Dependabot's github-actions ecosystem keeps these current from here.
@qmarcelle
qmarcelle marked this pull request as ready for review July 26, 2026 05:12
Copilot AI review requested due to automatic review settings July 26, 2026 05:12

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@qmarcelle
qmarcelle merged commit f2f5ae1 into main Jul 26, 2026
2 checks passed
@qmarcelle
qmarcelle deleted the feature/meta-246-oss-polish-bring-workspacejsonstandard-to-the-public branch July 26, 2026 05:17
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