Commit graph

42 commits

Author SHA1 Message Date
3ca0e63bed docs: record native lane readiness
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-21 09:00:10 +02:00
398955295b docs: record catalog lane review
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-21 08:54:44 +02:00
784be978bf feat: admit existing OpenBao catalog lanes
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-08-21 08:20:33 +02:00
9d383442c8 docs: add generated work-record index
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-19 19:17:35 +02:00
aea0bf6b93 Adopt Target Revenue Source License V1C1 (org-wide preliminary rollout)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Maintainer decision, 2026-07-29: adopts TRSL V1C1 as this repo's
preliminary governing license, per target-revenue's
workplans/TREV-WP-0008-governance-and-pilot-rollout.md T05. Full
specialist legal review is deferred until out of beta (target-revenue
SCOPE.md §1). No Phase is yet declared for this repo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 01:04:47 +02:00
0ab9c649b9 Migrate whynot-design npm catalog and docs to Forgejo registry
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Update catalog, docs, tests, and exec_delivery comment for Forgejo npm API.
2026-07-09 11:38:15 +02:00
ff0dc8aeb2 Post workplan_id instead of workstream_id on State Hub progress notes
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 6s
2026-07-09 00:32:54 +02:00
3d40627614 CUST-WP-0055 T07: add archive workplan terminology grandfather note
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-07-08 20:26:38 +02:00
81c0b12570 docs: workplan-first agent guidance prose (CUST-WP-0055 T04 batch 4)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-07-08 17:22:20 +02:00
8eaefba670 Regenerate agent instructions from state-hub templates (CUST-WP-0055 T01)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Sync AGENTS.md, CLAUDE.md, and .claude/rules from updated project_rules
templates: workplan-first session protocol, legacy terminology footnote,
and GET /workplans/ examples.
2026-07-08 14:50:36 +02:00
86d6d20d7f Add Forgejo CI smoke workflow (enablement template)
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-07-08 12:37:57 +02:00
bde8ab2fac chore: archive SECRETS-WP-0003 whynot-design pilot closeout
All exit criteria met on 2026-07-03; workplan status set to archived and
moved to workplans/archived/ with completion-date prefix.
2026-07-08 00:34:07 +02:00
f374287a99 chore: record prod-whynot-design bootstrap token cleanup
Mark H0 bootstrap file shredded after SECRETS-WP-0003 closeout; accessor
revoke deferred while OpenBao is sealed (1h TTL likely expired).
2026-07-03 17:39:34 +02:00
32dfd4c78b Close SECRETS-WP-0003 whynot-design real publish pilot
Apply, provision, and verify the prod lane on live OpenBao, publish
@whynot/design@0.4.1 through native secrets-engine exec, and teach the
OpenBao client to tolerate stage-role mount/approle probes when sys/mounts
and sys/auth are denied.
2026-07-03 17:04:19 +02:00
0bf33a9a96 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-03:
  - update .custodian-brief.md for secrets-engine
2026-07-03 17:04:09 +02:00
2251cf7321 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-07-03:
  - update .custodian-brief.md for secrets-engine
2026-07-03 16:34:45 +02:00
7d09fc3aea Advance whynot pilot routing status 2026-06-30 17:33:52 +02:00
dc2099b9f0 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-30:
  - update .custodian-brief.md for secrets-engine
2026-06-30 15:17:30 +02:00
e0ab1b8420 Close warden-sign token lane 2026-06-30 01:01:55 +02:00
52e850f26b chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-30:
  - update .custodian-brief.md for secrets-engine
2026-06-30 01:00:51 +02:00
ae685f3a0a Document scope alignment and warden-sign readiness 2026-06-30 00:52:05 +02:00
d8aadaffe3 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-30:
  - update .custodian-brief.md for secrets-engine
2026-06-30 00:49:56 +02:00
11c5bd73ba chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - SECRETS-WP-0004-T04: progress → wait
2026-06-29 19:07:36 +02:00
c91717dafe chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - update .custodian-brief.md for secrets-engine
2026-06-29 17:50:11 +02:00
9d0f6c60c0 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - update .custodian-brief.md for secrets-engine
2026-06-29 17:49:11 +02:00
f5fb971d8c chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - update .custodian-brief.md for secrets-engine
2026-06-29 17:41:55 +02:00
ad469c39ca docs: update scope for auth-capability lanes 2026-06-29 17:06:20 +02:00
6382139890 feat: add auth-capability lanes and pilot closeout
Add the warden-sign auth-capability lane, AppRole handoff, verification guards, docs, and tests.

Point the whynot-design pilot at the canonical decision and add the real publish closeout preflight/runbook.
2026-06-29 16:58:16 +02:00
a621fbaffd chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - update .custodian-brief.md for secrets-engine
2026-06-29 16:54:13 +02:00
9092ebb59b chore(wp-0004): write back State Hub workstream/task IDs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:56:46 +02:00
bcdfc78087 docs: seed SECRETS-WP-0004 (warden-sign lane); complete SCOPE.md sections
- SECRETS-WP-0004: scoped warden-sign OpenBao token lane for ops-warden, to
  unblock FLEX-WP-0007 T4 joint smoke. First auth-capability (non-KV) lane and
  first lane touching production OpenBao (bao.coulomb.social).
- SCOPE.md: add the standard sections flagged by the repo scope review (Relevant
  When, Not Relevant When, How It Fits, Terminology, Related / Overlapping,
  Provided Capabilities with fenced capability blocks); refresh Current State to
  reflect the delivered MVP.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:55:58 +02:00
9a65875bae chore(wp-0003): write back State Hub workstream/task IDs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:17:46 +02:00
16090f0fca docs(wp-0003): seed pilot close-out workplan
SECRETS-WP-0003 scopes the real pilot close-out: canonical State Hub decision,
dedicated Gitea bot account for an enforced repo-scope, real token provisioning,
a real @whynot/design publish through secrets-engine exec, and the ops-warden
routing handoff. Does not change the dormant netkingdom publication-scope gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:17:03 +02:00
cf0a928fb0 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-29:
  - update .custodian-brief.md for secrets-engine
2026-06-29 12:14:21 +02:00
715de1197e chore(wp-0001): close State Hub bootstrap workplan; de-template repo identity
- repo-identity.md / repo-boundary.md: replace leftover repo-seed template text
  with secrets-engine identity and boundary (T01)
- mark SECRETS-WP-0001 T01–T03 done (T02 dev-workflow commands and T03 first real
  workplan were completed during the MVP build); workplan status -> finished

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 12:14:00 +02:00
5b48033bce feat(policy): netkingdom maturity-gated publication-scope policy
Token scope is now bound to package maturity, gated on netkingdom's own maturity:
- maturity-build -> gitea-wide, maturity-test -> org-wide, maturity-prod -> repo-scoped
  (scope narrows as stakes rise; broad tokens only for low-stakes build artifacts)
- the graduated table is DORMANT until netkingdom reaches production grade; until
  then every lane clamps to repo-scope, injected as NPM_AUTH_TOKEN (fail-safe)
- token env-var name signals blast radius: NPM_AUTH_TOKEN (repo default),
  NPM_AUTH_COULOMB_TOKEN (org), NPM_AUTH_GITEA_TOKEN (gitea), NPM_AUTH_WHYNOT_TOKEN
  (npm scope, defined but unused), NPM_AUTH_WHYNOTDESIGN (explicit repo)

netkingdom is at maturity-build today, so whynot-design resolves to repo-scope /
NPM_AUTH_TOKEN. Flip netkingdom_maturity to maturity-prod to activate graduation.

- policies/netkingdom-publication-scope.yaml: the policy data + gate
- publication_policy.py: load + resolve (clamp/active, env naming, override)
- exec delivery injects under the resolved env-var name (was fixed SE_NPM_TOKEN)
- catalog lane carries delivery_config.npm.maturity
- new CLI: `secrets-engine policy publication <lane>`
- docs/publication-scope-policy.md; tests for clamp, graduation, naming, override

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 13:14:46 +02:00
f87f4e5e4d refactor(catalog): explicit org/repo terminology; npm targets coulomb Gitea registry
Gitea's "project/package/release" terms are overloaded, so the catalog now uses
the most explicit words:
- org  = coulomb (the Gitea organisation)
- repo = whynot-design (the Gitea repository/product) — not an org, not a scope
- npm scope @whynot and package @whynot/design are distinct from both

Changes:
- catalog schema: replace conflated `owner` with required `org` + `repo`; `owner`
  is now a derived `org/repo` slug property
- npm-config delivery is data-driven: registry + scope live in
  delivery_config.npm and are validated; engine no longer hardcodes a registry
- exec delivery writes `<scope>:registry=<url>` + scoped `:_authToken` for the
  configured Gitea registry (token still env-expanded, never written to disk)
- pilot lane points at https://gitea.coulomb.social/api/packages/coulomb/npm/,
  scope @whynot, KV path coulomb/whynot-design/npm/publish
- npm-publish-demo uses @whynot scope so dry-run resolves the Gitea registry
- docs: terminology table; routing owner shown as coulomb/whynot-design
- tests: org/repo required, npm-config validation, registry authkey mapping

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:44:55 +02:00
147cf8acda feat(exec): wire real npm publish (dry-run) through secrets-engine exec
scripts/npm-publish-demo.sh boots a throwaway OpenBao, applies + provisions the
whynot-design lane, and runs `npm publish --dry-run` via `secrets-engine exec`
against a scratch package. npm resolves its auth token from the injected temp
.npmrc and builds/announces the tarball; the parent shell never holds the token
and the temp config is cleaned up. Documented in docs/cli.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:31:43 +02:00
a852d3f1ff feat(mvp): working secrets-engine CLI for the whynot-design npm publish lane
Implements SECRETS-WP-0002 end to end as a uv-managed Python package:

- catalog: non-secret lane registry + strict validator (build/test/prod)
- stage roles + OpenBao ACL policies; guards refuse wildcards, sys/, identity/,
  admin names, and cross-stage paths before any backend call
- plan/apply: dry-run-first, idempotent policy + approle apply, decision-gated
- decisions: State Hub lookup with local-fixture fallback; non-secret evidence
  to JSONL + hub progress, scrubbed of any value
- provision/verify: mode-0600 file import + generated test values; positive/
  negative checks that never print the value
- exec delivery: `exec --catalog ... -- npm publish` injects the token via a
  temp .npmrc for the child only, cleaned up on exit/failure/interrupt
- ops-warden routing contract + hardening backlog docs
- 34 tests incl. live OpenBao integration; scripts/demo-e2e.sh runs the full
  chain against a throwaway bao dev server

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:28:45 +02:00
58c24cff53 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-06-28:
  - update .custodian-brief.md for secrets-engine
2026-06-28 11:27:44 +02:00
c46eed822c Update README.md 2026-06-28 09:04:07 +00:00
Coulomb Social
5b64d7165c Initial commit 2026-06-28 09:03:37 +00:00